O'Reilly Japan - ゼロから作るDeep Learning の p.136 の計算グラフについて考えてみる。$c = 2,\ t = 1.1$ として
\begin{align*}
y &= cx \\
z &= ty
\end{align*}
の時に $\frac{\del z}{\del x}\Big|_{t=1.1,c=2,x=100}$ などを求めましょうということである。
\begin{align*}
\frac{\del z}{\del x}\Bigg|_{t=1.1,c=2,x=100} = \frac{\del z}{\del y}\Bigg|_{t=1.1,y=200} \frac{\del y}{\del x}\Bigg|_{c=2,x=100} = tc = 1.1 \times 2 = 2.2
\end{align*}
\begin{align*}
\frac{\del z}{\del t}\Bigg|_{t=1.1,y=200} = y = 200
\end{align*}
\begin{align*}
\frac{\del z}{\del c}\Bigg|_{t=1.1,c=2,x=100} = \frac{\del z}{\del y}\Bigg|_{t=1.1,y=200} \frac{\del y}{\del c}\Bigg|_{c=2,x=100} = tx = 1.1 \times 100 = 110
\end{align*}
のようなことを計算グラフで記述している。
import numpy as np from dezero import Variable apple = Variable(np.array(100.)) apple_2 = apple * 2 cost = apple_2 * 1.1 print(cost) cost.backward() print(apple.grad)
などとすれば流れがわかる。
みたいな絵を描かせつつデバッガで追いかけるとよく分からなくなった時に思い出せて良い。