LSTMの逆伝播の式の導出

以下はLSTM(Long short-term memory)のメモリの値(s)のデルタ \( \delta s = \frac{ \partial E }{ \partial s } \) を求める場合の例です。\( E \) は損失関数です。

sの値を使っている変数(sの順伝播先)は \( y_{t}^{j}, uO_{t}^{j}, s_{t}^{j}, uF_{t}^{j}, uI_{t}^{j} \) なので、これらの変数の偏微分から \( \frac{ \partial E }{ \partial s } \) の計算式を自動生成します。
\( s_{t}^{j}, uF_{t}^{j}, uI_{t}^{j} \) の右辺では \( s_{t-1}^{j} \) の値を使っているので、 \( s_{t}^{j} \) の値を使うのは \( s_{t+1}^{j}, uF_{t+1}^{j}, uI_{t+1}^{j} \) です。 $$ \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} } $$
sの順伝播先の変数( \( y_{t}^{j}, uO_{t}^{j}, s_{t+1}^{j}, uF_{t+1}^{j}, uI_{t+1}^{j} \) )に、それぞれの定義式を代入します。
$$ = \delta^{ y_{t}^{j} } \cdot \frac{ \partial (σ(uO_{t}^{j}) \cdot σ(s_{t}^{j})) }{ \partial s_{t}^{j} } \\ + \delta^{ uO_{t}^{j} } \cdot \frac{ \partial (((\displaystyle \sum_{i }^{ X } wOin_{j}^{i} \cdot x_{t}^{i} + \displaystyle \sum_{i }^{ Y } wOr_{j}^{i} \cdot y_{t - 1}^{i}) + wO_{j} \cdot s_{t}^{j}) + bO_{j}) }{ \partial s_{t}^{j} } \\ + \delta^{ s_{t + 1}^{j} } \cdot \frac{ \partial (σ(uF_{t + 1}^{j}) \cdot s_{(t + 1) - 1}^{j} + σ(uI_{t + 1}^{j}) \cdot σ(u_{t + 1}^{j})) }{ \partial s_{t}^{j} } \\ + \delta^{ uF_{t + 1}^{j} } \cdot \frac{ \partial (((\displaystyle \sum_{i }^{ X } wFin_{j}^{i} \cdot x_{t + 1}^{i} + \displaystyle \sum_{i }^{ Y } wFr_{j}^{i} \cdot y_{(t + 1) - 1}^{i}) + wF_{j} \cdot s_{(t + 1) - 1}^{j}) + bF_{j}) }{ \partial s_{t}^{j} } \\ + \delta^{ uI_{t + 1}^{j} } \cdot \frac{ \partial (((\displaystyle \sum_{i }^{ X } wIin_{j}^{i} \cdot x_{t + 1}^{i} + \displaystyle \sum_{i }^{ Y } wIr_{j}^{i} \cdot y_{(t + 1) - 1}^{i}) + wI_{j} \cdot s_{(t + 1) - 1}^{j}) + bI_{j}) }{ \partial s_{t}^{j} } $$
\( (t+1)-1 \) を \( t \) に簡約化します。
$$ = \delta^{ y_{t}^{j} } \cdot \frac{ \partial (σ(uO_{t}^{j}) \cdot σ(s_{t}^{j})) }{ \partial s_{t}^{j} } \\ + \delta^{ uO_{t}^{j} } \cdot \frac{ \partial (((\displaystyle \sum_{i }^{ X } wOin_{j}^{i} \cdot x_{t}^{i} + \displaystyle \sum_{i }^{ Y } wOr_{j}^{i} \cdot y_{t - 1}^{i}) + wO_{j} \cdot s_{t}^{j}) + bO_{j}) }{ \partial s_{t}^{j} } \\ + \delta^{ s_{t + 1}^{j} } \cdot \frac{ \partial (σ(uF_{t + 1}^{j}) \cdot s_{t}^{j} + σ(uI_{t + 1}^{j}) \cdot σ(u_{t + 1}^{j})) }{ \partial s_{t}^{j} } \\ + \delta^{ uF_{t + 1}^{j} } \cdot \frac{ \partial (\displaystyle \sum_{i }^{ X } wFin_{j}^{i} \cdot x_{t + 1}^{i} + \displaystyle \sum_{i }^{ Y } wFr_{j}^{i} \cdot y_{t}^{i} + wF_{j} \cdot s_{t}^{j} + bF_{j}) }{ \partial s_{t}^{j} } \\ + \delta^{ uI_{t + 1}^{j} } \cdot \frac{ \partial (\displaystyle \sum_{i }^{ X } wIin_{j}^{i} \cdot x_{t + 1}^{i} + \displaystyle \sum_{i }^{ Y } wIr_{j}^{i} \cdot y_{t}^{i} + wI_{j} \cdot s_{t}^{j} + bI_{j}) }{ \partial s_{t}^{j} } $$
微分の計算をします。
$$ = \delta^{ y_{t}^{j} } \cdot ( (σ'(uO_{t}^{j}) \cdot 0) \cdot σ(s_{t}^{j}) + σ(uO_{t}^{j}) \cdot (σ'(s_{t}^{j}) \cdot 1) ) \\ + \delta^{ uO_{t}^{j} } \cdot ( ((0 + 0) + (0 \cdot s_{t}^{j} + wO_{j} \cdot 1)) + 0 ) \\ + \delta^{ s_{t + 1}^{j} } \cdot ( ((σ'(uF_{t + 1}^{j}) \cdot 0) \cdot s_{t}^{j} + σ(uF_{t + 1}^{j}) \cdot 1) + ((σ'(uI_{t + 1}^{j}) \cdot 0) \cdot σ(u_{t + 1}^{j}) + σ(uI_{t + 1}^{j}) \cdot (σ'(u_{t + 1}^{j}) \cdot 0)) ) \\ + \delta^{ uF_{t + 1}^{j} } \cdot ( 0 + 0 + (0 \cdot s_{t}^{j} + wF_{j} \cdot 1) + 0 ) \\ + \delta^{ uI_{t + 1}^{j} } \cdot ( 0 + 0 + (0 \cdot s_{t}^{j} + wI_{j} \cdot 1) + 0 ) $$
式を簡約化します。
$$ = \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} $$