前言
神经网络的学习需要使用梯度下降法,而梯度下降法需要计算梯度。我们知道,计算梯度可以使用数值微分和误差反向传播算法,但数值微分计算速度慢,其计算精度会有极小的缺失,一般较少使用。使用误差反向传播算法则可以高效计算梯度,故其在深度学习是一个非常基础的知识,也是一个重要的理论。
1、计算图
计算图是描述计算的有向图,其中节点代表数学运算,箭头表示了节点的输入输出关系,箭头传递的数据可以标注在箭头旁。使用计算图来分析神经网络,有利于对误差反向传播过程的理解。
举一个简单例子,计算 f ( x , y ) = x y + 6 f(x,y)=xy+6 f(x,y)=xy+6的偏导,我们可以计算出 ∂ f ∂ x = y \frac{\partial f}{\partial x}=y ∂x∂f=y, ∂ f ∂ y = x \frac{\partial f}{\partial y}=x ∂y∂f=x。下面我们利用计算图来分析此过程。
画出计算图如下图所示,其中紫色箭头代表的 f ( x , y ) f(x,y) f(x,y)的正向传播,即正向进行计算;蓝色箭头代表的 f ( x , y ) f(x,y) f(x,y)的反向传播,即反向求偏导。计算图中包含一个乘法节点和一个加法节点。
对上面的计算图分析,在正向传播时,我们从左往右观察,需注意紫色箭头和各个节点。可以非常明显看出,正向传播过程中,乘法节点将输入的 x x x和