LSTM誤差逆伝播の数式とコードの関係を理解する

 いきなり本題ですが、LSTMの基本構造と数式は次のようになっています。

そして、この誤差逆伝播の式は微分の連鎖律から


「ds」は、(l,t)層であれば

こうです。

これこそが「LSTMの誤差逆伝播の式」です。

この式の導出の詳しくは、私の別のブログ、

ディープラーニングのお勉強体験記”17:LSTM数式導出”(リカレントニューラルネットワーク”RNN”を中心にバックプロパゲーション”BPTT”を数式を使って理解したい!)

に詳しく書きましたのでそちらを見てください。

さて、ここが肝心です、リカレントニューラルネットワークの逆伝播は2方向あります。それは

層方向({l+ 1}から)

時間方向({t+ 1}から)

です。

ということは、上の「LSTMの誤差逆伝播の式」は(l+ 1)と(t+ 1)の2つの部分から成り立っています。

こういうことですね。よーく式を見てください、添え字が(l+ 1)の部分と(t+ 1)の部分で出来ていることが分かりますね。

これがアルゴリズムを数式で表した時の関係です。

ただし、これにはちょっとした注意が必要です。というのは、コードを詳しく見ていくと数式とは、微妙なギャップがあるからです。

詳しくは

ディープラーニングのお勉強体験記”11:RNNコードと数式のギャップ”(リカレントニューラルネットワーク”RNN”を中心にバックプロパゲーション”BPTT”を数式を使って理解したい!)

を見て頂けますか?

誤差逆伝搬は、数式での構成は

こうですが、、、、、、

一方、コードでの構成は

こうなっています。

コードでは(l- 1)と(t- 1)を導くのがメインになっているんですね。これが理解を難しくしていると私は感じています、、、、


で、ここまで、分かったところで、LSTMの誤差逆伝搬のコードを見てみます。


これが、「LSTMの誤差逆伝搬」のコードです。
このコードは、「ゼロから作るdeeplearning2」

や「E資格エンジニア問題集 第2版」

に記載されているものです。

さて、数式とコードとの関係ですが、(数式が(l,t)層に対してであることに注意して)コードと比較すると(落ち着いて、ゆっくり式を確認すれば、コードと良く対応していることが分かってもらえると思うのですが、、、、、)

さらに、(l-1)層、(t-1)層にそれぞれ逆伝搬するため、それぞれWx、Whを掛け算して

となります。

ざっくり、これがLSTMの誤差逆伝搬の大筋です。(すみません、ちょっと端折りすぎかも、、、、)

詳細は

ディープラーニングのお勉強体験記”18:LSTMコードと数式”(リカレントニューラルネットワーク”RNN”を中心にバックプロパゲーション”BPTT”を数式を使って理解したい!)

を見て頂けますか?


以上です。



コメント