Slide 1

Slide 1 text

中学生でもわかる深層学習 2024/3/29 米田優峻 (E869120)

Slide 2

Slide 2 text

自己紹介 米田 優峻 (よねだ まさたか) • 2002 年生まれ • 2021 年東京大学入学 • 2023 年東京大学理学部情報科学科に進学 主な実績 • 国際情報オリンピックで 3 回金メダル獲得 • プログラミングや数学の本を 3 冊出版 (著書累計 7 万部) 2

Slide 3

Slide 3 text

はじめに 現在、深層学習が 世界を動かしている 3

Slide 4

Slide 4 text

たとえば、ChatGPT

Slide 5

Slide 5 text

人間を超える将棋や囲碁の AI https://www.engadget.com/2016-03-12-watch-alphago-vs-lee-sedol-round-3-live-right-now.html

Slide 6

Slide 6 text

そして自動運転にも、深層学習が使われている

Slide 7

Slide 7 text

はじめに それでは、深層学習とは一体どういうものか? 中身は一体どうなっているのか? 7

Slide 8

Slide 8 text

はじめに それでは、深層学習とは一体どういうものか? 中身は一体どうなっているのか? 本スライドではこの疑問を解決します! 8

Slide 9

Slide 9 text

• 深層学習の仕組みと中身のアルゴリズム、そして応用について初学者でもわかりやすく 説明します。 • 中学レベルの数学で理解できると思うので、数学に自信のない方もぜひお読みください。 (これは中学生・高校生向けの講演として作成されました) • 最初に機械学習の説明もあるので、機械学習を全然知らない人でも大丈夫です。 このスライドについて 諸注意 このスライドは入門的な内容となっています。深層学習を全部説明しているわけでは ないのでご注意ください。また、厳密さに欠ける部分があることもご了承ください。 9

Slide 10

Slide 10 text

目次 1章 理論編 1.1 深層学習とは 1.2 ニューラルネットワーク 1.3 どうやって学習するか? 1.3 ~勾配降下法~ 1.4 深層学習の注意点 (1) 1.5 深層学習の注意点 (2) 13 31 57 91 100 ……………………… ………… ………… ……………… ……………… 2章 応用編 2.1 分類問題 2.2 画像認識 2.3 音声認識・自然言語処理 講演のまとめ 110 120 151 167 …………………………… …………………………… ………… …………………………… 全 176ページ 10

Slide 11

Slide 11 text

• 本スライドを作成するにあたって、AIcia_Solid 氏からフィー ドバックをいただきました。ご協力ありがとうございます。 謝辞 11

Slide 12

Slide 12 text

第 1 章 理論編

Slide 13

Slide 13 text

機械学習とは まず、深層学習の前に 機械学習とは何でしょうか 13

Slide 14

Slide 14 text

機械学習とは 機械学習 コンピュータがデータを自動で学習し 未知のデータに対して予測・判断する技術 = 14

Slide 15

Slide 15 text

機械学習の基本的な流れ 機械学習は、基本的に以下のような流れで行われます ステップ 1 いくつかの訓練データを用いて、どのような計算式ならば正 しく予測できそうかを学習する ステップ 2 学習した計算式を用いて、未知のデータに対して予測を行う 15

Slide 16

Slide 16 text

機械学習の基本的な流れ 機械学習は、基本的に以下のような流れで行われます ステップ 1 いくつかの訓練データを用いて、どのような計算式ならば正 しく予測できそうかを学習する ステップ 2 学習した計算式を用いて、未知のデータに対して予測を行う 人間ならば… テストの過去問を解いて どういうやり方ならば 高得点を取れるか学習する のと同じ 16

Slide 17

Slide 17 text

機械学習の基本的な流れ 機械学習は、基本的に以下のような流れで行われます ステップ 1 いくつかの訓練データを用いて、どのような計算式ならば正 しく予測できそうかを学習する ステップ 2 学習した計算式を用いて、未知のデータに対して予測を行う 人間ならば… 過去問の学習を駆使して 実際にテストを解くのと同じ 17

Slide 18

Slide 18 text

機械学習の基本的な流れ 機械学習は、基本的に以下のような流れで行われます ステップ 1 いくつかの訓練データを用いて、どのような計算式ならば正 しく予測できそうかを学習する ステップ 2 学習した計算式を用いて、実際に予測を行う 人間ならば… 過去問の学習を駆使して 実際にテストを解くのと同じ 具体例を見ていきましょう! 18

Slide 19

Slide 19 text

機械学習: 具体例 機械学習の例 1 顔写真から年齢を推定するプログラム まず、いくつかの学習用データから どういう式ならば正しく予測できそうか学習 未知の画像データを受け取り 学習した式に基づいて年齢を予測 予測式は 0.1x 1 + 0.2x 2 か? 66歳 81歳 この画像は 70 歳! 0.1x 1 + 0.2x 2 19

Slide 20

Slide 20 text

機械学習: 具体例 機械学習の例 1 顔写真から年齢を推定するプログラム まず、いくつかの学習用データから どういう式ならば正しく予測できそうか学習 未知の画像データを受け取り 学習した式に基づいて年齢を予測 予測式は 0.1x 1 + 0.2x 2 か? 66歳 81歳 この画像は 70 歳! 0.1x 1 + 0.2x 2 20

Slide 21

Slide 21 text

機械学習: 具体例 機械学習の例 1 顔写真から年齢を推定するプログラム まず、いくつかの学習用データから どういう式ならば正しく予測できそうか学習 未知の画像データを受け取り 学習した式に基づいて年齢を予測 予測式は 0.1x 1 + 0.2x 2 か? 66歳 81歳 この画像は 70 歳! 0.1x 1 + 0.2x 2 21

Slide 22

Slide 22 text

機械学習: 具体例 機械学習の例 2 過去 1 週間分の株価から明日の株価を予想するプログラム まず、いくつかの学習用データから どういう式ならば正しく予測できそうか学習 未知の株価データを受け取り 学習した式に基づいて株価を予測 予測式は 0.5x 1 + 0.7x 2 か? +50円 -40円 明日は 100 円上がる! 0.5x 1 + 0.7x 2 22

Slide 23

Slide 23 text

機械学習: 具体例 機械学習の例 2 過去 1 週間分の株価から明日の株価を予想するプログラム まず、いくつかの学習用データから どういう式ならば正しく予測できそうか学習 未知の株価データを受け取り 学習した式に基づいて株価を予測 予測式は 0.5x 1 + 0.7x 2 か? +50円 -40円 明日は 100 円上がる! 0.5x 1 + 0.7x 2 23

Slide 24

Slide 24 text

機械学習: 具体例 機械学習の例 2 過去 1 週間分の株価から明日の株価を予想するプログラム まず、いくつかの学習用データから どういう式ならば正しく予測できそうか学習 未知の株価データを受け取り 学習した式に基づいて株価を予測 予測式は 0.5x 1 + 0.7x 2 か? +50円 -40円 明日は 100 円上がる! 0.5x 1 + 0.7x 2 24

Slide 25

Slide 25 text

機械学習: 具体例 機械学習の例 3 将棋の局面から勝率を予測するプログラム まず、いくつかの学習用データから どういう式ならば正しく予測できそうか学習 未知の局面データを受け取り 学習した式に基づいて勝率を予測 予測式は 0.8x 1 + 0.9x 2 か? 80% 10% この局面は勝率 50%! 0.8x 1 + 0.9x 2 25

Slide 26

Slide 26 text

機械学習: 具体例 機械学習の例 3 将棋の局面から勝率を予測するプログラム まず、いくつかの学習用データから どういう式ならば正しく予測できそうか学習 未知の局面データを受け取り 学習した式に基づいて勝率を予測 予測式は 0.8x 1 + 0.9x 2 か? 80% 10% この局面は勝率 50%! 0.8x 1 + 0.9x 2 26

Slide 27

Slide 27 text

機械学習: 具体例 機械学習の例 3 将棋の局面から勝率を予測するプログラム まず、いくつかの学習用データから どういう式ならば正しく予測できそうか学習 未知の局面データを受け取り 学習した式に基づいて勝率を予測 予測式は 0.8x 1 + 0.9x 2 か? 80% 10% この局面は勝率 50%! 0.8x 1 + 0.9x 2 27

Slide 28

Slide 28 text

深層学習とは そこで、予測に使う計算式としては 様々なものが考えられます 28

Slide 29

Slide 29 text

深層学習とは たとえば、0.1×(1ピクセル目) + 0.2×(2ピクセル目) + … のような形の式で予測する方法が考えられます 1 ピクセル目 2 ピクセル目 3 ピクセル目 4 ピクセル目 年齢の 予想 + 0.1×(1ピクセル目) + 0.2×(2ピクセル目) + 0.3×(3ピクセル目) : 29

Slide 30

Slide 30 text

深層学習とは しかしその中でも、計算にニューラルネットワークを 用いたものが深層学習です 1 ピクセル目 2 ピクセル目 3 ピクセル目 4 ピクセル目 年齢の 予想 30

Slide 31

Slide 31 text

1.1 1.3 1.2 1.4 深層学習とは ニューラルネットワークとは どうやって学習を行うか ~勾配降下法~ 深層学習の注意点 (1) 1.5 深層学習の注意点 (2)

Slide 32

Slide 32 text

ニューラルネットワークとは 入力層 中間層 出力層 ニューラルネットワークは入力層・中間層・出力層からなり 中間層での演算結果をもとに出力が決まります 32

Slide 33

Slide 33 text

ニューラルネットワークとは 入力層 中間層 出力層 60 50 70 まず入力層で入力 (画像のピクセルなど) を受け取り 1 ピクセル目 2 ピクセル目 3 ピクセル目 33

Slide 34

Slide 34 text

ニューラルネットワークとは 入力層 中間層 出力層 60 50 70 24 21 次に中間層では前の層から順に計算が行われ 1 ピクセル目 2 ピクセル目 3 ピクセル目 34

Slide 35

Slide 35 text

ニューラルネットワークとは 入力層 中間層 出力層 30 0 60 50 70 24 21 次に中間層では前の層から順に計算が行われ 1 ピクセル目 2 ピクセル目 3 ピクセル目 35

Slide 36

Slide 36 text

ニューラルネットワークとは 入力層 中間層 出力層 24 6 30 0 60 50 70 24 21 次に中間層では前の層から順に計算が行われ 1 ピクセル目 2 ピクセル目 3 ピクセル目 36

Slide 37

Slide 37 text

ニューラルネットワークとは 入力層 中間層 出力層 24 6 42 30 0 60 50 70 24 21 最後に出力層で、予測結果 (年齢など) が出力されます 42 歳 1 ピクセル目 2 ピクセル目 3 ピクセル目 37

Slide 38

Slide 38 text

ニューラルネットワークとは 入力層 中間層 出力層 0.1 0.2 0.1 0.0 0.1 0.3 0.9 0.5 0.8 0.6 -0.6 0.4 0.2 0.7 1.5 1.0 ここで、それぞれの線には重みが付けられており この値によって計算結果が決まります 38

Slide 39

Slide 39 text

ニューラルネットワークとは 入力層 中間層 出力層 60 50 70 24 0.1 0.2 0.1 0.0 0.1 0.3 0.9 0.5 0.8 0.6 -0.6 0.4 0.2 0.7 1.5 1.0 具体的には、計算結果は (線の始点)×(重み) の合計ですが 0 未満になった場合は 0 にします※ ※これは代表的な計算方法の一例であることに注意 (他にも計算方法はある)。詳細は本節最後の補足を参照 +70×0.1 +60×0.2 +50×0.1 =24 39

Slide 40

Slide 40 text

ニューラルネットワーク: 具体例 それでは、具体例で実際に計算してみましょう 40

Slide 41

Slide 41 text

ニューラルネットワーク: 具体例 入力層 中間層 出力層 60 50 70 24 0.1 0.2 0.1 0.0 0.1 0.3 0.9 0.5 0.8 0.6 -0.6 0.4 0.2 0.7 1.5 1.0 まず、1 層目上側は 70×0.1 + 60×0.2 + 50×0.1 = 24 41

Slide 42

Slide 42 text

ニューラルネットワーク: 具体例 入力層 中間層 出力層 60 50 70 24 21 0.1 0.2 0.1 0.0 0.1 0.3 0.9 0.5 0.8 0.6 -0.6 0.4 0.2 0.7 1.5 1.0 次に、1 層目下側は 70×0.0 + 60×0.1 + 50×0.3 = 21 42

Slide 43

Slide 43 text

ニューラルネットワーク: 具体例 入力層 中間層 出力層 30 60 50 70 24 21 0.1 0.2 0.1 0.0 0.1 0.3 0.9 0.5 0.8 0.6 -0.6 0.4 0.2 0.7 1.5 1.0 次に、2 層目上側は 24×0.9 + 21×0.4 = 30 43

Slide 44

Slide 44 text

ニューラルネットワーク: 具体例 入力層 中間層 出力層 30 0 60 50 70 24 21 0.1 0.2 0.1 0.0 0.1 0.3 0.9 0.5 0.8 0.6 -0.6 0.4 0.2 0.7 1.5 1.0 次に、2 層目下側は 24×(-0.6) + 21×0.5 = -3.9 だが 0 未満なので計算結果は 0 44

Slide 45

Slide 45 text

ニューラルネットワーク: 具体例 入力層 中間層 出力層 24 30 0 60 50 70 24 21 0.1 0.2 0.1 0.0 0.1 0.3 0.9 0.5 0.8 0.6 -0.6 0.4 0.2 0.7 1.5 1.0 次に、3 層目上側は 30×0.8 + 0×0.7 = 24 45

Slide 46

Slide 46 text

ニューラルネットワーク: 具体例 入力層 中間層 出力層 24 6 30 0 60 50 70 24 21 0.1 0.2 0.1 0.0 0.1 0.3 0.9 0.5 0.8 0.6 -0.6 0.4 0.2 0.7 1.5 1.0 次に、3 層目下側は 30×0.2 + 0×0.6 = 6 46

Slide 47

Slide 47 text

ニューラルネットワーク: 具体例 入力層 中間層 出力層 24 6 42 30 0 60 50 70 24 21 0.1 0.2 0.1 0.0 0.1 0.3 0.9 0.5 0.8 0.6 -0.6 0.4 0.2 0.7 1.5 1.0 最後に、出力は 24×1.5 + 6×1.0 = 42 → 予測年齢は 42 歳 47

Slide 48

Slide 48 text

深層学習の本質 ここで、どんな重みを付けるかによって 予測精度が大幅に異なる 48

Slide 49

Slide 49 text

深層学習の本質 たとえば、左の重みを付けると 30 歳以上ずれるのに 右の重みを付けると大体 ±10 歳しかずれないことは良くある 0.1 0.2 0.4 0.3 0.5 0.6 0.4 0.2 0.3 0.4 1.5 1.0 0.3 0.2 0.5 0.1 0.4 0.6 0.5 0.3 0.5 0.5 1.0 1.5 49

Slide 50

Slide 50 text

深層学習の本質 そこで深層学習では、訓練データでの誤差が 最小になるように学習を行い、重みを決める (訓練データで良いものは実データでも良いだろうという考え方) 50

Slide 51

Slide 51 text

• 誤差の測り方には様々なものがあるが、2 乗 誤差の合計が採用されることが多い • 単純な絶対値の合計ではない理由は様々 • 計算しやすい • 大きい誤差のあるデータが少なくなりやすい • 経験上性能が良くなりやすい etc. 補足: 誤差の測り方 2 乗誤差の例 データ 1 データ 2 データ 3 (28, 34) 誤差 6 (70, 69) 誤差 1 (62, 65) 誤差 3 (予測, 正解) 2 乗誤差の合計は 62 + 12 + 32 = 46 51

Slide 52

Slide 52 text

• 深層学習の計算では、途中で値が 0 未満に なったら 0 にする • この理由は、もし 0 にする処理を行わない 場合、どう重みを決めても出力が 0.1x 1 + 0.2x 2 + 0.3x 3 のような形になり、複雑な式を 表現できなくなるため 補足: なぜ 0 未満を 0 にするのか? 入力 x 1 入力 x 2 入力 x 3 絶対に 0.1x 1 + 0.2x 2 + 0.3x 3 のような形になってしまう! 52

Slide 53

Slide 53 text

• 深層学習の計算では、途中で値が 0 未満に なったら 0 にする • この理由は、もし 0 にする処理を行わない 場合、どう重みを決めても出力が 0.1x 1 + 0.2x 2 + 0.3x 3 のような形になり、複雑な式を 表現できなくなるため • 具体例は左図 補足: なぜ 0 未満を 0 にするのか? 入力 x 1 入力 x 2 入力 x 3 例:上の重みの場合 0.625x 1 + 0.875x 2 + 1.125x 3 0.1 0.2 0.30.4 0.5 0.6 0.5 0.5 0.5 0.5 1.5 1.0 53

Slide 54

Slide 54 text

• 深層学習の計算では、途中で値が 0 未満に なったら 0 にする • この理由は、もし 0 にする処理を行わない 場合、どう重みを決めても出力が 0.1x 1 + 0.2x 2 + 0.3x 3 のような形になり、複雑な式を 表現できなくなるため • 具体例は左図 補足: なぜ 0 未満を 0 にするのか? 入力 x 1 入力 x 2 入力 x 3 例:上の重みの場合 0.462x 1 + 0.884x 2 + 1.789x 3 0.3 0.1 0.40.1 0.5 0.9 0.1 0.3 0.7 0.9 1.2 1.3 54

Slide 55

Slide 55 text

• 深層学習の計算では、途中で値が 0 未満に なったら 0 にする • この理由は、もし 0 にする処理を行わない 場合、どう重みを決めても出力が 0.1x 1 + 0.2x 2 + 0.3x 3 のような形になり、複雑な式を 表現できなくなるため • 具体例は左図 補足: なぜ 0 未満を 0 にするのか? 入力 x 1 入力 x 2 入力 x 3 例:上の重みの場合 0.318x 1 + 0.295x 2 + 0.318x 3 0.2 0.3 0.20.5 0.4 0.5 0.3 0.6 0.5 0.4 0.8 0.1 55

Slide 56

Slide 56 text

• ここで、0 未満を 0 にする部分の処理を活性 化関数という • 活性化関数にはそれ以外にもシグモイド関 数などがあるが、とりあえず現段階では「0 未満を 0 にする処理をするのだ」と思って おけばよい 補足: なぜ 0 未満を 0 にするのか? ※ 0 未満を 0 にする活性化関数は「ReLU」と呼ばれることがある 活性化関数の例 0 未満を 0 にする シグモイド 関数 0 未満を 半分にする 56

Slide 57

Slide 57 text

1.1 1.3 1.2 1.4 深層学習とは ニューラルネットワークとは どうやって学習を行うか ~勾配降下法~ 深層学習の注意点 (1) 1.5 深層学習の注意点 (2)

Slide 58

Slide 58 text

どうやって学習を行うか 重みの学習は、基本的に 勾配降下法を用いて行う 58

Slide 59

Slide 59 text

勾配降下法とは 勾配降下法は、ざっくり書くと下図のような流れで行われる 59 ステップ 1 ランダムに重みの初期値を決める ステップ 2 重みを少し変更することで、誤差を小さくする ステップ 3 ステップ 2 を繰り返し、誤差をさらに小さくしていく

Slide 60

Slide 60 text

勾配降下法とは 勾配降下法は、ざっくり書くと下図のような流れで行われる 60 ステップ 1 ランダムに重みの初期値を決める ステップ 2 重みを少し変更することで、誤差を小さくする ステップ 3 ステップ 2 を繰り返し、誤差をさらに小さくしていく 1.4 1.4 0.6 0.3 0.6 0.6 0.2 0.3 0.4 0.7 0.1 0.8 誤差 1000

Slide 61

Slide 61 text

勾配降下法とは 勾配降下法は、ざっくり書くと下図のような流れで行われる 61 ステップ 1 ランダムに重みの初期値を決める ステップ 2 重みを少し変更することで、誤差を小さくする ステップ 3 ステップ 2 を繰り返し、誤差をさらに小さくしていく 1.4 1.4 0.6 0.3 0.6 0.6 0.2 0.3 0.4 0.7 0.1 0.8 誤差 1000 1.4 0.3 0.6 0.2 0.3 0.4 0.7 0.1 0.8 誤差 980 -0.1 0.5 -0.1 0.5 -0.1 1.3

Slide 62

Slide 62 text

勾配降下法とは 勾配降下法は、ざっくり書くと下図のような流れで行われる 62 ステップ 1 ランダムに重みの初期値を決める ステップ 2 重みを少し変更することで、誤差を小さくする ステップ 3 ステップ 2 を繰り返し、誤差をさらに小さくしていく 1.4 1.4 0.6 0.3 0.6 0.6 0.2 0.3 0.4 0.7 0.1 0.8 誤差 1000 1.4 0.3 0.6 0.2 0.3 0.4 0.7 0.1 0.8 誤差 980 1.3 0.5 0.3 0.6 0.5 0.2 0.3 0.7 0.1 0.8 誤差 965 … -0.1 -0.1 -0.1 1.3 0.5 0.5 -0.2 0.2 +0.1 1.5

Slide 63

Slide 63 text

勾配降下法とは 勾配降下法は、ざっくり書くと下図のような流れで行われる 63 ステップ 1 ランダムに重みの初期値を決める ステップ 2 重みを少し変更することで、誤差を小さくする ステップ 3 ステップ 2 を繰り返し、誤差をさらに小さくしていく 1.4 1.4 0.6 0.3 0.6 0.6 0.2 0.3 0.4 0.7 0.1 0.8 誤差 1000 1.4 0.3 0.6 0.2 0.3 0.4 0.7 0.1 0.8 誤差 980 1.3 0.5 0.3 0.6 0.5 0.2 0.3 0.7 0.1 0.8 誤差 965 … -0.1 -0.1 -0.1 1.3 0.5 0.5 -0.2 0.2 +0.1 1.5 では、誤差が減るように重みを変えるには どうすれば良いか?

Slide 64

Slide 64 text

誤差を減らすには ところで、1 本の線の重みを ちょっとだけ変更することを考える 64

Slide 65

Slide 65 text

1.4 1.4 誤差を減らすには 0.6 0.3 0.6 0.6 0.2 0.3 0.4 0.7 0.1 0.8 1.4 1.4 0.601 0.3 0.6 0.6 0.2 0.3 0.4 0.7 0.1 0.8 誤差が減る • 重みを増やしたら誤差が減った場合 → (当然だが) 重みを増やした方が良さそう! 65

Slide 66

Slide 66 text

1.4 1.4 • 重みを増やしたら誤差が減った場合 → (当然だが) 重みを増やした方が良さそう! • 重みを増やしたら誤差が増えた場合 誤差を減らすには 0.6 0.3 0.6 0.6 0.2 0.3 0.4 0.7 0.1 0.8 1.4 1.4 0.601 0.3 0.6 0.6 0.2 0.3 0.4 0.7 0.1 0.8 誤差が増える 66

Slide 67

Slide 67 text

誤差が増える 1.4 1.4 • 重みを増やしたら誤差が減った場合 → (当然だが) 重みを増やした方が良さそう! • 重みを増やしたら誤差が増えた場合 → 逆に重みを 減らした方が良さそう! 誤差を減らすには 0.6 0.3 0.6 0.6 0.2 0.3 0.4 0.7 0.1 0.8 1.4 1.4 0.601 0.3 0.6 0.6 0.2 0.3 0.4 0.7 0.1 0.8 1.4 1.4 0.599 0.3 0.6 0.6 0.2 0.3 0.4 0.7 0.1 0.8 誤差が減りそう 67

Slide 68

Slide 68 text

1.4 1.4 • 重みを増やしたら誤差が減った場合 → (当然だが) 重みを増やした方が良さそう! • 重みを増やしたら誤差が増えた場合 → 逆に重みを 減らした方が良さそう! • 重みを増やしたら誤差がほぼ変わらなかった場合 → 重みを増やしても減らしても意味無さそう! 誤差を減らすには 0.6 0.3 0.6 0.6 0.2 0.3 0.4 0.7 0.1 0.8 1.4 1.4 0.601 0.3 0.6 0.6 0.2 0.3 0.4 0.7 0.1 0.8 誤差が変わらない 68

Slide 69

Slide 69 text

誤差を減らすには まとめると、ある線の重みをちょっとだけ増やしたとき 誤差が大きく減少 → 重みを増やした方が良さそう 誤差がほぼ不変 → 減らしても増やしても意味ない 誤差が大きく増加 → 重みを減らした方が良さそう 69

Slide 70

Slide 70 text

誤差を減らすには まとめると、ある線の重みをちょっとだけ増やしたとき 誤差が大きく減少 → 重みを増やした方が良さそう 誤差がほぼ不変 → 減らしても増やしても意味ない 誤差が大きく増加 → 重みを減らした方が良さそう 70 そこで右図のように、誤差の減少分に比例して 重みを増やせばよいのでは? 誤差 -30 誤差 0-5 誤差 0+5 誤差 +30 重み +0.30 重み +0.05 重み -0.05 重み -0.30 重要

Slide 71

Slide 71 text

誤差を減らすには 71 答え

Slide 72

Slide 72 text

誤差を減らす方法 72 手順 A 各線について、この線の重みだけをちょっとだけ増やしたとき 1 当たり誤差がどれくらい減るかをメモする

Slide 73

Slide 73 text

誤差を減らす方法 73 手順 A 各線について、この線の重みだけをちょっとだけ増やしたとき 1 当たり誤差がどれくらい減るかをメモする 1.4 1.4 0.6 0.3 0.6 0.6 0.2 0.3 例 1: 以下の変更で誤差が 0.3 減った場合 1.4 1.4 0.601 0.3 0.6 0.6 0.2 0.3 ?? ?? ?? ?? ?? ?? ?? ?? メモ ※要は偏微分を計算するということだが、大学レベルの知識になってしまうので、このような説明の仕方を行った

Slide 74

Slide 74 text

誤差を減らす方法 74 手順 A 各線について、この線の重みだけをちょっとだけ増やしたとき 1 当たり誤差がどれくらい減るかをメモする 例 1: 以下の変更で誤差が 0.3 減った場合 ?? ?? 300 ?? ?? ?? ?? ?? メモ 0.001 の変更で 誤差が 0.3 減る → 300 をメモ 1.4 1.4 0.6 0.3 0.6 0.6 0.2 0.3 1.4 1.4 0.601 0.3 0.6 0.6 0.2 0.3 ※要は偏微分を計算するということだが、大学レベルの知識になってしまうので、このような説明の仕方を行った

Slide 75

Slide 75 text

誤差を減らす方法 75 手順 A 各線について、この線の重みだけをちょっとだけ増やしたとき 1 当たり誤差がどれくらい減るかをメモする 1.4 1.4 0.6 0.3 0.6 0.6 0.2 0.3 例 2: 以下の変更で誤差が 0.2 増えた場合 1.4 1.4 0.6 0.3 0.6 0.6 0.201 0.3 ?? ?? 300 ?? ?? ?? ?? ?? メモ ※要は偏微分を計算するということだが、大学レベルの知識になってしまうので、このような説明の仕方を行った

Slide 76

Slide 76 text

誤差を減らす方法 76 手順 A 各線について、この線の重みだけをちょっとだけ増やしたとき 1 当たり誤差がどれくらい減るかをメモする 1.4 1.4 0.6 0.3 0.6 0.6 0.2 0.3 例 2: 以下の変更で誤差が 0.2 増えた場合 1.4 1.4 0.6 0.3 0.6 0.6 0.201 0.3 ?? ?? 300 ?? ?? ?? -200 ?? メモ 0.001 の変更で 誤差が -0.2 減る → -200 をメモ ※要は偏微分を計算するということだが、大学レベルの知識になってしまうので、このような説明の仕方を行った

Slide 77

Slide 77 text

誤差を減らす方法 77 手順 A 各線について、この線の重みだけをちょっとだけ増やしたとき 1 当たり誤差がどれくらい減るかをメモする 1.4 1.4 0.6 0.3 0.6 0.6 0.2 0.3 例 3: 以下の変更で誤差が変わらなかった場合 1.4 1.4 0.3 0.6 0.6 0.2 0.301 ?? ?? 300 ?? ?? ?? -200 ?? メモ 0.6 ※要は偏微分を計算するということだが、大学レベルの知識になってしまうので、このような説明の仕方を行った

Slide 78

Slide 78 text

誤差を減らす方法 78 手順 A 各線について、この線の重みだけをちょっとだけ増やしたとき 1 当たり誤差がどれくらい減るかをメモする 1.4 1.4 0.6 0.3 0.6 0.6 0.2 0.3 例 3: 以下の変更で誤差が変わらなかった場合 1.4 1.4 0.3 0.6 0.6 0.2 0.301 ?? ?? 300 ?? ?? ?? -200 0 メモ 0.6 0.001 の変更で 誤差が 0 減る → 0 をメモ ※要は偏微分を計算するということだが、大学レベルの知識になってしまうので、このような説明の仕方を行った

Slide 79

Slide 79 text

誤差を減らす方法 79 手順 B メモした値の何倍か (0.001 倍など) を各線に足す

Slide 80

Slide 80 text

誤差を減らす方法 80 手順 B メモした値の何倍か (0.001 倍など) を各線に足す メモ 300 -100 100 400 -200 300 -200 0 元々の状態 0.2 0.6 0.5 0.1 1.5 1.0 0.4 0.3 新しい状態 ?? ?? ?? ?? ?? ?? ?? ??

Slide 81

Slide 81 text

誤差を減らす方法 メモ 300 -100 100 400 -200 300 -200 0 元々の状態 0.2 0.6 0.5 0.1 1.5 1.0 0.4 0.3 新しい状態 0.5 ?? ?? ?? ?? ?? ?? ?? 0.001×300 =0.3 を足す 81 手順 B メモした値の何倍か (0.001 倍など) を各線に足す

Slide 82

Slide 82 text

誤差を減らす方法 メモ 300 -100 100 400 -200 300 0 元々の状態 0.2 0.6 0.5 0.1 1.5 1.0 0.3 新しい状態 0.5 ?? ?? ?? ?? ?? ?? 0.001×200 = -0.2 を足す -200 0.4 0.2 82 手順 B メモした値の何倍か (0.001 倍など) を各線に足す

Slide 83

Slide 83 text

誤差を減らす方法 メモ 300 -100 100 400 -200 300 元々の状態 0.2 0.6 0.5 0.1 1.5 1.0 新しい状態 0.5 ?? ?? ?? ?? ?? 0.001×0 = 0 を足す -200 0.4 0.2 0 0.3 0.3 83 手順 B メモした値の何倍か (0.001 倍など) を各線に足す

Slide 84

Slide 84 text

誤差を減らす方法 メモ 300 100 400 -200 300 元々の状態 0.2 0.5 0.1 1.5 1.0 新しい状態 0.5 ?? ?? ?? ?? -200 0.4 0.2 0 0.3 0.3 0.001×-100 = -0.1 を足す -100 0.6 0.5 84 手順 B メモした値の何倍か (0.001 倍など) を各線に足す

Slide 85

Slide 85 text

誤差を減らす方法 メモ 300 400 -200 300 元々の状態 0.2 0.1 1.5 1.0 新しい状態 0.5 ?? ?? ?? -200 0.4 0.2 0 0.3 0.3 -100 0.6 0.5 100 0.5 0.6 0.001×100 = 0.1 を足す 85 手順 B メモした値の何倍か (0.001 倍など) を各線に足す

Slide 86

Slide 86 text

誤差を減らす方法 メモ 300 -200 300 元々の状態 0.2 1.5 1.0 新しい状態 0.5 ?? ?? -200 0.4 0.2 0 0.3 0.3 -100 0.6 0.5 100 0.5 0.6 400 0.1 0.5 0.001×400 = 0.4 を足す 86 手順 B メモした値の何倍か (0.001 倍など) を各線に足す

Slide 87

Slide 87 text

誤差を減らす方法 メモ 300 300 元々の状態 0.2 1.0 新しい状態 0.5 ?? -200 0.4 0.2 0 0.3 0.3 -100 0.6 0.5 100 0.5 0.6 400 0.1 0.5 0.001×-200 = -0.2 を足す -200 1.5 1.3 87 手順 B メモした値の何倍か (0.001 倍など) を各線に足す

Slide 88

Slide 88 text

誤差を減らす方法 メモ 300 300 元々の状態 0.2 1.0 新しい状態 0.5 1.3 -200 0.4 0.2 0 0.3 0.3 -100 0.6 0.5 100 0.5 0.6 400 0.1 0.5 0.001×300 = 0.3 を足す -200 1.5 1.3 88 手順 B メモした値の何倍か (0.001 倍など) を各線に足す

Slide 89

Slide 89 text

誤差を減らす方法 メモ 300 300 元々の状態 0.2 1.0 新しい状態 0.5 1.3 -200 0.4 0.2 0 0.3 0.3 -100 0.6 0.5 100 0.5 0.6 400 0.1 0.5 0.001×300 = 0.3 を足す -200 1.5 1.3 89 手順 B メモした値の何倍か (0.001 倍など) を各線に足す あとはこの手順を 何度も繰り返していくだけ!

Slide 90

Slide 90 text

• 手順 A では「重み 1 当たり誤差がどれくらい下がるか」を計算したが、実 は直接計算する必要はない • 誤差逆伝播法という効率的な計算方法が知られており、実用上はこれが使 われている (大学範囲なので本講演では説明しない) 補足: 誤差逆伝播法 90

Slide 91

Slide 91 text

1.1 1.3 1.2 1.4 深層学習とは ニューラルネットワークとは どうやって学習を行うか ~勾配降下法~ 深層学習の注意点 (1) 1.5 深層学習の注意点 (2)

Slide 92

Slide 92 text

深層学習の注意点 一般的に、ネットワークを大きくすればするほど 学習後の訓練データでの誤差は小さくなる 誤差 大 誤差 中 誤差 小 > > 92

Slide 93

Slide 93 text

深層学習の注意点 しかし、未知データの誤差は 小さくなるとは限らない! 93

Slide 94

Slide 94 text

深層学習の注意点 しかし、実データの誤差は 小さくなるとは限らない! なぜ? → 関数の近似で理解しよう 94

Slide 95

Slide 95 text

関数の近似で理解しよう x y 5 4 3 2 1 1 2 3 4 5 6 例として、上図のデータを関数で近似したいとする (データは y=0.5x+2 プラスマイナス誤差であるとする) 訓練データ 未知データ 95

Slide 96

Slide 96 text

関数の近似で理解しよう x y 5 4 3 2 1 1 2 3 4 5 6 確かに訓練データでは、1 次関数より 3 次関数※ の方が 精度よく近似できている x y 5 4 3 2 1 1 2 3 4 5 6 1 次 関 数 3 次 関 数 ※ 3 次関数は、y=〇x3 + 〇x2 + 〇x + 〇 の形で表される関数のことを指す 96

Slide 97

Slide 97 text

関数の近似で理解しよう x y 5 4 3 2 1 1 2 3 4 5 6 ところが未知データでは、3 次関数の方が 何倍も誤差が出てしまっている! x y 5 4 3 2 1 1 2 3 4 5 6 1 次 関 数 3 次 関 数 97

Slide 98

Slide 98 text

深層学習の注意点 このような問題は 過学習 と呼ばれており、機械学習の重要な課題の 1 つである 98

Slide 99

Slide 99 text

• したがって、深層学習を使う際は、ニューラルネットワークの大きさを 適切に決める必要がある • 他にも、データ数を増やすなどの対策もある (訓練データが多いと、同じ 大きさでも過学習が起こりづらくなる) 深層学習の注意点 99

Slide 100

Slide 100 text

1.1 1.3 1.2 1.4 深層学習とは ニューラルネットワークとは どうやって学習を行うか ~勾配降下法~ 深層学習の注意点 (1) 1.5 深層学習の注意点 (2)

Slide 101

Slide 101 text

深層学習の注意点 (2) 101 1.3 節では、メモした値の 0.001 倍を足すと記したが この 0.001 の部分を 学習率 という

Slide 102

Slide 102 text

深層学習の注意点 (2) 102 そして一般には、学習率を大きくするほど 重みが速く変わるため、学習が速く進む 学習率 0.0001 誤差 1000 1.4 1.4 0.6 0.3 0.6 0.6 0.2 0.3 誤差 960 1.4 1.4 0.63 0.29 0.61 0.61 0.18 0.29 誤差 770 1.4 1.4 0.9 0.2 0.7 0.7 0.0 0.2 学習率 0.001

Slide 103

Slide 103 text

深層学習の注意点 (2) 103 しかし、学習率を大きくしすぎると 重みが変化しすぎるため、逆に誤差が増えてしまう※ 学習率 0.001 誤差 1000 1.4 1.4 0.6 0.3 0.6 0.6 0.2 0.3 誤差 15000 1.4 1.4 30.6 -9.7 10.6 10.6 -19.8 -9.7 学習率 0.1 誤差 770 1.4 1.4 0.9 0.2 0.7 0.7 0.0 0.2 ※最適な場所を通り過ぎてしまう、と考えておくとよい

Slide 104

Slide 104 text

深層学習の注意点 (2) 104 しかし、学習率を大きくしすぎると 重みが変化しすぎるため、逆に誤差が増えてしまう※ 学習率 0.001 誤差 1000 1.4 1.4 0.6 0.3 0.6 0.6 0.2 0.3 誤差 15000 1.4 1.4 30.6 -9.7 10.6 10.6 -19.8 -9.7 学習率 0.1 誤差 770 1.4 1.4 0.9 0.2 0.7 0.7 0.0 0.2 ※最適な場所を通り過ぎてしまう、と考えておくとよい したがって、学習率の調整も重要 大きすぎても小さすぎてもダメ

Slide 105

Slide 105 text

第 2 章 応用編

Slide 106

Slide 106 text

第 2 章について 第 1 章では、出力層が 1 個しかなく、隣接する層が全部線で結ばれた 単純なニューラルネットワークを説明した 入力層 中間層 出力層 106

Slide 107

Slide 107 text

第 2 章について もちろんこの方法で解ける問題もあるが… あらゆる深層学習の問題が 解けるわけではない 107

Slide 108

Slide 108 text

第 2 章について たとえば上図のような代表的な問題は 第 1 章の単純な方法では精度がそれほど出ないことが多い 分類問題 画像認識 言語処理 犬 猫 馬 108

Slide 109

Slide 109 text

第 2 章について それぞれの代表的な問題に対する 解決策を紹介します そこで本章では 109

Slide 110

Slide 110 text

2.1 2.3 2.2 分類問題 画像認識問題 音声処理・自然言語処理

Slide 111

Slide 111 text

まず、次の問題を考えよう 35度 30度 25度 晴 曇 雨 0 時, 1 時, 2 時, …, 24 時の気温を受け取り この日は晴れ/曇り/雨のどれであるかを正確に判定してみよう 111

Slide 112

Slide 112 text

単純な方法 一番単純な方法は、1 章のニューラルネットワークを使い 出力が 1.5 未満なら晴れ、1.5~2.5 なら曇り、2.5 以上なら雨とする 入力層 中間層 出力層 0 時: 26.6度 1 時: 26.7度 : 24 時: 24.3度 3.3 なので雨 112

Slide 113

Slide 113 text

単純な方法 一番単純な方法は、1 章のニューラルネットワークを使い 出力が 1.5 未満なら晴れ、1.5~2.5 なら曇り、2.5 以上なら雨とする 入力層 中間層 出力層 0 時: 26.6度 1 時: 26.7度 : 24 時: 24.3度 2.3 なので雨 しかしこの方法では 精度が出ない 113

Slide 114

Slide 114 text

• 3 クラスに分類する場合より、100 クラスとか に分類する場合を考えるとわかりやすい • 1.5 以下のときグループ 1、1.5~2.5 のときグ ループ 2、2.5~3.5 のときグループ 3…、と割 り振る場合を考える • このとき、自信を持ってグループ 50 だと言え る入力についても、少し誤差が加わっただけ でグループ 49 や 51 に変わってしまう! 精度が出ない理由 7.00 5.00 6.00 50.0 7.02 5.01 6.03 50.6 グループ 51 グループ 50 わずかな誤差 114

Slide 115

Slide 115 text

解決策 そこで 出力層を増やす戦略を使おう! 115

Slide 116

Slide 116 text

分類問題の解き方 分類問題では、3 つの出力層を用意し どれが一番大きいかで晴れ/曇り/雨かを決める戦略が有効 入力層 中間層 出力層 0 時: 26.6度 1 時: 26.7度 : 24 時: 24.3度 晴れ: 4.0 曇り: 5.0 雨: 8.0 雨が一番大きい →答えは雨だ! 116

Slide 117

Slide 117 text

これで上手くいく理由 なぜこれで上手くいくか? 117

Slide 118

Slide 118 text

これで上手くいく理由 • たとえば 100 クラス分類でグループ 50 が答えの場合を考える • もし答えに自信がある場合、入力に 少し誤差が出たくらいではグループ 50 が最大であることは揺らがない • 前述の問題点が解消される 7.00 5.00 6.00 グループ 50: 40.0 その他最大: 8.0 7.02 5.01 6.03 グループ 50: 38.9 その他最大: 8.5 わずかな誤差 118

Slide 119

Slide 119 text

発展: 確率付き分類 実は「確率 95% で雨」のように、確率付きの 分類を行うこともできる 具体的には、晴, 曇, 雨の出力がそれぞれ a, b, c とし、e=2.718… を自然対数の底とすると • 晴の予測確率は ea ÷ (ea + eb + ec)※ • 曇の予測確率は eb ÷ (ea + eb + ec)※ • 雨の予測確率は ec ÷ (ea + eb + ec)※ ※別に e の何乗ではなく 2 の何乗、としても本質的には変わらないが、後々計算しやすいのでこの値を用いることが多い 晴れ 4.0 曇り 5.0 雨 8.0 e4 + e5 + e8 e4 = 約 2% e4 + e5 + e8 e5 = 約 5% e4 + e5 + e8 e8 = 約 94% 119

Slide 120

Slide 120 text

2.1 2.3 2.2 分類問題 画像認識問題 音声処理・自然言語処理

Slide 121

Slide 121 text

まず、次の問題を考えよう 1 章冒頭の例と同様に顔写真を受け取り その人の年齢をできるだけ正確に予測してみよう 70 歳 121

Slide 122

Slide 122 text

単純な方法 一番単純な方法は、1 章のニューラルネットワークを使い 入力としては左上のピクセルから順に並べる 入力層 中間層 出力層 (1, 1) ピクセル (1, 2) ピクセル : (40, 50) ピクセル 122

Slide 123

Slide 123 text

単純な方法 一番単純な方法は、1 章のニューラルネットワークを使い 入力としては左上のピクセルから順に並べる 入力層 中間層 出力層 (1, 1) ピクセル (1, 2) ピクセル : (50, 40) ピクセル しかしこの方法では 精度が出ない 123

Slide 124

Slide 124 text

精度が出ない理由 画像データを分析する際は、周辺のピクセルとの関係性が重要 しかし前述の方法では、この関係性が学習されづらい 関係性の例 このあたりに 線がありそう 124

Slide 125

Slide 125 text

解決策 そこで 畳み込みニューラルネットワーク を使おう! 125

Slide 126

Slide 126 text

畳み込みニューラルネットワーク 畳み込みニューラルネットワーク (CNN) は、以下の手順からなる ステップ 1 畳み込み操作・プーリング操作を何回か行う ステップ 2 その後、操作を行った後の画像に対して 1 章のニューラルネットワークを通す 具体例は後述 126

Slide 127

Slide 127 text

畳み込みニューラルネットワーク ステップ 1-1 まず、あるフィルタ※ に対して畳み込みを行う 畳み込みは画像にフィルタを重ねて、掛け算の合計を求める処理 (文章より例を見た方が分かりやすいと思う) ※フィルタは複数枚あるのが一般的だが、ここではわかりやすさの都合上 1 枚であるとする 1 0 2 0 1 2 2 1 0 3 0 0 1 0 0 1 2 2 2 3 0 1 2 1 1 1 2 3 4 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 畳み込み前 フィルタ 畳み込み後 127

Slide 128

Slide 128 text

畳み込みニューラルネットワーク ステップ 1-1 まず、あるフィルタ※ に対して畳み込みを行う 畳み込みは画像にフィルタを重ねて、掛け算の合計を求める処理 (文章より例を見た方が分かりやすいと思う) ※フィルタは複数枚あるのが一般的だが、ここではわかりやすさの都合上 1 枚であるとする 1 0 2 0 1 2 2 1 0 3 0 0 1 0 0 1 2 2 2 3 0 1 2 1 1 1 2 3 4 15 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 畳み込み前 フィルタ 畳み込み後 ×1 ×2 ×3 ×4 1×1+0×2 2×3+2×4 = 15 128

Slide 129

Slide 129 text

畳み込みニューラルネットワーク ステップ 1-1 まず、あるフィルタ※ に対して畳み込みを行う 畳み込みは画像にフィルタを重ねて、掛け算の合計を求める処理 (文章より例を見た方が分かりやすいと思う) ※フィルタは複数枚あるのが一般的だが、ここではわかりやすさの都合上 1 枚であるとする 1 0 2 0 1 2 2 1 0 3 0 0 1 0 0 1 2 2 2 3 0 1 2 1 1 1 2 3 4 15 14 ? ? ? ? ? ? ? ? ? ? ? ? ? ? 畳み込み前 フィルタ 畳み込み後 ×1 ×2 ×3 ×4 0×1+2×2 2×3+1×4 = 14 129

Slide 130

Slide 130 text

畳み込みニューラルネットワーク ステップ 1-1 まず、あるフィルタ※ に対して畳み込みを行う 畳み込みは画像にフィルタを重ねて、掛け算の合計を求める処理 (文章より例を見た方が分かりやすいと思う) ※フィルタは複数枚あるのが一般的だが、ここではわかりやすさの都合上 1 枚であるとする 1 0 2 0 1 2 2 1 0 3 0 0 1 0 0 1 2 2 2 3 0 1 2 1 1 1 2 3 4 15 14 5 ? ? ? ? ? ? ? ? ? ? ? ? ? 畳み込み前 フィルタ 畳み込み後 ×1 ×2 ×3 ×4 2×1+0×2 1×3+0×4 = 5 130

Slide 131

Slide 131 text

畳み込みニューラルネットワーク ステップ 1-1 まず、あるフィルタ※ に対して畳み込みを行う 畳み込みは画像にフィルタを重ねて、掛け算の合計を求める処理 (文章より例を見た方が分かりやすいと思う) ※フィルタは複数枚あるのが一般的だが、ここではわかりやすさの都合上 1 枚であるとする 1 0 2 0 1 2 2 1 0 3 0 0 1 0 0 1 2 2 2 3 0 1 2 1 1 1 2 3 4 15 14 5 14 ? ? ? ? ? ? ? ? ? ? ? ? 畳み込み前 フィルタ 畳み込み後 ×1 ×2 ×3 ×4 0×1+1×2 0×3+3×4 = 14 131

Slide 132

Slide 132 text

畳み込みニューラルネットワーク ステップ 1-1 まず、あるフィルタ※ に対して畳み込みを行う 畳み込みは画像にフィルタを重ねて、掛け算の合計を求める処理 (文章より例を見た方が分かりやすいと思う) ※フィルタは複数枚あるのが一般的だが、ここではわかりやすさの都合上 1 枚であるとする 1 0 2 0 1 2 2 1 0 3 0 0 1 0 0 1 2 2 2 3 0 1 2 1 1 1 2 3 4 15 14 5 14 6 ? ? ? ? ? ? ? ? ? ? ? 畳み込み前 フィルタ 畳み込み後 ×1 ×2 ×3 ×4 2×1+2×2 0×3+0×4 = 6 132

Slide 133

Slide 133 text

畳み込みニューラルネットワーク ステップ 1-1 まず、あるフィルタ※ に対して畳み込みを行う 畳み込みは画像にフィルタを重ねて、掛け算の合計を求める処理 (文章より例を見た方が分かりやすいと思う) ※フィルタは複数枚あるのが一般的だが、ここではわかりやすさの都合上 1 枚であるとする 1 0 2 0 1 2 2 1 0 3 0 0 1 0 0 1 2 2 2 3 0 1 2 1 1 1 2 3 4 15 14 5 14 6 8 ? ? ? ? ? ? ? ? ? ? 畳み込み前 フィルタ 畳み込み後 ×1 ×2 ×3 ×4 2×1+1×2 0×3+1×4 = 8 133

Slide 134

Slide 134 text

畳み込みニューラルネットワーク ステップ 1-1 まず、あるフィルタ※ に対して畳み込みを行う 畳み込みは画像にフィルタを重ねて、掛け算の合計を求める処理 (文章より例を見た方が分かりやすいと思う) ※フィルタは複数枚あるのが一般的だが、ここではわかりやすさの都合上 1 枚であるとする 1 0 2 0 1 2 2 1 0 3 0 0 1 0 0 1 2 2 2 3 0 1 2 1 1 1 2 3 4 15 14 5 14 6 8 5 ? ? ? ? ? ? ? ? ? 畳み込み前 フィルタ 畳み込み後 ×1 ×2 ×3 ×4 1×1+0×2 1×3+0×4 = 5 134

Slide 135

Slide 135 text

畳み込みニューラルネットワーク ステップ 1-1 まず、あるフィルタ※ に対して畳み込みを行う 畳み込みは画像にフィルタを重ねて、掛け算の合計を求める処理 (文章より例を見た方が分かりやすいと思う) ※フィルタは複数枚あるのが一般的だが、ここではわかりやすさの都合上 1 枚であるとする 1 0 2 0 1 2 2 1 0 3 0 0 1 0 0 1 2 2 2 3 0 1 2 1 1 1 2 3 4 15 14 5 14 6 8 5 6 ? ? ? ? ? ? ? ? 畳み込み前 フィルタ 畳み込み後 ×1 ×2 ×3 ×4 0×1+3×2 0×3+0×4 = 6 135

Slide 136

Slide 136 text

畳み込みニューラルネットワーク ステップ 1-1 まず、あるフィルタ※ に対して畳み込みを行う 畳み込みは画像にフィルタを重ねて、掛け算の合計を求める処理 (文章より例を見た方が分かりやすいと思う) ※フィルタは複数枚あるのが一般的だが、ここではわかりやすさの都合上 1 枚であるとする 1 0 2 0 1 2 2 1 0 3 0 0 1 0 0 1 2 2 2 3 0 1 2 1 1 1 2 3 4 15 14 5 14 6 8 5 6 11 ? ? ? ? ? ? ? 畳み込み前 フィルタ 畳み込み後 ×1 ×2 ×3 ×4 0×1+0×2 1×3+2×4 = 9 136

Slide 137

Slide 137 text

畳み込みニューラルネットワーク ステップ 1-1 まず、あるフィルタ※ に対して畳み込みを行う 畳み込みは画像にフィルタを重ねて、掛け算の合計を求める処理 (文章より例を見た方が分かりやすいと思う) ※フィルタは複数枚あるのが一般的だが、ここではわかりやすさの都合上 1 枚であるとする 1 0 2 0 1 2 2 1 0 3 0 0 1 0 0 1 2 2 2 3 0 1 2 1 1 1 2 3 4 15 14 5 14 6 8 5 6 11 16 ? ? ? ? ? ? 畳み込み前 フィルタ 畳み込み後 ×1 ×2 ×3 ×4 0×1+1×2 2×3+2×4 = 16 137

Slide 138

Slide 138 text

畳み込みニューラルネットワーク ステップ 1-1 まず、あるフィルタ※ に対して畳み込みを行う 畳み込みは画像にフィルタを重ねて、掛け算の合計を求める処理 (文章より例を見た方が分かりやすいと思う) ※フィルタは複数枚あるのが一般的だが、ここではわかりやすさの都合上 1 枚であるとする 1 0 2 0 1 2 2 1 0 3 0 0 1 0 0 1 2 2 2 3 0 1 2 1 1 1 2 3 4 15 14 5 14 6 8 5 6 11 16 15 ? ? ? ? ? 畳み込み前 フィルタ 畳み込み後 ×1 ×2 ×3 ×4 1×1+0×2 2×3+2×4 = 15 138

Slide 139

Slide 139 text

畳み込みニューラルネットワーク ステップ 1-1 まず、あるフィルタ※ に対して畳み込みを行う 畳み込みは画像にフィルタを重ねて、掛け算の合計を求める処理 (文章より例を見た方が分かりやすいと思う) ※フィルタは複数枚あるのが一般的だが、ここではわかりやすさの都合上 1 枚であるとする 1 0 2 0 1 2 2 1 0 3 0 0 1 0 0 1 2 2 2 3 0 1 2 1 1 1 2 3 4 15 14 5 14 6 8 5 6 11 16 15 18 ? ? ? ? 畳み込み前 フィルタ 畳み込み後 ×1 ×2 ×3 ×4 0×1+0×2 2×3+3×4 = 18 139

Slide 140

Slide 140 text

畳み込みニューラルネットワーク ステップ 1-1 まず、あるフィルタ※ に対して畳み込みを行う 畳み込みは画像にフィルタを重ねて、掛け算の合計を求める処理 (文章より例を見た方が分かりやすいと思う) ※フィルタは複数枚あるのが一般的だが、ここではわかりやすさの都合上 1 枚であるとする 1 0 2 0 1 2 2 1 0 3 0 0 1 0 0 1 2 2 2 3 0 1 2 1 1 1 2 3 4 15 14 5 14 6 8 5 6 11 16 15 18 9 ? ? ? 畳み込み前 フィルタ 畳み込み後 ×1 ×2 ×3 ×4 1×1+2×2 0×3+1×4 = 9 140

Slide 141

Slide 141 text

畳み込みニューラルネットワーク ステップ 1-1 まず、あるフィルタ※ に対して畳み込みを行う 畳み込みは画像にフィルタを重ねて、掛け算の合計を求める処理 (文章より例を見た方が分かりやすいと思う) ※フィルタは複数枚あるのが一般的だが、ここではわかりやすさの都合上 1 枚であるとする 1 0 2 0 1 2 2 1 0 3 0 0 1 0 0 1 2 2 2 3 0 1 2 1 1 1 2 3 4 15 14 5 14 6 8 5 6 11 16 15 18 9 17 ? ? 畳み込み前 フィルタ 畳み込み後 ×1 ×2 ×3 ×4 2×1+2×2 1×3+2×4 = 17 141

Slide 142

Slide 142 text

畳み込みニューラルネットワーク ステップ 1-1 まず、あるフィルタ※ に対して畳み込みを行う 畳み込みは画像にフィルタを重ねて、掛け算の合計を求める処理 (文章より例を見た方が分かりやすいと思う) ※フィルタは複数枚あるのが一般的だが、ここではわかりやすさの都合上 1 枚であるとする 1 0 2 0 1 2 2 1 0 3 0 0 1 0 0 1 2 2 2 3 0 1 2 1 1 1 2 3 4 15 14 5 14 6 8 5 6 11 16 15 18 9 17 16 ? 畳み込み前 フィルタ 畳み込み後 ×1 ×2 ×3 ×4 2×1+2×2 2×3+1×4 = 16 142

Slide 143

Slide 143 text

畳み込みニューラルネットワーク ステップ 1-1 まず、あるフィルタ※ に対して畳み込みを行う 畳み込みは画像にフィルタを重ねて、掛け算の合計を求める処理 (文章より例を見た方が分かりやすいと思う) ※フィルタは複数枚あるのが一般的だが、ここではわかりやすさの都合上 1 枚であるとする 1 0 2 0 1 2 2 1 0 3 0 0 1 0 0 1 2 2 2 3 0 1 2 1 1 1 2 3 4 15 14 5 14 6 8 5 6 11 16 15 18 9 17 16 15 畳み込み前 フィルタ 畳み込み後 ×1 ×2 ×3 ×4 2×1+3×2 1×3+1×4 = 15 143

Slide 144

Slide 144 text

畳み込みニューラルネットワーク ステップ 1-2 次に、畳み込みをしたデータに対してプーリングを行う プーリングは 2×2 毎※に区切って max (または平均) を取る処理 ※もちろん、2×2 毎ではなく 3×3 毎などになる場合もある 144

Slide 145

Slide 145 text

畳み込みニューラルネットワーク ステップ 1-2 次に、畳み込みをしたデータに対してプーリングを行う プーリングは 2×2 毎※に区切って max (または平均) を取る処理 ※もちろん、2×2 毎ではなく 3×3 毎などになる場合もある 15 14 5 14 6 8 5 6 9 16 15 18 9 17 16 15 最大値は 15 15 ? ? ? 145

Slide 146

Slide 146 text

畳み込みニューラルネットワーク ステップ 1-2 次に、畳み込みをしたデータに対してプーリングを行う プーリングは 2×2 毎※に区切って max (または平均) を取る処理 ※もちろん、2×2 毎ではなく 3×3 毎などになる場合もある 15 14 5 14 6 8 5 6 9 16 15 18 9 17 16 15 最大値は 14 15 14 ? ? 146

Slide 147

Slide 147 text

畳み込みニューラルネットワーク ステップ 1-2 次に、畳み込みをしたデータに対してプーリングを行う プーリングは 2×2 毎※に区切って max (または平均) を取る処理 ※もちろん、2×2 毎ではなく 3×3 毎などになる場合もある 15 14 5 14 6 8 5 6 9 16 15 18 9 17 16 15 最大値は 17 15 14 17 ? 147

Slide 148

Slide 148 text

畳み込みニューラルネットワーク ステップ 1-2 次に、畳み込みをしたデータに対してプーリングを行う プーリングは 2×2 毎※に区切って max (または平均) を取る処理 ※もちろん、2×2 毎ではなく 3×3 毎などになる場合もある 15 14 5 14 6 8 5 6 9 16 15 18 9 17 16 15 最大値は 18 15 14 17 18 148

Slide 149

Slide 149 text

畳み込みニューラルネットワーク ステップ 2 最後に、畳み込み・プーリングを行ったデータに対して 1 章のニューラルネットワークを適用する 入力層 中間層 出力層 15 14 17 18 プーリング後 15 14 17 18 149

Slide 150

Slide 150 text

• 畳み込みニューラルネットワークは、畳み込み・プーリング処理によって 周辺のピクセルとの関係性を取り入れられる • したがって、単純な方法における問題点が解消され、精度が向上する なぜ上手くいくか? 150

Slide 151

Slide 151 text

2.1 2.3 2.2 分類問題 画像認識問題 音声処理・自然言語処理

Slide 152

Slide 152 text

まず、次の問題を考えよう 音声データを受け取り それが人の声であるかどうかを判定してみよう 152

Slide 153

Slide 153 text

単純な方法 一番単純な方法は、各フレームでの音の大きさを入力として 出力が 2 個の単純なニューラルネットワークを使う方法 入力層 中間層 出力層 1 フレーム目: 60dB 2 フレーム目: 50dB 3 フレーム目: 40dB 4 フレーム目: 70dB 人の声である 人の声でない 153

Slide 154

Slide 154 text

単純な方法 一番単純な方法は、各フレームでの音の大きさを入力として 出力が 2 個の単純なニューラルネットワークを使う方法 入力層 中間層 出力層 1 フレーム目: 60dB 2 フレーム目: 50dB 3 フレーム目: 40dB 4 フレーム目: 70dB 人の声である 人の声でない 154 しかしこの方法では 精度が出ない

Slide 155

Slide 155 text

• 音声分析では、前のフレームとの関係性が 非常に重要 • しかし単純な方法では、前のフレームとの 関係性よりも「どのフレームにどの音が 鳴ったか」の方が重要視されてしまう • たとえば例 1 と例 2 で全然違う判定になる ということもあり得る 精度が出ない理由 例 1 例 2 大 小 大 小 時間がずれただけ 155

Slide 156

Slide 156 text

解決策 そこで リカレントニューラルネットワーク を使おう! 156

Slide 157

Slide 157 text

リカレントニューラルネットワーク リカレントニューラルネットワークは 上図のように前の状態を入力としたネットワーク構造 1 個目の データ 2 個目の データ 3 個目の データ 4 個目の データ 出力 そのまま コピー そのまま コピー そのまま コピー 157

Slide 158

Slide 158 text

リカレントニューラルネットワーク 1 フレーム目の結果は 1 フレーム目の入力データから決まり 1 個目の データ 2 個目の データ 3 個目の データ 4 個目の データ 出力 そのまま コピー そのまま コピー そのまま コピー 158

Slide 159

Slide 159 text

リカレントニューラルネットワーク 2 フレーム目の結果は 1 フレーム目の中間層と 2 フレーム目の入力データから決まり 1 個目の データ 2 個目の データ 3 個目の データ 4 個目の データ 出力 そのまま コピー そのまま コピー そのまま コピー 159

Slide 160

Slide 160 text

リカレントニューラルネットワーク 3 フレーム目の結果は 2 フレーム目の中間層と 3 フレーム目の入力データから決まり 1 個目の データ 2 個目の データ 3 個目の データ 4 個目の データ 出力 そのまま コピー そのまま コピー そのまま コピー 160

Slide 161

Slide 161 text

リカレントニューラルネットワーク 4 フレーム目の結果は 3 フレーム目の中間層と 4 フレーム目の入力データから決まる 1 個目の データ 2 個目の データ 3 個目の データ 4 個目の データ 出力 そのまま コピー そのまま コピー そのまま コピー 161

Slide 162

Slide 162 text

リカレントニューラルネットワーク 4 フレーム目の結果は 3 フレーム目の中間層と 4 フレーム目の入力データから決まる 1 個目の データ 2 個目の データ 3 個目の データ 4 個目の データ 出力 そのまま コピー そのまま コピー そのまま コピー 前の結果が利用されるため 精度が上がる 162

Slide 163

Slide 163 text

RNN のもう 1 つの利点 実はリカレントニューラルネットワークの重みは時系列毎に変わらない たとえば青の辺の重みはすべて同じ 1 個目の データ 2 個目の データ 3 個目の データ 4 個目の データ 出力 そのまま コピー そのまま コピー そのまま コピー 163

Slide 164

Slide 164 text

RNN のもう 1 つの利点 1 個目の データ 2 個目の データ 3 個目の データ 4 個目の データ 出力 そのまま コピー そのまま コピー そのまま コピー 実はリカレントニューラルネットワークの重みは時系列毎に変わらない たとえば赤の辺の重みもすべて同じ 164

Slide 165

Slide 165 text

RNN のもう 1 つの利点 したがって、 • 単純な方法よりパラメータ数が少ない (学習が簡単) • 音声がどんな長さであっても対応できる などの利点もある! 165

Slide 166

Slide 166 text

RNN の応用例 なお、リカレントニューラルネットワークは 音声処理だけでなく、自然言語処理や時系列解析にも応用される 音声処理 機械翻訳 株価解析 166

Slide 167

Slide 167 text

スライドのまとめ

Slide 168

Slide 168 text

講演のまとめ (1/3) 入力層 中間層 出力層 深層学習は、上図のようなニューラルネットワークを用いて 機械学習を行う手法のことである 168

Slide 169

Slide 169 text

• ニューラルネットワークの最適な重みは、勾配降下法を用いて 計算することができる • また、ニューラルネットワークのサイズが大きくなると、訓練 データの精度が上がるのに未知データに対応できない過学習と いう問題が起こる場合があるので、注意が必要である 講演のまとめ (2/3) 169

Slide 170

Slide 170 text

さらに、単純なニューラルネットワークで精度が出ない問題もあ るが、それぞれ以下のように工夫をすれば解ける • 分類問題:出力数を増やし、一番値の大きい出力を答えとする • 画像処理:畳み込みニューラルネットワークを使い、周辺のピクセル との関係性を取り込めるようにする • 音声処理:リカレントニューラルネットワークを使い、前のフレーム との関係性を取り込めるようにする 講演のまとめ (3/3) 170

Slide 171

Slide 171 text

おわりに 深層学習は 今まさに世界を変えています 171

Slide 172

Slide 172 text

ChatGPT をはじめ、人智を超えるサービスが次々と現れています

Slide 173

Slide 173 text

そして AI によって、約半分の仕事が 20 年で奪われると言われています

Slide 174

Slide 174 text

皆さんが就職する頃には、AI で仕事が大きく変わるかもしれない

Slide 175

Slide 175 text

そんな状況だからこそ、ぜひ深層学習にも 興味を持っていただけると嬉しいです

Slide 176

Slide 176 text

最後までお読みいただき ありがとうございました