本文主要介绍BP算法:
给定训练集,,,即输入由个属性描述,输出维实值向量。
- 上图给出了一个拥有个输入神经元、个输出神经元、个隐层神经元的多层前馈网络结构,其中输出层第个神经元的阈值用表示,隐层第个神经元的阈值用表示。输出层第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神经网络十分强大,因此可能出现过拟合现象。这时有两种策略可以缓解过拟合现象:
- “”早停”策略:将数据集分成训练集和验证数据集两类,训练集用于计算梯度、更新连接权重和阈值;验证集用于估计误差,如果训练集误差降低而验证集误差上升,则停止训练。同时返回具有最小验证集误差的连接权重和阈值。
- “正则化”策略:修改误差目标函数为:
其中表示连接权重和阈值;表示对经验误差和网络复杂度的折中;即刻画了网络复杂度。
[ 神经网络的基本工作原理]
网友评论