順伝播の式から逆伝播の式の生成

順伝播の式から逆伝播の方程式の生成する方法について考えます。

例えばLSTMのメモリセルのデルタの計算では以下の式を作ります。 $$ \frac{ \partial E }{ \partial s_{t}^{j} } = \frac{ \partial E }{ \partial y_{t}^{j} } \cdot \frac{ \partial y_{t}^{j} }{ \partial s_{t}^{j} } + \frac{ \partial E }{ \partial uO_{t}^{j} } \cdot \frac{ \partial uO_{t}^{j} }{ \partial s_{t}^{j} } + \frac{ \partial E }{ \partial s_{t + 1}^{j} } \cdot \frac{ \partial s_{t + 1}^{j} }{ \partial s_{t}^{j} } + \frac{ \partial E }{ \partial uF_{t + 1}^{j} } \cdot \frac{ \partial uF_{t + 1}^{j} }{ \partial s_{t}^{j} } + \frac{ \partial E }{ \partial uI_{t + 1}^{j} } \cdot \frac{ \partial uI_{t + 1}^{j} }{ \partial s_{t}^{j} } \tag{1} $$ この式さえ作れれば、あとは微分と数式の簡約化で以下の式が計算できます。 $$ = \delta y_{t}^{j} \cdot σ(uO_{t}^{j}) \cdot σ'(s_{t}^{j}) + \delta s_{t + 1}^{j} \cdot σ(uF_{t + 1}^{j}) + \delta uO_{t}^{j} \cdot wO_{j} + \delta uF_{t + 1}^{j} \cdot wF_{j} + \delta uI_{t + 1}^{j} \cdot wI_{j} \tag{2} $$ 問題は式(1)を求める方法です。
実はこの部分がMkFnの中で最も複雑でややこしい部分です。

まず、変数の値を使用する代入文を列挙します。
この代入文の左辺の変数が順伝播先になります。
変数の値を使用している変数参照の添え字と、順伝播先の変数の添え字を比較します。

変数 \( x \) と 順伝播先 \( u \)の添え字の関係として以下のパターンがあります。
(1) 添え字が同じ
$$ u_i^j = f( x_i^j ) $$
(2) 1時刻前の添え字 ( RNN, LSTM )
$$ u_t^j = f( x_{t - 1}^j ) $$
(3) 総和の添え字
$$ u_{i} = \displaystyle \sum_{j }^{ X } f_i( x_{j} ) $$
(4) 順伝播先の添え字と総和の添え字の加算 (CNN)
$$ u_i^j = \sum_p^H \sum_q^H f( x_{i + p}^{j + q} ) \tag{4.1} $$

以下で(1)から(4)のそれぞれのパターンごとに逆伝播の式の作り方を説明します。


(1)の場合は以下のように、\( \delta u_i^j \)が\( \delta x_i^j \)に逆伝播します。 $$ \delta x_i^j = \frac{ \partial E }{ \partial x_i^j } = \frac{ \partial E }{ \partial u_i^j } \cdot \frac{ \partial u_i^j }{ \partial x_i^j } = \frac{ \partial E }{ \partial u_i^j } \cdot \frac{ f( x_i^j ) }{ \partial x_i^j } = \delta u_i^j \cdot \frac{ f( x_i^j ) }{ \partial x_i^j } $$
(2)の場合は以下のように、\( t \)に\( t+1 \)を代入して書き換えます。 $$ u_{t+1}^j = f( x_{t}^j ) $$ (1)と同様の計算で、\( \delta u_{t+1}^j \)が\( \delta x_t^j \)に逆伝播します。 $$ \delta x_t^j = \frac{ \partial E }{ \partial x_t^j } = \frac{ \partial E }{ \partial u_{t+1}^j } \cdot \frac{ \partial u_{t+1}^j }{ \partial x_t^j } = \frac{ \partial E }{ \partial u_{t+1}^j } \cdot \frac{ f( x_t^j ) }{ \partial x_t^j } = \delta u_{t+1}^j \cdot \frac{ f( x_t^j ) }{ \partial x_t^j } $$
(3)の場合、左辺の \( u_{i} \)の添え字 \( i \)の値が i=0,...,N-1 とすると、ある \( j \)について \( x_j \)の値はすべての \( u_{i} \) (i=0,...,N-1) に順伝播します。
以下のように、\( \delta u_i \) (i=0,...,N-1) が \( \delta x_j \) に逆伝播します。 $$ \delta x_j = \frac{ \partial E }{ \partial x_j } = \sum_i^N \frac{ \partial E }{ \partial u_i } \cdot \frac{ \partial u_i }{ \partial x_j } = \sum_i^N \frac{ \partial E }{ \partial u_i } \cdot \frac{ f_i( x_j ) }{ \partial x_j } = \sum_i^N \delta u_i \cdot \frac{ f_i( x_j ) }{ \partial x_j } $$
(4)の場合は以下のように少し複雑になります。

\( i \) の添え字の範囲は \( 0 \leqq i \leqq M-1 \) 、 \( j \) の添え字の範囲は \( 0 \leqq j \leqq N-1 \) とします。
また、\( p \) と \( q \) の添え字の範囲は \( 0 \leqq p \leqq H-1 \) 、 \( 0 \leqq q \leqq H-1 \) とします。

まず、\( x \) の添え字の \( i+p \) と \( j+q \) を \( i_0 \) と \( i_1 \)に置き換えます。
$$ i_0 = i+p \\ i_1 = j+q $$ \( i = i_0 - p \) で \( 0 \leqq i \leqq M-1 \) なので、\( 0 \leqq i_0 - p \leqq M-1 \) です。
変形して、 $$ i_0 - M + 1 \leqq p \leqq i_0 $$
同様に、 $$ i_1 - N + 1 \leqq q \leqq i_1 $$ \( 0 \leqq p \leqq H-1 \) と \( 0 \leqq q \leqq H-1 \) なので、上式の条件と合わせると、 $$ max(0, i_0 - M + 1) \leqq p \leqq min(H-1, i_0) \\ max(0, i_1 - N + 1) \leqq q \leqq min(H-1, i_1) $$
\( x_{i_0}^{i_1} \) は上記の\( p,q \)に対し、 \( u_{i_0-p}^{i_1-q} \) に順伝播するので、以下の式が成り立ちます。 $$ \delta x_{i_0}^{i_1} = \frac{ \partial E }{ \partial x_{i_0}^{i_1} } = \sum_{p=max(0, i_0 - M + 1)}^{min(H-1, i_0)} \sum_{q=max(0, i_1 - N + 1)}^{min(H-1, i_1)} \frac{ \partial E }{ \partial u_{i_0-p}^{i_1-q} } \cdot \frac{ \partial u_{i_0-p}^{i_1-q} }{ \partial x_{i_0}^{i_1} } \\ = \sum_{p=max(0, i_0 - M + 1)}^{min(H-1, i_0)} \sum_{q=max(0, i_1 - N + 1)}^{min(H-1, i_1)} \delta u_{i_0-p}^{i_1-q} \cdot \frac{ \partial u_{i_0-p}^{i_1-q} }{ \partial x_{i_0}^{i_1} } \tag{4.2} $$
一方式(4.1)の \( i \) と \( j \) に、\( i_0-p \) と \( i_1-q \) を代入すると以下の式になります。
\( \displaystyle \sum_p \sum_q \) は混乱しないように \( \displaystyle \sum_{p'} \sum_{q'} \) に変えています。 $$ u_{i_0-p}^{i_1-q} = \sum_{p'}^H \sum_{q'}^H f( x_{(i_0-p)+p'}^{(i_1-q)+q'} ) \tag{4.3} $$
式(4.3)により、 $$ \frac{ \partial u_{i_0-p}^{i_1-q} }{ \partial x_{i_0}^{i_1} } = \frac{ \partial f( x_{i_0}^{i_1} ) }{ \partial x_{i_0}^{i_1} } \tag{4.4} $$ 式(4.4)を式(4.2)の右端の項に代入して $$ \delta x_{i_0}^{i_1} = \sum_{p=max(0, i_0 - M + 1)}^{min(H-1, i_0)} \sum_{q=max(0, i_1 - N + 1)}^{min(H-1, i_1)} \delta u_{i_0-p}^{i_1-q} \cdot \frac{ \partial f( x_{i_0}^{i_1} ) }{ \partial x_{i_0}^{i_1} } $$ \( \)