Slide 1

Slide 1 text

分類問題3: ニューラルネットワーク入門 ⼭本 祐輔 名古屋市⽴⼤学データサイエンス学部 准教授 [email protected] 第8回 データマイニングと機械学習 2023 2023年6月7日

Slide 2

Slide 2 text

講義のトピック 機械学習 教師あり学習 教師なし学習 強化学習 ・クラスタリング ・データ圧縮 ・分類 ・回帰 … … 2 行動情報学科に 特有の応用手法 時系列データ分析 時間経過とともに変化する データに対する分析⼿法 ・K近傍法 ・サポートベクタマシン ・ニューラルネットワーク

Slide 3

Slide 3 text

K-近傍法(k-NN: k nearest neighbor)のアイデア 3 対象データまでの距離が最も近いK個のデータの ラベルのうち、最も多いラベルに分類する ? K=5:⻘ K=3:緑 K=1:⻘ 多 数 決

Slide 4

Slide 4 text

サポートベクター (直線に最も近い点) サポートベクターマシンのアイデア X 0 Y マージンを最大化する超平面を見つける (分類境界とサポートベクターの距離) 𝑓(𝒙) = 0 サポートベクター (直線に最も近い点) 4

Slide 5

Slide 5 text

教師あり学習のための機械学習アルゴリズムの分類 5 ロジスティック回帰 ナイーブベイズ サポートベクターマシン K近傍法 ランダムフォレスト & 決定木 ニューラルネットワーク 訓練データをすべて記憶して おき,それら全部を使って 予測を⾏う(推論計算が遅い) 訓練データの背後にあるモデル を抽出し,それを予測時に使う (推論計算は速い) インスタンスベース モデルベース 本⽇学ぶのはコレ

Slide 6

Slide 6 text

教師あり学習の歴史(⼀部抜粋) ロジスティック回帰 サポートベクターマシン 決定木 パーセプトロン 単純ベイズ分類器 ランダムフォレスト k-近傍法 ベイジアンネットワーク 深層学習 1958年 1957年 1951年 1979年 1985年 1992年 1960年代 2001年 2010年代 6

Slide 7

Slide 7 text

教師あり学習の歴史(⼀部抜粋) ロジスティック回帰 サポートベクターマシン 決定木 単純ベイズ分類器 ランダムフォレスト k-近傍法 ベイジアンネットワーク 1958年 1957年 1951年 1979年 1985年 1992年 1960年代 2001年 2010年代 7 パーセプトロン 深層学習 多層パーセプトロン

Slide 8

Slide 8 text

1 ニューラルネットワークの最小単位 パーセプトロン 8

Slide 9

Slide 9 text

機械学習の2クラス分類問題とは(1/2) ●と×のデータ集合が与えられたときに, 未知のN次元データが●か×をどう予測する? Q. X 0 Y ? ▲ ? ▲ 9

Slide 10

Slide 10 text

機械学習の2クラス分類問題とは(2/2) ●と×のデータを2分するような超平面を見つける A. X 0 Y ? ▲ ? ▲ ax+by+c=0 直線より下側なら「●」 直線より上側なら「×」 10

Slide 11

Slide 11 text

2クラス分類問題に対する素朴なアプローチ (2次元バージョン) 11 ⼊⼒ 𝒙 = 𝑥! , 𝑥" が与えられたとき 関数 𝑓 𝒙 = 𝑤! 𝑥! + 𝑤" 𝑥" + 𝑤# について ・𝑓 𝒙 > 0 ならば 1 に分類(×) ・𝑓 𝒙 ≤ 0 ならば -1 に分類(●) (上記はstep(𝑓 𝒙 )と書くことも可)

Slide 12

Slide 12 text

2クラス分類問題に対する素朴なアプローチ(N次元バージョン) 12 ⼊⼒ 𝒙 = 𝑥! , 𝑥" , … , 𝑥$ が与えられたとき 𝑓 𝒙 = 𝑤! 𝑥! + 𝑤" 𝑥" + ⋯ + 𝑤# = 𝒘%𝒙 について ・𝑓 𝒙 > 0 ならば 1 に分類(×) ・𝑓 𝒙 ≤ 0 ならば -1 に分類(●) 学習データを使って関数 f(x) をどう見つけるか? (上記はstep(𝑓 𝒙 )と書くことも可)

Slide 13

Slide 13 text

サポートベクター (直線に最も近い点) 関数f(x)の⾒つけ⽅: サポートベクターマシン編 X 0 Y マージンを最大化する超平面を見つける (分類境界とサポートベクターの距離) 𝑓(𝒙) = 0 サポートベクター (直線に最も近い点) 13

Slide 14

Slide 14 text

関数f(x)の別の⾒つけ⽅:損失関数の最⼩化 14 訓練データを使って予測したときに 予測と実際の値との誤差が最小になるf(x)を見つける 訓練データ 𝐷 = (𝒙! , 𝑦! , 𝒙" , 𝑦" , … , (𝒙& , 𝑦& )} 1個⽬のデータの特徴量 1個⽬のデータの正解ラベル 損失関数 𝐿 𝐷 = 1 '(! & 𝑔(𝑦' , 𝑓(𝒙' )) データ1個に関する誤差を評価 例: 𝐿 𝐷 = , |実際の得点i君 ‒ 予測得点 i君 |

Slide 15

Slide 15 text

関数f(x)の別の⾒つけ⽅:損失関数の最⼩化 15 訓練データを使って予測したときに 予測と実際の値との誤差が最小になるf(x)を見つける 訓練データ 𝐷 = (𝒙! , 𝑦! , 𝒙" , 𝑦" , … , (𝒙& , 𝑦& )} 損失関数 𝐿 𝐷 = 1 '(! & 𝑔(𝑦' , 𝑓(𝒙' )) = 1 '(! & 𝑔(𝑦' , 𝒘%𝒙' ) 誤差の総和に着⽬ パーセプトロンもこの流派

Slide 16

Slide 16 text

パーセプトロン:2クラス分類問題を解く線形分類器(1/2) 16 推論フェーズ ⼊⼒ 𝒙 = 𝑥! , 𝑥" , … , 𝑥# が与えられたとき 𝑓 𝒙 = 𝑤! 𝑥! + 𝑤" 𝑥" + ⋯ + 𝑤$ = 𝒘%𝒙 について ・𝑓 𝒙 > 0 ならば 1 に分類 ・𝑓 𝒙 ≤ 0 ならば -1 に分類 Σ x1 xn 1 … ×w0 ×w1 ×wn step(・) 1 or -1

Slide 17

Slide 17 text

パーセプトロン:2クラス分類問題を解く線形分類器(2/2) 17 学習フェーズ 𝐿 𝐷 = 0 &'! ( 𝑔(𝑦& , 𝑓(𝒙& )) = 0 &'! ( max(0, −𝑦& 𝒘%𝒙& ) 訓練データ 𝐷 = (𝒙) , 𝑦) , …, (𝒙* , 𝑦* )}について 以下の損失関数が最⼩となるパラメータwを⾒つける. 予測が正しかったら罰則なし. 外れていたら −𝑓(𝒙! )だけ 損失が出たと考える 損失関数は微分最⼩化がお約束 予測が当たっている場合, 必ずゼロ以上になる

Slide 18

Slide 18 text

パーセプトロンのパラメータ最適化(パーセプトロンの学習則) Step 1 予測関数 f (x) の重み w をランダムに設定 Step 2 訓練データDからデータ(x, y)をランダムに1個取得し 関数 f (x) を使ってラベルを予想 Step 3 ステップ2の予測が正解ラベル y と⼀致しない場合 以下の式を⽤いて重み w を更新(𝜂は学習率) 𝒘 ← 𝒘 + 𝜂𝑦𝒙 Step 4 ある程度の回数だけ Step2-3を繰り返す 18 損失関数を微分最⼩化で 得られた重みの更新式

Slide 19

Slide 19 text

パーセプトロンの学習の例(1/7) 19 and viagra the of nigeria y v1 1 1 0 1 1 +1 v2 0 0 1 1 0 -1 v3 0 1 1 0 0 +1 v4 1 0 0 1 0 -1 v5 1 0 1 0 1 +1 v6 1 0 1 1 0 -1 メールに出現する単語の情報と迷惑メールラベル 学習率 𝜂 = ! " 重みの初期値 𝒘 = (0,0,0,0,0)

Slide 20

Slide 20 text

パーセプトロンの学習の例(2/7) 20 and viagra the of nigeria y v1 1 1 0 1 1 +1 v2 0 0 1 1 0 -1 v3 0 1 1 0 0 +1 v4 1 0 0 1 0 -1 v5 1 0 1 0 1 +1 v6 1 0 1 1 0 -1 メールに出現する単語の情報と迷惑メールラベル v1 に対する予測(正解は+1) 予測関数の値 𝒘𝑻𝒗! = 0 𝒘 ← 𝒘 + 1 2 +1 𝒗! = 0,0,0,0,0 + 1 2 , 1 2 , 0, 1 2 , 1 2 = (! " , ! " , 0, ! " , ! " ) 0より⼤きくないので予測間違い (パラメータ更新へ)

Slide 21

Slide 21 text

パーセプトロンの学習の例(3/7) 21 and viagra the of nigeria y v1 1 1 0 1 1 +1 v2 0 0 1 1 0 -1 v3 0 1 1 0 0 +1 v4 1 0 0 1 0 -1 v5 1 0 1 0 1 +1 v6 1 0 1 1 0 -1 メールに出現する単語の情報と迷惑メールラベル v2 に対する予測(正解は-1) 予測値 𝒘𝑻𝒗" = ! " , ! " , 0, ! " , ! " % 0,0,1,1,0 = ! " 𝒘 ← 𝒘 + 1 2 −1 𝒗" = 1 2 , 1 2 , 0, 1 2 , 1 2 − 0,0, 1 2 , 1 2 , 0 = (! " , ! " , − ! " , 0, ! " ) 0より⼩さくないので予測間違い (パラメータ更新へ)

Slide 22

Slide 22 text

パーセプトロンの学習の例(4/7) 22 and viagra the of nigeria y v1 1 1 0 1 1 +1 v2 0 0 1 1 0 -1 v3 0 1 1 0 0 +1 v4 1 0 0 1 0 -1 v5 1 0 1 0 1 +1 v6 1 0 1 1 0 -1 メールに出現する単語の情報と迷惑メールラベル v3に対する予測(正解は+1) 予測値 𝒘𝑻𝒗/ = ! " , ! " , − ! " , 0, ! " % 0,1,1,0,0 = 0 𝒘 ← 𝒘 + 1 2 +1 𝒗) = 1 2 , 1 2 , − 1 2 , 0, 1 2 + 0, 1 2 , 1 2 , 0,0 = (! " , 1,0,0, ! " ) 0より⼤きくないので予測間違い (パラメータ更新へ)

Slide 23

Slide 23 text

パーセプトロンの学習の例(5/7) 23 and viagra the of nigeria y v4 1 0 0 1 0 -1 v5 1 0 1 0 1 +1 v6 1 0 1 1 0 -1 メールに出現する単語の情報と迷惑メールラベル v4に対する予測(正解は-1) 予測値 𝒘𝑻𝒗0 = ! " , 1,0,0, ! " % 1,0,0,1,0 = ! " 𝒘 ← 𝒘 + 1 2 −1 𝒗* = 1 2 , 1,0,0, 1 2 − 1 2 , 0,0, 1 2 , 0 = (0,1,0, − ! " , ! " ) 0より⼩さくないので予測間違い (パラメータ更新へ)

Slide 24

Slide 24 text

パーセプトロンの学習の例(6/7) 24 and viagra the of nigeria y v4 1 0 0 1 0 -1 v5 1 0 1 0 1 +1 v6 1 0 1 1 0 -1 メールに出現する単語の情報と迷惑メールラベル v5に対する予測(正解は+1) 予測値 𝒘𝑻𝒗" = 0,1,0, − # $ , # $ % 1,0,1,0,1 = # $ 0より⼤きいので予測は正しい (パラメータは更新しない)

Slide 25

Slide 25 text

パーセプトロンの学習の例(7/7) 25 and viagra the of nigeria y v4 1 0 0 1 0 -1 v5 1 0 1 0 1 +1 v6 1 0 1 1 0 -1 メールに出現する単語の情報と迷惑メールラベル v6に対する予測(正解は-1) 予測値 𝒘𝑻𝒗& = 0,1,0, − # $ , # $ % 1,0,1,1,0 = − # $ 0より⼩さいので予測は正しい (パラメータは更新しない) これ以上学習しても パラメータは変化せず 最終的な予測関数 𝒘𝑻𝒙 = 0,1,0, − 1 2 , 1 2 % 𝒙

Slide 26

Slide 26 text

パーセプトロンの限界 26 X 0 Y x1 xn 1 … ×w0 ×w1 ×wn Σ step(・) 1 or -1 ・単層パーセプトロンは線形分離可能な場合しか学習できない ・パーセプトロンを多層化すれば⾮線形問題も扱えるが、 パーセプトロンの学習則はパラメータをうまく学習できない 第1次ニューラルネットワークブームは終焉へ

Slide 27

Slide 27 text

Neural Network Playgroundでパーセプトロンを体験 27 https://playground.tensorflow.org/

Slide 28

Slide 28 text

2 第2次ニューラルネットワークブーム パーセプトロンの多層化 28

Slide 29

Slide 29 text

パーセプトロンの限界の克服:⾮線形問題への対応 29 x1 xi 1 … xn-1 xn … z ×w10 ×w11 ×w1i ×w1n step(・) リマインダ ・𝑥 > 0 ならば 1 ・𝑥 ≤ 0 ならば-1 step 𝑥 = 𝑓 𝒙 = step(𝒘!𝒙) ネットワークを 関数で表現すると

Slide 30

Slide 30 text

パーセプトロンの限界の克服:⾮線形問題への対応 30 x1 xi 1 … xn-1 xn … ネットワークの多層化 ・データの特徴を段階的に深く学習 ・モデルの表現⼒の向上 可微分で非線形な活性化関数の導入 ・逆伝播法による最適化が可能に(後述) 𝑧! (!) 𝑧$ (!) 𝑧% (!) 𝑧! ($) ・各層の出⼒に⾮線形関数をかますことで ⼊出⼒の⼤⼩関係の⼊れ替えが可能に

Slide 31

Slide 31 text

パーセプトロンの限界の克服:⾮線形問題への対応 31 x1 xi 1 … xn-1 xn … Sigmoid (・) Sigmoid (・) ネットワークの多層化 ・データの特徴を段階的に深く学習 ・モデルの表現⼒の向上 可微分で非線形な活性化関数の導入 𝑧! (!) 𝑧$ (!) 𝑧% (!) 𝑧! ($) ・各層の出⼒に⾮線形関数をかますことで ⼊出⼒の⼤⼩関係の⼊れ替えが可能に ・逆伝播法による最適化が可能に(後述) 線形関数を単純に組み合わせても線形しか表現できない

Slide 32

Slide 32 text

パーセプトロンの限界の克服:⾮線形問題への対応 32 x1 xi 1 … xn-1 xn … z ×w10 ×w11 ×w1i ×w1n step(・) リマインダ ・𝑥 > 0 ならば 1 ・𝑥 ≤ 0 ならば 0 step 𝑥 = 微分不可能な 活性化関数 𝑓 𝒙 = step(𝒘!𝒙) ネットワークを 関数で表現すると

Slide 33

Slide 33 text

パーセプトロンの限界の克服:⾮線形問題への対応 33 x1 xi 1 … xn-1 xn … ネットワークの多層化 ・データの特徴を段階的に深く学習 ・モデルの表現⼒の向上 可微分で非線形な活性化関数の導入 𝑧! (!) 𝑧$ (!) 𝑧% (!) 𝑧! ($) Sigmoid (・) Sigmoid (・) ・逆伝播法による最適化が可能に(後述) ・各層の出⼒に⾮線形関数をかますことで ⼊出⼒の⼤⼩関係の⼊れ替えが可能に

Slide 34

Slide 34 text

可微分で⾮線形な活性化関数(1/2) 34 𝑓 𝑥 = 1 1 + exp(−𝑥) シグモイド関数 𝑓 𝑥 = max(0, 𝑥) ReLU(ランプ関数) ・値域が[-1, 1]となるため確率 と 対応させて使う ・その昔は中間層で頻繁に利⽤ ・深層学習の中間層で頻繁に利⽤ ・シンプルなので計算が速い ・0以上の範囲では微分可能

Slide 35

Slide 35 text

可微分で⾮線形な活性化関数(2/2) 35 𝑓 𝑢@ = 𝑒A! ∑'(! B 𝑒A" ソフトマックス関数 例 ・K種類あるクラスのうち,出⼒がクラスkに属する確率 ・深層学習で分類問題を⾏うときの出⼒層で利⽤ ・⼊⼒がマイナスでも常に正の値に返せる 𝒖% = (10,2,1)のとき 𝑓'()*+,- 𝑢# = 0.9995 𝑓'()*+,- 𝑢$ = 0.0003 𝑓'()*+,- 𝑢. = 0.0001 ・指数関数を噛ましているので,⼊⼒が⼤きい場合と ⼩さい場合の区別がはっきりする 活性化関数は出⼒の調整に使う

Slide 36

Slide 36 text

可微分でない or ⾮線形な活性化関数 36 𝑓 𝑥 = C 1 𝑖𝑓 𝑥 > 0 0 𝑖𝑓 𝑥 ≤ 0 ステップ関数 ・かつてパーセプトロンの 出⼒層で使⽤された ・⾮線形だが微分不可能 𝑓 𝑥 = 𝑥 恒等関数 ・ど線形 ・回帰問題の出⼒層で利⽤

Slide 37

Slide 37 text

多層パーセプトロン(Multilayer Perceptron: MLP)による「推論」(1/6) 37 x1 xi 1 … xn … 1層⽬ (隠れ層) 2層⽬ (出⼒層) ⼊⼒層 1層⽬の活性化関数 𝜙" 𝑥 (例: 𝜙" 𝑥 = ReLU(𝑥)) 2層⽬の活性化関数 𝜙# 𝑥 (例: 𝜙# 𝑥 = " "$%&'()*) ) 定義したネットワーク & 活性化関数に従い, ⼊⼒層から出⼒層まで順に値を波及させる y1 𝑧! (!) 𝑧$ (!) 𝑧% (!) 例

Slide 38

Slide 38 text

多層パーセプトロン(Multilayer Perceptron: MLP)による「推論」(2/6) 38 x1 xi 1 … xn … z21 1層⽬ (隠れ層) 2層⽬ (出⼒層) ⼊⼒層 ×w10 (1) ×w11 (1) ×w1n (1) ×w1i (1) 定義したネットワーク & 活性化関数に従い, ⼊⼒層から出⼒層まで順に値を波及させる 𝑧! (!) 𝑧$ (!) 𝑧% (!) 𝑧! (!) = 𝜙(!) , $%& ' 𝑤!$ ! 𝑥$ = 𝜙(!)(𝑢! (!) )

Slide 39

Slide 39 text

多層パーセプトロン(Multilayer Perceptron: MLP)による「推論」(3/6) 39 x1 xi 1 … xn … 𝑧! (!) 1層⽬ (隠れ層) 2層⽬ (出⼒層) ⼊⼒層 ×w20 (1) ×w21 (1) ×w2n (1) ×w2i (1) 𝑧( (!) = 𝜙(!) , $%& ' 𝑤 ($ ! 𝑥$ = 𝜙(!)(𝑢( (!)) y1 𝑧$ (!) 𝑧% (!) 定義したネットワーク & 活性化関数に従い, ⼊⼒層から出⼒層まで順に値を波及させる

Slide 40

Slide 40 text

多層パーセプトロン(Multilayer Perceptron: MLP)による「推論」(4/6) 40 x1 xi 1 … xn … 1層⽬ (隠れ層) 2層⽬ (出⼒層) ⼊⼒層 ×w30 (1) ×w31 (1) ×w3n (1) ×w3i (1) 定義したネットワーク & 活性化関数に従い, ⼊⼒層から出⼒層まで順に値を波及させる y1 𝑧! (!) 𝑧$ (!) 𝑧% (!) 𝑧) (!) = 𝜙(!) , $%& ' 𝑤 )$ ! 𝑥$ = 𝜙(!)(𝑢 ) (!))

Slide 41

Slide 41 text

多層パーセプトロン(Multilayer Perceptron: MLP)による「推論」(5/6) 41 x1 xi 1 … xn … 1層⽬ (隠れ層) 2層⽬ (出⼒層) ⼊⼒層 ×w11 (2) ×w12 (2) ×w13 (2) 𝑦! = 𝜙(()(, $%! ) 𝑤 !$ (()𝑧 $ (!)) 定義したネットワーク & 活性化関数に従い, ⼊⼒層から出⼒層まで順に値を波及させる y1 𝑧! (!) 𝑧$ (!) 𝑧% (!)

Slide 42

Slide 42 text

多層パーセプトロン(Multilayer Perceptron: MLP)による「推論」(6/6) 42 定義したネットワーク & 活性化関数に従い, ⼊⼒層から出⼒層まで順に値を波及させる x1 xi 1 … xn … y1 2層⽬ (出⼒層) ⼊⼒層 𝑦! = 1 1 + exp(− ∑ $%! ) 𝑤 !$ (() 𝑧 $ (!) ) 分類問題なら出⼒層が最⼤となるクラスを選択 2クラス分類の場合 𝑧! (!) 𝑧$ (!) 𝑧% (!)

Slide 43

Slide 43 text

MLPを別の視点から⾒る(1/2) 43 x1 xi 1 … xn … z21 1層⽬ (隠れ層) 2層⽬ (出⼒層) ⼊⼒層 ×w10 (1) ×w11 (1) ×w1n (1) ×w1i (1) 𝑧! (!) 𝑧$ (!) 𝑧% (!) 𝑧! (!) = 𝜙(!) , $%& ' 𝑤 !$ ! 𝑥$ = 1 1 + exp(− ∑ $%& ' 𝑤 !$ ! 𝑥$ ) 活性化関数に シグモイド関数 あるノードでの⼊出⼒処理はロジスティック回帰 どこかで ⾒たことある形!? 画像出典: https://cvml-expertguide.net/2021/09/28/logistic-regression/

Slide 44

Slide 44 text

MLPを別の視点から⾒る(2/2) 44 出⼒層 中間層(隠れ層) ⼊⼒層 … … … …… … … … … … … … …… … …… (ざっくり言うと)ニューラルネットワークは ロジスティック回帰モデルのつなぎ合わせ ロジスティック回帰モデル ロジスティック回帰モデル ロジスティック回帰モデル ロジスティック回帰モデル

Slide 45

Slide 45 text

隠れ層(中間層)の役割 45 出⼒層 中間層(隠れ層) ⼊⼒層 … … … …… … … … … … … … …… … …… 推論に有用な表現を入力データから自動抽出 時間・空間計算量がUPするが中間層が⼤きいほど表現⼒はUP

Slide 46

Slide 46 text

中間層の役割の例1 46 出⼒層 ⼊⼒層 … … … …… … … … … … …… メジャー で成功する? 打率 本塁打 盗塁数 得点 中間層(隠れ層)

Slide 47

Slide 47 text

中間層の役割の例1 47 … … … …… … … … … … …… 打率 本塁打 盗塁数 得点 パワー系要素 スピード系要素 技術系要素 攻撃貢献度 守備貢献度 精神貢献度 ⼊⼒を推論に有⽤な特徴量に変換していく メジャー で成功する?

Slide 48

Slide 48 text

中間層の役割の例2:ネオコグニトロン(CNNの初期モデル) 48 画像出典: https://dbnst.nii.ac.jp/pro/detail/498 ⼈間が苦労して特徴量抽出を⾏う必要がない

Slide 49

Slide 49 text

多層パーセプトロンによる「学習」(1/3) 𝐿 𝐷, W = 0 &'! ( 𝑔(𝑦& , 𝑓(𝒙& )) 訓練データ 𝐷 = (𝒙) , 𝑦) , …, (𝒙* , 𝑦* )}について 損失関数が最⼩となるパラメータWを⾒つける. ニューラルネットワーク f(x) の全パラメータ = 1 2 0 &'! ( 𝑦& − 𝑓 𝒙& " 回帰問題の損失関数 誤差の⼆乗 49

Slide 50

Slide 50 text

多層パーセプトロンによる「学習」(2/3) 50 訓練データ 𝐷 = (𝒙) , 𝑦) , …, (𝒙* , 𝑦* )}について 損失関数が最⼩となるパラメータWを⾒つける. ニューラルネットワーク f(x) の全パラメータ = 5 /0# 1 5 20# 3 {−𝑝204* log 𝑓2 𝒙5 } 𝐿 𝐷, W = 0 &'! ( 𝑔(𝑦& , 𝑓(𝒙& )) 分類問題の損失関数 クロスエントロピー (複数の確率分布の近さを測る指標) 出⼒層でk番⽬のクラスに 対応する出⼒ 参考: https://zeema.hatenablog.com/entry/2017/11/09/223026

Slide 51

Slide 51 text

多層パーセプトロンによる「学習」(3/3) 51 訓練データ 𝐷 = (𝒙) , 𝑦) , …, (𝒙* , 𝑦* )}について 損失関数が最⼩となるパラメータWを⾒つける. 損失関数は微分最⼩化がお約束 ニューラルネットワーク f(x) の全パラメータ 𝐿 𝐷, W = 1 $(! & 1 @(! B {−𝑝@(N" log 𝑓@ 𝒙' } 分類問題の損失関数 𝐿 𝐷, W = 1 2 0 &'! ( 𝑦& − 𝑓 𝒙& " 回帰問題の損失関数

Slide 52

Slide 52 text

損失関数を微分最⼩化するとは? 52 x1 xi 1 … xk … L-1層⽬ (隠れ層) ⼊⼒層 𝑧! (!) 𝑧$ (!) 𝑧& (!) 𝑧' (!) … … 𝑧! (()!) 𝑧$ (()!) 𝑧 & (()!) 𝑧' (()!) … … 𝑧! (() 𝑧& (() 𝑧* (() … … …… …… …… …… 1層⽬ (隠れ層) L層⽬ (出⼒層)

Slide 53

Slide 53 text

損失関数を微分最⼩化するとは? 53 x1 xi 1 … xk … L-1層⽬ (隠れ層) ⼊⼒層 𝑧! (!) 𝑧$ (!) 𝑧& (!) 𝑧' (!) … … 𝑧! (()!) 𝑧$ (()!) 𝑧 & (()!) 𝑧' (()!) … … 𝑧! (() 𝑧& (() 𝑧* (() … … …… …… …… …… 1層⽬ (隠れ層) L層⽬ (出⼒層) = 𝑓(𝒙; 𝑤!! ! , … , 𝑤+! ! , … , 𝑤!' (,) , … , 𝑤+' (,) )) 𝑓 𝒙 1層⽬の1番⽬のノード につながるパスの重み L層⽬のn番⽬のノード につながるパスの重み

Slide 54

Slide 54 text

損失関数を微分最⼩化するとは? 54 x1 xi 1 … xk … L-1層⽬ (隠れ層) ⼊⼒層 𝑧! (!) 𝑧$ (!) 𝑧& (!) 𝑧' (!) … … 𝑧! (()!) 𝑧$ (()!) 𝑧 & (()!) 𝑧' (()!) … … 𝑧! (() 𝑧& (() 𝑧* (() … … …… …… …… …… 1層⽬ (隠れ層) L層⽬ (出⼒層) = 𝑓(𝒙; 𝑤!! ! , … , 𝑤+! ! , … , 𝑤!' (,) , … , 𝑤+' (,) )) 𝑓 𝒙 訓練データを⼊⼒した 𝐿 𝐷, W を 各𝑤 #$ (&)で微分し最⼩化すればよい パラメータ最適化 複雑怪奇な関数 L をどうやって微分するのか?

Slide 55

Slide 55 text

誤差逆伝播法(Backpropagation) 55 ● ニューラルネットワークの効率的な最適化方法 ● 出力層から層を遡って後向きに微分(勾配)計算 推論時(⼊⼒層から出⼒層へ) (順伝播の結果を出⼒層から⼊⼒層へ波及させて再帰的に最適化) 逆伝播法(計算結果を波及させ最適化)

Slide 56

Slide 56 text

回帰問題で考える誤差逆伝播法 56 xk xK … L-1層⽬ (隠れ層) ⼊⼒層 𝑧! (!) 𝑧 + (!) 𝑧,! (!) … … 𝑧! (()!) 𝑧 + (()!) 𝑧,"#! (()!) … 𝑧 & (() …… …… …… 1層⽬ (隠れ層) L層⽬ (出⼒層) 損 失 関 数 … x1 … 最⼩⼆乗誤差 𝐿 = 1 2 7 ,-" . 𝑦, − 𝑧, / #

Slide 57

Slide 57 text

誤差逆伝播法:「出⼒層」の重みの勾配(1/5) 57 L-1層⽬ (隠れ層) 𝑧! (()!) 𝑧 + (()!) 𝑧,"#! (()!) … 𝑧 & (() …… …… …… L層⽬ (出⼒層) … 𝜕𝐿 𝜕𝑤 !" ($) = 𝜕𝐿 𝜕𝑧 ! ($) 𝜕𝑧! ($) 𝜕𝑢 ! ($) 𝜕𝑢! ($) 𝜕𝑤 !" ($) 𝑤 $- (,) 微分の連鎖率 最適化の⽬標 𝑧5 (7) = 𝜙 7 5 90# 1./0 𝑤59 7 𝑧9 7:# = 𝜙 7 (𝑢5 (7)) ⽂字が多いので 𝑢 ! (/)と置く リマインダ

Slide 58

Slide 58 text

誤差逆伝播法:「出⼒層」の重みの勾配(2/5) 58 L-1層⽬ (隠れ層) 𝑧! (()!) 𝑧 + (()!) 𝑧,"#! (()!) … 𝑧 & (() …… …… …… L層⽬ (出⼒層) … 𝜕𝐿 𝜕𝑤 !" ($) = 𝜕𝐿 𝜕𝑧 ! ($) 𝜕𝑧! ($) 𝜕𝑢 ! ($) 𝜕𝑢! ($) 𝜕𝑤 !" ($) 𝑤 $- (,) 最適化の⽬標 𝑢5 (7) = 5 90# 1./0 𝑤59 7 𝑧9 7:# 𝑧 " ($&') = リマインダ

Slide 59

Slide 59 text

誤差逆伝播法:「出⼒層」の重みの勾配(3/5) 59 L-1層⽬ (隠れ層) 𝑧! (()!) 𝑧 + (()!) 𝑧,"#! (()!) … 𝑧 & (() …… …… …… L層⽬ (出⼒層) … 𝜕𝐿 𝜕𝑤 !" ($) = 𝜕𝐿 𝜕𝑧 ! ($) 𝜕𝑧! ($) 𝜕𝑢 ! ($) 𝜕𝑢! ($) 𝜕𝑤 !" ($) 𝑤 $- (,) 最適化の⽬標 𝜙′ $ (𝑢 ! ($)) リマインダ 𝑧' (R) = 𝜙 R (𝑢' (R)) =

Slide 60

Slide 60 text

誤差逆伝播法:「出⼒層」の重みの勾配(4/5) 60 L-1層⽬ (隠れ層) 𝑧! (()!) 𝑧 + (()!) 𝑧,"#! (()!) … 𝑧 & (() …… …… …… L層⽬ (出⼒層) … 𝜕𝐿 𝜕𝑤 !" ($) = 𝜕𝐿 𝜕𝑧 ! ($) 𝜕𝑧! ($) 𝜕𝑢 ! ($) 𝜕𝑢! ($) 𝜕𝑤 !" ($) 𝑤 $- (,) 最適化の⽬標 𝜕 1 2 ∑20# 3 𝑦2 − 𝑧2 7 $ 𝜕𝑧 5 (7) = リマインダ 𝐿 = 1 2 5 20# 3 𝑦2 − 𝑧2 7 $ 𝑧 ' (R) − 𝑦' =

Slide 61

Slide 61 text

誤差逆伝播法:「出⼒層」の重みの勾配(5/5) 61 L-1層⽬ (隠れ層) 𝑧! (()!) 𝑧 + (()!) 𝑧,"#! (()!) … 𝑧 & (() …… …… …… L層⽬ (出⼒層) … 𝜕𝐿 𝜕𝑤 'S (R) = 𝜕𝐿 𝜕𝑧 ' (R) 𝜕𝑧 ' (R) 𝜕𝑢 ' (R) 𝜕𝑢 ' (R) 𝜕𝑤 'S (R) 𝑤 $- (,) 最適化の⽬標 = 𝑧5 7 − 𝑦5 𝜙; 7 𝑢5 7 𝑧9 (7:#) 出⼒層と 正解との誤差 出⼒層 への⼊⼒ 活性化関数の微分

Slide 62

Slide 62 text

誤差逆伝播法:「中間層」の重みの勾配(1/2) 62 t-1層⽬ 𝑧! (-)!) 𝑧+ (-)!) 𝑧,$#! (-)!) … …… …… …… … … … 𝑤 $- (1) 𝑧! (-) 𝑧 & (-) 𝑧,$ (-) t層⽬ = (5 2 𝜕𝐿 𝜕𝑧 2 *<# 𝜕𝑧2 *<# 𝜕𝑢 2 *<# 𝑤52 (*<#))𝜙; * 𝑢5 * 𝑧9 (*) … … 𝑧! (-.!) 𝑧 & (-.!) 𝑧,$%! (-.!) t+1層⽬ 𝜕𝐿 𝜕𝑤 59 (*) = 𝜕𝐿 𝜕𝑧 5 (*) 𝜕𝑧5 (*) 𝜕𝑢 5 (*) 𝜕𝑢5 (*) 𝜕𝑤 59 (*) ターゲットノード への⼊⼒ 活性化関数の微分

Slide 63

Slide 63 text

誤差逆伝播法:「中間層」の重みの勾配(2/2) 63 t-1層⽬ 𝑧! (-)!) 𝑧+ (-)!) 𝑧,$#! (-)!) … …… …… …… … … … 𝑤 $- (1) 𝑧! (-) 𝑧 & (-) 𝑧,$ (-) t層⽬ = (5 2 𝜕𝐿 𝜕𝑧 2 *<# 𝜕𝑧2 *<# 𝜕𝑢 2 *<# 𝑤52 (*<#))𝜙; * 𝑢5 * 𝑧9 (*) … … 𝑧! (-.!) 𝑧 & (-.!) 𝑧,$%! (-.!) t+1層⽬ ターゲットノードからの 出⼒に関連する情報 (t+1層⽬で計算済み!!) 𝜕𝐿 𝜕𝑤 59 (*) = 𝜕𝐿 𝜕𝑧 5 (*) 𝜕𝑧5 (*) 𝜕𝑢 5 (*) 𝜕𝑢5 (*) 𝜕𝑤 59 (*) ある層の勾配計算に前の層の結果を使う

Slide 64

Slide 64 text

誤差逆伝播法のまとめ 64 出力層から層を順に遡り、再帰的に勾配を計算 出⼒層での誤差を⼊⼒層に向けて波及させる 勾配が求まれば、勾配法で損失関数の最⼩化ができる 勾配計算のために出⼒層での誤差を計算 パラメータ最適化(学習)のために

Slide 65

Slide 65 text

Neural Network PlaygroundでMLPを体験 65 https://playground.tensorflow.org/

Slide 66

Slide 66 text

Hands-on タイム 以下のURLにアクセスして, 多層パーセプトロンを体験してみましょう https://dmml2023.hontolab.org/ 66

Slide 67

Slide 67 text

3 計算機で関数の最小値を求める方法 勾配法 67

Slide 68

Slide 68 text

多層パーセプトロン(MLP)による「学習」(再掲) 68 訓練データ 𝐷 = (𝒙) , 𝑦) , …, (𝒙* , 𝑦* )}について 損失関数が最⼩となるパラメータWを⾒つける. 損失関数は微分最⼩化がお約束 ニューラルネットワーク f(x) の全パラメータ 𝐿 𝐷, W = 1 $(! & 1 @(! B {−𝑝@(N" log 𝑓@ 𝒙' } 分類問題の損失関数 𝐿 𝐷, W = 1 2 0 &'! ( 𝑦& − 𝑓 𝒙& " 回帰問題の損失関数 複雑怪奇な損失関数を どうやって計算機で微分・最小化するのか?

Slide 69

Slide 69 text

⼈間による関数の微分・最⼩化 69 𝑓(𝑥) = 𝑥0 − 2𝑥/ + 1 f(x) x 例 𝑑𝑓 𝑑𝑥 = 4𝑥) − 6𝑥( = 2𝑥((2𝑥 − 3) 以下の関数の最⼩値を求めよ. 解 23 24 = 0となるのは 𝑥 = 0, ) ( グラフ形状から 𝑥 = ) ( における 極値は関数の最⼩値となる. よって最⼩値は 𝑓 ) ( = − !! !5 . 計算機は解析的に最⼩値を⾒つけられない…

Slide 70

Slide 70 text

最急降下法 70 x 𝒙(') 𝑑𝑓 𝑑𝒙 (𝒙(')) 勾配(微分係数)を使って,関数の最小値を 数値計算的に求める最も単純なアルゴリズム 𝑓(𝒙)を最⼩化する 𝒙 を求める ⽬標 1. ランダムにxの初期値(𝒙(&))を設定 ⼿順(αは⼩さな正の定数) 2. 収束するまで以下を繰り返す 2a. 𝒙(67!) ← 𝒙(6) − 𝛼 23 2𝒙 𝒙(6)

Slide 71

Slide 71 text

最急降下法 71 x 𝒙(') −𝛼 )* )𝒙 (𝒙(')) 𝒙(,) 勾配(微分係数)を使って,関数の最小値を 数値計算的に求める最も単純なアルゴリズム 𝑓(𝒙)を最⼩化する 𝒙 を求める ⽬標 1. ランダムにxの初期値(𝒙(&))を設定 ⼿順(αは⼩さな正の定数) 2. 収束するまで以下を繰り返す 2a. 𝒙(67!) ← 𝒙(6) − 𝛼 23 2𝒙 𝒙(6)

Slide 72

Slide 72 text

最急降下法 72 勾配(微分係数)を使って,関数の最小値を 数値計算的に求める最も単純なアルゴリズム x 𝒙(-) 𝒙(,) −𝛼 )* )𝒙 (𝒙(,)) 𝑓(𝒙)を最⼩化する 𝒙 を求める ⽬標 1. ランダムにxの初期値(𝒙(&))を設定 ⼿順(αは⼩さな正の定数) 2. 収束するまで以下を繰り返す 2a. 𝒙(67!) ← 𝒙(6) − 𝛼 23 2𝒙 𝒙(6)

Slide 73

Slide 73 text

最急降下法 73 x 𝒙(./01) 勾配(微分係数)を使って,関数の最小値を 数値計算的に求める最も単純なアルゴリズム 𝑓(𝒙)を最⼩化する 𝒙 を求める ⽬標 1. ランダムにxの初期値(𝒙(&))を設定 ⼿順(αは⼩さな正の定数) 2. 収束するまで以下を繰り返す 2a. 𝒙(67!) ← 𝒙(6) − 𝛼 23 2𝒙 𝒙(6)

Slide 74

Slide 74 text

最急降下法の問題点 74 計算に時間がかかる 局所解に陥る可能性あり 画像出典:https://ruthwik.github.io/machinelearning/2018-01-15-gradient-descent/ 初期値や学習率の設定によっては 局所解周辺から抜け出せないことも ⼤規模データを対象とした学習では 勾配の計算量が膨⼤になる 𝐿 = , $%! !&&&&& 𝑔(𝑦$ , 𝑓(𝒙$ ; 𝑾)) 損失関数 𝑑𝐿 𝑑𝑾 = 𝑑 𝑑𝑾 , $%! !&&&&& 𝑔(𝑦$ , 𝑓(𝒙$ ; 𝑾)) 損失関数の勾配 Wを1回更新するのに これを10万回計算…

Slide 75

Slide 75 text

損失関数のi番⽬の データに関する部分 確率的勾配降下法(Stochastic Gradient Descent: SGD)(1/2) 75 ランダムに選んだ1つのデータで勾配を計算して パラメータを更新し、それをデータの数だけ繰り返す たことにし 最急降下法 𝑾(=<#) ← 𝑾(=) − 𝛼 𝑑 𝑑𝑾 𝑔(𝑦5 , 𝑓(𝒙5 ; 𝑾(=))) 𝑾(=<#) ← 𝑾(=) − 𝛼 𝑑 𝑑𝑾 1 '(! & 𝑔(𝑦', 𝑓(𝒙'; 𝑾(]))) 確率的勾配降下法 For each (xi , yi ) in 全データ: 損失関数

Slide 76

Slide 76 text

確率的勾配降下法(Stochastic Gradient Descent: SGD)(2/2) 76 𝐿(𝑾, 𝐷)を最⼩化する 𝑾 を求める ⽬標 1. ランダムにWの初期値(𝑾(&))を設定 ⼿順(αは⼩さな正の定数) 2. 収束するまで以下を繰り返す W ランダムに選んだ1つのデータで勾配を 近似計算してパラメータの更新する勾配法 2a. Dをランダムにシャッフル 2b. Dの先頭から順にデータxを取り 𝑾(0$") ← 𝑾(0) − 𝛼 𝑑 𝑑𝑾 𝑔(𝑦, 𝑓(𝒙; 𝑾(0))) 𝑾(./01) 最急降下法の局所解問題をある程度克服

Slide 77

Slide 77 text

様々な確率的勾配法の振る舞い 77 画像出典: http://hduongtrong.github.io/2015/11/23/coordinate-descent/

Slide 78

Slide 78 text

様々な確率的勾配法の振る舞い 78 画像出典: http://hduongtrong.github.io/2015/11/23/coordinate-descent/

Slide 79

Slide 79 text

レポート課題 79 課題内容 https://dmml2023.hontolab.org/に記載 提出先 学務情報システム 締め切り 2023年7⽉7⽇(⾦) 提出形式 PDFファイル (必ずWordファイルをPDF化すること)

Slide 80

Slide 80 text

数学記号(集合) 80 集合 (太字でない⼤⽂字アルファベット) 𝑆 集合の要素 (太字でない⼩⽂字アルファベット) 𝑠 𝑆 = 𝑠' , 𝑠( , … , 𝑠) = 𝑥 𝑥 ∈ 𝑅 ∧ 𝑓 𝑥 > 0} 外延表現:要素を並べる書き⽅ 内包表現:要素の条件を指定する書き⽅ (xが実数でかつ f (x)がゼロより⼤きくなるようなxの集合) 集合の書き⽅ 集合の⼤きさ(要素数) |𝑆|

Slide 81

Slide 81 text

例 81 𝑁 = 0, 1, 2, … 𝑍 = … , −2, −1, 0, 1, 2, … 𝑂 = 2n + 1 | n ∈ 𝑁 (⾃然数) (整数) (奇数) 𝐹 = りんご, みかん, なし |𝐹| = 3

Slide 82

Slide 82 text

数学記号(ベクトル) 82 𝒙 ベクトル (太字の⼩⽂字) 断りがない限り,縦ベクトル 𝒙 " = 𝑥! " + ⋯ + 𝑥_ " ベクトルの要素の書き⽅ 実数を成分とする m次元ベクトル 𝒙 = 𝑥! ⋮ 𝑥_ ∈ 𝑅_ = 𝑥! , … , 𝑥_ % ベクトルの⼤きさ 𝒙 と書くことも 𝒙 K 𝒚 = 𝒙%𝒚 = ∑ 𝑥@ 𝑦@ ベクトルの内積 𝒙, 𝒚 と書くことも

Slide 83

Slide 83 text

数学記号(⾏列) 83 ⾏列 (太字の⼤⽂字) 𝑿 = 𝑥'' ⋯ 𝑥)' ⋮ 𝑥*' ⋱ ⋯ ⋮ 𝑥*) ∈ 𝑅*×) 𝑿の各列(縦ベクトル) を使った書き⽅ 実数を成分とする m⾏ n 列の⾏列 = 𝑥!" *×) こんな書き⽅も = 𝒙' , … , 𝒙) 𝑿 ⾏列の 要素の書き⽅

Slide 84

Slide 84 text

機械学習でよく⾒かける数学的処理(1/3) 84 1 '(! $ 𝑥' = 𝑥! + 𝑥" + ⋯ + 𝑥$ M '(! $ 𝑥' = 𝑥! 𝑥" … 𝑥$ 𝜕 𝜕𝑥, 𝑓(𝒙) 数列の和 数列の積 偏微分 𝑓 𝒙 = 𝑤! 𝑥! + 𝑤( 𝑥( + ⋯ + 𝑤' 𝑥' 例: 𝜕 𝜕𝑥' 𝑓 𝒙 = 𝑤'

Slide 85

Slide 85 text

機械学習でよく⾒かける数学的処理 (2/3) 85 argmax "∈$ 𝑓(𝑥) argmin %∈$ 𝑓(𝑥) max %∈$ 𝑓(𝑥) min %∈$ 𝑓(𝑥) 関数を最⼤化 関数を最⼩化 実数の範囲でパラメータxを 動かし関数f(x)を最⼤化・最⼩化 関数を最⼤化する パラメータ 関数を最⼩化する パラメータ 関数を最適化する 実数を⾒つける

Slide 86

Slide 86 text

機械学習でよく⾒かける数学的処理 (3/3) 86 sign 𝑥 = 6 1: 𝑥 > 0 0: 𝑥 = 0 −1: 𝑥 < 0 符号関数 値の符号に応じて ・正なら1 ・負なら-1 ・ゼロなら0 を返す関数と覚える 画像出典: https://ja.wikipedia.org/wiki/符号関数 (sgn 𝑥 と書くことも)

Slide 87

Slide 87 text

機械学習でよく出くわす瞬時に理解すべき数式 87 𝑨:# % = 𝑨𝑻 :# 𝑨𝑩 % = 𝑩𝑻𝑨𝑻 5 5 𝑤5 𝑥5 = 𝒘𝑻𝒙 Matrix Cookbook: http://www2.imm.dtu.dk/pubdb/edoc/imm3274.pdf 𝜕 𝜕𝒙 𝒙 $ = 𝜕 𝜕𝒙 𝒙𝑻𝒙 = 2𝒙 𝜕 𝜕𝒙 𝑴𝒙 = 𝑴𝑻 𝜕 𝜕𝒙 𝒘𝑻𝒙 = 𝒘 𝜕 𝜕𝒙 𝒙 − 𝒂 $ = 2(𝒘 − 𝒂) 𝜕 𝜕𝒙 𝑨𝒙 − 𝒃 $ = 2𝑨𝑻(𝑨𝒙 − 𝒃) 𝑨 + 𝑩 % = 𝑨𝑻 + 𝑩𝑻

Slide 88

Slide 88 text

⾏列サイズの⾒積もり 88 ⾏列A はm⾏ k列(m×k),⾏列B はk⾏ n列(k×n), ⾏列 Wはm⾏ m列(m×m),ベクトルxは m⾏ 1列(m×1) とする.このとき以下の演算結果のサイズは? Q1. 𝑨𝑻𝒙 Q2. 𝒙𝑻𝑾𝒙 Q3. 𝒙𝑻𝒙 スカラー スカラー (k×1)の⾏列(k次元ベクトル) (m×k)の⾏列と(k×n)の⾏列の積をとると, (m×n)の⾏列ができあがると覚えておけばよい