前向传播(Forward Propagation)
a(1)=x
a
(
1
)
=
x
a(2)=g(θ(1)x)
a
(
2
)
=
g
(
θ
(
1
)
x
)
a(3)=g(θ(2)a(2))
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
C
=
1
2
∑
k
(
y
k
−
t
k
)
2
aij=∑Nk=1wkj(i−1)g[a(i−1)k] a i j = ∑ k = 1 N w k j ( i − 1 ) g [ a ( i − 1 ) k ]
δk+1:=∂E∂a(k+1)j δ k + 1 := ∂ E ∂ a ( k + 1 ) j
算法过程
- 初始化权重wij
- 前向传播。计算每个节点的输出值
- 对输出层求
δk=(yk−tk)⋅g′(ak) δ k = ( y k − t k ) · g ′ ( a k ) - 对隐藏层求
δk=∑jδk+1⋅wij(k)∗g′(a(k+1)j) δ k = ∑ j δ k + 1 · w i j ( k ) ∗ g ′ ( a ( k + 1 ) j ) - 求梯度
∂Cn∂wji=δj⋅g(ai) ∂ C n ∂ w j i = δ j · g ( a i ) - 更新权重
wm+1=wm+α∂C∂w w m + 1 = w m + α ∂ C ∂ w
推导过程
- 最后一层的权重求导。总损失对权重求导等于先对线性组合求导,乘以线性组合对权重的求导。根据之前的符号设定换成delta,然后根据线性组合a的公式得出后面的导数。
∂C∂wij(k)=∂C∂a(k+1)j⋅∂a(k+1)j∂wij(k) ∂ C ∂ w i j ( k ) = ∂ C ∂ a ( k + 1 ) j · ∂ a ( k + 1 ) j ∂ w i j ( k )
=δk+1⋅g(akj) = δ k + 1 · g ( a k j ) - 隐藏层的求导。
so
神经网络的归纳偏置
可以粗略地刻画为在数据点之间平滑插值