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の誤差逆伝搬のコードを見てみます。
や「E資格エンジニア問題集 第2版」
に記載されているものです。
さて、数式とコードとの関係ですが、(数式が(l,t)層に対してであることに注意して)コードと比較すると(落ち着いて、ゆっくり式を確認すれば、コードと良く対応していることが分かってもらえると思うのですが、、、、、)
さらに、(l-1)層、(t-1)層にそれぞれ逆伝搬するため、それぞれWx、Whを掛け算してとなります。
ざっくり、これがLSTMの誤差逆伝搬の大筋です。(すみません、ちょっと端折りすぎかも、、、、)
詳細は
ディープラーニングのお勉強体験記”18:LSTMコードと数式”(リカレントニューラルネットワーク”RNN”を中心にバックプロパゲーション”BPTT”を数式を使って理解したい!)
を見て頂けますか?
以上です。












コメント
コメントを投稿