1.12 梯度的数值逼近-深度学习第二课《改善深层神经网络》-Stanford吴恩达教授
梯度的数值逼近 (Numerical Approximation of Gradients)
在实施backprop时,有一个测试叫做梯度检验,它的作用是确保backprop正确实施。因为有时候,你虽然写下了这些方程式,却不能100%确定,执行backprop的所有细节都是正确的。为了逐渐实现梯度检验,我们首先说说如何计算梯度的数值逼近,下节课,我们将讨论如何在backprop中执行梯度检验,以确保backprop正确实施。
我们先画出函数 ,标记为 , ,先看一下 的值,假设 ,不增大 的值,而是在 右侧,设置一个 ,在 左侧,设置 。因此 , , ,跟以前一样, 的值为0.01,看下这个小三角形,计算高和宽的比值,就是更准确的梯度预估,选择 函数在 上的这个点,用这个较大三角形的高比上宽,技术上的原因我就不详细解释了,较大三角形的高宽比值更接近于 的导数,把右上角的三角形下移,好像有了两个三角形,右上角有一个,左下角有一个,我们通过这个绿色大三角形同时考虑了这两个小三角形。所以我们得到的不是一个单边公差而是一个双边公差。
我们写一下数据算式,图中绿色三角形上边的点的值是 ,下边的点是 ,这个三角形的高度是 ,这两个宽度都是 ,所以三角形的宽度是 ,高宽比值为 ,它的期望值接近 , 传入参数值, ,大家可以暂停视频,用计算器算算结果,结果应该是3.0001,而前面一张幻灯片上面是,当 时, ,所以这两个值非常接近,逼近误差为0.0001,前一张幻灯片,我们只考虑了单边公差,即从 到 之间的误差, 的值为3.0301,逼近误差是0.03,不是0.0001,所以使用双边误差的方法更逼近导数,其结果接近于3,现在我们更加确信, 可能是 导数的正确实现,在梯度检验和反向传播中使用该方法时,最终,它与运行两次单边公差的速度一样,实际上,我认为这种方法还是非常值得使用的,因为它的结果更准确。
这是一些你可能比较熟悉的微积分的理论,如果你不太明白我讲的这些理论也没关系,导数的官方定义是针对值很小的 ,导数的官方定义是 ,如果你上过微积分课,应该学过无穷尽的定义,我就不在这里讲了。
对于一个非零的 ,它的逼近误差可以写成 , 值非常小,如果 , ,大写符号 的含义是指逼近误差其实是一些常量乘以 ,但它的确是很准确的逼近误差,所以大写 的常量有时是1。然而,如果我们用另外一个公式逼近误差就是 ,当 小于1时,实际上 比 大很多,所以这个公式近似值远没有左边公式的准确,所以在执行梯度检验时,我们使用双边误差,即 ,而不使用单边公差,因为它不够准确。
如果你不理解上面两条结论,所有公式都在这儿,不用担心,如果你对微积分和数值逼近有所了解,这些信息已经足够多了,重点是要记住,双边误差公式的结果更准确,下节课我们做梯度检验时就会用到这个方法。
今天我们讲了如何使用双边误差来判断别人给你的函数 ,是否正确实现了函数 的偏导,现在我们可以使用这个方法来检验反向传播是否得以正确实施,如果不正确,它可能有bug需要你来解决。