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

データマイニングと機械学習 - ニューラルネットワーク

データマイニングと機械学習 - ニューラルネットワーク

1. パーセプトロン
2. 多層パーセプトロン
3. 勾配法

Y. Yamamoto

June 05, 2023
Tweet

More Decks by Y. Yamamoto

Other Decks in Technology

Transcript

  1. 講義のトピック 機械学習 教師あり学習 教師なし学習 強化学習 ・クラスタリング ・データ圧縮 ・分類 ・回帰 …

    … 2 行動情報学科に 特有の応用手法 時系列データ分析 時間経過とともに変化する データに対する分析⼿法 ・K近傍法 ・サポートベクタマシン ・ニューラルネットワーク
  2. 教師あり学習のための機械学習アルゴリズムの分類 5 ロジスティック回帰 ナイーブベイズ サポートベクターマシン K近傍法 ランダムフォレスト & 決定木 ニューラルネットワーク

    訓練データをすべて記憶して おき,それら全部を使って 予測を⾏う(推論計算が遅い) 訓練データの背後にあるモデル を抽出し,それを予測時に使う (推論計算は速い) インスタンスベース モデルベース 本⽇学ぶのはコレ
  3. 2クラス分類問題に対する素朴なアプローチ (2次元バージョン) 11 ⼊⼒ 𝒙 = 𝑥! , 𝑥" が与えられたとき

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

    , 𝑥$ が与えられたとき 𝑓 𝒙 = 𝑤! 𝑥! + 𝑤" 𝑥" + ⋯ + 𝑤# = 𝒘%𝒙 について ・𝑓 𝒙 > 0 ならば 1 に分類(×) ・𝑓 𝒙 ≤ 0 ならば -1 に分類(•) 学習データを使って関数 f(x) をどう見つけるか? (上記はstep(𝑓 𝒙 )と書くことも可)
  5. 関数f(x)の別の⾒つけ⽅:損失関数の最⼩化 14 訓練データを使って予測したときに 予測と実際の値との誤差が最小になるf(x)を見つける 訓練データ 𝐷 = (𝒙! , 𝑦!

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

    , 𝒙" , 𝑦" , … , (𝒙& , 𝑦& )} 損失関数 𝐿 𝐷 = 1 '(! & 𝑔(𝑦' , 𝑓(𝒙' )) = 1 '(! & 𝑔(𝑦' , 𝒘%𝒙' ) 誤差の総和に着⽬ パーセプトロンもこの流派
  7. パーセプトロン:2クラス分類問題を解く線形分類器(1/2) 16 推論フェーズ ⼊⼒ 𝒙 = 𝑥! , 𝑥" ,

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

    , 𝑓(𝒙& )) = 0 &'! ( max(0, −𝑦& 𝒘%𝒙& ) 訓練データ 𝐷 = (𝒙) , 𝑦) , …, (𝒙* , 𝑦* )}について 以下の損失関数が最⼩となるパラメータwを⾒つける. 予測が正しかったら罰則なし. 外れていたら −𝑓(𝒙! )だけ 損失が出たと考える 損失関数は微分最⼩化がお約束 予測が当たっている場合, 必ずゼロ以上になる
  9. パーセプトロンのパラメータ最適化(パーセプトロンの学習則) Step 1 予測関数 f (x) の重み w をランダムに設定 Step

    2 訓練データDからデータ(x, y)をランダムに1個取得し 関数 f (x) を使ってラベルを予想 Step 3 ステップ2の予測が正解ラベル y と⼀致しない場合 以下の式を⽤いて重み w を更新(𝜂は学習率) 𝒘 ← 𝒘 + 𝜂𝑦𝒙 Step 4 ある程度の回数だけ Step2-3を繰り返す 18 損失関数を微分最⼩化で 得られた重みの更新式
  10. パーセプトロンの学習の例(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)
  11. パーセプトロンの学習の例(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より⼤きくないので予測間違い (パラメータ更新へ)
  12. パーセプトロンの学習の例(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より⼩さくないので予測間違い (パラメータ更新へ)
  13. パーセプトロンの学習の例(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より⼤きくないので予測間違い (パラメータ更新へ)
  14. パーセプトロンの学習の例(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より⼩さくないので予測間違い (パラメータ更新へ)
  15. パーセプトロンの学習の例(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より⼤きいので予測は正しい (パラメータは更新しない)
  16. パーセプトロンの学習の例(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 % 𝒙
  17. パーセプトロンの限界 26 X 0 Y x1 xn 1 … ×w0

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

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

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

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

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

    ・データの特徴を段階的に深く学習 ・モデルの表現⼒の向上 可微分で非線形な活性化関数の導入 𝑧! (!) 𝑧$ (!) 𝑧% (!) 𝑧! ($) Sigmoid (・) Sigmoid (・) ・逆伝播法による最適化が可能に(後述) ・各層の出⼒に⾮線形関数をかますことで ⼊出⼒の⼤⼩関係の⼊れ替えが可能に
  23. 可微分で⾮線形な活性化関数(1/2) 34 𝑓 𝑥 = 1 1 + exp(−𝑥) シグモイド関数

    𝑓 𝑥 = max(0, 𝑥) ReLU(ランプ関数) ・値域が[-1, 1]となるため確率 と 対応させて使う ・その昔は中間層で頻繁に利⽤ ・深層学習の中間層で頻繁に利⽤ ・シンプルなので計算が速い ・0以上の範囲では微分可能
  24. 可微分で⾮線形な活性化関数(2/2) 35 𝑓 𝑢@ = 𝑒A! ∑'(! B 𝑒A" ソフトマックス関数

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

    𝑥 > 0 0 𝑖𝑓 𝑥 ≤ 0 ステップ関数 ・かつてパーセプトロンの 出⼒層で使⽤された ・⾮線形だが微分不可能 𝑓 𝑥 = 𝑥 恒等関数 ・ど線形 ・回帰問題の出⼒層で利⽤
  26. 多層パーセプトロン(Multilayer Perceptron: MLP)による「推論」(1/6) 37 x1 xi 1 … xn …

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

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

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

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

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

    1 … xn … y1 2層⽬ (出⼒層) ⼊⼒層 𝑦! = 1 1 + exp(− ∑ $%! ) 𝑤 !$ (() 𝑧 $ (!) ) 分類問題なら出⼒層が最⼤となるクラスを選択 2クラス分類の場合 𝑧! (!) 𝑧$ (!) 𝑧% (!)
  32. 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/
  33. MLPを別の視点から⾒る(2/2) 44 出⼒層 中間層(隠れ層) ⼊⼒層 … … … …… …

    … … … … … … …… … …… (ざっくり言うと)ニューラルネットワークは ロジスティック回帰モデルのつなぎ合わせ ロジスティック回帰モデル ロジスティック回帰モデル ロジスティック回帰モデル ロジスティック回帰モデル
  34. 隠れ層(中間層)の役割 45 出⼒層 中間層(隠れ層) ⼊⼒層 … … … …… …

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

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

    … …… 打率 本塁打 盗塁数 得点 パワー系要素 スピード系要素 技術系要素 攻撃貢献度 守備貢献度 精神貢献度 ⼊⼒を推論に有⽤な特徴量に変換していく メジャー で成功する?
  37. 多層パーセプトロンによる「学習」(1/3) 𝐿 𝐷, W = 0 &'! ( 𝑔(𝑦& ,

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

    (𝒙* , 𝑦* )}について 損失関数が最⼩となるパラメータWを⾒つける. 損失関数は微分最⼩化がお約束 ニューラルネットワーク f(x) の全パラメータ 𝐿 𝐷, W = 1 $(! & 1 @(! B {−𝑝@(N" log 𝑓@ 𝒙' } 分類問題の損失関数 𝐿 𝐷, W = 1 2 0 &'! ( 𝑦& − 𝑓 𝒙& " 回帰問題の損失関数
  40. 損失関数を微分最⼩化するとは? 52 x1 xi 1 … xk … L-1層⽬ (隠れ層)

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

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

    ⼊⼒層 𝑧! (!) 𝑧$ (!) 𝑧& (!) 𝑧' (!) … … 𝑧! (()!) 𝑧$ (()!) 𝑧 & (()!) 𝑧' (()!) … … 𝑧! (() 𝑧& (() 𝑧* (() … … …… …… …… …… 1層⽬ (隠れ層) L層⽬ (出⼒層) = 𝑓(𝒙; 𝑤!! ! , … , 𝑤+! ! , … , 𝑤!' (,) , … , 𝑤+' (,) )) 𝑓 𝒙 訓練データを⼊⼒した 𝐿 𝐷, W を 各𝑤 #$ (&)で微分し最⼩化すればよい パラメータ最適化 複雑怪奇な関数 L をどうやって微分するのか?
  43. 回帰問題で考える誤差逆伝播法 56 xk xK … L-1層⽬ (隠れ層) ⼊⼒層 𝑧! (!)

    𝑧 + (!) 𝑧,! (!) … … 𝑧! (()!) 𝑧 + (()!) 𝑧,"#! (()!) … 𝑧 & (() …… …… …… 1層⽬ (隠れ層) L層⽬ (出⼒層) 損 失 関 数 … x1 … 最⼩⼆乗誤差 𝐿 = 1 2 7 ,-" . 𝑦, − 𝑧, / #
  44. 誤差逆伝播法:「出⼒層」の重みの勾配(1/5) 57 L-1層⽬ (隠れ層) 𝑧! (()!) 𝑧 + (()!) 𝑧,"#!

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

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

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

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

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

    …… …… …… … … … 𝑤 $- (1) 𝑧! (-) 𝑧 & (-) 𝑧,$ (-) t層⽬ = (5 2 𝜕𝐿 𝜕𝑧 2 *<# 𝜕𝑧2 *<# 𝜕𝑢 2 *<# 𝑤52 (*<#))𝜙; * 𝑢5 * 𝑧9 (*) … … 𝑧! (-.!) 𝑧 & (-.!) 𝑧,$%! (-.!) t+1層⽬ 𝜕𝐿 𝜕𝑤 59 (*) = 𝜕𝐿 𝜕𝑧 5 (*) 𝜕𝑧5 (*) 𝜕𝑢 5 (*) 𝜕𝑢5 (*) 𝜕𝑤 59 (*) ターゲットノード への⼊⼒ 活性化関数の微分
  50. 誤差逆伝播法:「中間層」の重みの勾配(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 (*) ある層の勾配計算に前の層の結果を使う
  51. 多層パーセプトロン(MLP)による「学習」(再掲) 68 訓練データ 𝐷 = (𝒙) , 𝑦) , …,

    (𝒙* , 𝑦* )}について 損失関数が最⼩となるパラメータWを⾒つける. 損失関数は微分最⼩化がお約束 ニューラルネットワーク f(x) の全パラメータ 𝐿 𝐷, W = 1 $(! & 1 @(! B {−𝑝@(N" log 𝑓@ 𝒙' } 分類問題の損失関数 𝐿 𝐷, W = 1 2 0 &'! ( 𝑦& − 𝑓 𝒙& " 回帰問題の損失関数 複雑怪奇な損失関数を どうやって計算機で微分・最小化するのか?
  52. ⼈間による関数の微分・最⼩化 69 𝑓(𝑥) = 𝑥0 − 2𝑥/ + 1 f(x)

    x 例 𝑑𝑓 𝑑𝑥 = 4𝑥) − 6𝑥( = 2𝑥((2𝑥 − 3) 以下の関数の最⼩値を求めよ. 解 23 24 = 0となるのは 𝑥 = 0, ) ( グラフ形状から 𝑥 = ) ( における 極値は関数の最⼩値となる. よって最⼩値は 𝑓 ) ( = − !! !5 . 計算機は解析的に最⼩値を⾒つけられない…
  53. 最急降下法 70 x 𝒙(') 𝑑𝑓 𝑑𝒙 (𝒙(')) 勾配(微分係数)を使って,関数の最小値を 数値計算的に求める最も単純なアルゴリズム 𝑓(𝒙)を最⼩化する

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

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

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

    1. ランダムにxの初期値(𝒙(&))を設定 ⼿順(αは⼩さな正の定数) 2. 収束するまで以下を繰り返す 2a. 𝒙(67!) ← 𝒙(6) − 𝛼 23 2𝒙 𝒙(6)
  57. 損失関数のi番⽬の データに関する部分 確率的勾配降下法(Stochastic Gradient Descent: SGD)(1/2) 75 ランダムに選んだ1つのデータで勾配を計算して パラメータを更新し、それをデータの数だけ繰り返す たことにし

    最急降下法 𝑾(=<#) ← 𝑾(=) − 𝛼 𝑑 𝑑𝑾 𝑔(𝑦5 , 𝑓(𝒙5 ; 𝑾(=))) 𝑾(=<#) ← 𝑾(=) − 𝛼 𝑑 𝑑𝑾 1 '(! & 𝑔(𝑦', 𝑓(𝒙'; 𝑾(]))) 確率的勾配降下法 For each (xi , yi ) in 全データ: 損失関数
  58. 確率的勾配降下法(Stochastic Gradient Descent: SGD)(2/2) 76 𝐿(𝑾, 𝐷)を最⼩化する 𝑾 を求める ⽬標

    1. ランダムにWの初期値(𝑾(&))を設定 ⼿順(αは⼩さな正の定数) 2. 収束するまで以下を繰り返す W ランダムに選んだ1つのデータで勾配を 近似計算してパラメータの更新する勾配法 2a. Dをランダムにシャッフル 2b. Dの先頭から順にデータxを取り 𝑾(0$") ← 𝑾(0) − 𝛼 𝑑 𝑑𝑾 𝑔(𝑦, 𝑓(𝒙; 𝑾(0))) 𝑾(./01) 最急降下法の局所解問題をある程度克服
  59. 数学記号(集合) 80 集合 (太字でない⼤⽂字アルファベット) 𝑆 集合の要素 (太字でない⼩⽂字アルファベット) 𝑠 𝑆 =

    𝑠' , 𝑠( , … , 𝑠) = 𝑥 𝑥 ∈ 𝑅 ∧ 𝑓 𝑥 > 0} 外延表現:要素を並べる書き⽅ 内包表現:要素の条件を指定する書き⽅ (xが実数でかつ f (x)がゼロより⼤きくなるようなxの集合) 集合の書き⽅ 集合の⼤きさ(要素数) |𝑆|
  60. 例 81 𝑁 = 0, 1, 2, … 𝑍 =

    … , −2, −1, 0, 1, 2, … 𝑂 = 2n + 1 | n ∈ 𝑁 (⾃然数) (整数) (奇数) 𝐹 = りんご, みかん, なし |𝐹| = 3
  61. 数学記号(ベクトル) 82 𝒙 ベクトル (太字の⼩⽂字) 断りがない限り,縦ベクトル 𝒙 " = 𝑥!

    " + ⋯ + 𝑥_ " ベクトルの要素の書き⽅ 実数を成分とする m次元ベクトル 𝒙 = 𝑥! ⋮ 𝑥_ ∈ 𝑅_ = 𝑥! , … , 𝑥_ % ベクトルの⼤きさ 𝒙 と書くことも 𝒙 K 𝒚 = 𝒙%𝒚 = ∑ 𝑥@ 𝑦@ ベクトルの内積 𝒙, 𝒚 と書くことも
  62. 数学記号(⾏列) 83 ⾏列 (太字の⼤⽂字) 𝑿 = 𝑥'' ⋯ 𝑥)' ⋮

    𝑥*' ⋱ ⋯ ⋮ 𝑥*) ∈ 𝑅*×) 𝑿の各列(縦ベクトル) を使った書き⽅ 実数を成分とする m⾏ n 列の⾏列 = 𝑥!" *×) こんな書き⽅も = 𝒙' , … , 𝒙) 𝑿 ⾏列の 要素の書き⽅
  63. 機械学習でよく⾒かける数学的処理(1/3) 84 1 '(! $ 𝑥' = 𝑥! + 𝑥"

    + ⋯ + 𝑥$ M '(! $ 𝑥' = 𝑥! 𝑥" … 𝑥$ 𝜕 𝜕𝑥, 𝑓(𝒙) 数列の和 数列の積 偏微分 𝑓 𝒙 = 𝑤! 𝑥! + 𝑤( 𝑥( + ⋯ + 𝑤' 𝑥' 例: 𝜕 𝜕𝑥' 𝑓 𝒙 = 𝑤'
  64. 機械学習でよく⾒かける数学的処理 (2/3) 85 argmax "∈$ 𝑓(𝑥) argmin %∈$ 𝑓(𝑥) max

    %∈$ 𝑓(𝑥) min %∈$ 𝑓(𝑥) 関数を最⼤化 関数を最⼩化 実数の範囲でパラメータxを 動かし関数f(x)を最⼤化・最⼩化 関数を最⼤化する パラメータ 関数を最⼩化する パラメータ 関数を最適化する 実数を⾒つける
  65. 機械学習でよく⾒かける数学的処理 (3/3) 86 sign 𝑥 = 6 1: 𝑥 >

    0 0: 𝑥 = 0 −1: 𝑥 < 0 符号関数 値の符号に応じて ・正なら1 ・負なら-1 ・ゼロなら0 を返す関数と覚える 画像出典: https://ja.wikipedia.org/wiki/符号関数 (sgn 𝑥 と書くことも)
  66. 機械学習でよく出くわす瞬時に理解すべき数式 87 𝑨:# % = 𝑨𝑻 :# 𝑨𝑩 % =

    𝑩𝑻𝑨𝑻 5 5 𝑤5 𝑥5 = 𝒘𝑻𝒙 Matrix Cookbook: http://www2.imm.dtu.dk/pubdb/edoc/imm3274.pdf 𝜕 𝜕𝒙 𝒙 $ = 𝜕 𝜕𝒙 𝒙𝑻𝒙 = 2𝒙 𝜕 𝜕𝒙 𝑴𝒙 = 𝑴𝑻 𝜕 𝜕𝒙 𝒘𝑻𝒙 = 𝒘 𝜕 𝜕𝒙 𝒙 − 𝒂 $ = 2(𝒘 − 𝒂) 𝜕 𝜕𝒙 𝑨𝒙 − 𝒃 $ = 2𝑨𝑻(𝑨𝒙 − 𝒃) 𝑨 + 𝑩 % = 𝑨𝑻 + 𝑩𝑻
  67. ⾏列サイズの⾒積もり 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)の⾏列ができあがると覚えておけばよい