Slide 1

Slide 1 text

情報工学科 教授 杉浦孔明 [email protected] 慶應義塾大学 理工学基礎実験B ニューラルネットワーク

Slide 2

Slide 2 text

機械学習とは - - 3 ニューラルネットワーク等の数理モデルを用いてデータに潜む パターンに基づき予測/分類を行う技術 訓練データ (既知) モデル 学習 学習済モデル

Slide 3

Slide 3 text

機械学習とは - - 4 ニューラルネットワーク等の数理モデルを用いてデータに潜む パターンに基づき予測/分類を行う技術 学習済モデル テストデータ (未知) 分類 「犬」

Slide 4

Slide 4 text

広がるニューラルネットワークの応用 - - 5 ■ 検索、音声認識・合成、機械翻訳、対話 ■ 一般物体認識、姿勢推定、画像生成 ■ ロボット工学、創薬、マテリアルズ・インフォマティクス、天文学 ■ 他多数 合成画像 実在の人物 https://www.whichfaceisreal.com/ VoiceTra Tacotron 2 https://github.com/facebookresearch/detectron2

Slide 5

Slide 5 text

人工知能分野におけるニューラルネットワークの位置付け - - 6 深層ニューラルネットワーク (Deep Neural Network) 人工知能(AI) 機械学習 ニューラルネットワーク それ以外のアプローチ(ルールベース等) ■ 線形代数 ■ 微分積分学 ■ 確率論 ■ その他の理論

Slide 6

Slide 6 text

実習1 - - 7

Slide 7

Slide 7 text

A Neural Network Playground: ニューラルネットワークの直感的理解のための可視化ツール - - 8 クリックせよ→ https://playground.tensorflow.org/

Slide 8

Slide 8 text

①データの選択 - - 9 右上を選択

Slide 9

Slide 9 text

②中間層の数を増減 - - 10 中間層の数を増減 (例えば4)

Slide 10

Slide 10 text

③ノード数の増減 - - 11 ノード数を増減 (例えば4・1・2・2)

Slide 11

Slide 11 text

④学習 - - 12 再生ボタンを押す

Slide 12

Slide 12 text

分類結果の可視化 - - 13 適切な分類 オレンジの点が青い領域に あるので誤分類 背景色でニューラルネットワークによる分類結果を表現 例:オレンジの背景色領域はオレンジクラスと分類 学習の過程で誤差が減少している ことを表現

Slide 13

Slide 13 text

実習1(6分) - - 14 層数及びノード数を増減させ、 分類が成功する最も少ない層数・ノード数を探索せよ

Slide 14

Slide 14 text

ニューラルネットワークの 基礎 - - 15

Slide 15

Slide 15 text

ニューラルネットワークの起源 - - 16 ■ 神経細胞(ニューロン)から着想された数理モデル [1] ■ ニューロンのはたらき 1. 他のニューロンの入力信号をシナプスで重み付けして受け取る 2. 閾値を超えると別のニューロンへ信号を出力する(=活性化) https://soilshop.net/anime/neuron ニューロンのモデル化 [1] W. McCulloch and W. Pitts, “A Logical Calculus of the Ideas Immanent in Nervous Activity”, The Bulletin of Mathematical Biophysics, Vol. 5, No. 4, pp. 115-133, 1943.

Slide 16

Slide 16 text

■ 線形ユニット ニューラルネットワークの最小構成要素: ユニット - - 17 パラメータ  入力 : 今日の気温  真値 : 明日の気温  予測値 : 明日の気温の予測値 例: 今日の気温から明日の気温を予測する場合 予測値 入力 図示

Slide 17

Slide 17 text

線形ユニットの学習 - - 18 ■ 学習(訓練ともいう) ■ 入力と真値の組を多数与えて、予測値 が真値 に近づくように パラメータを調整 ■ 訓練集合 ■ 学習に用いる入力と真値の組

Slide 18

Slide 18 text

予測値が真値にどれだけ近いかを定量化しよう - - 19 ■ 損失関数 ■ 真値に対する予測値の誤差を定量化するための関数 ■ 例:平均二乗誤差 ■ 損失関数を最小化するパラメータを解析的に求めることは困難 ■ モデルが複雑(1億パラメータは珍しくない) ■ データが大量 反復的な方法で求める方法が一般的

Slide 19

Slide 19 text

勾配降下法:誤差に応じてパラメータを更新する - - 20 が1次元の場合 が2次元の場合 最小値

Slide 20

Slide 20 text

- - 21

Slide 21

Slide 21 text

勾配降下法の数式表現: 線形ユニットの場合 - - 22 1. 初期値を設定 2. 現在の を用いて勾配の値を計算し、 を更新 3. 2を繰り返す 学習率:一度の更新幅を小さくする(例:0.02) 例:

Slide 22

Slide 22 text

実習2 - - 23

Slide 23

Slide 23 text

実習2:線形ユニットの学習過程を手計算で確かめよう - - 24 準備 ■ K-LMS上の実習2の(スプレッドシートへの)リンクをクリックせよ ■ 初期値: ■ 1サンプル分の損失関数: 実習内容 ■ 各自に割り当てた番号 に対する の値を計算せよ ※全員がスプレッドシートに記載すると が自動で更新される

Slide 24

Slide 24 text

【解答】1サンプル分の勾配を求める - - 25 であるから、各パラメータで偏微分すると次のようになる 上の両式の右辺の変数は全て既知 ■ 初期値として が与えられている ■ スプレッドシート上に が与えられている ■ 例えば の場合、勾配は以下 を で微分するのと同じ

Slide 25

Slide 25 text

【補足】スプレッドシートでは以下が自動化されている - - 26 ■ 全サンプルに対する損失は、1サンプルに対する損失(各自が計算) を平均したものであるであるから ■ 以下の式でパラメータを更新( =0.02)

Slide 26

Slide 26 text

深層ニューラルネットワーク - - 27

Slide 27

Slide 27 text

入力のベクトル化 - - 28 ■ ベクトル入力 ■ 数式表現 活性化関数 を考える

Slide 28

Slide 28 text

■ ステップ関数 活性化関数の例 - - 29 ■ 正規化線形関数 (ReLU) ■ ロジスティックシグモ イド関数 cf. 統計力学におけるフェルミ 分布関数

Slide 29

Slide 29 text

ユニットを追加した場合は複数の数式で表現できる - - 30 ■ モデル図 ■ 数式

Slide 30

Slide 30 text

ユニットを追加した場合は複数の数式で表現できる - - 31 ■ モデル図 ■ 数式

Slide 31

Slide 31 text

さらにユニットを追加した場合は行列で表現できる - - 32 ■ モデル図 行列の形に ■ 数式

Slide 32

Slide 32 text

活性化関数をまとめてベクトル関数として表現 - - 33 ■ モデル図 同じようにまとめる ※ユニットが何個繋がっても表記は同じ ■ 数式

Slide 33

Slide 33 text

さらに層を追加した場合は右肩の数字で区別する - - 34 ■ モデル図 ■ 数式 ひとまとめに

Slide 34

Slide 34 text

じゅんでんぱがた 順伝播型ニューラルネットワーク - - 35 一般化すると … 第𝑙𝑙層の式は

Slide 35

Slide 35 text

例題:手書き数字認識 - - 36 ■ 目標 ■ 画像を入力として0~9のどの数字 が書かれているかを予測 ■ MNIST(エムニストと発音) ■ 手書き数字のデータセット ■ 28x28グレースケール画像7万枚 ■ 深層学習分野において知らない人 はいない

Slide 36

Slide 36 text

■ 画像をどのように入力すればよいか? ニューラルネットワークへの入力 - - 37 入力層 出力層 中間層 28x28の行列 (各値は画素値) 28×28の行列だと考える

Slide 37

Slide 37 text

画素値の行列をベクトル化し入力 - - 38 入力層 出力層 中間層 画像を表す行列 0 38 41 121 214 226 155 252 252 0 38 41 121 214 226 155 252 252 ベクトル化 ベクトルの次元分だけある

Slide 38

Slide 38 text

■ 出力はどのような形式とするべきか ■ シンプルな方法:数字を直接予測 ( この方法が不適切であることは後ほど説明) ニューラルネットワークの出力 - - 39 入力層 出力層 中間層 ※

Slide 39

Slide 39 text

■ 出力はどのような形式とするべきか ■ シンプルな方法:数字を直接予測 ニューラルネットワークの出力 - - 40 入力層 出力層 中間層

Slide 40

Slide 40 text

■ シンプルな方法では不適切な理由:予測値の評価が不適切 ■ 例:2乗誤差を用いた場合 予測値の評価方法を適切にしたい - - 41 目標:数字の種類を判断 (分類) 正解は8 誤差が大きい 正解は4 誤差が小さい 評価としては「3」か 「3以外」かにしたい

Slide 41

Slide 41 text

ラベル:各画像はどの数字(種類)を表しているか - - 42 ■ ラベルを付与 ■ 値を直接予測するのではなく、各ラベルである確率を予測する ラベル:0 ラベル:1 … ラベル:9

Slide 42

Slide 42 text

ニューラルネットワークの出力を確率の予測値とみなす - - 43 ■ どのように確率を生成するべきか 入力層 出力層 中間層 ラベルが0の確率 0.01 ラベルが1の確率 0.02 ラベルが2の確率 0.05 ラベルが3の確率 0.40 ラベルが4の確率 0.04 ラベルが5の確率 0.04 ラベルが6の確率 0.03 ラベルが7の確率 0.02 ラベルが8の確率 0.1 ラベルが9の確率 0.01 10個ある 総和が1となるよう 変換の必要有

Slide 43

Slide 43 text

ソフトマックス関数:出力の総和を1とする活性化関数 - - 44 ■ の例 指数関数の適用後に、 総和で割る 総和が1

Slide 44

Slide 44 text

交差エントロピー誤差関数: 分類タスクのために広く用いられる - - 45 交差エントロピー誤差関数を利用 入力層 出力層 中間層 ラベルが0の確率 0.01 ラベルが1の確率 0.02 ラベルが2の確率 0.05 ラベルが3の確率 0.40 ラベルが4の確率 0.04 ラベルが5の確率 0.04 ラベルが6の確率 0.03 ラベルが7の確率 0.02 ラベルが8の確率 0.1 ラベルが9の確率 0.01 0 0 0 1 0 0 0 0 0 0 誤差計算

Slide 45

Slide 45 text

実習3 - - 46

Slide 46

Slide 46 text

実習:MNISTへの3層ニューラルネットの適用 - - 47 ■ 目的:ニューラルネットを学習させるプログラムを書く 入力 28×28次元(グレースケール画像) 出力 10次元(0から9に対応) ニューラルネットワークの構造 3層の順伝播型ニューラルネットワーク 中間層の活性化関数 ReLU 中間層のユニット数 128 出力層の活性化関数 ソフトマックス関数 損失関数 交差エントロピー誤差関数

Slide 47

Slide 47 text

①空のニューラルネットを作成 - - 48

Slide 48

Slide 48 text

実装上の注意 - - 49 ■ “#”から始まる行はコメントなので、あってもなくても動作には影響 しない ■ コメント以外の行を入れ替えてしまうと動作しなくなる

Slide 49

Slide 49 text

図を90度回転するとプログラムとの対応が見やすい - - 50 入力層 出力層 中間層

Slide 50

Slide 50 text

図を90度回転するとプログラムとの対応が見やすい - - 51 入力層 出力層 中間層 入力層 出力層 中間層 90度回転

Slide 51

Slide 51 text

②入力層の追加 - - 52 784 (=28x28) 入力層

Slide 52

Slide 52 text

入力層 中間層 128 ③中間層の追加 - - 53

Slide 53

Slide 53 text

入力層 中間層 128 ④中間層にReLU関数を追加 - - 54 ReLU関数

Slide 54

Slide 54 text

⑤出力層の追加 - - 55 softmax関数は自動で追加されるので不要 10クラス分類 入力層 出力層 中間層

Slide 55

Slide 55 text

⑥作成したプログラムの実行 ※学習には3分程度必要 - - 56 ■ ページ上部の「ランタイム」「すべてのセルを実行」を押す

Slide 56

Slide 56 text

必須課題3: 中間層とユニット数を変更してみよう - - 57 … 入力層 出力層 中間層(L-1個)

Slide 57

Slide 57 text

中間層を追加する方法 - - 58 ■ 以下の2行を追加すると、中間層を1層追加できる ■ どの位置に追加するのが適切か考えてみよ ■ ただし、赤文字の所を半角数字で置き換える(例えば64) ■ 全角(日本語)ではエラーとなる ■ 中間層を2層追加するには、4行追加すれば良い

Slide 58

Slide 58 text

考察: 中間層の層数・ユニット数の変更 - - 59 1. 中間層及びユニット数を増減させると結果はどのように変化するか? 2. 中間層及びユニット数を増減させてテスト集合に対する精度が97.5%以上 となるニューラルネットを作成せよ。 層数・ユニット数はいくつとなるか?