神经网络:反向传播算法


 

使用反向传播算法,我们现在介绍最常用的神经模型。其广泛使用的原因在于任意近似任务的通用多功能性。该算法直接源于增量delta规则。与delta规则相反,它将非线性S形函数应用于输入的加权和作为其激活函数。此外,反向传播网络可以具有两层以上的神经元。该算法通过传奇的PDP集合[RM86]中的文章[RHR86]得知。

Ĵ

在图9.18中,示出了具有输入层,隐藏层和输出层的典型反向传播网络。由于电流输出值XP输出的

Ĵ

将层神经元与目标输出值tp进行比较,将它们彼此平行地绘制。除输入神经元外,所有神经元都按规则计算其当前值xj

 

xj = f

n i = 1

 

w ji x i

 

9.14

其中n是前一层中神经元的数量。我们使用sigmoid函数

 

1

图片

fx= 1 + e
x

类似于增量delta规则,权重与输出神经元上求和的二次误差函数的负梯度成比例地改变

 

1

Ew=

tp xp2

p

 

对于训练模式p

2 kk

ķ 输出

 

 

p w
ji

Ep


= – η w

 

为了导出学习规则,用上述表达式代替Ep。在表达式中,xk 由第246 页的(9.14
)替换。在等式中,下一个更深层的神经元的输出xi递归地发生,等等。通过链规则的多个应用(参见[RHR86][Zel94]),我们获得反向传播学习规则

 

图片

pwji = ηδpxp

 

 

p

δ Ĵ =

 

Ĵ

Ĵ

Ĵ

xp1 xp)(tp xp如果 j 是输出神经元,

Ĵ

Ĵ

ķ

xp1 xp

 

Ĵ

ķ

KJ

ΔPW

 

如果j是一个隐藏的神经元,

 

一世

Ĵ

Ĵ

这也表示为广义delta规则。对于所有神经元,从神经元i到神经元j改变体重wji的公式(参见第248 页的图9.19)包含了像Hebb规则一样的术语ηxpxp。新因子 1 xp创造了对称性

尝试,在Hebb规则中缺少神经元的激活01之间

PP

j 。对于输出神经元,因子t j x j负责权重变化

Ĵ

ķ

错误的部分原因。对于隐藏的神经元,神经元j的值δp是从下一个更高水平的神经元的所有变化δp递归计算的。

学习过程的整个执行情况如第 248 页的图 9.20 所示。

在计算训练示例的网络输出(前向传播)之后,计算近似误差。然后在向后传播期间使用它来改变从一层到另一层的向后重量。然后将整个过程应用于所有训练样本并重复,直到权重不再变化或达到时间限制。

图片

图片

图片

图片

对于所有q P P TrainingExamples

9.19 反向传播规则应用的神经元和权重的指定

 

 

图片图片

 

 

B ACK P ROPAGATIONTrainingExamplesη)将所有权重wj初始化为随机值Repeat

 

1. 
将查询向量q p 应用于输入层

2. 
前向传播

对于从第一个隐藏层向上的所有图层对于图层的每个神经元

计算激活 x = fwjixi

 

 

对于从最后一个向下的所有级别的权重对于每个权重wji

PP

 

直到w 收敛或达到时间限制

 

 

图片

wji = wji + ηδ Ĵ X

i = 1

Ĵ

ñ

4 向后传播

3 平方误差Epw )的计算

9.20 反向传播算法

 

如果我们构建一个至少有一个隐藏层的网络,就可以学习非线性映射。没有隐藏层,输出神经元不会比线性神经元更强大,尽管有S形函数。其原因是S形函数严格单调。对于仅使用线性函数作为激活函数的多层网络也是如此,例如身份函数。这是因为线性映射的链式执行在总体上是线性的。

就像感知器一样,如果我们使用变量sigmoid函数,那么可以表示的函数类也会被放大

1

图片

f x = 1 + e
x Θ

阈值Θ。这类似于Sect中所示的方式实现。8.2,其中激活总是具有值1并且连接到下一个最高级别的神经元的神经元被插入到输入层和每个隐藏层中。通常学习这些连接的权重并表示后继神经元的阈值Θ

 

图片

 

9.21 NETtalk网络文本映射到它的发音属性

 

0.    
NETtalk:网络倾向于说话

 

×=

×+×=

SejnowskiRosenberg1986年非常令人印象深刻地证明了反向传播能够执行[SR86]。他们构建了一个能够从文本文件中大声朗读英文文本的系统。图9.21 所示网络的体系结构由一个输入层组成,其中包含7 29 203个神经元,其中当前字母和前三个字母以及后续三个字母都被编码。对于这七个字母中的每一个,29个神经元被保留用于字符 a … z ,.。输入被映射到超过80个隐藏神经元的26个输出神经元上,每个神经元代表特定的音素。例如,父亲中的“a”发音为深,重音和中心。该网络接受了1000个单词的培训,这些单词是一个接一个地逐个随机应用的。对于每个字母,手动给出目标输出以用于其语调。为了将语调属性转换为实际声音,使用了语音合成系统DECtalk的一部分。通过完全互连,网络共包含203 80 80 26 18320个权重。

・・=

该系统使用VAX 780上的模拟器进行训练,所有单词约50个循环。因此,平均每个字大约5个字符,需要大约5 50 1000 250 000次反向传播算法。以大约每秒一个字符的速率,这意味着大约69小时的计算时间。开发人员观察到系统的许多属性与人类学习非常相似。起初,系统只能说不清楚或使用简单的单词。随着时间的推移,它继续改善,最终达到了95%的正确字母的正确性。

 

图片

 

9.22 JNNS中的NETtalk网络。在左边的窗口,从左侧右侧,我们看到7个月29日输入神经元,80隐藏,和26个输出神经元。由于它们的数量很大,因此从网络中省略了权重。右上图是显示误差平方随时间

 

对于神经网络的视觉实验,推荐使用Java神经网络模拟器JNNS [Zel94]。使用JNNS加载和训练的NETtalk网络如图 9.22 所示。

 

1.    
学习定理证明的启发式算法

 

Chap6,讨论了启发式搜索算法,如A 算法和IDA算法。为了显着缩小搜索空间,需要一个良好的启发式来实现这些算法。在Sect4.1证明了定理证明器搜索证据时爆炸搜索空间的问题。此问题是由每个步骤中的大量可能的推理步骤引起的。

我们现在尝试构建启发式证明控制模块,用于评估下一步的各种备选方案,然后选择具有最佳评级的备选方案。在解决方案的情况下,可用条款的评级可以通过一个函数来完成,该函数根据条款的某些属性(例如文字的数量,条款的复杂性等)计算每对resolv的值。能条款。在[ESS89SE90]中,使用反向传播为定理证明器SETHEO学习了这种启发式算法。在学习启发式,属性的同时

 

图片

 

9.23 具有成功路径的搜索树,其节点被评估为正,而负值为不成功的分支

 

current子句被保存为搜索期间在每个分支中找到的每个证据的正类的训练数据。在所有未导致证明的分支中,当前子句的属性被保存为负类的训练数据。这种具有成功路径和相应节点等级的树在图 9.23中勾画出来。

对这些数据进行了反向传播网络的训练,然后用于评估证明方中的条款。对于每个子句,在输入神经元中计算,标准化和编码16个数字属性。该网络训练有25个隐藏神经元和一个输出神经元(正/负)。

结果表明,对于困难问题,尝试推断的次数可以减少许多个数量级,最终将计算时间从几小时缩短到几秒。因此,有可能证明在没有启发式的情况下无法实现的定理。

 

2.    
问题和改进

反向传播现在已有25年的历史,并已在各种应用中证明了自己,例如模式识别和机器人技术。但是,它的应用有时会出现问题。特别是当网络有数千个权重并且需要学习很多训练数据时,会出现两个问题:

网络通常会收敛到误差函数的局部最小值。此外,反向传播通常非常缓慢地收敛。这意味着需要对所有训练模式进行多次迭代。已经提出许多改进来解决这些问题。正如在Sect。中所提到的。9.4.3 ,通过缓慢降低学习速率η 可以避免振荡,如第 244 页的图 9.15 所示。

减少振荡的另一种方法是在更新权重时使用动量项,这确保了梯度下降的方向从一个步骤到下一个步骤不会发生太大的变化。这里,对于在时间t的当前重量变化pwjit,增加了来自先前步骤的变化pwjit 1 )的另一部分。然后学习规则变为

 

Ĵ

一世

pwjit= ηδpxp + γpwjit 1

图片

9.24通过使用动量项来平滑突然的方向变化。没有动量项()的迭代与动量项的迭代()相比

 

参数γ 01之间。这在图9.24中的二维示例中描述。

另一个想法是最小化线性误差函数而不是平方误差函数,这减少了缓慢收敛到平坦谷的问题。

反向传播中的梯度下降最终基于误差函数的线性近似。斯科特法尔曼(Scott Fahlmann)创建了一种算法,该算法使用二次近似误差函数,从而实现更快的收敛。

通过对所提及的改进和其他启发式技巧的巧妙统一,Martin Riedmiller使用RProp算法[RB93]进一步优化。RProp取代了反向传播,是最先进的前馈神经网络近似算法。在Sect8.8我们将RProp应用于阑尾炎数据的分类,并实现了与学习决策树大小相同的错误。

 

图片


 


ETC注销ETC充值ETC客服ETC扣费查询


ETC发行合作

发表回复