【MLP 深層学習】第4章 誤差逆伝播法

深層学習、通称青イルカ本の学習メモ。

深層学習 (機械学習プロフェッショナルシリーズ)

深層学習 (機械学習プロフェッショナルシリーズ)

知らなかったことや重要だと思ったところをQ&A形式にして自分が復習しやすい形にしてある。

連鎖律とは?

中間層のユニットjへの入力{u_j^{(2)}}は、このユニットとつながりを持つ出力層のユニットk(=1,2,3)に伝わるので、 これら3つのユニットそれぞれの総入力{u_{k}^{(3)}}に影響する。

{E_n}{u_{k}^{(3)}}の関数であるので、{E_n}{u_j^{(2)}}に関する微分は、
連鎖律を使うと、下記のように表せる。 {} $$ \frac{\partial E_{n}}{\partial u_{j}^{(2)}} = \sum_{k} \frac{\partial E_{n}}{\partial u_{k}^{(3)}} \frac{\partial u_{k}^{(3)}}{\partial u_{j}^{(2)}} $$

イメージ的には、{u_j^{(2)}} を微小に変化させると、 {u_{k}^{(3)}}がそれぞれ微小に変化する。
{u_{k}^{(3)}}がそれぞれ微笑に変化すると、{E_n}もそれらの和であるので、微小に変化するといった感じ。

順伝播と逆伝播は非線形計算?線形計算?

順伝播と逆伝播の計算はいずれも層ごとの行列計算として表現することができ、 形式的にはよく似ている。

ただし、両者の間には重要な違いがある。 順伝播は非線形計算であるのに対し、逆伝播は線形計算である点である。

順伝播計算では、各層への入力はユニットが持つ活性化関数を経由するので、活性化関数が非線形ならば、この層の入出力関係も非線形性をもつ。 この結果、例えばロジスティック関数の場合には各層の出力は常に[0,1]の範囲に制約され、値が過大に発散することはない。

一方、逆伝播計算は線形計算となる。 線形な計算を何回繰り返しても線形なので、出力層から入力層へ向かって、全体が線形なものになる。 その結果、各層の重みが多いと、勾配は各層を伝播するうちに急速に大きくなり、また逆に重みが小さいと、急速に消失し、0になってしまう。 いずれの場合にも、重みの更新がうまくできなくなり、ひいては学習が困難になってしまう。

yusuke-ujitoko.hatenablog.com