现在的位置: 首页 > 综合 > 正文

多层神经网络

2012年12月25日 ⁄ 综合 ⁄ 共 3044字 ⁄ 字号 评论关闭

多层神经网络寻求的是一种在训练线性判别函数的同时学习其非线性程度的方法;决定非线性映射的参数的学习与控制线性判别函数的参数的学习同时进行。

两层网络只能实现一个线性判决边界,如果给出足够数量的隐单元,三层及更多层网络就可以实现任意的判决边界。各判决区不必是凸的或是单联通的。

多层神经网络的优点是算法简单,运行非线性函数的具体形式可以通过训练样本获得。

训练多层网络的方法即反向传播算法(BP算法),是基于误差的梯度下降准则(LMS算法)的一种自然延伸。

神经网络是一种可以适应复杂模型的非常灵活的启发式的统计模式识别技术。

反向传播有一些启发式技巧,我们可以对输入值的范围、初始权值、期望输出等参数值做出明智的选择。

网络拓扑在神经网络分类中起着重要作用。通过对隐含层的数目节点单元个数反馈节点的个数等选择,可将对问题非正式或启发式的知识嵌入到网络结构中。因此,网络拓扑的设置也是一种启发式的选择。

设置网络拓扑来选择模型、通过反向传播算法来估计参数,是测试各种可选模型的方法。

神经网络技术应用问题涉及到正则化,即选择或调整网络的复杂程度。

1  前馈运算和分类

如图的三层神经网络由一个输入层、一个隐含层、一个输出层组成。它们由修正的权值互连。除了连接输入单元,每个单元还连接着一个偏置(bias)。在模式识别里,输入单元提供特征量,输出单元激发的信号成为用来分类的判别函数的值。

隐含单元对各个输入进行加权求和运算的“净激活”:

每个隐含层单元激发出一个输出分量,这个分量是它激活的非线性函数,即

输出单元的净激活:

输出单元对net的非线性函数是:

例如,激活函数可以是符号函数,但一般要求激活函数是连续可微的。也允许输出层的激活函数同隐含层的不一样,甚至每个单元都有不同的激活函数。

只有两种类别时,一般只采用单个输出单元,通过输出值得符号来标识一个输入模式。有多个输出单元时,计算每个判别函数,并通过使判别函数最大来将输入信号分类。

多层网络的表达能力:任何从输入到输出的连续映射函数都可以用一个三层非线性网络实现,条件是给出足够数量的隐单元nH、适当的非线性函数和权值。

2  反向传播算法

神经网络的关键问题是根据训练样本和期望输出来设置合适的权值。

反向传播是最简单也最一般的方法,是线性LMS算法的自然延伸,更具启发价值。

反向传播的作用在于可以对每一个隐单元计算有效误差,并由此推导出一个输入层到隐含层权值的学习规则。

网络由两类基本运算模式:前馈学习。前馈运算包括提供一个模式给输入单元、在网络间传递信号,然后在输入单元得到输出。对于有监督的学习,包括了提供一个输入模式,并改变网络参数使实际输出更加接近期望教师信号或目标值。

上图的三层网络中:在前馈操作里,一个d维的输入模式x被提供给输入层,每个输入单元发送它所对应的分量xi。nH个隐单元中的每一个都计算它的净激活能netj,它是输入层信号和隐单元权值wji的内积。隐单元的输出是yj=f(netj),f()是一个非线性转换函数,这里是sigmoid。c个输出单元的工作原理类似于隐含层单元的,计算净激活能netk,即隐单元信号和输出单元权值的内积。网络的最终发送信号zk=f(netk)作为分类用的判别函数。网络训练过程中,这些输出信号和一个引导向量或目标向量t作比较,任何差值都用于整个网络的权值训练。

任一差值对应一误差。该误差或准则函数是权值的某种标量函数,它在网络输出与期望输出匹配时达到最小。权值向着可以减小误差值的方向调整。

考虑一个模式的训练误差,定义为输出端的期望输出值tk和实际输出值zk的差的平方和。即损失函数

方向传播学习规则是基于梯度下降法的。权值首先被初始化为随机值,然后向误差减小的方向调整。

其中n是学习率,仅表示权值的相对变化尺度。

迭代算法在第m次迭代时取一个权向量并将它更新为

考虑第一个隐含层到输出层的权值wkj。由于误差并不是明显决定于wjk,我们必须使用链式微分法则:

其中单元k的敏感度定义为

敏感度描述总误差怎样随着单元的激发而变化

由输出单元净激活公式可推得:

综上所述,可得隐含层到输出层的权值更新或学习规则

考虑输入层到隐含层的权值学习规则

反向传播算法,更确切的说“误差反向传播”算法。在训练过程中一个误差(敏感度)必须从输出层传播回隐含层,以实现输入层到隐含层的权值学习。本质上,反向传播只是“分层模型”里的梯度下降法。在分层模型里对连续函数执行链式法则可以计算准则函数对所有模型权值的导数。

初始权值的设置

如果权值全部为0,反向传播误差也将为0,输入层到输出层的权值将不变。故不能设为0,一般采用随机初始值。

 

3  训练协议及学习曲线

三种:随机训练、成批训练、在线训练

随机训练是指模式是随机从训练集中取出的,网络权值也根据不同模式进行更新。

成批训练是指在每回合训练时将全部模式送入网络中训练,直到总的误差小于预设值为止。

在线训练是指每种模式只提供一次,不需要存储器来保存模式。

训练误差开始时很高,随着学习的进展,误差越来越小。训练误差的渐近值由贝叶斯误差、训练数据的数量、网络的表达能力(如权值的个数)共同决定。

使用验证集,在验证集上的误差取得极小值时停止训练。

 

4 隐单元个数

隐单元个数一般根据前人设计的经验和自己进行试验来确定。

隐单元个数nH决定了网络的表达能力,从而决定了判决边界的复杂度。如果模式较易分开或线性可分,那么仅需要较少的隐单元;相反,如果模式是从具有较高分散性的复杂概率密度中抽取的,则需要更多的隐单元。

对于较大的nH,训练误差率可变得较小,这是因为网络具有较高的表达能力,可精细地调谐到特定的训练集上。但是,测试样本的误差率会过高,此即“过拟合”。另一极端是,如果隐单元过少,网络不具备足够的自由度以较好地拟合训练数据,测试误差率依然很高。对隐单元数目,需要寻找某折中值,以获得较低的测试误差率。

隐单元数决定了网络中总的权值数(可以看成自由度的个数),权值数不应该比总的训练点数n多。一个简单的经验规则是选取隐单元数,使得网络中的总权值数大致为n/10

经验公式:

1),其中,k为样本数,n1为隐单元数,当i>n1时,C=0;

2),其中,n1为隐单元数,n为输入单元数,m为输出单元数,a介于[1,10]之间的常数;

3)

根据经验公式确定隐单元数的范围,通过误差对比确定最佳的隐单元数。

5 权值初始化

权值初始化不能为0,否则学习过程将不可能开始。应该从均分布-~w<w<+~w中选取权值。如果~w选得太小,一个隐单元的网络激励将较小,因而只有线性模型将被实现。如果~w太大,隐单元可能在学习开始前就达到饱和。

一个隐单元可以接收d个输入单元的输入。平均起来,从方差为1.0的任意d个变量作为标准输入,通过这样的权值后的净激活为~wd^。净激活希望限制在-1<net<+1范围内,所以~w=1/d^。故输入权值应该选在-1/d^<w<+1/d^范围内。

6 学习率

学习率r<r(opt)时,可保证收敛,但训练速度太慢。如果r=r(opt),只需一步训练就可以找到最小误差。如果r(opt)<r<2r(opt),系统将震荡但仍然收敛。如果r>2r(opt),系统发散。

最优学习率为将J对w二次求导,然后再求倒数。

7 误差准则函数

上文中的平方误差准则是最常见的训练准则。

另一种很普遍的选择是交叉熵(cross entropy)。

还有一中准则函数基于闵可夫斯基误差。

参考资料

《模式分类》Richard O.Duda

抱歉!评论已关闭.