反向传播算法是如何工作的

在上一章中我们学习了神经网络是如何利用梯度下降算法来学习权重(weights)和偏置(biases)的。然而,在我们的解释中跳过了一个细节:我们没有讨论如何计算代价函数的梯度。这真是一个巨大的跳跃!在本章中我会介绍一个快速计算梯度的算法,就是广为人知的反向传播算法(backpropagation)。

反向传播算法最早于上世纪70年代被提出,但是直到1986年,由David Rumelhart, Geoffrey Hinton, 和Ronald Williams联合发表了一篇著名论文之后,人们才完全认识到这个算法的重要性。这篇论文介绍了几种神经网络,在这些网络的学习中,反向传播算法比之前提出的方法都要快。这使得以前用神经网络不可解的一些问题,现在可以通过神经网络来解决。今天,反向传播算法是神经网络学习过程中的关键(workhorse)所在。

比起其他章节,本章涉及到更多的数学内容。如果你对数学不那么感兴趣,你可以选择跳过本章,把反向传播当做一个黑盒,忽略其中的细节。为什么要花时间来学习那些细节呢?

因为,如果你想要理解神经网络,你必须了解其中的细节。反向传播算法的核心是一个偏微分表达式,表示代价函数对网络中的权重(或者偏置)求偏导。这个式子告诉我们,当我们改变权重和偏置的时候,代价函数的值变化地有多快。尽管这个式子有点复杂,这个式子也是很漂亮的,它的每一个部分都有自然的,直觉上的解释。因此,反向传播不仅仅是一种快速的学习算法,它能够让我们详细深入地了解改变权重和偏置的值是如何改变整个网络的行为的。这是非常值得深入学习的。

尽管如此,你依然可以略读本章节,或者直接跳到下一章节。就算你把反向传播当做一个黑盒,本书的其它内容也是能够容易理解的。当然,在本书后续部分中我会提到本章的一些结论。但是,尽管在那些地方你不能跟上所有的推导,你依然能够理解主要的结论。

原文: https://hit-scir.gitbooks.io/neural-networks-and-deep-learning-zh_cn/content/chap2/c2s0.html