ニューラルネットワークを理解する #10 学習を早めるテクニック「誤差逆伝播法」②

 前回は連鎖律によって逆伝搬が成り立つことを見ていきました。

今回はもっと踏み込んでみていきましょう!


足し算の時の逆伝播

足し算の時はすごく簡単です。
式にすると以下の通りの場合です。
z = x + y

xとyについて微分するとそれぞれ1となります。

∂z / ∂x = 1
∂z / ∂y = 1

計算グラフにすると


出力方面から来た微分の結果をそのまま入力に返しているだけですね。

掛け算の時の逆伝播

掛け算の時のもみてみましょう。
式にすると以下の場合です。
z = x * y

xとyについてそれぞれ微分すると

∂z / ∂x = y
∂z / ∂y = x

それぞれひっくり返っていることがわかりますね。

計算グラフにすると

出力側から来た微分の結果にそれぞれ逆の入力の値をかけていることがわかります。

実際のグラフで確認する

抽象的な話だったので実際の値を使ってみてみましょう!
前回の例で出した計算グラフを逆伝播してみよう。

結果は以下のような感じ。
簡単ですね。

例えば一番上の100の逆伝搬された結果の微分が2ですがこれは、1増えるごとに結果が2増えていくということを意味します。(2を掛け算してるからそれはそうですね)
とても簡単に部分を計算できますねー。

次回は実際に実装してみてどれくらい早くなるのかみてみましょう。

コメント