神经网络学习—误差逆传播算法

神经网络是具有自适应性的简单单元组成的广泛并行互连的网络,它的组织能够模拟生物神经系统对真实世界物体所作出的交互。

在生物神经网络中,每个神经元与其他神经元相连,当它“兴奋”时,就会向相连的神经元发送化学物质,从而改变这种神经元内的电位;如果某种神经元的电位超过了一个“阈值”,那么它就会被激活,即“兴奋”起来,像其他神经元发送化学物质。

生物神经网络模型

将上述情形抽象为简单的数学模型,就是“M-P神经元模型”。在这个模型中,神经元接收到来自n个其他神经元传递过来的输入信号,这些输入信号通过带权重的连接进行传递,神经元接收到的总输入值将与神经元的阈值进行比较,然后通过“激活函数”处理以产生神经元的输出。

M-P神经元模型

一、感知机—单层神经网络

感知机由两层神经元组成。输入层接收到外界输入信,传递给输出层,输出层是M-P神经元。

两个输入神经元的感知机网络结构示意图

一般情况下,给定训练数据集,权重(i=1,2,...,n)以及阈值可通过学习得到。

感知机的学习规则为:对训练样例(x,y),若当前感知机的输出为y ,则感知机权重将这样调整:

其中为学习率。从上式可以看出,若感知机队训练样例预测正确,则感知机不发生变化,否则将根据错误的程度进行权重调整。

注:感知机只有输出层神经元进行激活函数处理,即只拥有一层功能神经元,其学习能力非常有限,只能处理线性可分问题。

二、多层前馈神经网络

更一般的,常见的神经网络是形如下图所示的层级结构,每层神经元与下一层神经元全互连,神经元之间不存在同级连接,也不存在跨层连接,这样的神经网络结构被称为“多层前馈神经网络”。

多层前馈神经网络结构示意图

神经网络的学习过程,就是根据训练数据来调整神经元之间的“连接权”以及每个功能神经元的阈值;换言之,神经网络学到的东西,蕴含在连接权和阈值中。

注:只需一个包含足够多神经元的隐层,多层前馈神经网络就能以任意精度逼近任意复杂度的连续函数。实际应用中通常靠“试错法”来设置隐层神经元的个数。

三、误差逆传播算法(BP算法)

误差逆传播算法是训练多层网络的的典型学习算法。

BP算法

BP是一个迭代学习算法,在迭代的每一轮中采用广义的感知机学习规则对参数进行更新估计。对每个训练样例,BP算法执行以下操作:先将输入示例提供给输入层神经元,然后逐层将信号前传,直到产生输出层的结果;然后计算输出层的误差,再将误差逆向传播至隐层神经元,最后根据隐层神经元的误差来对连接权和阈值进行调整。该迭代过程循环进行,直到达到某些停止条件,例如训练误差已达到一个很小的值。

BP算法的目标是最小化训练集D上的累计误差

标准BP算法:每次更新只针对单个样例,参数更新地非常频繁,而且对不同样例进行更新的效果可能出现“抵消”现象。因此为了达到同样的累计误差极小点,标准BP算法需进行更多次数的迭代。

累积BP算法:直接针对累积误差最小化,它在读取整个训练集D一遍后才对参数进行更新,其参数更新的频率低得多。但在很多任务中,累积误差下降到一定程度后,进一步下降会非常缓慢。

由于BP神经网络强大的表示能力,经常遭遇过拟合,其训练误差持续降低,但测试误差却可能上升。为了缓解BP网络的过拟合,有两种策略,第一种是“早停”:将数据分成训练集和验证集,训练集用来计算梯度、更新连接权和阈值,验证集用来估计误差,若训练集误差降低但验证集误差升高,则停止训练,同时返回具有最小验证集误差的连接权和阈值。第二种策略是“正则化”:在误差目标函数中增加一个用于描述网络复杂度高的部分,其基本思想是在误差目标函数中增加一个用于描述网络复杂度的部分。

你可能感兴趣的:(神经网络学习—误差逆传播算法)