《神经网络和深度学习》系列文章十七:为什么说反向传播算法很高效?
出处: Michael Nielsen的《Neural Network and Deep Learning》,点击末尾“阅读原文”即可查看英文原文。
本节译者:哈工大SCIR硕士生 李盛秋
声明:如需转载请联系wechat_editors@ir.hit.edu.cn,未经授权不得转载。
使用神经网络识别手写数字
反向传播算法是如何工作的
热身:一个基于矩阵的快速计算神经网络输出的方法
关于损失函数的两个假设
Hadamard积
反向传播背后的四个基本等式
四个基本等式的证明(选读)
反向传播算法
反向传播算法代码
为什么说反向传播算法很高效
反向传播:整体描述
改进神经网络的学习方法
神经网络能够计算任意函数的视觉证明
为什么深度神经网络的训练是困难的
深度学习
为什么说反向传播算法很高效?要回答这个问题,让我们来考虑另一种计算梯度的方式。设想现在是神经网络研究的早期阶段,大概是在上世纪50年代或60年代左右,并且你是第一个想到使用梯度下降方法来进行训练的人!但是要实现这个想法,你需要一种计算代价函数梯度的方式。你回想了你目前关于演算的知识,决定试一下是否能用链式法则来计算梯度。但是琢磨了一会之后发现,代数计算看起来非常复杂,你也因此有些失落。所以你尝试着寻找另一种方法。你决定把代价单独当做权重的函数
其中
这种方式看起来很不错。它的概念很简单,实现起来也很简单,只需要几行代码就可以。当然了,他看起来要比使用链式法则来计算梯度靠谱多了!
然而遗憾的是,虽然这种方式看起来很美好,但当用代码实现之后就会发现,它实在是太慢了。要理解其中的原因的话,设想在我们的神经网络中有一百万个权重,对于每一个不同的权重
反向传播的优点在于它仅利用一次前向传播就可以同时计算出所有的偏导
这种加速方式在1986年首次被人们所重视,极大地拓展了神经网络能够适用的范围,也导致了神经网络被大量的应用。当然了,反向传播算法也不是万能的。在80年代后期,人们终于触及到了性能瓶颈,在利用反向传播算法来训练深度神经网络(即具有很多隐含层的网络)时尤为明显。在本书后面的章节中我们将会看到现代计算机以及一些非常聪明的新想法是如何让反向传播能够用来训练深度神经网络的。
下一节我们将介绍“反向传播:整体描述”,敬请关注!
“哈工大SCIR”公众号
编辑部:郭江,李家琦,徐俊,李忠阳,俞霖霖
本期编辑:俞霖霖
长按下图并点击 “识别图中二维码”,即可关注哈尔滨工业大学社会计算与信息检索研究中心微信公共号:”哈工大SCIR” 。点击左下角“阅读原文”,即可查看原文。