Slide 1

Slide 1 text

Deep Learning 完全に理解した AI?機械学習? はいはい、知ってる知ってる @segavvy 🄫2021 segavvy 2021/8/26 エンジニア達の「○○完全に理解した」Talk #20 1 ディープラーニング

Slide 2

Slide 2 text

このお話のゴール Deep Learning は人間みたいなことができるらしい 一体どんな仕組みになってるの? 仕組みが分かった! 3章に分けて お話します 🄫2021 segavvy 2021/8/26 エンジニア達の「○○完全に理解した」Talk #20 2

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

脳はすごい • 計算できる • 読める・書ける • しゃべれる • 絵だって描ける • 知識や経験で判断できる • 将来の予想もできる • 経験や訓練で効率が上がる • できることが勉強で増やせる コンピューターでは それぞれごとのプログラムが必要 できることを増やすには プログラムの追加・修正が必要 脳は 生まれた時にできた 1つの仕組みで なんでもできる 脳はすごい! 🄫2021 segavvy 2021/8/26 エンジニア達の「○○完全に理解した」Talk #20 4

Slide 5

Slide 5 text

脳の仕組み 🄫2021 segavvy 2021/8/26 エンジニア達の「○○完全に理解した」Talk #20 5 神経細胞がつながりあっていて 他の複数の細胞から信号を受け取る 信号の強さが境界を超えると 次の神経細胞へ信号を伝える 次の細胞への信号の伝わりやすさや 伝えるかどうかの境界は まちまち

Slide 6

Slide 6 text

細胞をコンピューターでマネしたら? 前の神経細胞から入力を受け取り 一定以上なら次へ出力する 前からの 伝わりやすさ と 次へ伝える境界 は変数 🄫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

Slide 7

Slide 7 text

細胞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

Slide 8

Slide 8 text

細胞が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

Slide 9

Slide 9 text

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 ・ ・ ・

Slide 10

Slide 10 text

第1章 まとめ 脳の神経細胞をマネすれば 細胞間の 伝わりやすさ と 次へ伝える境界 を変えるだけで できることが増やせる 細胞を増やせば 複雑なこともできる 伝わりやすさ と 次へ伝える境界 を 考えるのが すごく大変そう XOR ですら自力で考えるのが辛いけど...... 🄫2021 segavvy 2021/8/26 エンジニア達の「○○完全に理解した」Talk #20 10 第2章へつづく

Slide 11

Slide 11 text

(休憩)自己紹介 🄫2020 segavvy 2020/5/28 完全に理解した人達の完全に理解したTalk #5 11 @segavvy IT企業でセールスコンサルタントを担当している元エンジニア 全文検索|自然言語処理|機械学習|企画|マーケ|ドラクエ好き| 嫁さんはディズニー教|写真は丸まってたペンギン セガビ

Slide 12

Slide 12 text

第2章 伝わりやすさと 境界の決め方 大量の変数を どうやって考えるのか? 🄫2020 segavvy 2020/5/28 完全に理解した人達の完全に理解したTalk #5 12

Slide 13

Slide 13 text

とりあえず 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か所の伝わりやすさを 試しに少し増やしてみる

Slide 14

Slide 14 text

すべて調整する 🄫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 ・ ・ ・

Slide 15

Slide 15 text

どんどん調整する 同様に 他の数字の画像も入力して 正解の出力が強くなるように調整する 🄫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 ・ ・ ・

Slide 16

Slide 16 text

ひたすら調整する 同様に さまざまなバリエーションの画像も入力して 正解の出力が強くなるように調整する 🄫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 ・ ・ ・ 精度を上げるため 少しずつの調整を 何度も繰り返す必要がある

Slide 17

Slide 17 text

実際には もう少し効率よく調整 🄫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

Slide 18

Slide 18 text

第2章 まとめ 伝わりやすさ と 次へ伝える境界 の変数は 実際のデータを入力に使って 目的の出力が得られるように 機械的な調整を繰り返して決める → プログラムによる このような調整作業が 機械学習 機械学習は 脳のマネをしない仕組みでもよく使われる 細胞を増やせば 複雑なことができる(第1章) 大量の変数調整も 機械学習でプログラムにお任せ(第2章) これで なんでもできる? 🄫2021 segavvy 2021/8/26 エンジニア達の「○○完全に理解した」Talk #20 18 第3章へつづく

Slide 19

Slide 19 text

(休憩)お薦めの本と記事 🄫2020 segavvy 2020/5/28 完全に理解した人達の完全に理解したTalk #5 19 https://www.oreilly.co.jp/books/9784873117584/ https://qiita.com/segavvy/items/4e8c36cac9c6f3543ffd Python で 実装しながら仕組みが学べます

Slide 20

Slide 20 text

第3章 いろいろな課題 いろいろな課題と それに対する取り組み 🄫2020 segavvy 2020/5/28 完全に理解した人達の完全に理解したTalk #5 20

Slide 21

Slide 21 text

細胞を増やすだけでは ダメだった 機械学習は変数調整のさじ加減が難しく 試行錯誤が必要 細胞が増える → 変数が増える → 必要なマシンパワーも増大 細胞を増やすだけでは 精度が上がらないテーマも多い 細胞自体の仕組みの改良 や 細胞間のつなげ方の工夫 が必要 機械学習には データやマシンパワーや時間がかかるので 学習済みの結果を 他の用途でも使いまわしたい などなど 🄫2021 segavvy 2021/8/26 エンジニア達の「○○完全に理解した」Talk #20 21

Slide 22

Slide 22 text

細胞の機能やつなぎ方は 熱い研究テーマ 🄫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)

Slide 23

Slide 23 text

工夫例① 直前の出力を 次の調整に使う このような細胞を使うと 入力の順番 を考慮した調整ができる 🄫2021 segavvy 2021/8/26 エンジニア達の「○○完全に理解した」Talk #20 23 出力 入力 入力 出力を 次の入力の1つとしても使う 出力

Slide 24

Slide 24 text

これを使って 文章の生成 実際の小説で 続く単語が 出力になるよう調整する 🄫2021 segavvy 2021/8/26 エンジニア達の「○○完全に理解した」Talk #20 24 学習 入力 理想の出力 1回目 吾輩 は 2回目 は 猫 3回目 猫 で 4回目 で ある 5回目 ある 。 : : : 文章の書き出しを与えると その著者風の続きを生成してくれる 生成 入力 出力 1回目 吾輩 (未使用) 2回目 は (未使用) 3回目 犬 で 4回目 で ある 5回目 ある 。 : : : 「吾輩は犬」だけ 入力する 続きは 得られた 出力をそのまま入力 これで続きが 生成されていく ※実際に単語を扱う際は「単語の埋め込み」という手法などで 固定数のデータに変換します

Slide 25

Slide 25 text

| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 工夫例② 機械学習済みの仕組みの流用 画像から 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 個 ここに画像の特徴が 凝縮されている!

Slide 26

Slide 26 text

それを 文章生成の仕組みと 組み合わせ 🄫2021 segavvy 2021/8/26 エンジニア達の「○○完全に理解した」Talk #20 26 学習 入力 理想の 出力 1回目 画像の 特徴データ ペンギン 2回目 ペンギン が 3回目 が 雪 4回目 雪 に 5回目 に 立って 6回目 立って いる : : : 学習済みの仕組みで特徴抽出 生成 入力 出力 1回目 画像の 特徴データ ペンギン 2回目 ペンギン が 3回目 が 雪 4回目 雪 で 5回目 で 寝て 6回目 寝て いる 画像の説明文が 生成できる!

Slide 27

Slide 27 text

第3章 まとめ ご説明したような 神経細胞をマネして 複雑に組み合わせて 人間みたいなことを実現する仕組みが Deep Learning Deep Learning は課題も多く 実用化も難しい世界だが 研究が活発で 新しい仕組みが どんどん発表されている TensorFlow や PyTorch や Keras などのライブラリを使えば 主要な仕組みは簡単に試せるので 遊びなら楽しい 🄫2021 segavvy 2021/8/26 エンジニア達の「○○完全に理解した」Talk #20 27

Slide 28

Slide 28 text

おわりに Deep Learning は人間みたいなことができるらしい 一体どんな仕組みになってるの? 仕組みが分かった! このお話が Deep Learning の理解の一助になれば幸いです ありがとうございました 🄫2021 segavvy 2021/8/26 エンジニア達の「○○完全に理解した」Talk #20 28 これが今日のお話の ゴール

Slide 29

Slide 29 text

参考文献・参考サイト • 斎藤 康毅.「ゼロから作る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