
第5章
误差反向传播法
上一章中,我们介绍了神经网络的学习,并通过数值微分计算了神经网
络的权重参数的梯度(严格来说,是损失函数关于权重参数的梯度)。数值微
分虽然简单,也容易实现,但缺点是计算上比较费时间。本章我们将学习一
个能够高效计算权重参数的梯度的方法——误差反向传播法。
要正确理解误差反向传播法,我个人认为有两种方法:一种是基于数学式;
另一种是基于计算图(
computational graph
)。前者是比较常见的方法,机器
学习相关的图书中多数都是以数学式为中心展开论述的。因为这种方法严密
且简洁,所以确实非常合理,但如果一上来就围绕数学式进行探讨,会忽略
一些根本的东西,止步于式子的罗列。因此,本章希望大家通过计算图,直
观地理解误差反向传播法。然后,再结合实际的代码加深理解,相信大家一
定会有种“原来如此!”的感觉。
此外,通过计算图来理解误差反向传播法这个想法,参考了
Andrej
Karpathy
的博客
[4]
和他与
Fei-Fei Li
教授负责的斯坦福大学的深度学习课程
CS231n
[5]
。
5.1
计算图
计算图将计算过程用图形表示出来。这里说的图形是数据结构图,通
过多个节点和边表示(连接节点的直线称为“边”)。为了让大家熟悉计算图,