バックプロパゲーション
【DLのwの求め方】 複数の入力x[n]に対する出力y[n]と期待値t[n]との誤差(コスト)Cを最小にする重みwを求める ・DLは式がwについて線形y=wx+bでなく非線形y=φ(wx+b) →dC/dw=0が最小2乗法のようにwの連立一次方程式にならない →w=w−η dC/dwとwをCが小さくなる方向へ少しずつ変化させて収束するまで繰り返す ・中間層のdC/dwは出力の誤差(y−t)から加算乗算だけで計算できる(バックプロパゲーション) ・学習時間 = 推論時間 × 教師データ数(10k程度) × 繰り返し回数(0.1k程度) 例えば推論が1sでできるマシンで学習させると10日(1Ms)かかる |
本項ではDLの学習とはどんな計算をしているのかを見ていく。
以下、見やすいように与える入力と期待値を青字、求める重みを赤字で書く。
◇
まず、最小2乗法のwの求め方をおさらいすると
複数の入力x[n]に対する出力y[n]と期待値t[n]との誤差(コスト)Cを最小にする重みwを求める。
(注) 定数項bも含めて重みwとよぶことにする
そのためにはCを重みwで微分して=0とおいて
重みwについての連立一次方程式になるから、これを解けばよい。
◇◇
同様にしてDLのwを求めてみる。ただし計算方法に集中したいので最も簡単な2層×重み1個 で考える。
最小2乗法と同様に、コストCを最小にするwを求める。
Cの微分は教師データ(x[n]とt[n])ごとに微分した後に和をとればよいから
ここでφの微分はexpの微分なので
φ自身に戻るから
とwについて連立一次方程式どころか多重のexpの式になって解析的に解くのは複雑すぎる。
そこでwをCが小さくなる方向に少しずつ変化させて収束するまで繰り返す数値計算を使う。
(連立一次方程式でも多次元になると解析的に解くよりこの勾配降下法の方が楽らしい)
ここでηは適当に選ぶ小さい定数である。dC/dwは既に計算したとおりで、φの値はyとして計算済だから
このように出力層のdC/dwは誤差(y-t)から計算でき、さらに中間層のdC/dwは一つ前の層のdC/dwから計算できるので、バックプロパゲーションと呼ばれる。
最後に、計算手順をまとめると
手順1 与えられた入力xと適当な初期値wから式(1)で中間層と出力のyを求める 手順2 期待値tとyから式(2)で誤差(コスト)Cを求める 手順3 また期待値tとyから式(4)で中間層と出力のdC/dwを求め、式(3)でwを更新する 手順4 更新したwで手順1から繰り返し、Cが十分小さい値に収束したらおしまい |
◇◇◇
重みwが求まれば、これを使って未知の入力xに対する答えyが計算できる。(推論という)
推論に対して学習にどれぐらい時間がかかるかというと
・教師データ(入力xと期待値tのペア)が10k程度
・繰り返し回数が0.1k程度
らしいので、
学習時間 = 推論時間×教師データ数×繰り返し回数 = 推論時間×1M倍
例えば推論が1sでできるマシンで学習させると10日(1Ms)かかることになる。
実際には、Cはすんなり収束するとは限らないらしく、そもそも教師データを用意する手間もかかるので、もっと大変なようである。