人人都能懂的机器学习——训练深度神经网络——优化算法2

RMSProp

AdaGrad的学习率降低得太快,并且最终也不会收敛到全集最优值。而RMSProp算法16通过使用指数衰减,从而只会积累最近几次迭代的梯度,解决了上述AdaGrad的问题。

RMSProp算法是由Geoffrey Hinton和Tijmen Tieleman在2012年提出的,并且Geoffrey Hinton在Coursera上有一节关于神经网络的课程上展示了这种算法。有趣的是,由于作者没有写任何论文来描述这种算法,所以研究人员只能在论文中引用“第6讲中的第29页幻灯片”。

接下来让我们看一下这个算法的方程:
s \leftarrow \beta s-(1-\beta) (\nabla_{\theta}J(\theta))^2 \\\\ \theta \leftarrow \theta-\frac{\eta\nabla_{\theta}J(\theta)}{\sqrt{s+\epsilon}}
衰减指数β一般设置为0.9。是的,又是一个新的超参数,但是不用担心,这个默认值一般表现得都不错,所以你完全不需要调优。

当然对于RMSProp算法,Keras也有相应部署完成的功能:

optimizer = keras.optimizers.RMSprop(lr=0.001, rho=0.9)

除了一些非常简单的问题,RMSProp几乎总是表现得比AdaGrad更出色。实际上,在Adam优化器出现之前,RMSProp是很多研究人员的优先选择。

Adam 和Nadam优化器

Diederik P. Kingma和Jimmy Ba于2015年提出了Adam优化器。所谓Adam是指自适应矩估计(adaptive moment estimation),它结合了动量优化器和RMSProp的想法:就像动量优化,它跟踪了过去梯度的指数衰减平均值;同时又像RMSProp,它跟踪了梯度平方的指数衰减平均值。
m\leftarrow\beta_{1}m-(1-\beta_{1})\nabla_{\theta}J(\theta)\\\\ s\leftarrow\beta_{2}s+(1-\beta_{2})\nabla_{\theta}J(\theta)^2 \\\\ \hat{m}\leftarrow m/(1-\beta_{1}^{t}) \\\\ \hat{s}\leftarrow s/(1-\beta_{2}^{t}) \\\\ \theta \leftarrow \theta + \eta \hat{m} /(\hat{s}+\epsilon)
方程这些是对梯度的平均值和方差的估计。均值常称为一阶矩,而方差常称为二阶矩,这就是算法的名称由来。在上述方程中,t代表的是循环次数(从1开始)。

如果只看第1第2和第5步,其实Adam与动量优化和RMSProp都很相近。唯一的区别是在第1步中计算了指数衰减平均值,而不是指数衰减和,但是除了一个常数因子以外,它们实际上是等价的(衰减平均值等于1–β1乘以衰减和)。第3步和第4步有一些技术性细节:因为ms初始化为0,在训练开始时,它们将偏向于0,所以这两个步骤在训练开始加速ms

动量衰减超参数β1一般设置为0.9,缩小衰减超参数一般设置为0.999,平滑项ε一般设置为一个很小的数,比如10-7。这些都是Keras中Adam类的默认值(epsilon参数默认值为None,也就是使用keras.backend.epsilon(),它的默认值也就是10-7,如果需要更改值,则使用keras.backend.set_epsilon())。使用Keras创建Adam优化器也十分简单:

optimizer = keras.optimizers.Adam(lr=0.001, beta_1=0.9, beta_2=0.999)

Adam也是一种自适应学习率的算法(跟AdaGrad和RMSProp一样),所以它基本不需要对学习率η进行调优。一般学习率的默认值设为η=0.001,这样使用Adam会比使用普通的梯度下降更方便。

这里再介绍一种Adam的变体:Nadam。其实Nadam是Adam优化器与Nesterov方法的结合,这意味着Nadam会收敛地更快。作者Timothy Dozat在2016年发表的论文中比较了多种任务下多种优化器的表现,结果表明Nadam总是要比Adam表现更出色,但有时会被RMSProp超越。

自适应优化器(包括RMSProp,Adam和Nadam)往往表现得很出色,收敛得又快又准确。但是,Ashia C. Wilson在2017年发表的论文中指出,自适应优化器可能在某些数据集上会得到泛化能力很差的结果。所以,当你对你的模型表现很不满意时,可能是你的数据集对自适应梯度比较敏感,可以尝试一下使用Nesterov梯度加速法。

目前所有讨论的优化技术都只依赖于一阶偏导数(雅可比矩阵)。有些优化技术的文献提出了惊人的基于二阶偏导数(Hessians矩阵,这是雅可比矩阵的偏导数)的优化算法。不幸的是,这些算法都不适用于深度神经网络,因为每个输出神经元都有n2个Hessians (其中n是参数数量)。由于DNN通常有上万个参数,二阶优化算法经常无法完整读取进入内存,就算可以进入内存,Hessians的计算速度也实在太慢了。

前面介绍的所有的优化算法只是产生密集型的模型,这意味着大多数参数将是非零的。如果在运行时需要一个非常快的模型,或者如果需要它占用更少的内存,那么会需要使用稀疏模型。

一个简单的方法就是正常训练模型,然后将小的权重去掉(直接设置成0)。但是要注意,这一般不会导致生成一个非常稀疏的模型,并且这种做法会降低模型的性能。

另一个更好的做法是,使用一个强l1正则化训练(在未来的文章中会介绍),这个方法会让优化器将尽可能多的权重推向0。

如果上述的技术还是效率不高,可以尝试使用TensorFlow Model Optimization Toolkit (TF-MOT),这个优化工具包提供了模型修剪API可以迭代反复地基于权重量级删去权重连接。

最后,我们比较一下所有介绍过的优化器,一颗*表示不好,三个*表示优秀。

种类 收敛速度 收敛质量
SGD * ***
SGD(动量) ** ***
SGD(动量+Nesterov) ** ***
Adagrad *** *(早停)
RMSProp *** ***
Adam *** ***
Nadan *** ***
Adamax *** ***

以上就是对几乎所有常用优化器的介绍了,接下来的文章我们将会讲述学习率规划以及防止过拟合的手段。

敬请期待吧!

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