変数に時間的な順序がある場合の全微分

これはメモであり,詳細は以下の論文をみること.

Werbos, P.J., 1990. Backpropagation through time: what it does and how to do it. Proceedings of the IEEE 78, 1550–1560. https://doi.org/10.1109/5.58337

変数に時間的な順序がある場合の全微分

変数に時間的な順序がある場合の偏微分は以下のように計算できる.

\begin{align}
\frac{dE}{dz_n} &= \frac {\partial E}{\partial z_n} + \sum_{m>n} \frac{dE}{dz_m} \frac {\partial z_m}{\partial z_n}
\end{align}

RNNにおけるBATTの場合\(E\)は損失関数,\(n\)は現在時刻のステップ数,\(m\)は次以降のステップ数を表す.

具体例での確認

例えば\(z_1\)を初期値として以下のようなルールで\(z_i\)を計算する場合を考える.

\begin{align}
z_2(z_1) &= 4z_1\\
z_3(z_1,z_2) &= 3z_1 + 5z_2\\
z_4(z_1,z_2,z_3) &= 2z_1 + 3z_2 + 4z_3
\end{align}

このとき,\(E\)の代わりに\(z_2, z_3, z_4\)を\(z_1\)で微分することを考えると

\begin{align}
\frac{dz_2}{dz_1} &= \frac {\partial z_2}{\partial z_1} = 4
\end{align}

これは普通に全微分を計算した結果と一致する.

\begin{align}
\frac{dz_2}{dz_1} &= 4\frac{dz_1}{dz_1} = 4
\end{align}

\(z_3\)に関しても同様に

\begin{align}
\frac{dz_3}{dz_1} &= \frac {\partial z_3}{\partial z_1} + \frac {d z_3}{d z_2} \frac {\partial z_2}{\partial z_1}\\
&= 3 + 5\times4\\
&=23
\end{align}

これも全微分の計算と一致する.

\begin{align}
\frac{dz_3}{dz_1}
&= 3\frac{dz_1}{dz_1} + 5\frac{dz_2}{dz_1}\\
&= 3\frac{dz_1}{dz_1} + 5 \times 4\frac{dz_1}{dz_1}=23
\end{align}

\(z_4\)に関しても同様に

\begin{align}
\frac{dz_4}{dz_1} &= \frac{\partial z_4}{\partial z_1} + \frac{d z_4}{d z_3} \frac{\partial z_3}{\partial z_1} + \frac{d z_4}{d z_2} \frac{\partial z_2}{\partial z_1} \\
&= 2 + \left( 2\frac{dz_1}{dz_3}+3\frac{dz_2}{dz_3}+4\frac{dz_3}{dz_3} \right) \times 3 + \left( 2\frac{dz_1}{dz_2}+3\frac{dz_2}{dz_2}+4\frac{dz_3}{dz_2} \right)\times 4\\
&= 2 + \left( 2\times 0+3\times 0+4\times 1 \right) \times 3 + \left( 2\times 0+3\times 1+4\times 5 \right)\times 4\\
&= 2+4\times 3 + 23 \times 4 = 106
\end{align}

これも全微分の計算と一致する.ここで順序が存在するために\(z_3\)は\(z_1\)と\(z_2\)の関数だが,\(z_1\)は\(z_3\)の関数ではないため微分\(\frac{dz_1}{dz_3}\)が0になることに注意.同じことが前の時刻の変数を後ろの時刻の変数で微分したときにおこる

\begin{align}
\frac{dz_4}{dz_1} &= 2\frac{dz_1}{dz_1} + 3\frac{dz_2}{dz_1}+ 4\frac{dz_3}{dz_1}\\
&= 2 + 3 \times 4+ 4 \times 23 = 106
\end{align}

メモ

Posted by Nakamura