首页 » python机器学习 » python机器学习全文在线阅读

《python机器学习》12.4 建立对反向传播的直观认识

关灯直达底部

反向传播算法在30年前被重新提出并得到推广,它目前仍是高效训练人工神经网络最为广泛的算法之一。本节我们将对此算法进行更为直观的总结,并对它的工作方式有个全面的了解。

从本质上讲,反向传播仅仅是一种高效地计算复杂代价函数导数的方法。我们的目标是使用这些导数学习权重系数,以对多层人工神经网络进行参数化。神经网络参数化过程中面临的一个挑战就是:我们通常要处理高维特征空间中的数量众多的权重系数。与前面章节中介绍的代价函数不同,神经网络代价函数的误差平面并非是平滑凸曲面。在此高维代价函数的平面上有很多凹陷(局部最优值)和凸起,我们必须克服此问题以找到代价函数的全局最优解。

读者可能会想起微积分基础课程中的链式法则。链式法则是对复杂嵌套函数求导的一种方法,例如,f(g(x))=y可分解为基本的组成部分:

基于代数,已找到一系列方法来高效解决此类问题,这些方法也称作自动微分。如果读者有兴趣了解更多关于自动微分在机器学习中的应用,建议参考如下资源:A.G.Baydin and B.A.Pearlmutter.Automatic Differentiation of Algorithms for Machine Learning.arXiv preprint arXiv:1404.7456,2014,此文献可通过访问arXiv网站(http://arxiv.org/pdf/1404.7456.pdf)免费获取。

自动微分包含两种模式,分别为:正向积分模式和反向积分模式,反向传播仅为反向模式自动微分的一个特例。关键在于:由于需要将每一层的大型矩阵(雅可比矩阵,Jacobians)与一向量相乘以获得输出,因此在正向模式中使用链式法则的计算成本是非常巨大的。反向模式的诀窍在于:我们从右边开始,将一个矩阵与一个向量相乘,得到的结果是另一个向量,再将其与下一矩阵相乘,如此反复。矩阵-向量的计算成本要远小于矩阵-矩阵相乘的成本,这也是反向传播成为神经网络训练中最常用算法的原因之一。