Closed4

計算グラフ: Sum

nabeyangnabeyang

sumの計算グラフのルールを作ります。ここでsumと言っているのはnp.sum(x, axis=0, keepdims=True)です。ここで簡単に動作確認をしておきます。

x = np.array([
    [1, 2, 3],
    [4, 5, 6],
])
print(x.shape) #=> (2, 3)
y = np.sum(x, axis=0, keepdims=True)
print(y) #=> [[5 7 9]]
print(y.shape) #=> (1, 3)
nabeyangnabeyang
\bm{x}_{i} = \left(x_{i,0}, x_{i,1}, x_{i,2},\cdots , x_{i, D-1}\right)

とすると

\begin{aligned} x_{i,j} &= (x_{i})_{j}\\ \bm{y} &= \sum_{k} \bm{x}_{k} \end{aligned}

なので

\begin{aligned} \left(\frac{\partial L}{\partial x}\right)_{i,j} &= \frac{\partial L}{\partial x_{i,j}}\\ &= \sum_{k} \frac{\partial y_{k}}{\partial x_{i,j}} \frac{\partial L}{\partial y_{k}}\\ &= \sum_{k,l} \frac{\partial x_{l,k}}{\partial x_{i,j}} \frac{\partial L}{\partial y_{k}}\\ &= \sum_{k,l} \delta_{i,l}\delta_{j,k} \frac{\partial L}{\partial y_{k}}\\ &= \frac{\partial L}{\partial y_{j}} \end{aligned}
このスクラップは2021/03/15にクローズされました