More Related Content
Similar to 深層学習(講談社)のまとめ 第4章 (12)
深層学習(講談社)のまとめ 第4章
- 2. 4章概要
勾配の計算は微分の連鎖規則を繰り返し適用する必要があり、複雑
勾配計算に頻出する𝜕𝐸 𝑛 𝜕𝑢𝑗
(∙)
� を𝛿(デルタ)と置くと、目的の勾配は
𝜕𝐸 𝑛
𝜕𝑤𝑗𝑗
(𝑙)
= 𝛿𝑗
(𝑙)
𝑧𝑖
(𝑙−1)
と計算され、このデルタは上位の層のデルタが与えられれば
𝛿𝑗
(𝑙)
= � 𝛿 𝑘
(𝑙+1)
𝑤 𝑘𝑘
(𝑙+1)
𝑓𝑓 𝑢𝑗
(𝑙)
𝑘
と求められる。つまり、出力層から辿っていけば任意の層のデルタが求められる。
このように、デルタの計算過程が順伝播と逆の向きで進むことから逆伝播法と言う。
順伝播と逆伝播によって、勾配降下法のアルゴリズムは完成した。
しかし、多層化すると勾配が消失(発散)する勾配消失問題という問題が
発生したのだった・・・
誤差逆伝播法(バックプロパゲーション)の導入
- 6. これまでの計算を任意の多層ネットワークへと一般化していく。具体的には
中間層の処理を一般化していく。第 𝑙 層の重みについての勾配を見ると
𝜕𝐸 𝑛
𝜕𝑤𝑗𝑗
(𝑙)
=
𝜕𝐸 𝑛
𝜕𝑢𝑗
(𝑙)
𝜕𝑢𝑗
(𝑙)
𝜕𝑤𝑗𝑗
(𝑙)
= �
𝜕𝐸 𝑛
𝜕𝑢 𝑘
(𝑙+1)
𝜕𝑢 𝑘
(𝑙+1)
𝜕𝑢𝑗
(𝑙)
𝑘
𝑧𝑖
(𝑙−1)
と求められる。ここで、𝜕𝐸 𝑛 𝜕𝑢𝑗
(∙)
� が頻出することから
𝛿𝑗
(𝑙)
≡
𝜕𝐸 𝑛
𝜕𝑢𝑗
(𝑙)
として𝛿(デルタ)と呼ぶことにする。また、デルタは
𝛿𝑗
(𝑙)
= � 𝛿 𝑘
(𝑙+1)
𝑤 𝑘𝑗
(𝑙+1)
𝑓𝑓 𝑢𝑗
(𝑙)
𝑘
と書き直すと上位の第 𝑙 + 1層のユニットのデルタが与えられれば第 𝑙 層のデルタ
が求められる。これを出力層までたどれば任意の層のデルタが求められる。
このとき、デルタが出力層から入力層の向きに伝播すること
から誤差逆伝播法という。
4. 誤差逆伝播法
・多層ネットワークへの一般化
- 7. 4. 誤差逆伝播法
これまでの順伝播、逆伝播の計算についてミニバッチの場合で、行列で示す。
順伝播の場合は
𝑼(𝑙) = 𝑾(𝑙) 𝒁(𝑙−1) + 𝒃(𝑙) 𝟏 𝑁
𝑇
𝒁(𝑙) = 𝑓(𝑙)(𝑼(𝑙))
を繰り返し適用し計算する。逆伝播の場合、𝑙 層の各ユニットのデルタを要素に
持ち各列はミニバッチnに対応する行列𝜟(𝑙)を導入する。
出力層では𝚫(𝑳) = 𝑫 − 𝒀としたのち、
𝜟(𝑙) = 𝑓(𝑙)′ 𝑼(𝒍) ⊙ 𝑾 𝑙+1 𝑇 𝜟(𝑙+1)
を繰り返し適用し計算する。求めたデルタから、バイアスと重みについての
誤差関数の勾配はそれぞれ以下のように計算される。
𝜕𝑾(𝑙) =
1
𝑁
𝜟(𝑙) 𝒁 𝑙−1 𝑇
𝜕𝒃(𝑙) =
1
𝑁
𝜟(𝑙) 𝟏 𝑁
𝑇
・順伝播、逆伝播の行列化
- 8. 4. 誤差逆伝播法
また、勾配の計算は正しく計算されているかを検証するために以下のように
誤差関数の勾配の差分近似を用いることができる。
𝜕𝐸 𝑛
𝜕𝑤𝑗𝑗
(𝑙)
=
𝐸 ⋯ , 𝑤𝑗𝑗
𝑙 + 𝜀, ⋯ − 𝐸(⋯ , 𝑤𝑗𝑗
(𝑙)
, ⋯ )
𝜀
εは、小さくすると近似の精度が良くなるが、小さすぎると誤差が大きくなる
ため、適切な ε を決定する必要がある。一般的には計算機イプシロン𝜀 𝑐を用い
て以下のように重みの大きさに合わせて決める。
𝜀 ≡ 𝜀 𝑐 𝑤𝑗𝑗
順伝播計算では、活性化関数を経由して計算されるため活性化関数が非線形で
あれば、その層の入出力関係も非線形を保ちます。例えば、活性化関数がロジ
スティック関数であれば0~1の範囲に制約されます。しかし、逆伝播計算では
全体が線形の計算であるため、各層の重みが大きいと伝播するたびに急速に大
きく、重みが小さければ伝播するたびに小さくなり0になってしまう。
このように、多層化すると重みの更新が上手くいかなくなる
問題を勾配消失問題という。
・勾配消失問題