本文主要介绍BP算法:
给定训练集,
,
,即输入由
个属性描述,输出
维实值向量。
BP网络及算法中的变量符号.jpg
- 上图给出了一个拥有
个输入神经元、
个输出神经元、
个隐层神经元的多层前馈网络结构,其中输出层第
个神经元的阈值用
表示,隐层第
个神经元的阈值用
表示。输出层第i个神经元与隐层第h个神经元之间的连接权为
,隐层第
和神经元与输出层第
个神经元之间的连接权为
。
- 记隐层第
个神经元接收到的输入为
,输出层第
个神经元接收到的输入为
,其中
为第
个神经元的输出。假设隐层和输出层的神经元激活函数为
。
- 对训练例
,假定神经网络的输出为
,即
,则网络在
上的均方误差为
- BP算法是一个迭代学习算法,在迭代的每一轮中采用广义的感知机学习规则对参数进行更新估计,任意参数
的更新估计式为
BP算法基于梯度下降(gradient descent)策略,以目标的负梯度方向对参数进行调整,对,给定学习率
,有
注意到先影响到第j个输出层神经元的输入值为
,在影响到输出值
,然后影响到
,有
根据的定义,显然有
Sigmoid函数有一个很好的性质:
那么有
因此有:
- 类似地,有
输出层神经元的阈值:
输入层到隐层的连接权:
隐层神经元的阈值:
其中,
- 学习率
控制着算法在每一轮迭代中的更新步长,若太长则容易震荡,太小则收敛速度又会过慢。
-
输入:
训练集;
学习率.
-
过程:
1:在(0,1)范围内随机初始化网络中所有连接权和阈值
2:Repeat
3:for all
do
4:根据当前参数和
计算当前样本的输出
;
5:根据式
计算输出神经元的梯度项
;
6:根据式
计算隐层神经元的梯度项
;
7:根据式
、
、
、
更新连接权
、
与阈值
、
;
8:end for
9:until 达到停止条件。 -
输出:
连接权与阈值确定的多层前馈神经网络。
需注意的是,BP算法的目标是要最小化训练集上的累积误差
标准的BP算法每次针对一个训练样例更新连接权和阈值。换言之,算法的更新规则是基于单个的推到而得的。如果类似地推到基于累积误差最小化的更新规则,就得到了累积误差逆传播(accumulated error backpropagation)算法。
一般来说,标准BP算法每次更新只针对你单个样例,参数更新得非常频繁,而且对不同样例进行更新得效果可能出现抵消现象。因此,为了达到同样的累积误差极小点,标准BP算法往往需要进行更多次数的迭代。累积BP算法直接针对累积误差最小化,它在读取整个训练集一遍后才对参数进行更新,其参数更新得频率低得多。
可以证明:多层前馈网络若包含足够多神经元的隐含层,则它可以以任意精度逼近任意复杂度的连续函数。
BP神经网络十分强大,因此可能出现过拟合现象。这时有两种策略可以缓解过拟合现象:
- “”早停”策略:将数据集分成训练集和验证数据集两类,训练集用于计算梯度、更新连接权重和阈值;验证集用于估计误差,如果训练集误差降低而验证集误差上升,则停止训练。同时返回具有最小验证集误差的连接权重和阈值。
- “正则化”策略:修改误差目标函数为:
其中表示连接权重和阈值;
表示对经验误差和网络复杂度的折中;即
刻画了网络复杂度。
[ 神经网络的基本工作原理]