深度学习中的优化器

介绍一些深度学习的优化器 参考覃秉丰教程

梯度下降法则

  • 标准梯度下降法:计算所有样本汇总误差,根据总误差来更新权值
  • 随机梯度下降法:先随机抽取一个样本来计算误差,再根据这个误差来更新权值
  • 批量梯度下降法:从总样本中选取一个批次(batch)(例如10000个样本,随机选取1中的100个样本作为batch),然后计算这个batch的总误差,再根据这个误差来更新权值

随机梯度下降法:

带Momentum的随机梯度下降法:

涅斯捷罗夫加速梯度下降法 NAG(Nesterov accelerated gradient)

在Momentun中小球会盲目地跟从下坡的梯度,容易发生错误,所以我们需要一个更聪明的小球,这个小球提前知道它要去哪里,它还要知道走到坡底的时候速度慢下来而不是又冲上另一个坡。γvt−1会用来修改W的值,计算W−γvt−1可以表示小球下一个位置大概在哪里。从而我们可以提前计算下一个位置的梯度,然后使用到当前位置。

Adagrad

上面提到的方法对于所有参数都使用了同一个更新速率。但是同一个更新速率不一定适合所有参数。比如有的参数可能已经到了仅需要微调的阶段,但又有些参数由于对应样本少等原因,还需要较大幅度的调动。于是提出了Adagrad算法,为不同分类设置了不同的学习率。简单的说,就是这类数据出现的越多,这类数据的学习率越小,这类数据出现的越少,这类数据学习率越大。

  • η为学习率,一般为0.01
  • gti为第i个分类的代价函数的导数(第i个分类的代价函数的梯度)
  • Wt+1等于Wt减去学习率η除以(从1到t’的共计t’次第i个分类的代价函数的梯度的平方加ε的和的平方根)的商点乘gt的积

它是基于SGD的一种算法,它的核心思想是对比较常见的数据给予它比较小的学习率去调整参数,对于比较罕见的数据给予它比较大的学习率去调整参数
它很适合应用于数据稀疏的数据集(比如一个图片数据集,有10000张狗的照片,10000张猫的照片,只有100张大象的照片)。比较稀疏的数据集是指猫和狗的照片很多,而大象的照片很少,即照片分布不均匀。

举例说明:
设置狗是第一个分类(i=1),猫是第二个分类(i=2),大象是第三个分类(i=3)。
第一次抽到狗,即i=1,t=1(第1次抽到狗这个分类),计算g11(第一分类的代价函数的导数(梯度))的平方,此时狗分类学习率η=η/(g11的平方+ε)。
第二次又抽到狗,即i=1,t=2(第2次抽到狗这个分类),计算g21(第一分类的代价函数的导数(梯度))的平方,此时狗分类学习率η=η/(g11的平方+g21的平方+ε)。
第三次还抽到狗,即i=1,t=3(第3次抽到狗这个分类),计算g31(第一分类的代价函数的导数(梯度))的平方,此时狗分类学习率η=η/(g11的平方+g21的平方+g31的平方+ε)。
第四次抽到的是猫,即i=2,t=1(第1次抽到猫这个分类),计算g12(第二分类的代价函数的导数(梯度))的平方,此时猫分类学习率η=η/(g12的平方+ε)。
第五次抽到的是象,即i=3,t=1(第1次抽到象这个分类),计算g13(第三分类的代价函数的导数(梯度))的平方,此时象分类学习率η=η/(g13的平方+ε)。
第六次抽到的还是猫,即i=2,t=2(第2次抽到猫这个分类),计算g22(第二分类的代价函数的导数(梯度))的平方,此时猫分类学习率η=η/(g12的平方+g22的平方+ε)。
以此类推

优点:从举例中可以看出,Adagrad确实可以达到对比较常见的数据给予它比较小的学习率去调整参数,对于比较罕见的数据给予它比较大的学习率去调整参数这个目的。

缺点:Adagrad主要的优势在于不需要人为的调节学习率,它可以自动调节。它的缺点在于,随着迭代次数的增多,学习率也会越来越低,最终会趋向于0。

RMSprop

RMS(Root Mean Square)均方根

RMSprop借鉴了一些Adagrad的思想,不过这里RMSprop只用到了前t-1次梯度平方的平均值加上当前梯度的平方的和的开平方作为学习率的分母。这样RMSprop**不会出现学习率越来越低的问题,而且也能自己调节学习率,并且可以有一个比较好的效果**。

Adadelta

ΔWt等于负的学习率除以前t次的梯度平方的平均值加上ε的和的平方根点乘当前这次(也就是第t次)的梯度

分子对上一次(t-1)的ΔW求均方根,分母对这一次(t)的梯度求均方根。

使用Adadelta我们甚至不需要设置一个默认学习率,在Adadelta不需要使用学习率也可以达到一个非常好的效
果。

Adam

就像Adadelta和RMSprop一样Adam会存储之前衰减的平方梯度,同时它也会保存之前衰减的梯度。经过一些
处理之后再使用类似Adadelta和RMSprop的方式更新参数。

效果演示

这里的速度是指模型收敛的速度,也就是得到正确模型的速度。虽然SDG的收敛速度可能会比其他优化器慢,但是模型识别的准确率不一定是最差的。


五角星位置为全局最小值,Adadelta最快,SGD最慢。


马鞍问题,除了SGD以外其他方法均能够逃离马鞍,找到最正确的位置。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
深度学习优化器算法用于调整模型的参数以最小化损失函数。常见的优化器算法包括随机梯度下降(SGD)、动量法(Momentum)、AdaGrad、RMSProp和Adam等。 随机梯度下降(SGD)是最基本的优化器算法之一,它在每个训练样本上计算梯度并更新参数。然而,SGD的收敛速度较慢,并且容易陷入局部最优。 动量法(Momentum)通过引入动量项来加速收敛速度。它基于梯度的移动指数加权平均,使梯度的摆动幅度更加平缓。动量法的更新公式为:v = 0.8v - 0.2∇w, w = w - αv,其v表示动量,∇w表示梯度,α表示学习率。 AdaGrad算法根据参数的历史梯度信息来调整学习率。它对于稀疏数据和非平稳目标函数效果较好,但在训练过程学习率会不断减小,可能导致训练过早停止。 RMSProp算法通过对梯度的平方进行指数加权平均来调整学习率。它可以自适应地调整学习率,适用于非平稳目标函数。 Adam算法是一种结合了动量法和RMSProp的优化器算法。它不仅计算每个参数的对应学习率,还计算每个参数的对应动量变化并独立存储。Adam算法在实践表现良好,被广泛应用于深度学习。 总结来说,深度学习优化器算法有多种选择,每种算法都有其优点和适用场景。根据具体的问题和数据集特点,选择合适的优化器算法可以提高模型的训练效果和收敛速度。 #### 引用[.reference_title] - *1* [深度学习 优化算法](https://blog.csdn.net/u012655441/article/details/121029471)[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_38375203/article/details/125142769)[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、付费专栏及课程。

余额充值