11.3 学习与训练

一般而言,在联结网络中的学习(或“训练”)是有着清楚的应用限制的。网络的整体结构并不会受影响(特例见下),激活传递规则也不受影响,对单元和矢量的解释也如此。基本上,“经验”产生的影响是使连接权值发生变化。305虽然如此,还是需要注意某些权值的改变仍可看作其结构发生了改变。例如,如果某一权值设定为0,它的功能就等同于没有连接。

(1)根据训练所使用的范型(paradigm)分类学习程序(参见Rumelhart and Zipser,1986:161):

规则检测器(Regularity detector):在这种范型中,存在着一种刺激样式种群,每种刺激样式均有出现的几率。系统需要发现那种种群刺激样式在统计学上的显著特征。因为并没有预先设定样式的分类方法,因此系统需要形成它自己的对于输入刺激的特征表征,采集到种群刺激最显著的特征。

自动联结器(Auto associator):在这种范型中,一组样式重复出现,系统需要将这些样式储存。之后,如果原始样式中的某部分或一个与原始样式相似的样式出现,系统可通过完备样式程序重新获得原始样式。

样式联结器(pattern associator):自动联结器范型的一种变型。样式组对重复出现。306系统能够学习当组对中的一个出现,也会将组对中的另一个呈现出来。

分类范型(Classification paradigm):分类范型可看作是基于前面的范型而提出的一种新的范型。在这种范型中,系统能够按照一套固定的分类标准对刺激样式予以分类。在训练环节中,刺激样式以及刺激所属类别呈现给系统,目标是让系统学会正确的刺激分类方式。从而如果以后出现了一种特殊刺激或者有些细微歪曲的刺激,系统也能够正确地给予分类。感知器就是这种范型的早期例子。

(2)另一个学习程序的分类方法,是根据它们是否使用了一个“老师”——如果是,称为“监督学习”;如果没有,则称为“无监督学习”。处于两者之间的是“强制学习”,系统直接操作输入刺激的内容,而不是根据输出调节权值。我们主要关注监督学习,但首先大致了解一下无监督学习。

无监督学习

在无监督学习中,网络并没有通过训练而要近似接近的输出目标。一种已受到充分研究的形式是“竞争学习”。竞争学习在种群刺激中,通过对显著样式形成内部表征检测刺激规则。竞争学习网络将单元层按等级排列为不同层次,层次之间存在兴奋作用,而抑制作用则发生在每层单元束内部。随着系统的学习,一些单元开始对相同的刺激产生反应,而不同的刺激也有不同的单元与之对应。

监督学习

监督学习需要给网络某一序列学习对,一个学习对包括一个输入矢量和一个目标矢量。输入矢量是应用矢量,网络基于输入矢量计算输出矢量。训练算法将实际输出与目标输出进行比较,然后根据一些具体规则调整相关的连接权值。不同的学习程序使用不同的规则。

赫伯学习

我们曾在第3章提到,赫伯(1949)提出了一个非常重要的观点,认为当两个相连接的神经元同时兴奋时,它们之间的连接强度会增加[1]。这就产生了两个问题:其一,将这种观点应用于学习或训练的网络,它属于监督学习还是无监督学习呢?其二,连接强度会增加多少,受什么决定?对于第一个问题,当涉及任意两个单元时,就像赫伯说的,连接“权值”会有所调整但没有“监督”。但以简单联结器为例,第二个(B)“细胞”可能就是输出节点,因为权值的变化依赖它的输出,所以调整与它的连接就可有效地进行“监督”。因此对于这种网络,说它不属于“监督”网络,是值得商榷的。我们把赫伯学习看作是一种特殊的监督学习。对于第二个问题,人们已经提出了很多观点,可使这个问题变得更为精确。我们将采纳如下的观点(参见Bechtel and Abrahamsen,1991:48ff,72ff):权值的变化量等于第一个单元的激活值乘以第二个单元的激活值,再乘以学习速率(系统权值改变的速度)。在简单网络中,如我们前面介绍的,第一个单元是输入单元,第二个单元是输出单元。通常学习速率是个分数,输入单元的个数为分母,1为分子。因此可将赫伯学习规则概括如下:

(h)

(1)计算输入单元激活值和与其连接的输出单元的目标激活值,以及学习速率(1/输入单元个数)的乘积。

(2)将(1)的计算结果与先前的连接权值相加。

(3)所得结果即为新的连接权值。

以某一简单网络为例。如有两组输入矢量,为能够使它们有所区分,设其中一组的输出结果为1,另一组为0。为了加深理解,我们假设第一组输出为女性面孔代码,第二组是男性面孔代码。

女性组(输出=1)

矢量1:〈1,-1,-1,1〉

矢量2:〈1,1,1,1〉

男性组(输出=0)

矢量3:〈1,-1,1,-1〉

矢量4:〈-1,-1,1,1〉

我们能不能训练这个“面孔网络”使它能够识别这两组脸型呢?训练网络就是要调整它的连接强度,使之能够当输入女性面孔矢量,网络输出为1,输入男性面孔矢量,网络输出为0。每个矢量都有4个连接权值要考虑,根据(h),必须通过下面两个步骤调整每个连接:(a)首先计算输入激活值(输入矢量)与期望输出激活值(女性为1,男性为0)以及学习速率(1/输入单元的个数=1/4=0.25)的乘积;(b)然后将这个值与先前连接权值相加——就是新的权值。

矢量1

我们首先以矢量1,即第一个女性矢量,训练第一个连接A-E。目标是希望网络能够学习当输入矢量1:〈1,-1,-1,1〉时,其输出为1。

(应用h)

(i)计算输入单元A的激活值,和与其相连接的输出单元E的激活值,以及学习速率(1/4)的乘积。输入单元A从矢量1中获得1的激活值,与其相连接的输出单元E目标获得激活值1,学习速率是0.25,因而结果为1×1×0.25=0.25。

(ii)将0.25与先前的连接权值0相加。

(iii)得到新的连接权值:0+0.25=0.25。

310因此,对面孔网络矢量1的训练结果,是指派了第一个连接的权值0.25。对其他连接重复相同的计算得到:

连接 旧权值 新权值

A-E: 1×1×0.25+0= 0.25

B-E:-1×1×0.25+0=-0.25

C-E:-1×1×0.25+0=-0.25

D-E: 1×1×0.25+0=0.25

这样面孔网络就对矢量1进行了训练。

矢量2

用同样的方法以矢量2训练面孔网络。这里唯一不同是步骤(b),此时的先前连接权值是从学习矢量1获得的。我们知道,训练目标是使网络学习输入矢量2:〈1,1,1,1〉时,输出为1,311学习速率相同(0.25)。所以我们自然会想到,矢量2训练结果的不同在于加或减0.25的不同。正是如此,首先计算第一个权值进行验证。

(应用h)

(i)计算输入单元A激活值和与其连接的输出单元E的激活值,以及学习速率(1/4)的乘积。输入单元A从矢量2中获得1的激活值,与之连接的输出单元E目标获得激活值1,学习速率是0.25。因而结果是为1×1×0.25=0.25。

(ii)将(i)的计算结果与先前的连接权值0.25相加。

(iii)得到新的联结权值:0.25+0.25=0.5。

所以面孔网络矢量2的训练结果分配给第一个连接的权值为0.5。对余下的连接重复相同的计算得到:

连接 旧权值 新权值

A-E: 1×1×0.25=0.25+0.25 =0.5

B-E:1×1×0.25=0.25+-0.25=0

C-E:1×1×0.25=0.25+-0.25=0

D-E:1×1×0.25=0.25+0.25=0.5

这样面孔网络就对矢量2进行了训练。

矢量3和矢量4

现在我们对男性面孔矢量3和矢量4训练网络。这就显得非常简单,注意到输出单元的目标激活值在两个矢量中都为0,312这就意味着这两个矢量都没有变化。因为运用(h),将目标输出与输入以及学习速率相乘结果为0,任何数字与0相乘的结果都为0。因此增量为0,先前的权值维持不变——这就是面孔网络训练第二组矢量的最终结果了。第一个训练循环至此结束。

计算

现在我们来看看所受训练的网络能够做什么——它能够识别男性和女性矢量吗?

矢量2

首先看一下当输入第二个女性矢量时它的输出。矢量2:〈1,1,1,1〉,运用(h)我们得到群收之和:1×0.5+1×0+1×0+1×0.5=1,正确。在一个训练循环后,面孔网络已经能够正确地将矢量2归类于1——女性。

矢量4

接下来看一下当输入一个男性矢量时它的输出。矢量4:〈-1,-1,1,1〉,运用(h)我们得到群收之和:-1×0.5+-1×0+1×0+1×0.5=0,正确。在一个训练循环后,面孔网络正确地将矢量4归类于0——男性。

练习5 证明网络能够正确地归类矢量1和矢量3。

技术性补充 在联结网络中,赫伯规则对于学习矢量有哪些限制?遵循赫伯规则训练的线性联结器,只能学习正交矢量才不会出现错误。正如我们在上一个技术性补充中所讲的,只有两个矢量的内乘积为0时才为正交矢量。也就是说,将正交矢量相乘,然后加和乘积,会得到结果0。如果试着教线性联结器一些新的非正交矢量,它的性能将会降低——出现种种错误。

Delta学习

在赫伯学习中,权值可看作输入激活值与目标输出激活值(还包括学习速率,但学习速率对于网络来说是不变的)的函数。但网络的实际输出与网络的目标结果之间,可能出现的误差并没有得到反馈,没有利用这种误差产生有益的作用。误差即目标输出激活值与实际输出激活值之间的差值:

(E)

误差=目标激活值-实际激活值(输出单元)

Delta学习即利用误差信息,当输出单元的目标结果是兴奋,但实际得出的却是抑制时,提高连接权值;当输出单元的目标结果是兴奋,但实际得出的却是兴奋时,降低连接权值;当权值正好合适(符合期望结果),不作变化。Delta学习的非公式规则如下:

(D)

(1)计算误差(E)。

(2)求积:输入值×误差×学习速率。

(3)将(2)与先前权值相加。

(4)结果即为连接新权值。

将这种学习程序应用于面孔网络,使用如下的输入矢量和目标输出值:

输入矢量 输出

V1:〈1,-1,1,-1〉 1

V2:〈1,1,1,1〉1

V3:〈1,1,1,-1〉-1

V4:〈1,-1,-1,1〉-1

开始时,网络的所有连接权值都为0。

测试1(矢量1)

与前面一样,首先计算当网络学习矢量V1与目标输出值1的连接时,第一个连接权值A-E的变化。对这个连接,应用(D)得出:

(应用D)

(i)计算误差(E),即输出单元的目标结果与实际结果之差。目标得出1,但它的实际结果是多少呢?再次使用(N):输出是各个输入值与权值乘积之和,314但此时所有权值都是0,所以积是0,和也为0——实际产生结果为0。因此误差就是1与0之差。

(ii)求输入激活值与误差以及学习速率之积。输入激活值为1,误差是1,学习速率是0.25,所以它们的乘积为1×1×0.25=0.25。

(iii)与先前权值相加。原来权值为0,所以结果为0+0.25=0.25。

(iv)0.25就是新的连接权值。

这样我们就得出了连接A-E的新权值0.25,对剩下的连接作相同的计算。显然,除了正负值有所变化外(B-E和D-E是“-”),所有的数值都是一样的。所以,矢量V1新权值的计算结果为:

A-E:0.25

B-E:-0.25

C-E:0.25

D-E:-0.25

练习 6 证明后三个连接的结果。

测试2(矢量2)

运用(D)以同样的方法来计算矢量2:〈1,1,1,1〉。从第一个连接A-E开始:

(应用D)

(i)计算误差,即输出单元的目标结果与实际结果之差。目标得出1,实际结果是什么呢?需要再次运用(N):输出是各个输入值与权值乘积之和:1×0.25+1×-0.25+1×0.25+1×-0.25=0.25+-0.25+0.25+-0.25=0。因而实际输出为0。所以误差就是1-0,即1。

(ii)求输入激活作用值与误差、学习速率的乘积。输入激活作用值是1,误差1,学习速率0.25,所以它们的乘积为1×1×0.25=0.25。

(iii)与先前权值相加。先前权值为0.25,因而结果为0.5。

(iv)新连接权值为0.5。

对剩下的连接进行同样的计算,得出:

A-E:0.5

B-E:0

C-E:0.5

D-E:0

练习7 证明后面三个连接新权值的结果。

测试3(矢量3)

对第三个矢量进行同样的计算,得到新权值(注意目标输出值在这里是-1)为:

A-E:0

B-E:-0.5

C-E:0

D-E:0.5

测试4(矢量4)

对矢量4进行同样的计算,得到的循环一次后的连接权值(注意目标输出值是-1):

一次循环后的权值

A-E:-0.5

B-E:0

C-E:0.5

D-E:0

练习 8 证明矢量3和矢量4的计算。

我们已经使网络完成了矢量V1-4的训练,也就是一次训练循环(一次训练循环为完成所有输入-输出对的测试)。还可以使网络进行多次训练循环。例如,进行了20次训练循环后所具有的网络权值。

计算

可以证明这个网络对这四个矢量都会产生正确的输出。如矢量3 〈1,1,1,-1〉,目标结果是-1,能够得到-1吗?

(应用N)

群收之和=1×-1+1×-1+1×2+-1×1=-1+-1+2+-1=-1。

网络对矢量3的输入得出与目标值相同的结果。

练习 9 证明网络对矢量1、矢量2和矢量4的正确性。

技术性补充 Delta学习怎样克服赫伯学习的不足呢?如果矢量不是正交的,而是线性分离的,那么赫伯规则将无法学习,但Delta规则却可以。即使矢量不是线性分离的,Delta规则仍起作用:它可将误差降低到最小。Delta学习的局限是什么呢?Delta规则只能应用于线性独立的矢量,而不能学习非线性分离的矢量。而加入隐单元层就不需要如此了,这时具有隐单元层的网络应用广义Delta规则(具有隐单元层的Delta网络是广义的)就非常必要了。

反向传递(广义delta规则)

如果存在隐单元层,Delta规则将无法工作,因为它必须直接连接着输入和输出,这时就需要引用广义Delta规则了。广义Delta规则也被称作误差反向传递(或者是“反向传递”)。对于输出单元而言,反向传递与Delta规则相似——隐层单元与输出层单元之间连接权值的变化与输出单元误差成正比。但是输入单元与隐层单元之间的连接,由于没有目标激活值,因此也就没有Delta规则可以使用的误差信号。那么怎么能计算隐层单元的误差从而降低误差呢?这正是反向传递所要做的:它可以将误差总和通过网络反向传递。隐层单元误差与输出单元误差以及隐层单元与输出单元的连接强度成正比。这正是一种确定低层次单元对输出层的误差影响的方法(参考推荐读物)。

技术性补充 在第4章中介绍了XOR问题是解决非线性分离难题的一个较好示例。正如我们所看到的,XOR问题在二维空间内不能被一条直线分割开,这是由于两个完全不同的输入〈0,0〉和〈1,1〉,需要得出相同的输出,也就是0。通过引进隐单元层则能解决这个问题。隐单元层能够实现输入结构的转换,使两个完全不同的输入转化成为相同的样式,如〈0,0〉。隐单元层网络的这种特征,能够把输入空间转换成线性分离的问题,这在很多认知任务中被证明是非常重要的。