投稿

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-...