(2) RNN のバックプロパゲーション アルゴリズムの詳細な導出

In  the article Understanding the Backpropagation Algorithmでは 、backpropagation アルゴリズムの一般的な考え方と利点が一般的に説明されています. この記事では、最も単純な RNN ネットワークを使用して backpropagation アルゴリズムを導出します.

計算図と計算式

簡単な導出のために、次のように最も代表的な RNN ネットワーク図を見てみましょう。

 上の図は計算グラフです。式導出の便宜上、式を書き出します。各ステップ t の計算プロセスは次のとおりです。

各ステップの損失関数L^{(t)}、全損失関数 L は次のとおりです。

各ステップで、x^{(t)} はベクトル形式の変数、h^{(t)} はベクトルa^{(t)} 形式の変数、 はベクトル形式の変数、 はベクトル形式の変数o^{(t)}\hat{y}^{(t)} はベクトル形式の変数、W は行列形式の変数、V は行列形式の変数、Uは行列形式の変数です (次に、各ステップで t、W、V、U、b、c は同じであることに注意してください);L^{(t)}は実数値の変数です。

各ステップでのL^{(t)}加算によって得られる最終的な L は、実数値の変数です。

その中で、パラメーター行列変数は W、V、U です。切片変数は b、c で​​す。

逆伝播アルゴリズムの導出

上記の基礎を基に、推論を開始できます. 導出の前に、関連する tanh 関数に慣れる必要があります.

タン関数:tanh(x)=\frac{e^{x}-e^{-x}}{e^{x}+e^{-x}}

tanh 関数の導関数: {tanh}'(x)=1-tanh^{2}(x)    (独立変数に関する導関数は   1 - 関数の 2 乗)

後ろから前に始めましょう:

1. 最初に、各ステップ t のL^{(t)}最終損失Lが導出されます式 10.13 に従って導出されます。

2. 次に、L を見つけて、各ステップ t のo^{(t)}勾配を見つけますこれはベクトルなので、o^{(t)}ベクトル内のすべての実数値変数に対する Lo_{i}^{(t)}の導関数が必要です. 連鎖律 に従って\frac{\partial L}{\partial o_{i}^{(t)}} = \frac{\partial L}{\partial L^{(t)}} \frac{\partial L^{(t )}}{\partial o_{i}^{(t)}}、最初の項目 \frac{\partial L}{\partial L^{(t)}} = 1と 2 番目の項目は、  \frac{\partial L^{(t)}}{\partial o_{i}^{(t)}} 式 10.11 に従って導出でき、交差エントロピー損失 関数が得られます。 softmax Calculatedにより、softmax 関数は、多分類問題に対する softmax 関数クロスエントロピー損失関数の導出を参照できます. 最終結果だけを見たい場合は、最後まで見てください. 最後に、次のように取得できます。 L^{(t)}  \frac{\partial L^{(t)}}{\partial o_{i}^{(t)}}=\hat{y}_{i}^{(t)}-\boldsymbol{1}_ {i=y^{(t)}}

 3. 次に、L を見つけてh^{(T)}勾配 を見つけます。ここで、T は最後のステップ t です 同様にo^{(t)}、 h^{(T)}これもベクトルであり、ベクトル内のすべての実数値変数に対する L の勾配が必要です。h^{(T)}の導関数は からのみ導出され、式 10.10 で比較的簡単に得られることが計算図からわかりますo^{(T)}。コードの式は面倒なので、手書きの式は次のようになり、h^{(T)}各次元の勾配が得られました。それらを統合して計算すると、正しい勾配ベクトルが得られますh^{(T)}。これは、その後の他の勾配の計算に便利です。

 最後のステップ T では、L ペアの勾配を計算するときに、 L から V への勾配と L から c への勾配h^{(T)}も同時に計算できます各ステップの V と c は同じですが、最後のステップ T の V を、最後のステップ T の c を として思い出すことができますV^{(T)}c^{(T)}

L から V への勾配は、式 10.10 から推定できます。これは少し曲がっています。見てみましょう。

L から c への勾配は、式 10.10 から推定できます。

4. L ペアの勾配を計算したら、 L から U への勾配、L から W への勾配、L から b への勾配を h^{(T)}計算できます .各ステップの U、W、b は同じですが、最後のステップ T の U、W、および b は、ですう^{(T)}わ^{(T)}b^{(T)}

式 10.8 と式 10.9、および tanh 関数の導関数から、L から U への勾配を次のように推定できます。

L から W への勾配の計算は、L から U への勾配の計算とまったく同じですが、 にx^{(t)}変更するh^{(t-1)} 。

L から b への勾配の計算は、基本的に L から U への勾配の計算と同じですが、次のように最後の項目が欠落しています。

 5. 最後のステップ T で変数に対する L の勾配を計算した後、先に進み、中間の各ステップの変数に対する L の勾配を計算する必要があります。中間の各ステップの計算プロセスは同じであるため、t を使用して中間の各ステップを表します。

最初に、各ステップ t でL 個のペア  h^{(t)} の勾配を計算できます 

ここでのグラデーションはh^{(t)}2 つの部分で構成されています。一方の部分は からh^{(t+1)} 、もう一方の部分は から来ていますo^{(t)}

6.  L ペア  h^{(t)} の勾配を計算したら、L ペアの勾配を計算できますV^{(t)}c^{(t)}U^{(t)}W^{(t)}b^{(t)} 最後のステップ T を求めるときとまったく同じです。

7. RNN では、V^{(t)}c^{(t)}U^{(t)}W^{(t)}およびb^{(t)} 各ステップ t は同じベクトル/行列であるため、最終的な勾配は、各ステップで得られた勾配を加算することによって取得できます. たとえば、L から V への勾配は、各ステップの合計勾配の \sum_{t}^{} (V^{(t)})、他のパラメーターは同じです。

これで RNN のバックプロパゲーションの導出は終わりです. ようこそコメント欄にメッセージを残してください~

おすすめ

転載: blog.csdn.net/qq_32103261/article/details/120493317