以下是手绘的一个三层神经网络传播的一个流程图
forward propagation的计算没有问题:
然后得到Neural Networks的Cost Function:
然后是BP算法用来计算J(θ)对每一个θ的偏导数
以下是Backpropagation Algorithm:
计算方法:
对于给定
θ(l)ij
,考虑
Z(l+1)
,它只参与了
Z(l+1)i
的计算,于是问题转换到了
∂J(Z(l+1))∂Z(l+1)i
,而对于
∂J∂Z(l+1)i
的计算又要通过对
∂J∂Z(l+2)i
的计算。
定义“残差”
δ(l)i
为
∂J∂Z(l)i
(直观上就是对
∂J∂θ(l−1)ij
的大小,越大表示没有到最优化)。
在视频和作业中,定义
δ(nl)i
(
nl
为网络的层数) :直接是
δ(nl)i=(a(nl)i−yi)
。然后经计算,
δ(l)i=(Θ(l))Tδ(l+1)i.∗g′(z(l)i)
即:
W就是
Θ
矩阵, b为bias项(就是乘1项)相应的
Θ
梯度下降过程:
反复迭代:
注意对于
Θ
矩阵随机初始化过程:
最后我们来看看我们作业中,这个三层神经网络的隐藏层做了什么(虽然不明白它表示了什么):
Reference:
张睿卿(Rachel Zhang)的博客:
http://blog.csdn.net/abcjennifer/article/details/7758797
Pro. Ng的UFLDL教程及相关中文翻译:
http://t.cn/zYn4Ugl