深层神经网络参数调优(四) ——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 条评论
登录 后参与评论

相关文章

来自专栏PPV课数据科学社区

什么是迁移学习?它都用在深度学习的哪些场景上?这篇文章替你讲清楚了

翻译 | 刘畅 迁移学习是机器学习方法之一,它可以把为一个任务开发的模型重新用在另一个不同的任务中,并作为另一个任务模型的起点。 这在深度学习中是一种常见的方法...

2576
来自专栏数据派THU

这份深度学习课程笔记获吴恩达点赞

来源:机器之心 通过本文用优美的信息图为大家解读深度学习课程的知识与亮点~ 吴恩达在推特上展示了一份由 TessFerrandez 完成的深度学习专项课程信息...

4667
来自专栏机器之心

深度 | 变分自编码器VAE面临的挑战与发展方向

选自akosiorek 机器之心编译 参与:刘天赐、李泽南 变分自编码器(VAE)与生成对抗网络(GAN)一样,是无监督学习最具前景的方法之一。本文中,牛津大学...

3075
来自专栏钱塘大数据

【干货】解读基础机器学习算法

本篇内容主要是面向机器学习初学者,介绍常见的机器学习算法,当然,欢迎同行交流。微信后台回复:“机器学习”,获取本文PPT。 ? 哲学要回答的基本问题是从哪里来...

28912
来自专栏机器学习算法全栈工程师

《机器学习》笔记-降维与度量学习(10)

如今机器学习和深度学习如此火热,相信很多像我一样的普通程序猿或者还在大学校园中的同学,一定也想参与其中。不管是出于好奇,还是自身充电,跟上潮流,我觉得都值得试一...

964
来自专栏专知

【重温经典】吴恩达机器学习课程学习笔记三:监督学习模型以及代价函数的介绍

【导读】前一段时间,专知内容组推出了春节充电系列:李宏毅2017机器学习课程学习笔记,反响热烈,由此可见,大家对人工智能、机器学习的系列课程非常感兴趣,近期,专...

3408
来自专栏新智元

【干货】机器学习常用 35 大算法盘点(附思维导图)

【新智元导读】本文将带你遍历机器学习领域最受欢迎的算法。系统地了解这些算法有助于进一步掌握机器学习。当然,本文收录的算法并不完全,分类的方式也不唯一。不过,看完...

3497
来自专栏新智元

【一图看懂】机器学习6大算法,优势劣势全解析

【新智元导读】我们将机器学习中最突出、最常用的算法分为三类:线性模型、基于树的模型、神经网络,用一张图表简明地指出了每一类的优势和劣势。 在机器学习中,我们的目...

4099
来自专栏AI科技大本营的专栏

什么是迁移学习?它都用在深度学习的哪些场景上?这篇文章替你讲清楚了

翻译 | 刘畅 迁移学习是机器学习方法之一,它可以把为一个任务开发的模型重新用在另一个不同的任务中,并作为另一个任务模型的起点。 这在深度学习中是一种常见的方法...

34010
来自专栏机器之心

入门 | 简述迁移学习在深度学习中的应用

3517

扫码关注云+社区