深度学习之优化算法

1 梯度下降

数学解释:在微积分里面,对多元函数的参数求偏导,把求得的偏导数以向量的形式写出来,就是梯度。例如 f ( x , y ) f(x,y) f(x,y) x , y x,y x,y求偏导,求得的梯度向量就是 ( ∂ f ∂ x , ∂ f ∂ y ) T \left(\frac{\partial f}{\partial x},\frac{\partial f}{\partial y}\right)^T (xf,yf)T,多参数的梯度向量以此类推。从几何上讲,梯度向量所表示的含义是函数变化增加最快的地方,也就是沿着梯度的方向,更容易找到函数的最大值,反之,沿着梯度向量的反方向,更容易找到函数的最小值。

直观解释:寻找函数最小值的过程好比下山的过程,假设我们身处大山的某个位置,不知道怎么下山,这个时候我们就会走一步算一步。走到一个位置的时候,求解当前位置的梯度,沿着梯度的负方向,也就是当前最陡峭的方向向下走一步,然后继续算梯度,直到已经下不去了。这种做法存在的一个问题是也许我们到不了真正的山脚,而是到了某一个局部的山峰低处,也就是我们所说的局部最优解。

1.1 批量梯度下降法(BGD: Batch Gradient Descent)

迭代规则:每次迭代采用整个训练集数据来计算损失函数 J ( θ ) J\left(\theta\right) J(θ)对于参数 θ \theta θ的梯度(计算数据集上每个样本的损失之和,再对参数求偏导,进行梯度下降)。这里的batch指的就是整个数据集。每次迭代的参数更新参数如下:
在这里插入图片描述
优点:每一步迭代使用了全部样本,因此损失函数收敛过程比较稳定。对于凸函数可以收敛到全局最优值,对于非凸函数可以收敛到局部最小值。

缺点:每一步更新都要利用全部样本计算梯度,计算起来比较慢,遇到大量数据时比较棘手,而且不能投入新的数据实时更新模型。

1.2 随机梯度下降法(SGD: Stochastic Gradient Descent)

迭代规则:每一步迭代使用一个样本计算损失函数对 θ \theta θ的梯度。公式如下:
在这里插入图片描述
优点:每次计算一个样本,训练速度快包含一定的随机性,从期望来看,每次计算的梯度基本都是正确的导数。

缺点:更新频繁,带有随机性,会导致损失函数收敛的过程中严重震荡。

1.3 小批量梯度下降法(MBGD:Mini-Batch Gradient Descent)

迭代规则:BGD和SGD的折中,在数据集中取一小批样本计算梯度。迭代公式如下:
在这里插入图片描述
优点:降低参数更新时的方差,收敛更加稳定,另一方面可以充分地利用深度学习库中高度优化的矩阵操作来进行更有效的梯度计算。

缺点:不能保证很好的收敛性,learning rate 如果选择的太小,收敛速度会很慢,如果太大,损失函数就会在极小值处不停地震荡甚至偏离。(有一种措施是先设定大一点的学习率,当两次迭代之间的变化低于某个阈值后,就减小 learning rate,不过这个阈值的设定需要提前写好,这样的话就不能够适应数据集的特点。)

梯度下降的三种算法都可能会陷入鞍点和平摊底部。

2 Momentum

梯度下降存在的两个问题:

1.容易陷入局部最优,而无法达到全局最优;
2. 有时候梯度下降法的收敛速度还是很慢。

为了解决以上两个问题,提出了动量法。计算公式如下:
在这里插入图片描述
引入了动量项,将历史梯度进行累加,使得在梯度相同的方向上,更新速度变快,而在梯度不同的方向上,更新速度变慢,这样可以加速收敛,减小震荡。

优点:前后梯度一致时加快收敛;前后梯度不一致时能够抑制震荡,越过局部最优。(加快收敛,减少震荡)

缺点:引入了一个超参数。(一般取0.9左右)

3 Adagrad:Adaptive gradient algorithm

在这里插入图片描述
Adagrad算法设置一个全局学习率 ε \varepsilon ε,为了保证分母不为0,设置一个小常数 δ \delta δ ⊙ \odot 表示对应元素相乘,将梯度 g g g的对应元素相乘累加到变量 r r r上,这种按元素运算的方法使得目标函数自变量中的每个元素都分别有了自己的学习率。

优点:学习率自适应而不用手动调节。

缺点:分母不断累积,学习率不断变小,如果学习率在迭代早期降得较快且当前解依然不佳的话,AdaGrad算法在迭代后期由于学习率过小。可能较难找到一个有用的解。

4 RMSProp

为了解决Adagrad算法中存在的问题,即学习率在早期下降较快,如果在前期没有找到一个合适的解的话,后期学习率太低也不容易找到一个好的解。为此提出了RMSProp,在Adagrad算法的基础上做了一些改动。
在这里插入图片描述
引入一个衰减系数,让 r r r每次以一定的比例衰减,衰减系数使用的是指数加权平均,消除了梯度下降中的抖动。

优点:相比于AdaGrad算法,这种方法解决了过早结束学习的问题,可直观地理解为迭代前期梯度的累加随着迭代次数的增加逐渐衰减,对往后迭代的梯度影响逐渐减少。

缺点:引入新的超参数衰减系数。

5 Adam: Adaptive Moment Estimation

Adam结合了动量法和RMSProp,它利用梯度的一阶矩估计和二阶矩估计动态调整每个参数的学习率,这里的一阶矩的估计即均值,二阶矩的估计和方差类似。然后对均值和方差进行矫正,由于二者的初始化为0,因此容易往0偏置,这样处理后会减少偏置的影响。Adam的优点主要在于经过偏置矫正后,每一次迭代学习率都有个确定范围,使得参数比较平稳。在这里插入图片描述
优点:Adam比其他适应性学习方法效果更好,更加适用于多种情况。这也是目前最常用的优化方法,适合于大多数模型的优化。
缺点:更加复杂,引入的超参数更多。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
深度学习参数优化算法是为了更有效地训练模型而设计的。其中一种常见的优化算法是自适应学习率优化算法,包括AdaGrad算法、RMSProp算法、Adam算法以及AdaDelta算法。这些算法通过自动适应参数的学习率来提高训练的效果。\[2\]其中,AdaGrad算法通过对每个参数设置不同的学习率来实现自适应学习率的调整。RMSProp算法在Momentum算法的基础上,对参数的梯度采取了加权平方的算法,进一步优化了损失函数在更新过程中的摆动幅度过大的问题。\[3\]这些优化算法的引入可以加快函数的收敛速度,提高深度学习模型的训练效果。 #### 引用[.reference_title] - *1* [一文总结深度学习的优化算法](https://blog.csdn.net/algorithmPro/article/details/104322632)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [深度学习入门--参数的优化算法](https://blog.csdn.net/qq_42820853/article/details/110008624)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [深度学习常见的优化算法](https://blog.csdn.net/qq_41296039/article/details/125194889)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值