>>793
ニューラルネットワークの知識ゼロで読んだけど
そんな「かなり難しい」というほどの事はしてないよ

Sigmoid 関数 φ(x) := ...
φ'(x) = φ(x) (1-φ(x)) (★ φ'(x)=x(1-x) は間違い)
y = φ(x), φ'(x) = y (1-y) =: daf(y)

隠れ層
x_hᵢ := Σ{j} W_ihᵢⱼ o_iⱼ
o_h := φ(x_h)

出力層
x_oᵢ := Σ{j} W_hoᵢⱼ o_hⱼ
o_o := φ(x_o)

評価関数 E := Σ{k} 1/2*(tₖ-o_oₖ)² {極小値となるパラメータ W を求める}
e_oᵢ := -∂E/∂o_oᵢ = tᵢ - o_oᵢ
e_hᵢ := Σ{j} daf(o_oⱼ) W_hoⱼᵢ e_oⱼ (★プログラムの記述は間違い)

E値が小さくなる方向にWを更新
ΔW_hoᵢⱼ ∝ -∂E/∂W_hoᵢⱼ
= Σ{k,m}(-∂E/∂o_oₖ)(∂o_oₖ/∂x_oₘ)(∂x_oₘ/∂W_hoᵢⱼ)
= e_oᵢ daf(o_oᵢ) o_hⱼ

ΔW_ihᵢⱼ ∝ -∂E/∂W_ihᵢⱼ
= Σ{k,m,n,s} (-∂E/∂o_oₖ)(∂o_oₖ/∂x_oₘ)
 * (∂x_oₘ/∂o_hₙ)(∂o_hₙ/∂x_hₛ)(∂x_hₛ/∂W_ihᵢⱼ)
= Σ{m} e_oₘ daf(o_oₘ) * W_hoₘᵢ daf(o_hᵢ) o_iⱼ
= e_hᵢ daf(o_hᵢ) o_iⱼ