《深度学习:卷积神经网络从入门到精通》——2.5.2 逐层反向传播算法

举报
华章计算机 发表于 2019/06/05 23:35:15 2019/06/05
【摘要】 本书摘自《深度学习:卷积神经网络从入门到精通》——书中第2章,第2.5.2节,作者是李玉鑑、张婷、单传辉、刘兆英等。

2.5.2 逐层反向传播算法

虽然通用反向传播算法在理论上适用于任何前馈神经网络,但是对于多层感知器来说,还可以设计出更加简洁实用的逐层反向传播算法[10]。

多层感知器由一个输入层、若干隐含层和一个输出层组成,如图2.2所示。

image.png

不妨设输入层的维数是m,输入向量表示为

x =(x1, x2, …, xm)T∈Rm。第k个隐含层包含nk个神经元(k = 1, 

2, …, R),相应的隐含层向量表示为hk =(hk, 1, hk, 2, …, hk, nk)T

∈Rnk。输出层包含c个神经元,输出向量表示为o =(o1, o2, …, oc)T∈Rc。输入层与第1个隐含层之间的权值矩阵用?表示,第k-1个隐含层与第k个隐含层之间的权值矩阵用?(1 < k≤R)表示,第R个隐含层与输出层之间的权值矩阵用??表示。那么,这个多层感知器的各层神经元激活输出可以计算如下:

(2.56)

其中,b1、bk和br + 1bR + 1是各层的偏置;σh1、σhk和σo是各层的逐元向量函数,一般都取为逐元sigmoid函数。

算法2.3 逐层反向传播算法


为了对多层感知器中的权值和偏置进行学习,需要给定一组训练样本。假定共有L个训练样本(xl, yl)(1≤l≤L),输入是xl =(xl1, xl2, …, xlm)T,期望输出是yl =(yl1, yl2, …, ylc)T,实际输出是ol =(ol1, ol2, …, olc)T。把优化的目标函数选为平方误差:

(2.57)

令。如果定义网络各层关于第l个样本的反传误差信号或灵敏度为

(2.58)

那么这些反传误差信号可以递归计算如下:

???(2.59)

(2.60)

综上所述,逐层反向传播算法可以总结为算法2.3。另外,如果采用受限波耳兹曼机对对多层感知器的权值和偏置进行预训练代替随机初始化,还可以进一步提高逐层反向传播算法的学习训练效果[32]。

此外,学习训练过程优化的目标函数不一定是平方误差,还可以是其他函数,比如交叉熵:

(2.61)

这时,相应的逐层反向传播算法只需把??的计算公式修改为

(2.62)

最后,需要指出的是,多层感知器在训练完成之后,常常再被用软最大函数转换成伪概率输出。虽然很多文献和代码都把这种软最大函数转换称为软最大输出,但从理论上严格地说,软最大输出应该是把输出层的计算定义为

(2.63)

如果保持其他部分不变,但采用式(2.63)计算网络的输出,那么在采用平方误差(2.57)作为目标函数时,?的计算公式应改为

(2.64)

而在采用交叉熵(2.61)作为目标函数时,?的计算公式应改为

(2.65)

其中,“1”表示一个分量全是1的向量,“./”表示向量的对应分量相除。

如果每个样本的期望输出yl仅有一个分量,为yljl = 1,那么还可以选用退化交叉熵作为目标函数,即

(2.66)

同时,的计算公式应修正为

(2.67)

image.png

image.png

image.png

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。