深度学习中的优化方法

深度学习中的优化方法:

以下内容会包括下面几种优化方法:

  • Gradient Descent
  • Adagrad
  • Momentum
  • RMSProP
  • Adam
1. Gradient Descent

首先,Gradient Descent是我们最常用的优化方法,梯度下降的参数更新公式为:

(1) θ i = θ i − 1 − η ∇ L ( θ i − 1 ) \theta^i = \theta^{i-1} - \eta \nabla L(\theta^{i-1}) \tag 1 θi=θi1ηL(θi1)(1)

其中 ∇ L ( θ i − 1 ) \nabla L(\theta^{i-1}) L(θi1)是损失函数的梯度, η \eta η为学习速率。

针对以上公式,我们发现 η \eta η前面是负号,可是为什么 η \eta η前面是负号呢?下面结合梯度下降的过程来说明:

如下图所示:当梯度下降的时候,梯度为负数时( θ 0 \theta^0 θ0),说明损失函数在向右的方向上是下降的,因此参数 θ \theta θ应该增加;梯度为正数时( θ 3 \theta^3 θ3),说明损失函数在向左的方向上是下降的,参数 θ \theta θ应该减小。这样才能保证损失函数向更低点移动,因此参数的迭代与梯度的符号相反, η \eta η前面添加负号。

在这里插入图片描述

由梯度下降公式(1),其中包含一个超参数 η \eta η需要我们调整:当调节超参数时, η \eta η设置的过小会使模型收敛变慢, η \eta η设置的过大使模型无法收敛到最低点。我们希望刚开始损失函数距离最低点较远时,学习速率更大,损失函数距离最低点较近时,学习速率减小。因此 η \eta η的值可以会随模型的迭代逐渐变化(刚开始距离最低点较远, η \eta η更大,在逐渐接近最低点, η \eta η减小),比如:使用倒数衰减1/t decay。公式如下:

η t = η t + 1 \eta^t = {\eta \over \sqrt{t+1}} ηt=t+1 η

使用上式,可以使得模型迭代次数越多, η \eta η值越小。

但是利用上式仍旧是不够的,它对所有参数都使用相同的学习速率,而我们希望不同的参数给予不同的 η \eta η,其中比较常用的是Adagrad。

2. Adagrad:

Adagrad的参数迭代过程就是用学习速率 η \eta η除以过去所有参数的微分值的均方根,它能够对每个参数自适应不同的学习速率。公式如下:

(2) w t + 1 = w t − η t σ t g t w^{t+1} = w^t - {\eta^t \over \sigma^t} g^t \tag 2 wt+1=wtσtηtgt(2)

其中: g t = ∂ L ( w t ) ∂ w g^t = {\partial L(w^t) \over \partial w} gt=wL(wt) σ t \sigma^t σt是过去所有参数的微分值的均方根。

举例:

在这里插入图片描述

公式(2)化简后,得到:

在这里插入图片描述

在这里插入图片描述

根据上图,我们比较梯度下降和Adagrad,我们在计算梯度下降的时候,梯度 g t g^t gt这一项越大,参数更新越快;而在Adagrad中,分母中也包括梯度,并且梯度越大,参数更新越慢,这样的话,分子分母是不是存在冲突呢?

首先我们先考虑只有一个参数的情况:

在这里插入图片描述

我么发现,参数更新的最好步长与一次微分成正比,并且一次微分越大意味着距离最低点的距离越远。

但是如果有多个参数呢?

在这里插入图片描述

当不跨参数时,上面的结论是成立的;当跨参数时,我们发现c点的梯度值更大,但a点距离最低点更远。

我们再回到前面的图,我们发现:最优步长不仅与一次微分有关,同时与二次微分也有关系:

在这里插入图片描述

在这里插入图片描述

由上图可见,一次微分大的点,二次微分也比较大,因此距离最低点的距离需要同时考虑一次微分和二次微分,参数更新最好的步长与一次微分成正比,与二次微分成反比。

在这里插入图片描述

因此,我们需要考虑二次微分,但是却不想算二次微分,因为会使计算量变的很大,因此我们考虑使用一次微分来估计二次微分(我们发现二次微分大的曲线,在一次微分上的点会比较大。因此,计算二次微分的过程,相当于在一次微分上做采样,然后平方求和来估计二次微分)。

3. 关于梯度下降法的补充

Stochastic Gradient Descent:

采用随机梯度下降为什么比批量梯度下降要好?

在这里插入图片描述

在所有数据上采用批量梯度下降,每次迭代参数只更新一次,但是采用随机梯度下降,在相同的数据上做计算,参数可以更新很多次,收敛更快。

Gradient Descent:Feature Scaling

为什么要做scaling?

在这里插入图片描述

由上图:如果不做scaling,w1和w2做相同的变化,对y的影响是不同的。显而易见,x2的值更大,故w2对y的影响更大一些,因此对最终loss的影响也是不同的,需要更多训练步数才能达到最低点。scaling之后,w1和w2对y具有相同的影响力,从不同起点开始都是向最低点移动,效率更高。

现在我们提出一个问题,采用梯度下降法,是不是每一次更新参数都可以使损失函数下降?

在这里插入图片描述

这种表述是不正确的,并不能被保证每一次迭代都会使损失函数下降。

下面从数学原理上来解释其原因:

在这里插入图片描述

直观上,我们如何寻找最低点呢?一般就是先在当前位置的附近找到最低点,然后到达这个位置,继续在附近找寻最低点,重复这个过程,直到周围不存在更低的点,便找到我们希望的最低点。

首先我们先回顾一下泰勒展开:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

接下来回到梯度下降法,我们对损失函数做泰勒展开:

在这里插入图片描述

在这里插入图片描述

通过泰勒展开, L ( θ ) L(\theta) L(θ)的优化转化为有约束的最小值问题,约束条件就是当前点附近足够小的区域(也就是红色圆圈的区域)。

在这里插入图片描述

通过上面的转化,求解 L ( θ ) L(\theta) L(θ)的最小值就是求解 u Δ θ 1 + v Δ θ 2 u \Delta \theta_1 + v \Delta \theta_2 uΔθ1+vΔθ2的最小值,也就是求解图中两个向量内积的最小值,由余弦定理:

a ⋅ b = ∣ a ∣ ∣ b ∣ c o s θ a·b = |a||b|cos \theta ab=abcosθ

由于向量 ( u , v ) (u, v) (u,v)是一定的,要使内积最小,当 θ = 180 ° \theta = 180° θ=180°时, c o s θ = − 1 cos \theta = -1 cosθ=1,向量 ( Δ θ 1 , Δ θ 2 ) (\Delta \theta_1, \Delta \theta_2) (Δθ1,Δθ2)的长度达到最大,可以使 L ( θ ) L(\theta) L(θ)最小,也就是向量 ( Δ θ 1 , Δ θ 2 ) (\Delta \theta_1, \Delta \theta_2) (Δθ1,Δθ2)的长度为d。

由上图的推导结果可知:最小化 L ( θ ) L(\theta) L(θ)就是在梯度方向上做梯度下降。

在这里插入图片描述

所以,只有保证 η \eta η足够小,才满足泰勒展开,才能保证上面的式子是成立的,才能保证更新参数时使得 L ( θ ) L(\theta) L(θ)越来越小。

4. RMSProp

在这里插入图片描述

根据前面的介绍,我们知道,Adagrad可以实现在不同的方向上使用不同的学习速率,但是对于更复杂的损失函数,可能需要在一个方向上learning rate也要能够快速变动:对于平坦的区域,使用较小的learning rate,对于陡峭的区域,使用较大的learning rate。

于是便引入RMSProp方法:

在这里插入图片描述
在这里插入图片描述

这里与Adagrad的差别在于,引入 α \alpha α,如果我们倾向于相信最新的梯度告诉我们error surface平滑或陡峭的程度,无视之前的梯度,那么就把 α \alpha α调小一点。

5. Momentum

在这里插入图片描述

考虑到在物理世界里,如果一个小球顺着山坡向下走,即使遇到局部极小点,但是由于动量/惯性的缘故还是会越过小山坡跳出局部极小点,我们把动量引入Gradient Descent,便可以达到这种效果。

一般的Gradient Descent:

在这里插入图片描述

引入动量的Gradient Descent:

我们在更新参数时会考虑到之前移动的方向,其中 η \eta η用于控制之前移动方向对当前点的影响(惯性的影响), η \eta η大,惯性就大, η \eta η小,惯性就小。

在这里插入图片描述

从另一个方向来理解Momentum:

在这里插入图片描述

其实这里的 v i v^i vi就是之前所有梯度的加权和,只不过引入 λ \lambda λ来控制之前梯度的影响程度而已。

直观上理解如下图,其实每一个点的移动都是当前的负梯度与momentum叠加的结果。

在这里插入图片描述

6. Adam

将RMSProp和Momentum两种优化方法结合起来就得到Adam方法,因此实际使用时,我们一般直接使用Adam优化器来优化损失函数。

在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
深度学习方法和应用》这本书对深度学习方法以及它在各种信号与信息处理任务的应用进行了概述。本书所列举的应用是根据以下三个标准来选取的:(1)本书作者所具备的专业技能和知识;(2)由于深度学习技术的成功应用而取得了重大突破的领域,比如语音识别和计算机视觉等;(3)由于深度学习的应用而有可能发生巨变的应用领域,以及从深度学习的新研究获益的应用领域,其包括自然语言和文本处理、信息检索和多任务深度学习驱动下的多模态信息处理。对于深度学习方法以及它在各种信号信息处理应用方面具有浓厚兴趣的研究人员与学生来说,《深度学习方法和应用》的时效性很强。 目录 译者序 原书序 1引言 1.1深度学习的定义与背景 1.2本书的结构安排 2深度学习的历史 3三类深度学习网络 3.1三元分类方式 3.2无监督和生成式学习深度网络 3.3监督学习深度网络 3.4混合深度网络 4深度自编码器——一种无监督学习方法 4.1引言 4.2利用深度自编码器来提取语音特征 4.3堆叠式去噪自编码器 4.4转换自编码器 5预训练的深度神经网络——一种混合方法 5.1受限玻尔兹曼机 5.2无监督逐层预训练 5.3DNN和HMM结合 6深度堆叠网络及其变形——有监督学习 6.1简介 6.2深度堆叠网络的基本结构 6.3一种学习DSN权值的方法 6.4张量深度堆叠网络 6.5核化深度堆叠网络 7语音和音频处理的应用 7.1语音识别声学模型的建立 7.2语音合成 7.3音频和音乐处理 8在语言模型和自然语言处理的相关应用 8.1语言模型 8.2自然语言处理 9信息检索领域的应用 9.1信息检索简介 9.2用基于深度自编码器的语义哈希方法对文档进行索引和检索 9.3文档检索的深度结构语义模型 9.4信息检索深度堆叠网络的应用 10在目标识别和计算机视觉的应用 10.1无监督或生成特征学习 10.2有监督特征学习和分类 11多模态和多任务学习的典型应用 11.1多模态:文本和图像 11.2多模态:语音和图像 11.3在语音、自然语言处理或者图像领域的多任务学习 12结论 附录 参考文献
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值