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

Deep Learning 完全に理解した

9bb0b45b963409b4e9c81b75e0f051f5?s=47 segavvy
August 26, 2021

Deep Learning 完全に理解した

2021年8月26日にEasy Easyというエンジニアのコミュニティが主催したオンラインイベントで、Deep Learningの仕組みについて30分ほどお話した際の資料です。

動画(スライド画面+音声)はこちらです。
https://youtu.be/uHxKsZpd_ic?t=709

9bb0b45b963409b4e9c81b75e0f051f5?s=128

segavvy

August 26, 2021
Tweet

Transcript

  1. Deep Learning 完全に理解した AI?機械学習? はいはい、知ってる知ってる @segavvy 🄫2021 segavvy 2021/8/26 エンジニア達の「◦◦完全に理解した」Talk

    #20 1 ディープラーニング
  2. このお話のゴール Deep Learning は人間みたいなことができるらしい 一体どんな仕組みになってるの? 仕組みが分かった! 3章に分けて お話します 🄫2021 segavvy

    2021/8/26 エンジニア達の「◦◦完全に理解した」Talk #20 2
  3. 第1章 脳 頭の中にある脳のお話 🄫2021 segavvy 2021/8/26 エンジニア達の「◦◦完全に理解した」Talk #20 3

  4. 脳はすごい • 計算できる • 読める・書ける • しゃべれる • 絵だって描ける •

    知識や経験で判断できる • 将来の予想もできる • 経験や訓練で効率が上がる • できることが勉強で増やせる コンピューターでは それぞれごとのプログラムが必要 できることを増やすには プログラムの追加・修正が必要 脳は 生まれた時にできた 1つの仕組みで なんでもできる 脳はすごい! 🄫2021 segavvy 2021/8/26 エンジニア達の「◦◦完全に理解した」Talk #20 4
  5. 脳の仕組み 🄫2021 segavvy 2021/8/26 エンジニア達の「◦◦完全に理解した」Talk #20 5 神経細胞がつながりあっていて 他の複数の細胞から信号を受け取る 信号の強さが境界を超えると

    次の神経細胞へ信号を伝える 次の細胞への信号の伝わりやすさや 伝えるかどうかの境界は まちまち
  6. 細胞をコンピューターでマネしたら? 前の神経細胞から入力を受け取り 一定以上なら次へ出力する 前からの 伝わりやすさ と 次へ伝える境界 は変数 🄫2021 segavvy

    2021/8/26 エンジニア達の「◦◦完全に理解した」Talk #20 6 1 0 1 前の細胞A 前の細胞B 次の細胞 伝わりやすさ 0.6 0.2 境界 0.4 if (1 × 0.6 + 0 × 0.2 >= 0.4): 出力 = 1 else: 出力 = 0
  7. 細胞1つで AND/OR/NAND ができる 左のプログラムは ★ a ・★ b ・★ を変えるだけで

    3つの機能が実現できる! 🄫2021 segavvy 2021/8/26 エンジニア達の「◦◦完全に理解した」Talk #20 7 入力 A 入力 B 出力 0.5 0.5 ≧0.7 入力 A 入力 B 出力 0.5 0.5 ≧0.2 入力 A 入力 B 出力 -0.5 -0.5 ≧-0.7 AND OR NAND (Not AND) if (入力A×★ a + 入力B×★ b >= ★): 出力 = 1 else: 出力 = 0
  8. 細胞が3つあれば XOR もできる 細胞1つでは XOR は実現できないが 3つ使うと実現できる 🄫2021 segavvy 2021/8/26

    エンジニア達の「◦◦完全に理解した」Talk #20 8 出力 0.5 0.5 ≧0.7 入力 A 入力 B -0.5 -0.5 ≧-0.7 ≧0.2 0.5 0.5
  9. 160個あれば手書き数字も認識できる 🄫2021 segavvy 2021/8/26 エンジニア達の「◦◦完全に理解した」Talk #20 9 細胞 52 細胞

    53 細胞 149 細胞 151 細胞 152 細胞 160 入力 2 入力 3 入力 783 細胞 1 細胞 2 細胞 50 入力 1 入力 784 細胞 51 細胞 150 入力は 28×28の 画像 (784ピクセル) 該当数字の 出力が 強くなる 0 1 9 ・ ・ ・
  10. 第1章 まとめ 脳の神経細胞をマネすれば 細胞間の 伝わりやすさ と 次へ伝える境界 を変えるだけで できることが増やせる 細胞を増やせば

    複雑なこともできる 伝わりやすさ と 次へ伝える境界 を 考えるのが すごく大変そう XOR ですら自力で考えるのが辛いけど...... 🄫2021 segavvy 2021/8/26 エンジニア達の「◦◦完全に理解した」Talk #20 10 第2章へつづく
  11. (休憩)自己紹介 🄫2020 segavvy 2020/5/28 完全に理解した人達の完全に理解したTalk #5 11 @segavvy IT企業でセールスコンサルタントを担当している元エンジニア 全文検索|自然言語処理|機械学習|企画|マーケ|ドラクエ好き|

    嫁さんはディズニー教|写真は丸まってたペンギン セガビ
  12. 第2章 伝わりやすさと 境界の決め方 大量の変数を どうやって考えるのか? 🄫2020 segavvy 2020/5/28 完全に理解した人達の完全に理解したTalk #5

    12
  13. とりあえず 1か所 変えてみる 🄫2021 segavvy 2021/8/26 エンジニア達の「◦◦完全に理解した」Talk #20 13 入力は

    28×28の 画像 (784ピクセル) ③後続の細胞に 伝わる強さを再計算 ④「出力0」が 強くなれば 試した内容で確定 弱くなった時は 逆の調整 (少し減らす) ①1つの 画像を 入力して 出力を計算 細胞 52 細胞 53 細胞 149 細胞 151 細胞 152 細胞 160 入力 2 入力 3 入力 783 細胞 1 細胞 2 細胞 50 入力 1 入力 784 細胞 51 細胞 150 0 1 9 ・ ・ ・ 細胞 52 細胞 53 細胞 149 細胞 151 細胞 152 細胞 160 入力 2 入力 3 入力 783 細胞 1 細胞 2 細胞 50 入力 1 入力 784 細胞 51 細胞 150 0 1 9 ・ ・ ・ 細胞 52 細胞 53 細胞 149 細胞 151 細胞 152 細胞 160 入力 2 入力 3 入力 783 細胞 1 細胞 2 細胞 50 入力 1 入力 784 細胞 51 細胞 150 0 1 9 ・ ・ ・ 細胞 52 細胞 53 細胞 149 細胞 151 細胞 152 細胞 160 入力 2 入力 3 入力 783 細胞 1 細胞 2 細胞 50 入力 1 入力 784 細胞 51 細胞 150 0 1 9 ・ ・ ・ ②1か所の伝わりやすさを 試しに少し増やしてみる
  14. すべて調整する 🄫2021 segavvy 2021/8/26 エンジニア達の「◦◦完全に理解した」Talk #20 14 調整する変数の数: 伝わりやすさ 45,200個(=線の数)

    次に伝える境界 160個(=細胞の数) すべての変数(伝わりやすさと境界)を順番に少し変えてみて 出力「0」が強くなる方向へ調整する 細胞 52 細胞 53 細胞 149 細胞 151 細胞 152 細胞 160 入力 2 入力 3 入力 783 細胞 1 細胞 2 細胞 50 入力 1 入力 784 細胞 51 細胞 150 0 1 9 ・ ・ ・
  15. どんどん調整する 同様に 他の数字の画像も入力して 正解の出力が強くなるように調整する 🄫2021 segavvy 2021/8/26 エンジニア達の「◦◦完全に理解した」Talk #20 15

    細胞 52 細胞 53 細胞 149 細胞 151 細胞 152 細胞 160 入力 2 入力 3 入力 783 細胞 1 細胞 2 細胞 50 入力 1 入力 784 細胞 51 細胞 150 0 1 9 ・ ・ ・
  16. ひたすら調整する 同様に さまざまなバリエーションの画像も入力して 正解の出力が強くなるように調整する 🄫2021 segavvy 2021/8/26 エンジニア達の「◦◦完全に理解した」Talk #20 16

    細胞 52 細胞 53 細胞 149 細胞 151 細胞 152 細胞 160 入力 2 入力 3 入力 783 細胞 1 細胞 2 細胞 50 入力 1 入力 784 細胞 51 細胞 150 0 1 9 ・ ・ ・ 精度を上げるため 少しずつの調整を 何度も繰り返す必要がある
  17. 実際には もう少し効率よく調整 🄫2021 segavvy 2021/8/26 エンジニア達の「◦◦完全に理解した」Talk #20 17 出力を 境界値で0と1に判定

    すると 入力が少し変わっても 境界を越えない限り変化しない → 調整しにくいので 実際は連続値 前の細胞からの入力の合計 次 の 細 胞 へ の 出 力 小 大 1 0 A B 境界 出力 連続 出力 入力 0 0.1 入力 0 0.3 A B 途中の変数を少し変えて 出力まで再計算する作業は すごく大変 → 途中の各変数が 偏微分できるように 出力の式を組み上げる 大量にある細胞間のつながりを 計算していくのが大変 → 行列計算に置きかえて効率化 → GPUで高速化 0.3 0.1
  18. 第2章 まとめ 伝わりやすさ と 次へ伝える境界 の変数は 実際のデータを入力に使って 目的の出力が得られるように 機械的な調整を繰り返して決める →

    プログラムによる このような調整作業が 機械学習 機械学習は 脳のマネをしない仕組みでもよく使われる 細胞を増やせば 複雑なことができる(第1章) 大量の変数調整も 機械学習でプログラムにお任せ(第2章) これで なんでもできる? 🄫2021 segavvy 2021/8/26 エンジニア達の「◦◦完全に理解した」Talk #20 18 第3章へつづく
  19. (休憩)お薦めの本と記事 🄫2020 segavvy 2020/5/28 完全に理解した人達の完全に理解したTalk #5 19 https://www.oreilly.co.jp/books/9784873117584/ https://qiita.com/segavvy/items/4e8c36cac9c6f3543ffd Python

    で 実装しながら仕組みが学べます
  20. 第3章 いろいろな課題 いろいろな課題と それに対する取り組み 🄫2020 segavvy 2020/5/28 完全に理解した人達の完全に理解したTalk #5 20

  21. 細胞を増やすだけでは ダメだった 機械学習は変数調整のさじ加減が難しく 試行錯誤が必要 細胞が増える → 変数が増える → 必要なマシンパワーも増大 細胞を増やすだけでは

    精度が上がらないテーマも多い 細胞自体の仕組みの改良 や 細胞間のつなげ方の工夫 が必要 機械学習には データやマシンパワーや時間がかかるので 学習済みの結果を 他の用途でも使いまわしたい などなど 🄫2021 segavvy 2021/8/26 エンジニア達の「◦◦完全に理解した」Talk #20 21
  22. 細胞の機能やつなぎ方は 熱い研究テーマ 🄫2021 segavvy 2021/8/26 エンジニア達の「◦◦完全に理解した」Talk #20 22 THE ASIMOV

    INSTITUTE.「THE NEURAL NETWORK ZOO」. https://www.asimovinstitute.org/neural-network-zoo/ ,(最終閲覧日 2021/8/14)
  23. 工夫例① 直前の出力を 次の調整に使う このような細胞を使うと 入力の順番 を考慮した調整ができる 🄫2021 segavvy 2021/8/26 エンジニア達の「◦◦完全に理解した」Talk

    #20 23 出力 入力 入力 出力を 次の入力の1つとしても使う 出力
  24. これを使って 文章の生成 実際の小説で 続く単語が 出力になるよう調整する 🄫2021 segavvy 2021/8/26 エンジニア達の「◦◦完全に理解した」Talk #20

    24 学習 入力 理想の出力 1回目 吾輩 は 2回目 は 猫 3回目 猫 で 4回目 で ある 5回目 ある 。 : : : 文章の書き出しを与えると その著者風の続きを生成してくれる 生成 入力 出力 1回目 吾輩 (未使用) 2回目 は (未使用) 3回目 犬 で 4回目 で ある 5回目 ある 。 : : : 「吾輩は犬」だけ 入力する 続きは 得られた 出力をそのまま入力 これで続きが 生成されていく ※実際に単語を扱う際は「単語の埋め込み」という手法などで 固定数のデータに変換します
  25. | | | | | | | | | |

    | | | | | | | | | | | | | | | | | | | | | | | | | | | | 工夫例② 機械学習済みの仕組みの流用 画像から 4,096 個の特徴データへ変換する仕組みとして流用 🄫2021 segavvy 2021/8/26 エンジニア達の「◦◦完全に理解した」Talk #20 25 入力細胞は150,528個 (224 x 224 x 3 個) • • • • • ・ ・ ・ • • • • • • ・ ・ ・ • • • • • ・ ・ • • • • • • • ・ ・ ・ • • • • • • ・ ・ ・ • • • ペンギン! 出力の細胞は 1,000 個 画像を1,000種類に 分類する仕組み (VGG16というモデル) • • • ・ ・ ・ • • 1つ手前の細胞は 4,096 個 ここに画像の特徴が 凝縮されている!
  26. それを 文章生成の仕組みと 組み合わせ 🄫2021 segavvy 2021/8/26 エンジニア達の「◦◦完全に理解した」Talk #20 26 学習

    入力 理想の 出力 1回目 画像の 特徴データ ペンギン 2回目 ペンギン が 3回目 が 雪 4回目 雪 に 5回目 に 立って 6回目 立って いる : : : 学習済みの仕組みで特徴抽出 生成 入力 出力 1回目 画像の 特徴データ ペンギン 2回目 ペンギン が 3回目 が 雪 4回目 雪 で 5回目 で 寝て 6回目 寝て いる 画像の説明文が 生成できる!
  27. 第3章 まとめ ご説明したような 神経細胞をマネして 複雑に組み合わせて 人間みたいなことを実現する仕組みが Deep Learning Deep Learning

    は課題も多く 実用化も難しい世界だが 研究が活発で 新しい仕組みが どんどん発表されている TensorFlow や PyTorch や Keras などのライブラリを使えば 主要な仕組みは簡単に試せるので 遊びなら楽しい 🄫2021 segavvy 2021/8/26 エンジニア達の「◦◦完全に理解した」Talk #20 27
  28. おわりに Deep Learning は人間みたいなことができるらしい 一体どんな仕組みになってるの? 仕組みが分かった! このお話が Deep Learning の理解の一助になれば幸いです

    ありがとうございました 🄫2021 segavvy 2021/8/26 エンジニア達の「◦◦完全に理解した」Talk #20 28 これが今日のお話の ゴール
  29. 参考文献・参考サイト • 斎藤 康毅.「ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装」. オライリー・ジャパン, 2016 https://www.oreilly.co.jp/books/9784873117584/ •

    斎藤 康毅.「ゼロから作るDeep Learning ❷ ―自然言語処理編」. オライリー・ジャパン, 2018 https://www.oreilly.co.jp/books/9784873118369/ • THE ASIMOV INSTITUTE. 「THE NEURAL NETWORK ZOO」(最終閲覧日 2021/8/14) https://www.asimovinstitute.org/neural-network-zoo/ • AI人工知能テクノロジー.「VGG16モデルを使用してオリジナル写真の画像認識を行ってみる」 (最終閲覧日 2021/8/22) https://newtechnologylifestyle.net/vgg16originalpicture/ • かわいいフリー素材集「いらすとや」 https://www.irasutoya.com/ 🄫2021 segavvy 2021/8/26 エンジニア達の「◦◦完全に理解した」Talk #20 29