1. パーセプトロン 2. 多層パーセプトロン 3. 勾配法
分類問題3:ニューラルネットワーク入門⼭本 祐輔名古屋市⽴⼤学データサイエンス学部准教授[email protected]第8回 データマイニングと機械学習 20232023年6月7日
View Slide
講義のトピック機械学習教師あり学習教師なし学習 強化学習・クラスタリング・データ圧縮・分類・回帰……2行動情報学科に特有の応用手法時系列データ分析時間経過とともに変化するデータに対する分析⼿法・K近傍法・サポートベクタマシン・ニューラルネットワーク
K-近傍法(k-NN: k nearest neighbor)のアイデア3対象データまでの距離が最も近いK個のデータのラベルのうち、最も多いラベルに分類する?K=5:⻘K=3:緑K=1:⻘多 数 決
サポートベクター(直線に最も近い点)サポートベクターマシンのアイデアX0Yマージンを最大化する超平面を見つける(分類境界とサポートベクターの距離)𝑓(𝒙) = 0サポートベクター(直線に最も近い点)4
教師あり学習のための機械学習アルゴリズムの分類5ロジスティック回帰ナイーブベイズサポートベクターマシンK近傍法ランダムフォレスト & 決定木ニューラルネットワーク訓練データをすべて記憶しておき,それら全部を使って予測を⾏う(推論計算が遅い)訓練データの背後にあるモデルを抽出し,それを予測時に使う(推論計算は速い)インスタンスベース モデルベース本⽇学ぶのはコレ
教師あり学習の歴史(⼀部抜粋)ロジスティック回帰サポートベクターマシン決定木パーセプトロン単純ベイズ分類器ランダムフォレストk-近傍法ベイジアンネットワーク深層学習1958年1957年1951年1979年1985年1992年1960年代2001年2010年代6
教師あり学習の歴史(⼀部抜粋)ロジスティック回帰サポートベクターマシン決定木単純ベイズ分類器ランダムフォレストk-近傍法ベイジアンネットワーク1958年1957年1951年1979年1985年1992年1960年代2001年2010年代7パーセプトロン深層学習多層パーセプトロン
1 ニューラルネットワークの最小単位パーセプトロン8
機械学習の2クラス分類問題とは(1/2)●と×のデータ集合が与えられたときに,未知のN次元データが●か×をどう予測する?Q.X0Y?▲?▲9
機械学習の2クラス分類問題とは(2/2)●と×のデータを2分するような超平面を見つけるA.X0Y?▲?▲ax+by+c=0直線より下側なら「●」直線より上側なら「×」10
2クラス分類問題に対する素朴なアプローチ (2次元バージョン)11⼊⼒ 𝒙 = 𝑥!, 𝑥"が与えられたとき関数 𝑓 𝒙 = 𝑤!𝑥!+ 𝑤"𝑥"+ 𝑤#について・𝑓 𝒙 > 0 ならば 1 に分類(×)・𝑓 𝒙 ≤ 0 ならば -1 に分類(●)(上記はstep(𝑓 𝒙 )と書くことも可)
2クラス分類問題に対する素朴なアプローチ(N次元バージョン)12⼊⼒ 𝒙 = 𝑥!, 𝑥", … , 𝑥$が与えられたとき𝑓 𝒙 = 𝑤!𝑥!+ 𝑤"𝑥"+ ⋯ + 𝑤#= 𝒘%𝒙 について・𝑓 𝒙 > 0 ならば 1 に分類(×)・𝑓 𝒙 ≤ 0 ならば -1 に分類(●)学習データを使って関数 f(x) をどう見つけるか?(上記はstep(𝑓 𝒙 )と書くことも可)
サポートベクター(直線に最も近い点)関数f(x)の⾒つけ⽅: サポートベクターマシン編X0Yマージンを最大化する超平面を見つける(分類境界とサポートベクターの距離)𝑓(𝒙) = 0サポートベクター(直線に最も近い点)13
関数f(x)の別の⾒つけ⽅:損失関数の最⼩化14訓練データを使って予測したときに予測と実際の値との誤差が最小になるf(x)を見つける訓練データ 𝐷 = (𝒙!, 𝑦!, 𝒙", 𝑦", … , (𝒙&, 𝑦&)}1個⽬のデータの特徴量1個⽬のデータの正解ラベル損失関数 𝐿 𝐷 = 1'(!&𝑔(𝑦', 𝑓(𝒙'))データ1個に関する誤差を評価例: 𝐿 𝐷 = , |実際の得点i君 ‒予測得点 i君|
関数f(x)の別の⾒つけ⽅:損失関数の最⼩化15訓練データを使って予測したときに予測と実際の値との誤差が最小になるf(x)を見つける訓練データ 𝐷 = (𝒙!, 𝑦!, 𝒙", 𝑦", … , (𝒙&, 𝑦&)}損失関数 𝐿 𝐷 = 1'(!&𝑔(𝑦', 𝑓(𝒙'))= 1'(!&𝑔(𝑦', 𝒘%𝒙')誤差の総和に着⽬パーセプトロンもこの流派
パーセプトロン:2クラス分類問題を解く線形分類器(1/2)16推論フェーズ⼊⼒ 𝒙 = 𝑥!, 𝑥", … , 𝑥#が与えられたとき𝑓 𝒙 = 𝑤!𝑥!+ 𝑤"𝑥"+ ⋯ + 𝑤$= 𝒘%𝒙 について・𝑓 𝒙 > 0 ならば 1 に分類・𝑓 𝒙 ≤ 0 ならば -1 に分類Σx1xn1…×w0×w1×wnstep(・)1 or -1
パーセプトロン:2クラス分類問題を解く線形分類器(2/2)17学習フェーズ𝐿 𝐷 = 0&'!(𝑔(𝑦&, 𝑓(𝒙&)) = 0&'!(max(0, −𝑦&𝒘%𝒙&)訓練データ 𝐷 = (𝒙), 𝑦), …, (𝒙*, 𝑦*)}について以下の損失関数が最⼩となるパラメータwを⾒つける.予測が正しかったら罰則なし.外れていたら −𝑓(𝒙!)だけ損失が出たと考える損失関数は微分最⼩化がお約束予測が当たっている場合,必ずゼロ以上になる
パーセプトロンのパラメータ最適化(パーセプトロンの学習則)Step 1予測関数 f (x) の重み w をランダムに設定Step 2訓練データDからデータ(x, y)をランダムに1個取得し関数 f (x) を使ってラベルを予想Step 3ステップ2の予測が正解ラベル y と⼀致しない場合以下の式を⽤いて重み w を更新(𝜂は学習率)𝒘 ← 𝒘 + 𝜂𝑦𝒙Step 4ある程度の回数だけ Step2-3を繰り返す18損失関数を微分最⼩化で得られた重みの更新式
パーセプトロンの学習の例(1/7)19and viagra the of nigeria yv11 1 0 1 1 +1v20 0 1 1 0 -1v30 1 1 0 0 +1v41 0 0 1 0 -1v51 0 1 0 1 +1v61 0 1 1 0 -1メールに出現する単語の情報と迷惑メールラベル学習率 𝜂 = !"重みの初期値 𝒘 = (0,0,0,0,0)
パーセプトロンの学習の例(2/7)20and viagra the of nigeria yv11 1 0 1 1 +1v20 0 1 1 0 -1v30 1 1 0 0 +1v41 0 0 1 0 -1v51 0 1 0 1 +1v61 0 1 1 0 -1メールに出現する単語の情報と迷惑メールラベルv1に対する予測(正解は+1)予測関数の値 𝒘𝑻𝒗!= 0𝒘 ← 𝒘 +12+1 𝒗!= 0,0,0,0,0 +12,12, 0,12,12= (!", !", 0, !", !")0より⼤きくないので予測間違い(パラメータ更新へ)
パーセプトロンの学習の例(3/7)21and viagra the of nigeria yv11 1 0 1 1 +1v20 0 1 1 0 -1v30 1 1 0 0 +1v41 0 0 1 0 -1v51 0 1 0 1 +1v61 0 1 1 0 -1メールに出現する単語の情報と迷惑メールラベルv2に対する予測(正解は-1)予測値 𝒘𝑻𝒗"= !", !", 0, !", !"%0,0,1,1,0 = !"𝒘 ← 𝒘 +12−1 𝒗"=12,12, 0,12,12− 0,0,12,12, 0= (!", !", − !", 0, !")0より⼩さくないので予測間違い(パラメータ更新へ)
パーセプトロンの学習の例(4/7)22and viagra the of nigeria yv11 1 0 1 1 +1v20 0 1 1 0 -1v30 1 1 0 0 +1v41 0 0 1 0 -1v51 0 1 0 1 +1v61 0 1 1 0 -1メールに出現する単語の情報と迷惑メールラベルv3に対する予測(正解は+1)予測値 𝒘𝑻𝒗/= !", !", − !", 0, !"%0,1,1,0,0 = 0𝒘 ← 𝒘 +12+1 𝒗)=12,12, −12, 0,12+ 0,12,12, 0,0= (!", 1,0,0, !")0より⼤きくないので予測間違い(パラメータ更新へ)
パーセプトロンの学習の例(5/7)23and viagra the of nigeria yv41 0 0 1 0 -1v51 0 1 0 1 +1v61 0 1 1 0 -1メールに出現する単語の情報と迷惑メールラベルv4に対する予測(正解は-1)予測値 𝒘𝑻𝒗0= !", 1,0,0, !"%1,0,0,1,0 = !"𝒘 ← 𝒘 +12−1 𝒗*=12, 1,0,0,12−12, 0,0,12, 0= (0,1,0, − !", !")0より⼩さくないので予測間違い(パラメータ更新へ)
パーセプトロンの学習の例(6/7)24and viagra the of nigeria yv41 0 0 1 0 -1v51 0 1 0 1 +1v61 0 1 1 0 -1メールに出現する単語の情報と迷惑メールラベルv5に対する予測(正解は+1)予測値 𝒘𝑻𝒗"= 0,1,0, − #$, #$%1,0,1,0,1 = #$0より⼤きいので予測は正しい(パラメータは更新しない)
パーセプトロンの学習の例(7/7)25and viagra the of nigeria yv41 0 0 1 0 -1v51 0 1 0 1 +1v61 0 1 1 0 -1メールに出現する単語の情報と迷惑メールラベルv6に対する予測(正解は-1)予測値 𝒘𝑻𝒗&= 0,1,0, − #$, #$%1,0,1,1,0 = − #$0より⼩さいので予測は正しい(パラメータは更新しない)これ以上学習してもパラメータは変化せず最終的な予測関数 𝒘𝑻𝒙 = 0,1,0, −12,12%𝒙
パーセプトロンの限界26X0Yx1xn1…×w0×w1×wnΣstep(・)1 or -1・単層パーセプトロンは線形分離可能な場合しか学習できない・パーセプトロンを多層化すれば⾮線形問題も扱えるが、パーセプトロンの学習則はパラメータをうまく学習できない第1次ニューラルネットワークブームは終焉へ
Neural Network Playgroundでパーセプトロンを体験27https://playground.tensorflow.org/
2 第2次ニューラルネットワークブームパーセプトロンの多層化28
パーセプトロンの限界の克服:⾮線形問題への対応29x1xi1…xn-1xn…z×w10×w11×w1i×w1nstep(・)リマインダ・𝑥 > 0 ならば 1・𝑥 ≤ 0 ならば-1step 𝑥 =𝑓 𝒙 = step(𝒘!𝒙)ネットワークを関数で表現すると
パーセプトロンの限界の克服:⾮線形問題への対応30x1xi1…xn-1xn…ネットワークの多層化・データの特徴を段階的に深く学習・モデルの表現⼒の向上可微分で非線形な活性化関数の導入・逆伝播法による最適化が可能に(後述)𝑧!(!)𝑧$(!)𝑧%(!)𝑧!($)・各層の出⼒に⾮線形関数をかますことで⼊出⼒の⼤⼩関係の⼊れ替えが可能に
パーセプトロンの限界の克服:⾮線形問題への対応31x1xi1…xn-1xn…Sigmoid (・)Sigmoid (・)ネットワークの多層化・データの特徴を段階的に深く学習・モデルの表現⼒の向上可微分で非線形な活性化関数の導入𝑧!(!)𝑧$(!)𝑧%(!)𝑧!($)・各層の出⼒に⾮線形関数をかますことで⼊出⼒の⼤⼩関係の⼊れ替えが可能に・逆伝播法による最適化が可能に(後述)線形関数を単純に組み合わせても線形しか表現できない
パーセプトロンの限界の克服:⾮線形問題への対応32x1xi1…xn-1xn…z×w10×w11×w1i×w1nstep(・)リマインダ・𝑥 > 0 ならば 1・𝑥 ≤ 0 ならば 0step 𝑥 =微分不可能な活性化関数𝑓 𝒙 = step(𝒘!𝒙)ネットワークを関数で表現すると
パーセプトロンの限界の克服:⾮線形問題への対応33x1xi1…xn-1xn…ネットワークの多層化・データの特徴を段階的に深く学習・モデルの表現⼒の向上可微分で非線形な活性化関数の導入𝑧!(!)𝑧$(!)𝑧%(!)𝑧!($)Sigmoid (・)Sigmoid (・)・逆伝播法による最適化が可能に(後述)・各層の出⼒に⾮線形関数をかますことで⼊出⼒の⼤⼩関係の⼊れ替えが可能に
可微分で⾮線形な活性化関数(1/2)34𝑓 𝑥 =11 + exp(−𝑥)シグモイド関数𝑓 𝑥 = max(0, 𝑥)ReLU(ランプ関数)・値域が[-1, 1]となるため確率と 対応させて使う・その昔は中間層で頻繁に利⽤・深層学習の中間層で頻繁に利⽤・シンプルなので計算が速い・0以上の範囲では微分可能
可微分で⾮線形な活性化関数(2/2)35𝑓 𝑢@=𝑒A!∑'(!B 𝑒A"ソフトマックス関数例・K種類あるクラスのうち,出⼒がクラスkに属する確率・深層学習で分類問題を⾏うときの出⼒層で利⽤・⼊⼒がマイナスでも常に正の値に返せる𝒖% = (10,2,1)のとき 𝑓'()*+,-𝑢#= 0.9995𝑓'()*+,-𝑢$= 0.0003𝑓'()*+,-𝑢.= 0.0001・指数関数を噛ましているので,⼊⼒が⼤きい場合と⼩さい場合の区別がはっきりする活性化関数は出⼒の調整に使う
可微分でない or ⾮線形な活性化関数36𝑓 𝑥 = C1 𝑖𝑓 𝑥 > 00 𝑖𝑓 𝑥 ≤ 0ステップ関数・かつてパーセプトロンの出⼒層で使⽤された・⾮線形だが微分不可能𝑓 𝑥 = 𝑥恒等関数・ど線形・回帰問題の出⼒層で利⽤
多層パーセプトロン(Multilayer Perceptron: MLP)による「推論」(1/6)37x1xi1…xn…1層⽬(隠れ層)2層⽬(出⼒層)⼊⼒層1層⽬の活性化関数 𝜙"𝑥(例: 𝜙"𝑥 = ReLU(𝑥))2層⽬の活性化関数 𝜙#𝑥(例: 𝜙#𝑥 = ""$%&'()*))定義したネットワーク & 活性化関数に従い,⼊⼒層から出⼒層まで順に値を波及させるy1𝑧!(!)𝑧$(!)𝑧%(!)例
多層パーセプトロン(Multilayer Perceptron: MLP)による「推論」(2/6)38x1xi1…xn…z211層⽬(隠れ層)2層⽬(出⼒層)⼊⼒層×w10(1)×w11(1)×w1n(1)×w1i(1)定義したネットワーク & 活性化関数に従い,⼊⼒層から出⼒層まで順に値を波及させる𝑧!(!)𝑧$(!)𝑧%(!)𝑧!(!)= 𝜙(!) ,$%&'𝑤!$! 𝑥$= 𝜙(!)(𝑢!(!))
多層パーセプトロン(Multilayer Perceptron: MLP)による「推論」(3/6)39x1xi1…xn…𝑧!(!)1層⽬(隠れ層)2層⽬(出⼒層)⼊⼒層×w20(1)×w21(1)×w2n(1)×w2i(1)𝑧((!)= 𝜙(!) ,$%&'𝑤($! 𝑥$= 𝜙(!)(𝑢((!))y1𝑧$(!)𝑧%(!)定義したネットワーク & 活性化関数に従い,⼊⼒層から出⼒層まで順に値を波及させる
多層パーセプトロン(Multilayer Perceptron: MLP)による「推論」(4/6)40x1xi1…xn…1層⽬(隠れ層)2層⽬(出⼒層)⼊⼒層×w30(1)×w31(1)×w3n(1)×w3i(1)定義したネットワーク & 活性化関数に従い,⼊⼒層から出⼒層まで順に値を波及させるy1𝑧!(!)𝑧$(!)𝑧%(!)𝑧)(!)= 𝜙(!) ,$%&'𝑤)$! 𝑥$= 𝜙(!)(𝑢)(!))
多層パーセプトロン(Multilayer Perceptron: MLP)による「推論」(5/6)41x1xi1…xn…1層⽬(隠れ層)2層⽬(出⼒層)⼊⼒層×w11(2)×w12(2)×w13(2)𝑦!= 𝜙(()(,$%!)𝑤!$(()𝑧$(!))定義したネットワーク & 活性化関数に従い,⼊⼒層から出⼒層まで順に値を波及させるy1𝑧!(!)𝑧$(!)𝑧%(!)
多層パーセプトロン(Multilayer Perceptron: MLP)による「推論」(6/6)42定義したネットワーク & 活性化関数に従い,⼊⼒層から出⼒層まで順に値を波及させるx1xi1…xn…y12層⽬(出⼒層)⼊⼒層𝑦!=11 + exp(− ∑$%!) 𝑤!$(()𝑧$(!))分類問題なら出⼒層が最⼤となるクラスを選択2クラス分類の場合𝑧!(!)𝑧$(!)𝑧%(!)
MLPを別の視点から⾒る(1/2)43x1xi1…xn…z211層⽬(隠れ層)2層⽬(出⼒層)⼊⼒層×w10(1)×w11(1)×w1n(1)×w1i(1)𝑧!(!)𝑧$(!)𝑧%(!)𝑧!(!) = 𝜙(!) ,$%&'𝑤!$! 𝑥$=11 + exp(− ∑$%&' 𝑤!$! 𝑥$)活性化関数にシグモイド関数あるノードでの⼊出⼒処理はロジスティック回帰どこかで⾒たことある形!?画像出典: https://cvml-expertguide.net/2021/09/28/logistic-regression/
MLPを別の視点から⾒る(2/2)44出⼒層中間層(隠れ層)⼊⼒層… …… ……… ……………… ……… ……(ざっくり言うと)ニューラルネットワークはロジスティック回帰モデルのつなぎ合わせロジスティック回帰モデルロジスティック回帰モデルロジスティック回帰モデルロジスティック回帰モデル
隠れ層(中間層)の役割45出⼒層中間層(隠れ層)⼊⼒層… …… ……… ……………… ……… ……推論に有用な表現を入力データから自動抽出時間・空間計算量がUPするが中間層が⼤きいほど表現⼒はUP
中間層の役割の例146出⼒層⼊⼒層… …… ………………… ……メジャーで成功する?打率本塁打盗塁数得点中間層(隠れ層)
中間層の役割の例147… …… ………………… ……打率本塁打盗塁数得点パワー系要素スピード系要素技術系要素攻撃貢献度守備貢献度精神貢献度⼊⼒を推論に有⽤な特徴量に変換していくメジャーで成功する?
中間層の役割の例2:ネオコグニトロン(CNNの初期モデル)48画像出典: https://dbnst.nii.ac.jp/pro/detail/498⼈間が苦労して特徴量抽出を⾏う必要がない
多層パーセプトロンによる「学習」(1/3)𝐿 𝐷, W = 0&'!(𝑔(𝑦&, 𝑓(𝒙&))訓練データ 𝐷 = (𝒙), 𝑦), …, (𝒙*, 𝑦*)}について損失関数が最⼩となるパラメータWを⾒つける.ニューラルネットワーク f(x)の全パラメータ=120&'!(𝑦&− 𝑓 𝒙&"回帰問題の損失関数誤差の⼆乗49
多層パーセプトロンによる「学習」(2/3)50訓練データ 𝐷 = (𝒙), 𝑦), …, (𝒙*, 𝑦*)}について損失関数が最⼩となるパラメータWを⾒つける.ニューラルネットワーク f(x)の全パラメータ= 5/0#1520#3{−𝑝204*log 𝑓2𝒙5}𝐿 𝐷, W = 0&'!(𝑔(𝑦&, 𝑓(𝒙&))分類問題の損失関数クロスエントロピー(複数の確率分布の近さを測る指標)出⼒層でk番⽬のクラスに対応する出⼒参考: https://zeema.hatenablog.com/entry/2017/11/09/223026
多層パーセプトロンによる「学習」(3/3)51訓練データ 𝐷 = (𝒙), 𝑦), …, (𝒙*, 𝑦*)}について損失関数が最⼩となるパラメータWを⾒つける.損失関数は微分最⼩化がお約束ニューラルネットワーク f(x)の全パラメータ𝐿 𝐷, W = 1$(!&1@(!B{−𝑝@(N"log 𝑓@ 𝒙' }分類問題の損失関数𝐿 𝐷, W =120&'!(𝑦&− 𝑓 𝒙&"回帰問題の損失関数
損失関数を微分最⼩化するとは?52x1xi1…xk…L-1層⽬(隠れ層)⼊⼒層𝑧!(!)𝑧$(!)𝑧&(!)𝑧'(!)… …𝑧!(()!)𝑧$(()!)𝑧&(()!)𝑧'(()!)… …𝑧!(()𝑧&(()𝑧*(()… ………………………1層⽬(隠れ層)L層⽬(出⼒層)
損失関数を微分最⼩化するとは?53x1xi1…xk…L-1層⽬(隠れ層)⼊⼒層𝑧!(!)𝑧$(!)𝑧&(!)𝑧'(!)… …𝑧!(()!)𝑧$(()!)𝑧&(()!)𝑧'(()!)… …𝑧!(()𝑧&(()𝑧*(()… ………………………1層⽬(隠れ層)L層⽬(出⼒層)= 𝑓(𝒙; 𝑤!!! , … , 𝑤+!! , … , 𝑤!'(,), … , 𝑤+'(,)))𝑓 𝒙1層⽬の1番⽬のノードにつながるパスの重みL層⽬のn番⽬のノードにつながるパスの重み
損失関数を微分最⼩化するとは?54x1xi1…xk…L-1層⽬(隠れ層)⼊⼒層𝑧!(!)𝑧$(!)𝑧&(!)𝑧'(!)… …𝑧!(()!)𝑧$(()!)𝑧&(()!)𝑧'(()!)… …𝑧!(()𝑧&(()𝑧*(()… ………………………1層⽬(隠れ層)L層⽬(出⼒層)= 𝑓(𝒙; 𝑤!!! , … , 𝑤+!! , … , 𝑤!'(,), … , 𝑤+'(,)))𝑓 𝒙訓練データを⼊⼒した 𝐿 𝐷, W を各𝑤#$(&)で微分し最⼩化すればよいパラメータ最適化複雑怪奇な関数 L をどうやって微分するのか?
誤差逆伝播法(Backpropagation)55● ニューラルネットワークの効率的な最適化方法● 出力層から層を遡って後向きに微分(勾配)計算推論時(⼊⼒層から出⼒層へ)(順伝播の結果を出⼒層から⼊⼒層へ波及させて再帰的に最適化)逆伝播法(計算結果を波及させ最適化)
回帰問題で考える誤差逆伝播法56xkxK…L-1層⽬(隠れ層)⼊⼒層𝑧!(!)𝑧+(!)𝑧,!(!)……𝑧!(()!)𝑧+(()!)𝑧,"#!(()!)…𝑧&(()………………1層⽬(隠れ層)L層⽬(出⼒層)損失関数…x1…最⼩⼆乗誤差𝐿 =127,-".𝑦,− 𝑧,/#
誤差逆伝播法:「出⼒層」の重みの勾配(1/5)57L-1層⽬(隠れ層)𝑧!(()!)𝑧+(()!)𝑧,"#!(()!)…𝑧&(()………………L層⽬(出⼒層)…𝜕𝐿𝜕𝑤!"($)=𝜕𝐿𝜕𝑧!($)𝜕𝑧!($)𝜕𝑢!($)𝜕𝑢!($)𝜕𝑤!"($)𝑤$-(,)微分の連鎖率最適化の⽬標𝑧5(7) = 𝜙 7 590#1./0𝑤597 𝑧97:#= 𝜙 7 (𝑢5(7))⽂字が多いので 𝑢!(/)と置くリマインダ
誤差逆伝播法:「出⼒層」の重みの勾配(2/5)58L-1層⽬(隠れ層)𝑧!(()!)𝑧+(()!)𝑧,"#!(()!)…𝑧&(()………………L層⽬(出⼒層)…𝜕𝐿𝜕𝑤!"($)=𝜕𝐿𝜕𝑧!($)𝜕𝑧!($)𝜕𝑢!($)𝜕𝑢!($)𝜕𝑤!"($)𝑤$-(,)最適化の⽬標𝑢5(7) = 590#1./0𝑤597 𝑧97:#𝑧"($&')=リマインダ
誤差逆伝播法:「出⼒層」の重みの勾配(3/5)59L-1層⽬(隠れ層)𝑧!(()!)𝑧+(()!)𝑧,"#!(()!)…𝑧&(()………………L層⽬(出⼒層)…𝜕𝐿𝜕𝑤!"($)=𝜕𝐿𝜕𝑧!($)𝜕𝑧!($)𝜕𝑢!($)𝜕𝑢!($)𝜕𝑤!"($)𝑤$-(,)最適化の⽬標𝜙′ $ (𝑢!($))リマインダ𝑧'(R) = 𝜙 R (𝑢'(R))=
誤差逆伝播法:「出⼒層」の重みの勾配(4/5)60L-1層⽬(隠れ層)𝑧!(()!)𝑧+(()!)𝑧,"#!(()!)…𝑧&(()………………L層⽬(出⼒層)…𝜕𝐿𝜕𝑤!"($)=𝜕𝐿𝜕𝑧!($)𝜕𝑧!($)𝜕𝑢!($)𝜕𝑢!($)𝜕𝑤!"($)𝑤$-(,)最適化の⽬標𝜕12∑20#3 𝑦2− 𝑧27$𝜕𝑧5(7)=リマインダ𝐿 =12520#3𝑦2− 𝑧27$𝑧'(R) − 𝑦'=
誤差逆伝播法:「出⼒層」の重みの勾配(5/5)61L-1層⽬(隠れ層)𝑧!(()!)𝑧+(()!)𝑧,"#!(()!)…𝑧&(()………………L層⽬(出⼒層)…𝜕𝐿𝜕𝑤'S(R)=𝜕𝐿𝜕𝑧'(R)𝜕𝑧'(R)𝜕𝑢'(R)𝜕𝑢'(R)𝜕𝑤'S(R)𝑤$-(,)最適化の⽬標= 𝑧57 − 𝑦5𝜙; 7 𝑢57 𝑧9(7:#)出⼒層と正解との誤差出⼒層への⼊⼒活性化関数の微分
誤差逆伝播法:「中間層」の重みの勾配(1/2)62t-1層⽬𝑧!(-)!)𝑧+(-)!)𝑧,$#!(-)!)…………………………𝑤$-(1)𝑧!(-)𝑧&(-)𝑧,$(-)t層⽬= (52𝜕𝐿𝜕𝑧2*<#𝜕𝑧2*<#𝜕𝑢2*<#𝑤52(*<#))𝜙; * 𝑢5* 𝑧9(*)……𝑧!(-.!)𝑧&(-.!)𝑧,$%!(-.!)t+1層⽬𝜕𝐿𝜕𝑤59(*)=𝜕𝐿𝜕𝑧5(*)𝜕𝑧5(*)𝜕𝑢5(*)𝜕𝑢5(*)𝜕𝑤59(*)ターゲットノードへの⼊⼒活性化関数の微分
誤差逆伝播法:「中間層」の重みの勾配(2/2)63t-1層⽬𝑧!(-)!)𝑧+(-)!)𝑧,$#!(-)!)…………………………𝑤$-(1)𝑧!(-)𝑧&(-)𝑧,$(-)t層⽬= (52𝜕𝐿𝜕𝑧2*<#𝜕𝑧2*<#𝜕𝑢2*<#𝑤52(*<#))𝜙; * 𝑢5* 𝑧9(*)……𝑧!(-.!)𝑧&(-.!)𝑧,$%!(-.!)t+1層⽬ターゲットノードからの出⼒に関連する情報(t+1層⽬で計算済み!!)𝜕𝐿𝜕𝑤59(*)=𝜕𝐿𝜕𝑧5(*)𝜕𝑧5(*)𝜕𝑢5(*)𝜕𝑢5(*)𝜕𝑤59(*)ある層の勾配計算に前の層の結果を使う
誤差逆伝播法のまとめ64出力層から層を順に遡り、再帰的に勾配を計算出⼒層での誤差を⼊⼒層に向けて波及させる勾配が求まれば、勾配法で損失関数の最⼩化ができる勾配計算のために出⼒層での誤差を計算パラメータ最適化(学習)のために
Neural Network PlaygroundでMLPを体験65https://playground.tensorflow.org/
Hands-on タイム以下のURLにアクセスして,多層パーセプトロンを体験してみましょうhttps://dmml2023.hontolab.org/66
3 計算機で関数の最小値を求める方法勾配法67
多層パーセプトロン(MLP)による「学習」(再掲)68訓練データ 𝐷 = (𝒙), 𝑦), …, (𝒙*, 𝑦*)}について損失関数が最⼩となるパラメータWを⾒つける.損失関数は微分最⼩化がお約束ニューラルネットワーク f(x)の全パラメータ𝐿 𝐷, W = 1$(!&1@(!B{−𝑝@(N"log 𝑓@ 𝒙' }分類問題の損失関数𝐿 𝐷, W =120&'!(𝑦&− 𝑓 𝒙&"回帰問題の損失関数複雑怪奇な損失関数をどうやって計算機で微分・最小化するのか?
⼈間による関数の微分・最⼩化69𝑓(𝑥) = 𝑥0 − 2𝑥/ + 1f(x)x例𝑑𝑓𝑑𝑥= 4𝑥) − 6𝑥( = 2𝑥((2𝑥 − 3)以下の関数の最⼩値を求めよ.解2324= 0となるのは 𝑥 = 0, )(グラフ形状から 𝑥 = )(における極値は関数の最⼩値となる.よって最⼩値は 𝑓 )(= − !!!5.計算機は解析的に最⼩値を⾒つけられない…
最急降下法70x𝒙(')𝑑𝑓𝑑𝒙(𝒙('))勾配(微分係数)を使って,関数の最小値を数値計算的に求める最も単純なアルゴリズム𝑓(𝒙)を最⼩化する 𝒙 を求める⽬標1. ランダムにxの初期値(𝒙(&))を設定⼿順(αは⼩さな正の定数)2. 収束するまで以下を繰り返す2a. 𝒙(67!) ← 𝒙(6) − 𝛼 232𝒙𝒙(6)
最急降下法71x𝒙(')−𝛼 )*)𝒙(𝒙('))𝒙(,)勾配(微分係数)を使って,関数の最小値を数値計算的に求める最も単純なアルゴリズム𝑓(𝒙)を最⼩化する 𝒙 を求める⽬標1. ランダムにxの初期値(𝒙(&))を設定⼿順(αは⼩さな正の定数)2. 収束するまで以下を繰り返す2a. 𝒙(67!) ← 𝒙(6) − 𝛼 232𝒙𝒙(6)
最急降下法72勾配(微分係数)を使って,関数の最小値を数値計算的に求める最も単純なアルゴリズムx𝒙(-)𝒙(,)−𝛼 )*)𝒙(𝒙(,))𝑓(𝒙)を最⼩化する 𝒙 を求める⽬標1. ランダムにxの初期値(𝒙(&))を設定⼿順(αは⼩さな正の定数)2. 収束するまで以下を繰り返す2a. 𝒙(67!) ← 𝒙(6) − 𝛼 232𝒙𝒙(6)
最急降下法73x𝒙(./01)勾配(微分係数)を使って,関数の最小値を数値計算的に求める最も単純なアルゴリズム𝑓(𝒙)を最⼩化する 𝒙 を求める⽬標1. ランダムにxの初期値(𝒙(&))を設定⼿順(αは⼩さな正の定数)2. 収束するまで以下を繰り返す2a. 𝒙(67!) ← 𝒙(6) − 𝛼 232𝒙𝒙(6)
最急降下法の問題点74計算に時間がかかる 局所解に陥る可能性あり画像出典:https://ruthwik.github.io/machinelearning/2018-01-15-gradient-descent/初期値や学習率の設定によっては局所解周辺から抜け出せないことも⼤規模データを対象とした学習では勾配の計算量が膨⼤になる𝐿 = ,$%!!&&&&&𝑔(𝑦$, 𝑓(𝒙$; 𝑾))損失関数𝑑𝐿𝑑𝑾=𝑑𝑑𝑾,$%!!&&&&&𝑔(𝑦$, 𝑓(𝒙$; 𝑾))損失関数の勾配Wを1回更新するのにこれを10万回計算…
損失関数のi番⽬のデータに関する部分確率的勾配降下法(Stochastic Gradient Descent: SGD)(1/2)75ランダムに選んだ1つのデータで勾配を計算してパラメータを更新し、それをデータの数だけ繰り返すたことにし最急降下法𝑾(=<#) ← 𝑾(=) − 𝛼𝑑𝑑𝑾𝑔(𝑦5, 𝑓(𝒙5; 𝑾(=)))𝑾(=<#) ← 𝑾(=) − 𝛼𝑑𝑑𝑾1'(!&𝑔(𝑦', 𝑓(𝒙'; 𝑾(])))確率的勾配降下法For each (xi, yi) in 全データ:損失関数
確率的勾配降下法(Stochastic Gradient Descent: SGD)(2/2)76𝐿(𝑾, 𝐷)を最⼩化する 𝑾 を求める⽬標1. ランダムにWの初期値(𝑾(&))を設定⼿順(αは⼩さな正の定数)2. 収束するまで以下を繰り返すWランダムに選んだ1つのデータで勾配を近似計算してパラメータの更新する勾配法2a. Dをランダムにシャッフル2b. Dの先頭から順にデータxを取り𝑾(0$") ← 𝑾(0) − 𝛼𝑑𝑑𝑾𝑔(𝑦, 𝑓(𝒙; 𝑾(0)))𝑾(./01)最急降下法の局所解問題をある程度克服
様々な確率的勾配法の振る舞い77画像出典: http://hduongtrong.github.io/2015/11/23/coordinate-descent/
様々な確率的勾配法の振る舞い78画像出典: http://hduongtrong.github.io/2015/11/23/coordinate-descent/
レポート課題79課題内容 https://dmml2023.hontolab.org/に記載提出先 学務情報システム締め切り 2023年7⽉7⽇(⾦)提出形式 PDFファイル(必ずWordファイルをPDF化すること)
数学記号(集合)80集合 (太字でない⼤⽂字アルファベット)𝑆集合の要素 (太字でない⼩⽂字アルファベット)𝑠𝑆 = 𝑠', 𝑠(, … , 𝑠)= 𝑥 𝑥 ∈ 𝑅 ∧ 𝑓 𝑥 > 0}外延表現:要素を並べる書き⽅内包表現:要素の条件を指定する書き⽅(xが実数でかつ f (x)がゼロより⼤きくなるようなxの集合)集合の書き⽅集合の⼤きさ(要素数) |𝑆|
例81𝑁 = 0, 1, 2, …𝑍 = … , −2, −1, 0, 1, 2, …𝑂 = 2n + 1 | n ∈ 𝑁(⾃然数)(整数)(奇数)𝐹 = りんご, みかん, なし|𝐹| = 3
数学記号(ベクトル)82𝒙ベクトル (太字の⼩⽂字)断りがない限り,縦ベクトル𝒙 "= 𝑥!" + ⋯ + 𝑥_"ベクトルの要素の書き⽅実数を成分とするm次元ベクトル𝒙 =𝑥!⋮𝑥_∈ 𝑅_= 𝑥!, … , 𝑥_%ベクトルの⼤きさ𝒙 と書くことも𝒙 K 𝒚 = 𝒙%𝒚 = ∑ 𝑥@𝑦@ベクトルの内積𝒙, 𝒚 と書くことも
数学記号(⾏列)83⾏列 (太字の⼤⽂字)𝑿 =𝑥''⋯ 𝑥)'⋮𝑥*'⋱⋯⋮𝑥*)∈ 𝑅*×)𝑿の各列(縦ベクトル)を使った書き⽅実数を成分とするm⾏ n 列の⾏列= 𝑥!" *×)こんな書き⽅も= 𝒙', … , 𝒙)𝑿⾏列の要素の書き⽅
機械学習でよく⾒かける数学的処理(1/3)841'(!$𝑥'= 𝑥!+ 𝑥"+ ⋯ + 𝑥$M'(!$𝑥'= 𝑥!𝑥"… 𝑥$𝜕𝜕𝑥,𝑓(𝒙)数列の和数列の積偏微分𝑓 𝒙 = 𝑤!𝑥!+ 𝑤(𝑥(+ ⋯ + 𝑤'𝑥'例:𝜕𝜕𝑥'𝑓 𝒙 = 𝑤'
機械学習でよく⾒かける数学的処理 (2/3)85argmax"∈$𝑓(𝑥)argmin%∈$𝑓(𝑥)max%∈$𝑓(𝑥)min%∈$𝑓(𝑥)関数を最⼤化関数を最⼩化実数の範囲でパラメータxを動かし関数f(x)を最⼤化・最⼩化関数を最⼤化するパラメータ関数を最⼩化するパラメータ関数を最適化する実数を⾒つける
機械学習でよく⾒かける数学的処理 (3/3)86sign 𝑥 = 61: 𝑥 > 00: 𝑥 = 0−1: 𝑥 < 0符号関数値の符号に応じて・正なら1・負なら-1・ゼロなら0を返す関数と覚える画像出典: https://ja.wikipedia.org/wiki/符号関数(sgn 𝑥 と書くことも)
機械学習でよく出くわす瞬時に理解すべき数式87𝑨:# % = 𝑨𝑻 :#𝑨𝑩 % = 𝑩𝑻𝑨𝑻55𝑤5𝑥5= 𝒘𝑻𝒙Matrix Cookbook: http://www2.imm.dtu.dk/pubdb/edoc/imm3274.pdf𝜕𝜕𝒙𝒙 $ =𝜕𝜕𝒙𝒙𝑻𝒙 = 2𝒙𝜕𝜕𝒙𝑴𝒙 = 𝑴𝑻𝜕𝜕𝒙𝒘𝑻𝒙 = 𝒘𝜕𝜕𝒙𝒙 − 𝒂 $ = 2(𝒘 − 𝒂)𝜕𝜕𝒙𝑨𝒙 − 𝒃 $ = 2𝑨𝑻(𝑨𝒙 − 𝒃)𝑨 + 𝑩 % = 𝑨𝑻 + 𝑩𝑻
⾏列サイズの⾒積もり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)の⾏列ができあがると覚えておけばよい