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

データマイニングと機械学習2022-第8回20220608

 データマイニングと機械学習2022-第8回20220608

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

059fb717431a8cd2b509ffebc57d905a?s=128

Y. Yamamoto

June 07, 2022
Tweet

More Decks by Y. Yamamoto

Other Decks in Education

Transcript

  1. 分類問題3: ニューラルネットワーク入門 ⼭本 祐輔 静岡⼤学 情報学部 准教授 yusuke_yamamoto@acm.org 第8回 データマイニングと機械学習

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

    … 2 行動情報学科に 特有の応用手法 時系列データ分析 時間経過とともに変化する データに対する分析⼿法 ・K近傍法 ・サポートベクタマシン ・ニューラルネットワーク
  3. K-近傍法(k-NN: k nearest neighbor)のアイデア 3 対象データまでの距離が最も近いK個のデータの ラベルのうち、最も多いラベルに分類する ? K=5:⻘ K=3:緑

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

    0 サポートベクター (直線に最も近い点) 4
  5. 教師あり学習のための機械学習アルゴリズムの分類 5 ロジスティック回帰 ナイーブベイズ サポートベクターマシン K近傍法 ランダムフォレスト & 決定木 ニューラルネットワーク

    訓練データをすべて記憶して おき,それら全部を使って 予測を⾏う(推論計算が遅い) 訓練データの背後にあるモデル を抽出し,それを予測時に使う (推論計算は速い) インスタンスベース モデルベース 本⽇学ぶのはコレ
  6. 教師あり学習の歴史(⼀部抜粋) ロジスティック回帰 サポートベクターマシン 決定木 パーセプトロン 単純ベイズ分類器 ランダムフォレスト k-近傍法 ベイジアンネットワーク 深層学習

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

    1951年 1979年 1985年 1992年 1960年代 2001年 2010年代 7 パーセプトロン 深層学習 多層パーセプトロン
  8. 1 ニューラルネットワークの最小単位 パーセプトロン 8

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

    ▲ 9
  10. 機械学習の2クラス分類問題とは(2/2) •と×のデータを2分するような超平面を見つける A. X 0 Y ? ▲ ? ▲

    ax+by+c=0 直線より下側なら「•」 直線より上側なら「×」 10
  11. 2クラス分類問題に対する素朴なアプローチ (2次元バージョン) 11 ⼊⼒ ! = # ! , #

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

    , … , # $ が与えられたとき % ! = & ! # ! + & " # " + ⋯ + & # = *%! について ・! " > 0 ならば 1 に分類(×) ・! " ≤ 0 ならば -1 に分類(•) 学習データを使って関数 f(x) をどう見つけるか? (上記はstep(& ' )と書くことも可)
  13. サポートベクター (直線に最も近い点) 関数f(x)の⾒つけ⽅: サポートベクターマシン編 X 0 Y マージンを最大化する超平面を見つける (分類境界とサポートベクターの距離) !(#)

    = 0 サポートベクター (直線に最も近い点) 13
  14. 関数f(x)の別の⾒つけ⽅:損失関数の最⼩化 14 訓練データを使って予測したときに 予測と実際の値との誤差が最小になるf(x)を見つける 訓練データ + = (! ! ,

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

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

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

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

    2 訓練データDからデータ(x, y)をランダムに1個取得し 関数 f (x) を使ってラベルを予想 Step 3 ステップ2の予測が正解ラベル y と⼀致しない場合 以下の式を⽤いて重み w を更新('は学習率) * ← * + 4-! Step 4 ある程度の回数だけ Step2-3を繰り返す 18 損失関数を微分最⼩化で 得られた重みの更新式
  19. パーセプトロンの学習の例(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 メールに出現する単語の情報と迷惑メールラベル 学習率 4 = ! " 重みの初期値 * = (0,0,0,0,0)
  20. パーセプトロンの学習の例(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) 予測関数の値 *.6 ! = 0 * ← * + 1 2 +1 6 ! = 0,0,0,0,0 + 1 2 , 1 2 , 0, 1 2 , 1 2 = (! " , ! " , 0, ! " , ! " ) 0より⼤きくないので予測間違い (パラメータ更新へ)
  21. パーセプトロンの学習の例(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) 予測値 *.6 " = ! " , ! " , 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より⼩さくないので予測間違い (パラメータ更新へ)
  22. パーセプトロンの学習の例(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) 予測値 *.6 / = ! " , ! " , − ! " , 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より⼤きくないので予測間違い (パラメータ更新へ)
  23. パーセプトロンの学習の例(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) 予測値 *.6 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より⼩さくないので予測間違い (パラメータ更新へ)
  24. パーセプトロンの学習の例(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より⼤きいので予測は正しい (パラメータは更新しない)
  25. パーセプトロンの学習の例(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 % !
  26. パーセプトロンの限界 26 X 0 Y x1 xn 1 … ×

    w0 × w1 × wn Σ step(・) 1 or -1 ・単層パーセプトロンは線形分離可能な場合しか学習できない ・パーセプトロンを多層化すれば⾮線形問題も扱えるが、 パーセプトロンの学習則はパラメータをうまく学習できない 第1次ニューラルネットワークブームは終焉へ
  27. Neural Network Playgroundでパーセプトロンを体験 27 https://playground.tensorflow.org/

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

  29. パーセプトロンの限界の克服:⾮線形問題への対応 29 x1 xi 1 … xn-1 xn … z

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

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

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

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

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

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

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

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

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

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

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

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

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

    1 … xn … y1 2層⽬ (出⼒層) ⼊⼒層 J! = 1 1 + exp(− ∑$%! ) H!$ (() F$ (!) ) 分類問題なら出⼒層が最⼤となるクラスを選択 2クラス分類の場合 + ! (!) + $ (!) + % (!)
  43. MLPを別の視点から⾒る(1/2) 43 x1 xi 1 … xn … z21 1層⽬

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

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

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

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

    … …… 打率 本塁打 盗塁数 得点 パワー系要素 スピード系要素 技術系要素 攻撃貢献度 守備貢献度 精神貢献度 ⼊⼒を推論に有⽤な特徴量に変換していく メジャー で成功する?
  48. 中間層の役割の例2:ネオコグニトロン(CNNの初期モデル) 48 画像出典: https://dbnst.nii.ac.jp/pro/detail/498 ⼈間が苦労して特徴量抽出を⾏う必要がない

  49. 多層パーセプトロンによる「学習」(1/3) . /, W = 0 &'! ( 1(3& ,

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

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

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

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

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

    ⼊⼒層 + ! (!) + $ (!) + & (!) +' (!) … … + ! (()!) + $ (()!) + & (()!) +' (()!) … … + ! (() + & (() +* (() … … …… …… …… …… 1層⽬ (隠れ層) L層⽬ (出⼒層) = 9(O; H!! ! , … , H+! ! , … , H!' (,) , … , H+' (,) )) ! " 訓練データを⼊⼒した ! ", W を 各$ #$ (&) で微分し最⼩化すればよい パラメータ最適化 複雑怪奇な関数 L をどうやって微分するのか?
  55. 誤差逆伝播法(Backpropagation) 55 • ニューラルネットワークの効率的な最適化方法 • 出力層から層を遡って後向きに微分(勾配)計算 推論時(⼊⼒層から出⼒層へ) (順伝播の結果を出⼒層から⼊⼒層へ波及させて再帰的に最適化) 逆伝播法(計算結果を波及させ最適化)

  56. 回帰問題で考える誤差逆伝播法 56 xk xK … L-1層⽬ (隠れ層) ⼊⼒層 + !

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

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

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

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

    + ,"#! (()!) … + & (() …… …… …… L層⽬ (出⼒層) … &' &( %& (() = &' &* % (() &* % (() &+ % (() &+ % (() &( %& (() H$- (,) 最適化の⽬標 ? 1 2 ∑20# 3 A2 − <2 7 $ ?<5 (7) = リマインダ B = 1 2 5 20# 3 A2 − <2 7 $ B ' (R) − -' =
  61. 誤差逆伝播法:「出⼒層」の重みの勾配(5/5) 61 L-1層⽬ (隠れ層) + ! (()!) + + (()!)

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

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

    ,$#! (-)!) … …… …… …… … … … H$- (1) + ! (-) + & (-) + ,$ (-) t層⽬ = (5 2 ?B ?<2 *<# ?<2 *<# ?/2 *<# >52 (*<#) )=; * /5 * <9 (*) … … + ! (-.!) + & (-.!) + ,$%! (-.!) t+1層⽬ ターゲットノードからの 出⼒に関連する情報 (t+1層⽬で計算済み!!) ?B ?>59 (*) = ?B ?<5 (*) ?<5 (*) ?/5 (*) ?/5 (*) ?>59 (*) ある層の勾配計算に前の層の結果を使う
  64. 誤差逆伝播法のまとめ 64 出力層から層を順に遡り、再帰的に勾配を計算 出⼒層での誤差を⼊⼒層に向けて波及させる 勾配が求まれば、勾配法で損失関数の最⼩化ができる 勾配計算のために出⼒層での誤差を計算 パラメータ最適化(学習)のために

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

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

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

  68. 多層パーセプトロン(MLP)による「学習」(再掲) 68 訓練データ ! = ($) , &) , …

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

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

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

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

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

    1. ランダムにxの初期値(O (&))を設定 ⼿順(αは⼩さな正の定数) 2. 収束するまで以下を繰り返す 2a. O (67!) ← O (6) − Z 23 28 O (6)
  74. 最急降下法の問題点 74 計算に時間がかかる 局所解に陥る可能性あり 画像出典:https://ruthwik.github.io/machinelearning/2018-01-15-gradient-descent/ 初期値や学習率の設定によっては 局所解周辺から抜け出せないことも ⼤規模データを対象とした学習では 勾配の計算量が膨⼤になる )

    = , $%! !&&&&& [(J$, 9(O$; \)) 損失関数 T) T\ = T T\ , $%! !&&&&& [(J$, 9(O$; \)) 損失関数の勾配 Wを1回更新するのに これを10万回計算…
  75. 損失関数のi番⽬の データに関する部分 確率的勾配降下法(Stochastic Gradient Descent: SGD)(1/2) 75 ランダムに選んだ1つのデータで勾配を計算して パラメータを更新し、それをデータの数だけ繰り返す たことにし

    最急降下法 C(=<#) ← C(=) − E F FC G(A5, !(#5; C(=) )) C(=<#) ← C(=) − E E EF 1 '(! & 2(-' , %(!' ; F(]))) 確率的勾配降下法 For each (xi , yi ) in 全データ: 損失関数
  76. 確率的勾配降下法(Stochastic Gradient Descent: SGD)(2/2) 76 )(\, *)を最⼩化する \ を求める ⽬標

    1. ランダムにWの初期値(\ (&))を設定 ⼿順(αは⼩さな正の定数) 2. 収束するまで以下を繰り返す W ランダムに選んだ1つのデータで勾配を 近似計算してパラメータの更新する勾配法 2a. Dをランダムにシャッフル 2b. Dの先頭から順にデータxを取り ;(0$") ← ;(0) − = > >; ?(8, &('; ;(0))) ((./01) 最急降下法の局所解問題をある程度克服
  77. 様々な確率的勾配法の振る舞い 77 画像出典: http://hduongtrong.github.io/2015/11/23/coordinate-descent/

  78. レポート課題 79 課題内容 https://dmml2022.hontolab.org/に記載 提出先 学務情報システム 締め切り 2022年7⽉1⽇(⾦) 提出形式 PDFファイル

    (必ずWordファイルをPDF化すること)
  79. 回 実施⽇ トピック 1 04/13 ガイダンス:機械学習の概要 & はじめての機械学習 2 04/20

    クラスタリング1:k-means & 階層的クラスタリング 3 04/27 クラスタリング2:密度ベースクラスタリング 4 05/11 分類1:K近傍法 & 教師あり機械学習のお作法 5 05/18 ゲスト講師による講演2(加藤先⽣ from 筑波⼤学) 6 05/25 分類2:サポートベクターマシン 7 06/01 ゲスト講師による講演3(⼭本岳先⽣ from 兵庫県⽴⼤学) 8 06/08 分類3:ニューラルネットワーク⼊⾨ 9 06/15 時系列データの統計的な扱い 10 06/22 ゲスト講師による講演1(松村先⽣ from Wantedly) 11 06/29 時系列データの解析 12 07/06 シミュレーションによる時系列データの検討 13 07/13 振り返りと補⾜説明、および、後半のデータ取り 14 07/20 未知環境での時系列データ 15 07/27 解析と学習モデル 今後の予定 80
  80. 数学記号(集合) 81 集合 (太字でない⼤⽂字アルファベット) + 集合の要素 (太字でない⼩⽂字アルファベット) , 0 =

    1+ , 1, , … , 1- = 4 4 ∈ 6 ∧ ! 4 > 0} 外延表現:要素を並べる書き⽅ 内包表現:要素の条件を指定する書き⽅ (xが実数でかつ f (x)がゼロより⼤きくなるようなxの集合) 集合の書き⽅ 集合の⼤きさ(要素数) |+|
  81. 例 82 9 = 0, 1, 2, … < =

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

    ! " + ⋯ + # ^ " ベクトルの要素の書き⽅ 実数を成分とする m次元ベクトル ! = # ! ⋮ # ^ ∈ J^ = # ! , … , # ^ % ベクトルの⼤きさ ' と書くことも ! K L = !%L = ∑ # @ - @ ベクトルの内積 ', B と書くことも
  83. 数学記号(⾏列) 84 ⾏列 (太字の⼤⽂字) D = 4++ ⋯ 4-+ ⋮

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

    + # " + ⋯ + # $ M '(! $ #' = #! #" … #$ & &40 !(") 数列の和 数列の積 偏微分 9 O = H!1! + H(1( + ⋯ + H'1' 例: ` `1' 9 O = H'
  85. 機械学習でよく⾒かける数学的処理 (2/3) 86 argmax "∈$ !(3) argmin %∈$ !(3) max

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

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

    J! I! 5 5 >545 = ,! # Matrix Cookbook: http://www2.imm.dtu.dk/pubdb/edoc/imm3274.pdf ? ?# # $ = ? ?# #! # = 2# ? ?# K# = K! ? ?# ,! # = , ? ?# # − L $ = 2(, − L) ? ?# I# − M $ = 2I! (I# − M) I + J % = I! + J!
  88. ⾏列サイズの⾒積もり 89 ⾏列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)の⾏列ができあがると覚えておけばよい