Back-propagation algorithm
由于隐藏层的误差项没有被很好地定义(不像输出层有真实值 d i d_i di),多层神经网络的发展停滞了许久。1986年,后向传播算法 Back-propagation algorithm 的引入解决了这个问题。
考虑一个三层网络(输入—隐藏—输出),下面是隐藏层到输出层的转换:
由前面的章节,我们已经知道对于隐藏层—输出层,
δ
=
φ
′
(
v
)
e
\delta=\varphi^{'}(v)e
δ=φ′(v)e,
δ
i
\delta_i
δi 对
W
2
W_2
W2 的每一行求导,就得到输出层神经元 i 对每一个隐藏层神经元的梯度。
但是现在我们的问题是要求出输入层—隐藏层对应的 δ \delta δ,由于要更新的是 W 1 , W 1 x = v ( 1 ) , y ( 1 ) = φ ( v ( 1 ) ) W_{1},W_1x=v^{(1)},y^{(1)}=\varphi(v^{(1)}) W1,W1x=v(1),y(1)=φ(v(1)),我们需要将 δ i \delta_i δi 对隐藏层神经元 y ( 1 ) y^{(1)} y(1) 求导。
考虑对每一个隐藏层神经元
y
j
(
1
)
y^{(1)}_{j}
yj(1),它通过
w
i
j
(
2
)
w^{(2)}_{ij}
wij(2)(竖着看 W 权重矩阵)作用于输出层神经元
y
i
y_i
yi,故对第一个隐藏层神经元,有:
转换成矩阵形式,即:
由此,我们可以统一隐藏层和前面单一网络结构的梯度计算形式,它们的唯一区别就是
δ
\delta
δ 的计算不同。
Momentum
momentum 就是增加到 delta 法则上的一个附加项,它考虑到了之前的梯度的影响。
Cost Function and Learning Rule
上面是两个经典的损失函数,一个是平方误差损失函数,一个是交叉熵损失函数。“the cross entropy-driven learning rule yields a faster learning process.”
考虑如下图的交叉熵损失,当 d=1 时,y 越接近 1,损失越小;y 越接近 0,损失越大。d=0 时同理。
梯度计算参考: