参考 https://www.zybuluo.com/Feiteng/note/20154
1 前向传播
这里的推导都用矩阵和向量的形式,计算单个变量写起来太麻烦。矩阵、向量求导可参见上面参考的博客,个人觉得解释得很直接很好。
前向传播每一层的计算如下:
z(l+1)=W(l,l+1)a(l)+b(l,l+1)(1.1)
a(l+1)=f(z(l+1))(1.2)
f 是激活函数。一般有sigmoid、tanh、relu等。
2 反向传播
为了得到好的模型,我们要更新参数
我们将神经网络的损失函数记为 J(W,b) ,这里的 W,b 是指网络中所有的参数。损失函数可以是均方误差、交叉熵等等。总之是衡量网络输出的结果与真实标记之间的差异。
之后,就要计算 J(W,b) 对每一层 W,b 的梯度,对 W,b 进行更新。所有参数更新完成后,再进行前向传播。循环往复,直到达到要求为止。
反向传播之所以和正向传播这么对比着说,是因为反向传播也是一层一层地计算。首先看最后一层(假设最后一层没有激活):
∂J∂W(n−1,n)=∂J∂z(n)∂