順伝播の式から逆伝播の式の生成
順伝播の式から逆伝播の方程式の生成する方法について考えます。
例えば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} }
$$
\( \)