バックプロパゲーション

[] [] []


DLwの求め方】

複数の入力x[n]に対する出力y[n]と期待値t[n]との誤差(コスト)Cを最小にする重みwを求める

DLは式がwについて線形y=wx+bでなく非線形y=φ(wx+b)

 →dC/dw=0が最小2乗法のようにwの連立一次方程式にならない

 →w=wη dC/dwwCが小さくなる方向へ少しずつ変化させて収束するまで繰り返す

・中間層のdC/dwは出力の誤差(yt)から加算乗算だけで計算できる(バックプロパゲーション)

・学習時間 = 推論時間 × 教師データ数(10k程度) × 繰り返し回数(0.1k程度)

 例えば推論が1sでできるマシンで学習させると10(1Ms)かかる

本項ではDLの学習とはどんな計算をしているのかを見ていく。

以下、見やすいように与える入力と期待値を青字求める重みを赤字で書く。

まず、最小2乗法のwの求め方をおさらいすると

複数の入力x[n]に対する出力y[n]と期待値t[n]との誤差(コスト)Cを最小にする重みwを求める。

() 定数項bも含めて重みwとよぶことにする

そのためにはCを重みwで微分して=0とおいて

重みwについての連立一次方程式になるから、これを解けばよい。

◇◇

同様にしてDLwを求めてみる。ただし計算方法に集中したいので最も簡単な2×重み1 で考える。

最小2乗法と同様に、コストCを最小にするwを求める。

Cの微分は教師データ(x[n]t[n])ごとに微分した後に和をとればよいから

ここでφの微分はexpの微分なので

φ自身に戻るから

wについて連立一次方程式どころか多重のexpの式になって解析的に解くのは複雑すぎる。

そこでwCが小さくなる方向に少しずつ変化させて収束するまで繰り返す数値計算を使う。

(連立一次方程式でも多次元になると解析的に解くよりこの勾配降下法の方が楽らしい)

ここでηは適当に選ぶ小さい定数である。dC/dwは既に計算したとおりで、φの値はyとして計算済だから

このように出力層のdC/dwは誤差(y-t)から計算でき、さらに中間層のdC/dwは一つ前の層のdC/dwから計算できるので、バックプロパゲーションと呼ばれる。

最後に、計算手順をまとめると

手順与えられた入力xと適当な初期値wから式(1)で中間層と出力のyを求める

手順期待値tyから式(2)で誤差(コスト)Cを求める

手順また期待値tyから式(4)で中間層と出力のdC/dwを求め、式(3)wを更新する

手順更新したwで手順1から繰り返し、Cが十分小さい値に収束したらおしまい

◇◇◇

重みwが求まれば、これを使って未知の入力xに対する答えyが計算できる。(推論という)

推論に対して学習にどれぐらい時間がかかるかというと

・教師データ(入力xと期待値tのペア)10k程度

・繰り返し回数が0.1k程度

らしいので、

 学習時間 = 推論時間×教師データ数×繰り返し回数 = 推論時間×1M

例えば推論が1sでできるマシンで学習させると10(1Ms)かかることになる。

実際には、Cはすんなり収束するとは限らないらしく、そもそも教師データを用意する手間もかかるので、もっと大変なようである。


[] [] []