前向传播(Forward Propagation)
a(1)=x
a(2)=g(θ(1)x)
a(3)=g(θ(2)a(2))
反向传播(Backward Propagation)
梯度下降算法需要计算梯度,而梯度就是所有参数的偏导数。对于神经网络来说,BP算法是一种计算偏导数的利器。
符号解释
wij——权重
aij——权重处理后的输出,即w*x,i表示第i层,j表示第j个输出
g(x)——激励函数
C——最终的损失函数
yk——实际的标签值
基本公式
C=12∑k(yk−tk)2
aij=∑Nk=1wkj(i−1)g[a(i−1)k]
δk+1:=∂E∂a(k+1)j
算法过程
- 初始化权重wij
- 前向传播。计算每个节点的输出值
- 对输出层求
δk=(yk−tk)⋅g′(ak)
- 对隐藏层求
δk=∑jδk+1⋅wij(k)∗g′(a(k+1)j)
- 求梯度
∂Cn∂wji=δj⋅g(ai)
- 更新权重
wm+1=wm+α∂C∂w
推导过程
- 最后一层的权重求导。总损失对权重求导等于先对线性组合求导,乘以线性组合对权重的求导。根据之前的符号设定换成delta,然后根据线性组合a的公式得出后面的导数。
∂C∂wij(k)=∂C∂a(k+1)j⋅∂a(k+1)j∂wij(k)
=δk+1⋅g(akj)
- 隐藏层的求导。
∂C∂wli(k−1)=∂C∂aki⋅∂aki∂wli(k−1)=δk⋅g(a(k−1)j)
=∑j∂C∂a(k+1)j⋅∂a(k+1)j∂g(aki)⋅∂g(aki)∂aki⋅∂aki∂wli(k−1)
=∑jδk+1⋅wij(k)∗g′(a(k+1)j)⋅g(a(k−1)i)
so
δk=∑jδk+1⋅wij(k)∗g′(a(k+1)j)
神经网络的归纳偏置
可以粗略地刻画为在数据点之间平滑插值