1. 符号定义
- wLjk 表示第L−1层的第j个神经元到第L层的第k个神经元映射的权值。
- bLk 表示第L层的第k个神经元的偏置量。
- zLk=∑jwLjkaL−1j+bLk 表示第L层的未经激活函数的输出。
- aLk=σ(zLj) 表示第L层经过sigmoid函数后的输出。
2. 损失函数定义
二次代价函数:(x代表输入的样本,y(x)代表标签值)
C=12n∑x||y(x)−aL(x)||2当只关注某一个样本xi的时候,有:
C=12(y−a)23. 反向传播推导
计算最后一层神经网络产生的错误
对于每一个L层的神经元有:
则整个L层可以用矩阵的Hadamard积(矩阵行行对应相乘)来进行计算:
δL=∇aC⊙σ′(zL)反向传播
计算每一层的每个神经元产生的误差,推广到每一层的每个神经元有:
δLk=∂C∂zLk=∑m∂C∂zL+1m⋅∂zL+1m∂aLk⋅∂aLk∂zLk=∑mδL+1m⋅wL+1kmaLk+bL+1m∂aLk⋅σ′(zLk)=∑mδL+1m⋅wL+1km⋅σ′(zLk)推广到整个一层有:
δL=((WL+1)T⋅δL+1)⊙σ′(zL)计算权重的梯度
∂C∂wLjk=∂C∂zLk⋅∂zLk∂wLjk=δLk⋅∂(wLjkaL−1j+bLk)∂wLjk=aL−1j⋅δLk计算偏置的梯度
∂C\partbLk=∂C∂zLk⋅∂zLk∂bLk=δLk⋅∂(wLjkaL−1j+bLk)∂bLk=δLk
4.总结
反向传播四个公式:
输出层误差:
δL=∇aC⊙σ′(zL)反向传播每一层误差:
δL=((WL+1)T⋅δL+1)⊙σ′(zL)权重梯度:
∂C∂wLjk=aL−1j⋅δLk偏置梯度:
∂C∂bLk=δLk
v1.5.2