跳转到内容

人工神经网络/误差修正学习

来自维基教科书,开放的书籍,开放的世界

误差修正学习

[编辑 | 编辑源代码]

误差修正学习,与监督学习一起使用,是一种将系统输出与期望输出值进行比较,并利用该误差来指导训练的技术。在最直接的路径中,误差值可用于直接调整抽头权重,使用诸如反向传播算法之类的算法。如果系统输出为y,并且已知期望系统输出为d,则误差信号可定义为

误差修正学习算法试图在每次训练迭代中最小化此误差信号。最流行的用于误差修正学习的学习算法是反向传播算法,下面将讨论该算法。

梯度下降

[编辑 | 编辑源代码]

梯度下降算法并非专门的ANN学习算法。它在科学、工程和数学的各个领域都有广泛的用途。但是,我们需要讨论梯度下降算法,以便充分理解反向传播算法。梯度下降算法用于通过操纵权重向量w来最小化误差函数g(y)。成本函数应为权重向量和输入向量x的线性组合。该算法为

这里,η被称为步长参数,它会影响算法的收敛速度。如果步长太小,算法将花费很长时间才能收敛。如果步长太大,算法可能会振荡或发散。

梯度下降算法通过取权重空间的梯度来寻找最速下降路径。通过在每次迭代中遵循最速下降路径,我们将找到最小值,或者如果权重空间无限减小,算法可能会发散。找到最小值后,不能保证它是全局最小值。

反向传播

[编辑 | 编辑源代码]

反向传播算法与监督误差修正学习规则相结合,是人工神经网络训练中最流行和最强大的工具之一。反向传播在训练期间将误差信号反向传递到网络中,以更新网络的权重。由于这种对训练期间双向数据流的依赖,反向传播不是生物学习机制的合理复制。在谈论反向传播时,定义术语层间为神经元层,以及对应于该层的输入抽头权重是有用的。我们使用上标来表示特定层间,并使用下标来表示该层中的特定神经元。例如

(1)
(2)

其中xil-1是来自前一层间的输出(当前层间的输入),wijl是从前一层间的第i个输入到当前层间的第j个元素的抽头权重。Nl-1是前一层间中神经元的总数。

反向传播算法规定,在训练期间,网络的抽头权重会迭代更新,以接近误差函数的最小值。这是通过以下等式完成的

(3)
(3)

该算法与梯度下降算法之间的关系应该立即显而易见。这里,η被称为学习率,而不是步长,因为它会影响系统学习(收敛)的速度。参数μ被称为动量参数。动量参数迫使搜索考虑来自前一次迭代的运动。通过这样做,系统将倾向于避免局部最小值或鞍点,并接近全局最小值。我们将在下一节中更详细地讨论这些术语。

参数δ是使该算法成为“反向传播”算法的原因。我们按以下方式计算它

(4)

每一层的 δ 函数都取决于上一层的 δ。对于输出层(最高层)的特殊情况,我们使用此方程式代替

(5)

通过这种方式,信号从输出层反向传播到输入层,因此该算法被称为反向传播算法。

对数-S型反向传播

[edit | edit source]

如果我们对神经元使用对数-S型激活函数,则导数将简化,我们的反向传播算法将变为

对于输出层,以及

对于所有隐藏内部层。此属性使 S 型函数成为计算导数能力有限的系统的理想选择。

学习率

[edit | edit source]

学习率是许多学习算法中的一个常用参数,它影响着人工神经网络到达最小解的速度。在反向传播中,学习率类似于梯度下降算法中的步长参数。如果步长过大,系统将围绕真实解振荡,或者完全发散。如果步长过小,系统将花费很长时间才能收敛到最终解。

动量参数

[edit | edit source]

动量参数用于防止系统收敛到局部最小值或鞍点。较高的动量参数也可以帮助提高系统收敛速度。但是,将动量参数设置得太高可能会导致超过最小值,从而使系统变得不稳定。过低的动量系数无法可靠地避免局部最小值,并且还会减慢系统的训练速度。

华夏公益教科书