p_ml_3-4-4(質問管理番号)

回答日時:  season1
Q: 回答のaのパラメータ更新量が
「−η ∂L/∂a =0.1(y −(0.9x +0.1))x =0.1×0.0=0.0」となっているのですが、
訓練サンプルがx=0.0なのでy=0.5となり、
「−η ∂L/∂a =0.1(y −(0.9x +0.1))x =0.1×(0.5 −(0.9 × 0.0 + 0.1)×0.0)=0.05」となるのが正しいかと思ったのですが、計算方法が何か間違っておりますでしょうか?前述の質問と被ってしまうかもしれませんが、
「1_3_stochastic_gradient_descent」にてW2の勾配を求める際、
∂E/∂W2 = (∂E/∂y)・(∂y/∂u2)・(∂u2/∂w2) = delta2・z1
つまり
grad[‘W2’] = np.dot(delta2, z1)
と書けそうな気がするのですが、なぜ左右が入れ替わって転置が付いて
grad[‘W2’] = np.dot(z1.T, delta2)
となるのでしょうか?(W1の計算も同様ですが)
A: −η ∂L/∂a =0.1(y −(0.9x +0.1))x =0.1×(0.5 −(0.9 × 0.0 + 0.1)×0.0)=0.05ではなく、
−η ∂L/∂a =0.1(y −(0.9x +0.1))x =0.1×(0.5 −(0.9 × 0.0 + 0.1))×0.0=0.0となります。
違いは括弧の閉じる位置です。追加質問に対する答え、∂E/∂W2 = (∂E/∂y)・(∂y/∂u2)・(∂u2/∂w2) = z1.T ・(∂E/∂u2) = z1.T・delta2
です。行列による偏微分なのでスカラーによる偏微分とは異なります