吴恩达机器学习 - 神经网络

2018-11-19  本文已影响0人  YANWeichuan

神经网络的代价函数

J(Θ)=-{\frac{1}{m}}\left[\sum_{i=1}^{m}\sum_{j=1}^{K}{y_k^{(i)}log(h_Θ(x^{(i)})_k)} + {(1-y_k^{(i)})log(1-(h_Θ(x^{(i)}))_k)}\right] + {\frac{λ}{2m}}\sum_{l=1}^{L-1}\sum_{i=1}^{S_l}\sum_{j=1}^{S_l+1}Θ_{ji}^l

反向传播

δ_j^{(l)}定义为:"error" of node j in layer l
δ_j^{(4)} = α_j^{(4)} - y_j
δ^{(3)} = (Θ^{(3)})^ Tα^{4 } .*g^{'}(z^{(3)}) = (Θ^{(3)})^ Tα^{4 } .* (α^{(3)}(1-α^{(3)}))
δ^{(2)} = (Θ^{(2)})^ Tα^{3 } .*g^{'}(z^{(2)}) = (Θ^{(2)})^ Tα^{3 } .* (α^{(2) }(1-α^{(2)}))

其中:
g^{'}(z)
= {\frac{e^{-z}}{(1+ e^{-z})^2}}
= {\frac{1 + e^{-z} - 1}{(1+ e^{-z})^2}}
= {\frac{1}{1+ e^{-z}}} - {\frac{1+e^{-z}}{(1+ e^{-z})^2}}
= g(z) - g^{2}(z)
= g(z)(1 - g(z))

反向传播的计算:

For i = 1 to m:
  设置 α^{(1)} = x^{(i)}
  向前传播计算α^{(l)}, 其中 l = 2, 3 ... L
  利用y_{(i)} 计算α^{(L)}(即最后输出层),δ^L= α^{(L)} - y^i
  计算δ^{(L-1)}, δ^{(L-2)}, δ^{(L-3)}, ..., δ^{(2)}
Δ_{ij}^{(l)} := Δ_{ij}^{(l)} + α_j^{(l)}δ_i^{(l+1)}

定义:
D_{ij}^{(l)} := \frac{1}{m}Δ_{ij}^{(l)} + λΘ_{ij}^{(l)} , 当j\ne0
D_{ij}^{(l)} := \frac{1}{m}Δ_{ij}^{(l)} , 当j=0

\frac{\partial}{\partialθ_{ij}^{(l)}}{J(Θ)} = D_{ij}^{(l)}

梯度检测

如何判断实现的反向传播算法是好的?需要近似的快速得出梯度值,进行检测。

随机初始化

在Θ的初始值选择时,如果选择全0或者全1,在后续的计算中,α值一样,进行了大量的一样的数值计算,通过随机化选择不一样的值,提高效率。

上一篇下一篇

猜你喜欢

热点阅读