机器学习算法——神经网络3(误差逆传播算法-BP算法)
一、多层前馈神经网络要解决非线性可分问题,需考虑使用多层功能神经元。输入层和输出层之间的一层神经元,被称为隐层或隐含层(hidden layer)。隐含层和输出层神经元都是拥有激活函数的功能神经元。更一般的,常见的神经网络如下图所示的层级结构:图1 多层前馈神经网络结构示意图每层神经元与下一层神经元全互连,神经元之间不存在同层连接,也不存在跨层连接。这样的神经网络结构通常称为“多层前馈神经网络”(
一、多层前馈神经网络
要解决非线性可分问题,需考虑使用多层功能神经元。
输入层和输出层之间的一层神经元,被称为隐层或隐含层(hidden layer)。
隐含层和输出层神经元都是拥有激活函数的功能神经元。
更一般的,常见的神经网络如下图所示的层级结构:
图1 多层前馈神经网络结构示意图
每层神经元与下一层神经元全互连,神经元之间不存在同层连接,也不存在跨层连接。这样的神经网络结构通常称为“多层前馈神经网络”(multi-layer feedforward neural networks),其中输入层神经元接受外界输入,隐层和输出层神经元对信号进行加工,最终结果由输出层神经元输出。
(换句话说,输入层神经元仅接受输入,不进行函数处理。)
(a)图通常称为“两层神经网络”,为避免歧义,将其命名为单隐层网络(只需包含隐层,即可称为多层网络)。
神经网络的学习过程,就是根据训练数据来调整神经元之间的“连接权”以及每个功能神经元的阈值,换言之,神经网络学到的东西,蕴含在连接权和阈值中。
二、标准误差逆传播算法(标准BP算法)
BP算法亦称为“反向传播算法”。
通常说的“BP网络”一般是指BP算法训练的多层前馈神经网络。
下面讲解什么是BP算法?
BP算法的基本思想是:
(1)正向传播FP(求损失):在这个过程中,我们根据样本的输入,给定的初始化权重值W和偏置项的值b,计算最终输出值以及输出值与实际值之间的损失值。如果损失值不在给定的范围内则进行反向传播的过程,否则停止W,b的更新。
(2)反向传播BP(回传误差):将输出以某种形式通过隐层向输入层逐层反传,并将误差分摊给各层的所有单元,从而获得各层单元的误差信号。此误差信号即作为修正各单元权值的依据。
以三层感知机结构为例,说明BP算法的一般计算方法
给定训练集
即输入示例由d个属性描述,输出l维实值向量。
为了便于讨论,给出下图:
上图给出了一个拥有d个输入神经元,l个输出神经元、q个隐层神经元的多层前馈神经网络。
输出层第j个神经元的阈值用表示,隐层第h个神经元的阈值用表示。输入层第i个神经元与隐层第h个神经元之间的连接权用表示。隐层第h个神经元与输出层第j个神经元之间的连接权用表示。
记隐层第h个神经元接收到的输入为
输出层第j个神经元接收到的输入为,其中为隐层第h个神经元的输出。
假设隐层和输出层都是用sigmoid函数。
对训练例,假定神经网络的输出为,即
则网络在上的均方误差为:
网络中需要确定的参数为:输入层到隐层的个权值,隐层到输出层的个权值,q个隐层神经元的阈值,l个输出层神经元的阈值。一共是个参数。
BP是一个迭代学习算法,在迭代的每一轮中采用广义的感知机学习规则对参数进行更新估计。
以隐层到输出层的连接权为例来进行推导。
BP算法基于梯度下降策略,以目标的负梯度方向对参数进行调整,给定学习率η,有:
注意到先影响到第j个输出层神经元的输入值,再影响到其输出值,然后影响到,
根据链式法则有:
因为,所以:
Sigmoid函数有一个很好的性质为:
因为:,所以
因为:,所以,故:
(输出层神经元的梯度项)
所以,
类似地,注意到首先影响到输出值,再影响到,所以有:
类似地,隐层神经元的梯度项的求解为:
首先注意到首先影响到第h个隐层神经元的输入值,在影响到隐层神经元的输出值,最后影响到,所以有:
其中,由于是隐层神经元的输出,则,那么
(隐层神经元的梯度项)
所以,
类似地,注意到首先影响到输出值,再影响到,所以有:
经过推导,得出(标准)BP算法的步骤为:
输入:训练集;学习率
过程:
在(0,1)范围内随机初始化网络中所有连接权和阈值
repeat:
for all()
根据当前参数和计算当前样本的输出;
计算输出层神经元的梯度项;
计算隐层神经元的梯度项;
更新连接权与阈值
end for
until 达到停止条件
输出:连接权与阈值确定的多层前馈神经网络
需要注意的是,BP算法的目标是要最小化训练集D上的累积误差
但是从我们上面的BP算法过程来看,我们每次针对一个训练样例更新连接权和阈值,也就是说,上述算法的更新规则是基于单个的Ek推导而得。
如果类似地推导出基于累积误差最小化得更新规则,就得到了累积误差逆传播算法。他在读取整个数据集D一遍后,才对参数进行更新
由于BP神经网络强大得表示能力,所以其经常遭遇过拟合。即训练误差持续降低,但测试误差却可能上升。有两种策略缓解BP网络得过拟合:
(1)早停:将数据分成训练集和测试集,训练集用来计算梯度、更新连接权和阈值,验证集用来估计误差,若训练集误差降低,但验证集误差升高,则停止训练,同时返回最小验证集误差的连接权和阈值。
(2)正则化:在误差目标函数中增加一个用于描述网络复杂度的部分,例如连接权和阈值的平方和。仍令Ek表示第k个训练样例上的误差,wi表示连接权和阈值,则误差目标函数为:
其中,在(0,1)中,用于对经验误差与网络复杂度这两项进行折中,常通过交叉验证法估计。
更多推荐
所有评论(0)