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 です。行列による偏微分なのでスカラーによる偏微分とは異なります |