Upgrade to Pro — share decks privately, control downloads, hide ads and more …

10年ぶりの ニューラルネットワーク

10年ぶりの ニューラルネットワーク

2020年7月 東京エリア・関西合同Debian勉強会(オンライン開催)での発表資料

Avatar for NOKUBI Takatsugu

NOKUBI Takatsugu

July 18, 2020

More Decks by NOKUBI Takatsugu

Other Decks in Technology

Transcript

  1. 発表者について • 野首貴嗣 (NOKUBI Takatsugu) ◦ [email protected] ◦ OpenPGP id:

    99452B4DD28BEEAC8AB5C931B06662EC9C0C1404 ▪ https://db.debian.org/fetchkey.cgi?fingerprint=99452B4DD28BEEAC8AB5C931B06662EC9C0C1404 ◦ 学生時代(1995)にニューラルネットを研究室の輪講でやっていた ▪ https://twitter.com/knok/status/860501450417360896 ▪ 第二次人工知能ブーム • ニューロ&ファジー
  2. 2010年3月の勉強会 • 第62回東京エリアDebian勉強会、2010年3月勉強会 ◦ https://tokyodebian-team.pages.debian.net/2010-03.html ◦ 本庄弘典さんによる発表 ▪ ニューラルネットワークで画像認識してみた ▪

    https://tokyodebian-team.pages.debian.net/pdf2010/debianmeetingresume201003.pdf • あれから10年 ◦ 変化を振り返る ▪ 俯瞰的な視点から ◦ 個人的な成果をいくつか紹介 • この資料 ◦ https://bit.ly/2OOcLxH
  3. ニューラルネットのお気持ち • パーセプトロンを組み合わせる ◦ 重みとバイアス ▪ 入力と期待する出力とが近づくように重み、バイアスを修正 • 逆誤差伝播 •

    https://www.sist.ac.jp/~kanakubo/research/neuro.html ◦ 複数・多段にすることで柔軟な分離ができる ▪ 例: AND/OR, XOR • XORは1ユニットでは実現できない ▪ AND/OR(NAND)ができるならなんでもできるのでは
  4. ブレイクスルー • 2012年 ◦ Using large-scale brain simulations for machine

    learning and A.I. (Google) ▪ http://static.googleusercontent.com/media/research.google.com/ja//archive/unsupervised_icml2012.pdf ▪ 教師なしで人や猫の特徴を学習した • いわゆるAutoEncoder • 16コアを持つマシン169台で学習 画像はブログより
  5. AutoEncoder • 入力を復元するネットワーク ◦ 中間層で次元圧縮された特徴表現が得られる ▪ DNNの大半は表現の「低次元ベクトル化」 ◦ 他の手法 ▪

    行列の低ランク近似 • 特異値分解 (Singular Value Decomposition: SVD)に基づく ◦ cf. 単語分散表現 ▪ word2vec • ニューラルネットを利用している 入力画像 出力画像 (再構築) 中間層
  6. ブレイクスルー実現要素(1) • 計算資源 ◦ 計算能力の向上 ▪ 1995:PA-RISC (hp-pa9) 25MHz •

    メモリ16MB ▪ SIMD命令の充実 ▪ メモリ量の増大 ◦ GPGPU ▪ 行列演算と相性が良い • 近年のスパコンもGPUを装備 ▪ AMD/NVIDIAの競争 ▪ cuda, cuDNN (NVIDIA) • NVIDIAの優位性は依然としてある
  7. ブレイクスルー実現要素(2) • 大規模データセット ◦ ImageNet, CIFAR-10, MNIST ◦ Google photos,

    Facebook album等のプラットフォーム ◦ MS COCO ◦ OpenImages ◦ Wikipedia ◦ CommonCrawl • クラウドソーシングフレームワーク ◦ Amazon Mechanical Turk ◦ Cloudworks ▪ アノテーションを依頼できる
  8. ブレイクスルー実現要素(3) • 課題解決技術 ◦ 勾配消失/発散問題 ▪ アクティベーション関数の改善 • ReLU等のramp function

    ▪ 最適化手法の改善 • クリッピング • Momentumな手法 • RMSProp, AdaGrad, ADAMとその後継 ▪ 正規化手法の躍進 • Batch Noramlization • 分散表現(埋め込み表現)の活用 ◦ いろんなものが数百次元のベクトルとして表現できるように ◦ https://www.slideshare.net/naoakiokazaki/20150530-jsai2015
  9. ブレイクスルー実現要素(4) • データ拡張技術 ◦ 画像処理方面が顕著 ▪ アフィン変換、ノイズ付与などやりやすい手法が多い ▪ 自然言語処理はちょっと難しい •

    辞書ベースなど • ラベルを必要としない学習 ◦ word2vec, GloVe等 ◦ 一部をマスク、入れ替え等 ▪ そこからただしいものを再構築できるよう学習させる • 表現学習 (representation learning) • 敵対的生成ネットワーク (GAN) ◦ 本物と生成されたものの区別をつける /欺く
  10. 環境面 • データサイエンティストブーム ◦ 2000年代 - 統計的手法 ▪ 多変量解析 ▪

    トピックモデル ▪ Support Vector Machine (SVM) ◦ 2010年代 - 深層学習 ▪ MOOCsの充実 • Andrew Ng先生の無料講座(日本語字幕あり) ◦ 今でも有用なコンテンツ ▪ コンペティションの隆盛 • Kaggle, SIGNATE等 • 実行環境の充実 ◦ Google Colaboratory (無料でGPU/TPUが利用可能, 時間制限あり)
  11. もたらされた変化(1) • 人を超える精度/能力 ◦ 画像認識 ◦ 機械読解 ◦ AlphaGo等 •

    生成モデル ◦ 有名どころ: DeepFake, GPT-2, 3 ◦ 画像復元(inpainting) ◦ 人間の創作活動のアシスト ▪ 画像カラー化 ▪ 自動着色 petalica paint ▪ GauGAN ◦ 自然な音声合成 ◦ 音楽生成 Magenta等 ▪ Infinite death metal スライド 画像認識と深層学習 より
  12. もたらされた変化(2) • 流ちょうな自然言語生成 ◦ 機械翻訳・文章生成 ▪ フェイクニュース生成の危惧がなされた • 識別モデルも提供 •

    単語・品詞を意識しなくてもなんとかなる ◦ SentencePiece ▪ 語彙爆発の苦肉の策 ▪ End-to-End学習のおかげで品詞情報がなくても処理できる • 低位層に品詞に相当する情報を暗に学習しているらしい ◦ Unicodeバイトレベルの分解 ▪ カバーできる言語が広がる ▪ ただしくないバイト列を生成する問題もある • https://transformer.huggingface.co/doc/gpt2-large
  13. 新たな課題(1) • 翻訳ミス ◦ 訳抜け ▪ 統計ベースの機械翻訳と違い対応付けが不明瞭 ▪ 流ちょうなので見逃しやすい ◦

    逆の意味の訳文を出してしまう ▪ 反対語は全体的にみると出現のしやすさが近い ◦ 同じ文言を繰り返し生成 ▪ たまに発生 • https://www.slideshare.net/ToshiakiNakazawa/nlp2017-nmt-tutorial/79 • Google翻訳, DeepLでも散見 • 消費電力増大 ◦ 訓練をCPUでがんばるアプローチ ▪ https://github.com/keroro824/HashingDeepLearning
  14. 新たな課題(2) • データセットとバイアス ◦ 実世界のデータにはバイアスがある ◦ 考慮なしに利用すると機械学習モデルにもバイアスが反映 ◦ 公平性(fairness)の担保が課題 •

    セキュリティ ◦ 敵対的サンプル ▪ 人の目には自然だが識別モデルは間違う画像 /文章 • https://speakerdeck.com/settenqb/ji-jie-xue-xi-tosekiyuritei • https://twitter.com/Bleu_kakeru727/status/937680760491753473 ◦ モデル剽窃 ◦ データセットへの毒入れ (バックドア) ▪ クラウドワーカーの信頼性
  15. フレームワーク開発 • 古参 (deb有り) ◦ Torch7 ◦ Caffe ◦ Theano

    • 新しいもの (いくつかはdeb有り) - Pythonが主流に ◦ Chainer (2015~, 現在はメンテナンスモード ) ▪ cupy, ChainerX ▪ PyTorch ◦ TensorFlow (2015~) ◦ Keras ◦ Darknet (個人的に仕事として始めたのも 2015)
  16. 関係の強そうなDebian内チーム • Blends ◦ debian-science ▪ さらに細かいメタパッケージ多数 ◦ debian-med ▪

    https://salsa.debian.org/med-team/ ▪ COVID-19ハッカソンを実施 • deeplearning team ◦ https://salsa.debian.org/deeplearning-team
  17. Web/JavaScriptのランタイム • WebDNN ◦ https://mil-tokyo.github.io/webdnn/ja/ ▪ 日本発 • WebAssenbly, WebGL等に対応

    ▪ 現在開発はinactive • 対応フレームワークのバージョンが古い • TensorFlow.js ◦ https://www.tensorflow.org/js ▪ 訓練もサポート ▪ 多くの訓練済みモデルを配布 • https://github.com/tensorflow/tfjs-models • ONNX.js ◦ https://github.com/microsoft/onnxjs
  18. API利用者観点 • TensorFlowは特に利用が簡単 ◦ 事前訓練済みモデルを配布 ▪ tensorflow-hub ▪ tfjs-models ◦

    well-documented ▪ 日本語翻訳も充実しつつある ◦ 入力(連続値、画像等)に対して出力を得られる ▪ 分類モデル: 分類結果(ラベル) ▪ 物体検知: Boundary boxとラベル ▪ 回帰モデル: 予測値等 • 自然言語処理 ◦ HuggingFace Transformers ◦ AllenNLP (研究者向け寄り)
  19. WebDNNで作ったもの • edges2cats (pix2pix, chainer) ◦ http://pix2pix.daio.net/ ◦ ソース: https://github.com/knok/chainer-pix2pix

    • Wasserstein AutoEncoder (chainer) ◦ ht//wae-friends.daio.net ◦ ソース: https://github.com/knok/chainer-wae • データセット収集と訓練から再現可能
  20. TensorFlow.jsを使ったもの • バーチャル背景 (virtbg) ◦ https://knok.github.io/virtbg/ ◦ ソース: https://github.com/knok/virtbg ▪

    訓練済みのBodyPixモデルを使用 ▪ https://github.com/tensorflow/tfjs-models/tree/master/body-pix • VRM Three.js PoseNet Sample ◦ https://knok.github.io/vrm-three-posenet/ ▪ ソース: https://github.com/knok/vrm-three-posenet • https://github.com/t-takasaka/vrm-three-posenet のfork • 最近のtfjs-modelsにAPIを合わせた • 再配布可能なモデルに差し替え • 訓練済みのPoseNetモデルを使用 ◦ https://github.com/tensorflow/tfjs-models/tree/master/posenet
  21. Google colaboratoryを使ったもの • StyleGan ◦ https://colab.research.google.com/drive/1PhO9IUbqGPeJhubNj0YVAlRXsOYEA1Xr ◦ disentangle • HuggingFace

    ALBERT regression ◦ https://colab.research.google.com/drive/1XXmqh_uwV-BCh3FPl4OqDPhMlHRalDKL ◦ BERT亜種による回帰
  22. データセット • pixbay-cat-images ◦ https://github.com/knok/pixabay-cat-images ◦ Pixbayの猫画像リンク ▪ edges2catsのデータセットに利用 •

    instagram-food-images ◦ https://github.com/knok/instagram-food-images ◦ Instagramから餃子、ハンバーガー、ホットドッグ、サンドウィッチ、シュウマイを収集 • make-meidai-dialogue ◦ https://github.com/knok/make-meidai-dialogue ◦ 日本語自然会話書き起こしコーパス(旧名大会話コーパス)の変換スクリプト • データ本体は別のライセンスであることが多い
  23. tfjs-modelsの残念な点 • 訓練用コードが公開されていない • 訓練データも公開されていない ◦ 策定中のDeepLearning Policyに適合しない可能性大 ▪ https://lists.debian.org/debian-science/2019/06/msg00000.html

    ▪ https://salsa.debian.org/deeplearning-team/ml-policy ▪ 再現性を求める方向で進んでいる • TensorFlow.js以外での動作を想定していない ◦ 一応変換ツールはある ▪ https://github.com/patlevin/tfjs-to-tf
  24. 他にできそうなこと(1) • ハンドトラッキング ◦ Leap Motion/Kinectの代替 ▪ deepな手法である必要性はない • VTuberアプリ

    ◦ VRM+PoseNetで既にある程度いけそう ▪ BodyPixは顔パーツ認識も可能 • 表情への反映もできる • FaceMesh ▪ 先行実装: FaceVTuber ref: https://vrm.dev/vrm_applications/ ◦ 声質変換? ▪ Yukariライブラリ • https://qiita.com/atticatticattic/items/37441f3be6916cd1e73a ▪ 速度に課題 • GPU必須
  25. 他にできそうなこと(2) • 自然言語処理 ◦ ブラウザと Tensorflow.js を使った BERT の活用方法を考える (Google

    blog) ▪ https://developers-jp.googleblog.com/2020/04/tensorflowjs-bert.html ▪ https://github.com/tensorflow/tfjs-models/tree/master/qna • MobileBERTを用いたQ&A • 現状日本語は使えない ◦ 日本語のQ&Aで訓練していない ▪ SQuAD 1.1に基づく(らしい) ▪ https://www.slideshare.net/ShionHonda/bertmobileberttensorflowjs ◦ 語彙自体は含まれている ◦ 訓練データを用意し、 fine tuningすれば使えるはず ▪ TensorFlow Liteモデルもある ▪ 簡単な分類ぐらいなら割とすぐできそう
  26. 速度面の課題 • 画像は補完技術が充実 ◦ 音声、自然言語への適用は困難 ◦ 生成に必要なデータが巨大、計算量も多い ▪ GPUでリアルタイムにできるようになってきた •

    WaveNet(2016)では1秒の音声生成に1分程度かかっていた • 量子化 ◦ 浮動小数点計算を整数やバイナリで近似する技術 ▪ すべての演算を置き換えることが常に可能とは限らない ◦ tfjs-modelsは多くをサポート ▪ 精度を犠牲にしていることに留意 • DNNモデルの推論はシングルコア駆動(多分) ◦ TensorFlowネイティブランタイムならマルチコア駆動
  27. コンピューティングのトレンド • 歴史は繰り返す ◦ 中央集権型 vs 分散型 ▪ 「ダウンサイジング」 •

    Thin Clinet ▪ エッジAI • DNNモデルを軽量化 • 組み込み機器で動作させる • cf. AIスピーカー ◦ 処理の大半はクラウド側 ◦ 温故知新 ▪ LSTM, CNNも20世紀に考案されたもの ◦ 次のトレンドは? ▪ ニューラルネットのように昔のトレンドが復活する可能性
  28. まとめ • 10年でディープニューラルネットワークが飛躍的な進化 ◦ 計算資源とデータセット ◦ 第三次AIブーム ▪ そろそろ終焉? •

    使うだけならお手軽 ◦ 多くのフレームワークと訓練済みモデル ◦ ブラウザでも動作 ▪ Webカムとの組み合わせ • DFSG的にはどうか? ◦ 再配布不可・商用利用不可のデータセット、訓練済みモデルも多い ▪ 研究目的のみ可というものも多い ◦ 個人的には再現可能なレベルを心がけている ▪ 元データのライセンスに課題
  29. NN以外のトピック • 統計ベース ◦ ベイジアンフィルター ▪ A Plan For Spam

    (by Paul Graham, 2002) • bogofilter, spamassassin等 • Support Vector Machine (SVM) • 決定木(Decision Tree)ベース ◦ XGBoost ◦ LightGBM ◦ CatBoost