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

深层神经网络参数调优(四)——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回归

原文发布于微信公众号 - 决胜机器学习(phpthinker)

原文发表时间:2018-02-07

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏机器之心

从90年代的SRNN开始,纵览循环神经网络27年的研究进展

25912
来自专栏机器之心

学界 | NTIRE2017夺冠论文:用于单一图像超分辨率的增强型深度残差网络

选自SNU 作者:Bee Lim等 机器之心编译 参与:Smith 图像超分辨率(SR)问题,尤其是单一图像超分辨率(SISR)问题,在近几十年中已经受到了广泛...

3655
来自专栏深度学习计算机视觉

BP神经网络总结笔记

概念背景(来自百度百科) BP神经网络的代表者是D.Rumelhart和J.McCelland,“反向传播(backpropagation)”一词的使用出现在1...

2333
来自专栏WD学习记录

机器学习 学习笔记(22) 深度模型中的优化

用于深度模型训练的优化算法与传统的优化算法在几个方面有所不同。机器学习通常是简接作用的,再打所述机器学习问题中,我们关注某些性能度量P,其定义于测试集上并且可能...

643
来自专栏机器之心

无需数学背景,读懂ResNet、Inception和Xception三大变革性架构

3389
来自专栏机器之心

学界 | 新型循环神经网络IndRNN:可构建更长更深的RNN(附GitHub实现)

选自arXiv 作者:Shuai Li等 机器之心编译 参与:张倩、黄小天 近日,澳大利亚伍伦贡大学联合电子科技大学提出一种新型的循环神经网络 IndRNN,不...

3295
来自专栏数据派THU

揭秘深度学习成功的数学原因:从全局最优性到学习表征不变性

来源:机器之心 本文长度为4900字,建议阅读7分钟 本文为深层网络的若干属性,如全局最优性、几何稳定性、学习表征不变性,提供了一个数学证明。 近年来,深度学习...

2147
来自专栏IT派

深度学习参数技巧

1:优化器 机器学习训练的目的在于更新参数,优化目标函数,常见优化器有SGD,Adagrad,Adadelta,Adam,Adamax,Nadam。 其中SGD...

3327
来自专栏大数据挖掘DT机器学习

Python实现:KNN分类算法

1、KNN分类算法 KNN分类算法(K-Nearest-Neighbors Classification),又叫K近邻算法,是一个概念极其简单,而分类效果又很优...

30113
来自专栏决胜机器学习

卷积神经网络(二) ——LetNet-5、AlexNet、VGG-16、残差网络

卷积神经网络(二) ——LetNet-5、AlexNet、VGG-16、残差网络 (原创内容,转载请注明来源,谢谢) 一、概述 本文主要介绍几种卷积网络模型,学...

3915

扫描关注云+社区