深度学习的实用层面 —— 1.12 梯度的数值逼近

在实施backprop的时候,有一个测试叫做梯度检验,它的作用是确保backprop正确实施。因为有时候,虽然写下了这些方程式,却不能100%确定,执行backprop的所有细节都是正确的。为了逐渐实现梯度检验,我们首先说说如何对计算梯度做数值逼近。
在这里插入图片描述
我们首先画出函数f,标记为 f ( θ ) f(\theta) f(θ) f ( θ ) = θ 3 f(\theta)=\theta^3 f(θ)=θ3,假设 θ = 1 \theta=1 θ=1。不增大 θ \theta θ的值,而是在 θ \theta θ右侧设置一个 θ + ε \theta+\varepsilon θ+ε,在 θ \theta θ左侧设置一个 θ − ε \theta - \varepsilon θε,因此 θ = 1 \theta=1 θ=1 θ + ε = 1.01 \theta+\varepsilon=1.01 θ+ε=1.01 θ − ε = 0.99 \theta - \varepsilon=0.99 θε=0.99

在函数图中画一个三角形,计算高和宽的比值,就是更准确的坡度预估。
在这里插入图片描述
选择f函数在 θ − ε \theta-\varepsilon θε上的这个点,用大三角形的高比上宽,较大三角形的高宽比值更接近于 θ \theta θ的导数,把右上角的小三角形下移,好像有了两个三角形,右上角一个,左下角一个。我们通过这个绿色大三角形同时考虑了这两个小三角形,所以我们得到的不是一个单边公差而是一个双边公差。

写一下计算公式, θ + ε \theta+\varepsilon θ+ε这个点对应的函数值为 f ( θ + ε ) f(\theta+\varepsilon) f(θ+ε) θ − ε \theta-\varepsilon θε这个点对应的函数值为 f ( θ − ε ) f(\theta-\varepsilon) f(θε),这个三角形的高度是 f ( θ + ε ) − f ( θ − ε ) f(\theta+\varepsilon)-f(\theta-\varepsilon) f(θ+ε)f(θε),三角形的宽度为 2 ε 2\varepsilon 2ε,高宽比值为 f ( θ + ε ) − f ( θ − ε ) 2 ε \frac{f(\theta+\varepsilon)-f(\theta-\varepsilon)}{2\varepsilon} 2εf(θ+ε)f(θε)它的期望值接近 g ( θ ) g(\theta) g(θ)

传入参数值 f ( θ ) = θ 3 f(\theta)=\theta^3 f(θ)=θ3 θ + ε = 1.01 \theta+\varepsilon=1.01 θ+ε=1.01 1.0 1 3 − 0.9 9 3 2 ∗ 0.01 = 3.0001 \frac{1.01^3-0.99^3}{2*0.01}=3.0001 20.011.0130.993=3.0001,而 g ( θ ) = 3 θ 2 = 3 g(\theta)=3\theta^2=3 g(θ)=3θ2=3,所以这两个 g ( θ ) g(\theta) g(θ)值非常接近,逼近误差为0.0001.

只考虑单边公差,即从 θ \theta θ θ + ε \theta+\varepsilon θ+ε之间的误差, g ( θ ) g(\theta) g(θ)的值为3.0301,逼近误差是0.03而不是0.0001,所以使用双边误差的方法更逼近导数,其结果接近3。在梯度检验和反向传播中使用该方法时,最终它与运行两次单边公差的速度一样。

导数的官方定义是针对值很小的 ε \varepsilon ε f ′ ( θ ) = lim ⁡ ε → 0 f ( θ + ε ) − f ( θ − ε ) 2 ε f'(\theta)=\lim_{\varepsilon \rightarrow 0}\frac{f(\theta+\varepsilon)-f(\theta-\varepsilon)}{2\varepsilon} f(θ)=ε0lim2εf(θ+ε)f(θε)对于一个非零的 ε \varepsilon ε,它的逼近误差可以写成 O ( ε 2 ) O(\varepsilon^2) O(ε2) ε \varepsilon ε的值非常小。如果 ε = 0.01 \varepsilon=0.01 ε=0.01 ε 2 = 0.0001 \varepsilon^2=0.0001 ε2=0.0001,大写符号O的含义是指逼近误差其实是一些常量乘于 ε 2 \varepsilon^2 ε2,但它的确是很准确的逼近误差,所以大写O的常量有时是1,。

然而如果我们用另外一个公式 f ( θ + ε ) − f ( θ ) ε \frac{f(\theta+\varepsilon)-f(\theta)}{\varepsilon} εf(θ+ε)f(θ)逼近误差就是 ε \varepsilon ε,当 ε \varepsilon ε小于1时,实际上 ε \varepsilon ε ε 2 \varepsilon^2 ε2大很多,所以这个公式的近似值没有上面公式准确。所以在执行梯度检验时,我们使用双边误差,即 f ( θ + ε ) − f ( θ − ε ) 2 ε \frac{f(\theta+\varepsilon)-f(\theta-\varepsilon)}{2\varepsilon} 2εf(θ+ε)f(θε)而不使用单边公差,因为它不够准确。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值