深度学习的实用层面 —— 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
    评论
深度学习(DL,Deep Learning)是机器学习(ML,Machine Learning)领域中一个新的研究方向,它被引入机器学习使其更接近于最初的目标——人工智能(AI,Artificial Intelligence)。 [1] 深度学习是学习样本数据的内在规律和表示层次,这些学习过程中获得的信息对诸如文字、图像和声音等数据的解释有很大的帮助。它的最终目标是让机器能够像人一样具有分析学习能力,能够识别文字、图像和声音等数据。 深度学习是一个复杂的机器学习算,在语音和图像识别方面取得的效果,远远超过先前相关技术。 [1] 深度学习在搜索技术、数据挖掘、机器学习、机器翻译、自然语言处理、多媒体学习、语音、推荐和个性化技术,以及其他相关领域都取得了很多成果。深度学习使机器模仿视听和思考等人类的活动,解决了很多复杂的模式识别难题,使得人工智能相关技术取得了很大进步。 [1] 深度学习是一类模式分析方的统称,就具体研究内容而言,主要涉及三类方: [2] (1)基于卷积运算的神经网络系统,即卷积神经网络(CNN)。 [2] (2)基于多层神经元的自编码神经网络,包括自编码(Auto encoder)以及近年来受到广泛关注的稀疏编码两类(Sparse Coding)。 [2] (3)以多层自编码神经网络的方式进行预训练,进而结合鉴别信息进一步优化神经网络权值的深度置信网络(DBN)。 [2] 通过多层处理,逐渐将初始的“低层”特征表示转化为“高层”特征表示后,用“简单模型”即可完成复杂的分类等学习任务。由此可将深度学习理解为进行“特征学习”(feature learning)或“表示学习”(representation learning)。 [3] 以往在机器学习用于现实任务时,描述样本的特征通常需由人类专家来设计,这成为“特征工程”(feature engineering)。众所周知,特征的好坏对泛化性能有至关重要的影响,人类专家设计出好特征也并非易事;特征学习(表征学习)则通过机器学习技术自身来产生好特征,这使机器学习向“全自动数据分析”又前进了一步。 [3] 近年来,研究人员也逐渐将这几类方结合起来,如对原本是以有监督学习为基础的卷积神经网络结合自编码神经网络进行无监督的预训练,进而利用鉴别信息微调网络参数形成的卷积深度置信网络。与传统的学习方相比,深度学习预设了更多的模型参数,因此模型训练难度更大,根据统计学习的一般规律知道,模型参数越多,需要参与训练的数据量也越大。 [2] 20世纪八九十年代由于计算机计算能力有限和相关技术的限制,可用于分析的数据量太小,深度学习在模式分析中并没有表现出优异的识别性能。自从2006年,Hinton等提出快速计算受限玻耳兹曼机(RBM)网络权值及偏差的CD-K算以后,RBM就成了增加神经网络深度的有力工具,导致后面使用广泛的DBN(由Hin

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值