深度学习中的优化器

  • 深度学习的优化器有许多种类,同损失函数一样,我们只有清楚了它们的原理才能更好地选择。鉴于优化器的重要性以及难度,本文将不定时更新最新理解思路亦或最新优化器……

Batch Gradient Descent (BGD) 批梯度下降

  • 梯度更新规则:每次更新参数时使用全部训练样本。
  • 优点:理想状态下经过足够多的迭代后可以达到全局最优。( 对于凸函数可以收敛到全局极小值,对于非凸函数可以收敛到局部极小值。)
  • 缺点:一次更新中,需要对整个数据集计算梯度,所以计算起来非常慢,遇到很大量的数据集也会非常棘手。

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

  • 优化方式:每次更新参数时随机选用一个样本。
  • 优点:相比于 BGD 训练速度更快,更快收敛。
  • 缺点:随机梯度下降会带来一定的问题,因为计算得到的并不是准确的一个梯度,SGD 的噪音较 BGD 要多,使得 SGD 并不是每次迭代都向着整体最优化方向。 但是大的整体的方向是向全局最优解的,最终的结果往往是在全局最优解附近。SGD 因为更新比较频繁,会造成 cost function 有严重的震荡。BGD 可以收敛到局部极小值,当然 SGD 的震荡可能会跳到更好的局部极小值处。当我们稍微减小 learning rate,SGD 和 BGD 的收敛性是一样的。

Mini-batch Gradient Descent (MBGD) 小批次梯度下降

  • 优化方式:每次更新参数时利用一小批样本。
  • 优点:相比于 BGD 训练速度更快,相比于 SGD 更加稳定。
  • 缺点:当我们采用小的学习率的时候,会导致网络在训练的时候收敛太慢;当我们采用大的学习率的时候,会导致在训练过程中优化的幅度跳过函数的范围,也就是可能跳过最优点。对于非凸函数,还要避免陷于局部极小值处,或者鞍点处。

通过前面的 SGD 算法我们知道,我们的学习速率太大、太小都会影响到我们模型的迭代,所以我们期望可以有更加科学的方法帮助我们自动的改变 learning rate 的大小。

Momentum

  • 优化方式:计算在梯度下降的方向上,计算一个指数加权平均,利用这个来代替权重更新的方法。通俗一点的理解就是“如果梯度下降显示,我们在一直朝着某一个方向在下降的话,我让这个方向的的学习速率快一点,如果梯度下降在某一个方向上一直是摆来摆去的,那么就让这个方向的学习速率慢一点”。
  • 优点:加速了横轴下降的速度,并减缓了纵轴的摆动的频率,在最终的训练过程中,步伐迈的更大,同时更加更准确。


    image.png

AdaGrad

  • 优化方式:它根据自变量在每个维度的梯度值的大小来调整各个维度上的学习率,从而避免统一的学习率难以适应所有维度的问题 。在梯度下降的方向上,我们会有一个变量 grad_squared 存储在该方向上的变化的平方的累积。单个维度更新方式如下:


    image.png

    image.png

其实这里有个问题可以探讨:我们从上面更新公式可以发现,当前微分值越大,参数变化值越大。当前微分值越大,分母项越大,参数变化值越小。如何解释矛盾分母项的意义或者这样做的目的?
解释:首先,我们要知道,最优的步长不仅和当前函数的一次微分值成正比,而且还和当前函数的二次微分值成反比。由于计算二次微分代价较高,我们这里其实就是想用分母项来预估我们当前函数的二次微分值。


image.png

image.png
  • 优点:每个维度有各自的 learning rate , 避免统一的学习率难以适应所有维度的问题。
  • 缺点:grad_squared 是一个一直累积的过程,那么积少成多,哪怕是在一些方向上,它的波动一直很小,但是由于是不停的迭代增加, grad_squared 最终也会变得很大,导致在训练的后期,任意一个方向上,梯度下降就走不下去了。

RMSProp

  • 优化方式:RMSProp 基于 AdaGrad,进行了一些小小的改动,也解决了我们上面提出来的,在随着训练时间增长,AdaGrad 的步伐会变得很小的问题。RMSProp 在计算 grad_squared 的时候,加上了一个 decay (衰减率)的东西,这样造成的效果即是,既保留了 AdaGrad 的特性,又不会一直过分增加 grad_squared 导致最后阻力过大。

Adam

  • 优化方式:我们看到,Momentum 在 SGD 基础上增加了一阶动量,RMSProp 在 SGD 基础上增加了二阶动量。把一阶动量和二阶动量都用起来,就是Adam了——Adaptive + Momentum。当然 Adam 在两者的基础之上还对 mean 和 variance 做了修正。具体算法细节,后补……

总结

自适应学习率方法中,RMSprop 是 AdaGrad 的延伸,它解决了其学习速度急剧下降的问题,Adam 最后为 RMSprop 增加了偏差修正和动力。就此而言,RMSprop 和 Adam 是非常相似的算法,在相似的情况下,偏差修正有助于 Adam 在优化结束时略微优于 RMSprop ,因为梯度变得更加稀疏。就目前而言,Adam 可能是最好的整体选择。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,192评论 6 511
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,858评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,517评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,148评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,162评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,905评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,537评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,439评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,956评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,083评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,218评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,899评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,565评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,093评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,201评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,539评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,215评论 2 358

推荐阅读更多精彩内容