4.4_数值微分存在的问题
4.4 数值微分存在的问题
数值微分的结果包含误差。在多数情况下,这个误差非常小,但在一些情况下,计算产生的误差可能会很大。

数值微分的结果中容易包含误差的主要原因是“精度丢失”。中心差分近似等求差值的方法计算的是相同量级数值之间的差,但由于精度丢失,计算结果中会出现有效位数减少的情况。以有效位数为4的情况为例,在计算两个相近的值之间的差时,比如 ,其结果为0.001,有效位数只有1位。本来可能是 之类的结果,但由于精度丢失,结果变成0.001。同样的情况也会发生在数值微分的差值计算中,精度丢失使结果更容易包含误差。
数值微分更严重的问题是计算成本高。具体来说,在求多个变量的导数时,程序需要计算每个变量的导数。有些神经网络包含几百万个以上的变量(参数),通过数值微分对这么多的变量求导是不现实的。这时,反向传播就派上了用场。从下一个步骤开始,笔者将介绍反向传播。
另外,数值微分可以轻松实现,并能计算出大体正确的数值。而反向传播是一种复杂的算法,实现时容易出现bug。我们可以使用数值微分的结果检查反向传播的实现是否正确。这种做法叫作梯度检验(gradient checking),它是一种将数值微分的结果与反向传播的结果进行比较的方法。步骤10实现了梯度检验。
步骤5
反向传播的理论知识
我们通过数值微分成功求出了导数。但是,数值微分在计算成本和精度方面存在问题。反向传播可以解决这两个问题。也就是说,反向传播不仅能高效地求导,还能帮助我们得到误差更小的值。本步骤只介绍反向传播的理论知识,不对其进行实现。从下一个步骤开始,我们再去实现反向传播。