首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >深层神经网络参数调优(四) ——adam算法、α衰减与局部最优

深层神经网络参数调优(四) ——adam算法、α衰减与局部最优

作者头像
用户1327360
发布2018-03-07 17:09:36
2.7K0
发布2018-03-07 17:09:36
举报
文章被收录于专栏:决胜机器学习决胜机器学习

深层神经网络参数调优(四)——adam算法、α衰减与局部最优

(原创内容,转载请注明来源,谢谢)

一、概述

本文主要讲解另外一种思想的梯度下降——adam,并且在此之前介绍动量梯度下降和RMSprop算法作为前置内容。

另外,本文讲到学习速率衰减方式,以及局部最优和鞍点问题等。

二、动量梯度下降法

1、当前问题

mini-batch、随机梯度下降等,在优化每个w和b时,是会优化一个部分最优值,故容易出现抖动,导致优化速度慢。因此可以结合接下来的算法,来加快学习速度。

2、主要思想

将一个斜向的偏导数进行分解,以最优值点为中心的等价图中,分成横向和纵向,并且根据当前点的位置,对于需要快速优化的方向加速优化,对于不需要优化的方向,则减少优化,这样可以降低抖动。

3、公式

具体的做法,即之前提到的指数加权平均,根据这个方式,可以快速算出,每个w以及b当前的平均需要优化的值,再进行优化。

公式有两种,一种是下图左边(把紫色线划掉的部分加上),另一种则是不考虑紫色线划掉的部分。这两种本质上是一样的,区别仅在于对应的α的值不同。

这里需要的参数有两个,一个是之前一直提到的学习速率α,另一个是动量梯度下降需要用到的优化参数β。通常,β取0.9。

从物理上理解公式,可以认为有一个碗,然后球往下滚,V相当于速度,dW相当于加速度,β相当于摩擦力。

下图的公式有误,等式右边的v应该是vd(W-1),即是上一次计算出来的v才可以。b同v。

4、说明

对照动量梯度下降W=W-α*(β*v + (1-β)*dW),与之前梯度下降的W= W– α*dW,会发现动量梯度下降,在优化参数的时候,是会依赖之前的优化过程,相当于有一个“记忆”的功能。之前优化不太对的地方,在本次优化的时候,就会有所调整,直到逼近最优值。

因此,这种方式下,α就可以适当加大,加快学习速率。另外,也可以不用考虑之前说的一开始情况下的偏差,因为多训练几次后,自然就消除偏差了。

三、RMSprop

全称是root meansquare prop,这个公式和思想都和动量梯度下降很相似,只是在公式上有所不同,如下图所示:

下图公式等式右边同样有误,同上面计算动量。

可以看出,其在优化的时候,是用到了平方,而减法的时候是除以根号。这样一缩一放,则可以实现对需要加速学习的方向更加加速,对需要抑制变化的方向更加抑制变化。

上面的ε,是一个很小的数,主要是防止出现除以0的情况,其对算法基本没有影响,可以不用太过在意。

四、Adam算法

1、概述

全称是adaptmoment estimation,即自适应矩估计。

这里说到了“矩”的概念,概率论中矩的含义是:如果一个随机变量 X 服从某个分布,X 的一阶矩是 E(X),也就是样本平均值;X 的二阶矩就是 E(X^2),也就是样本平方的平均值。

根据上面的两种梯度下降,正好动量梯度下降就是一阶矩,而RMS就是二阶矩,故Adam算法把这两个结合了起来。

2、公式

其实际上是结合了动量梯度下降和RMS两种算法,把两个公式合在一起考虑了,具体过程见下面的公式:

3、说明

上面的参数中,需要调整的超参数通常只有α,其他几个超参数基本是确定的。一阶矩的系数β1=0.9,二阶矩的系数β2=0.999,ε=10-8,这些基本都是确定的。

另外,经过很多人的工作,发现Adam算法非常实用,结合随机梯度下降,其优化速度非常快,因此建议使用。

五、学习速率衰减

1、存在问题

对于随机梯度下降、mini-batch,在解决最优值的时候,会经过大量的波动,才会到达最优值,这个是因为其随机性比较大,都是部分最优值,而α如果比较大,有可能在接近最优值的时候,超出了最优值,导致波动。

2、方式

为了避免这个,可以在深度学习过程中,动态调整α。调整方式很多,见下面的第一种方式。

以遍历完成整个数据集,称为1代,即1 epoch。这里α每1代,则衰减一次,对应下面的公式,即参数epoch-num,初始为1,每遍历完成一次所有的数据集,则加一。

下图的公式中,α0是一开始设定的学习速率参数,而decay_rate是衰减率,这两个都是需要设定的参数。

除了上面的公式,还有下面几种方式。其中第一个称为指数衰减法;第二个式子的右边那个,t表示的是迭代mini-batch中的一个批次则衰减一次;第三个式子称为离散衰减。

3、说明

为了更快完成学习,可以进行动态的学习速率衰减。但是在刚开始调试架构的时候,通常是不用这个,直接调试更加直观。后面神经网络的架构稳定后,可以加上这个衰减。

六、局部最优化问题与鞍点

1、局部最优化问题

对于浅层神经网络和普通的机器学习,容易出现局部最优值,这是梯度下降算法固有的问题。

但是对于神经网络,特别是深层神经网络,基本不会出现这个问题。因为需要优化的维度太多了,而这些维度同时都是凹的或者凸的,概率很低。更多情况下是部分凹的部分凸的,导致会出现一个在某些维度下的最小值,称为鞍点。

如下图所示,左边是浅层网络的局部最优值,右边是深层网络会出现的鞍点(ng也是一个灵魂画师。。。。。。)。

2、鞍点的问题

鞍点会导致在一部分维度区域平缓,则偏导数很小,这样会导致优化起来非常慢,可能需要训练很久,才会离开这个鞍点,继续往后优化。

而正因为如此,Adam算法更体现了其优势,其是按维度分解进行优化的,因此可以更快速的对需要优化的方向进行优化。

七、总结

本文围绕深度学习更常用的优化方式——adam算法进行说明。梯度下降的时候,使用mini-batch或随机梯度下降,是为了遍历一次数据集能够优化更多次的w和b;而用adam算法,则是为了纠正mini-batch的部分数据最优值的问题,让其能够抖动的更少,更快速的趋向最优值。因此,这两种方法结合起来,在深度学习中则效率也就更高。

——written by linhxx 2018.02.07

相关阅读:

深层神经网络参数调优(五) ——超参数调试、batch归一化、softmax回归

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-02-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 决胜机器学习 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 相关阅读:
    • 深层神经网络参数调优(五) ——超参数调试、batch归一化、softmax回归
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档