吴恩达深度学习笔记 course2 week2 优化算法

1.Mini-batch 

batch:之前所用的都是将m个样本放在一起组成向量来就行训练,称为batch,所存在的问题:当样本的数量比较庞大的时候,迭代一次所需要的时间比较多

,这种梯度下降算法成为Batch Gradient  Descent

为了解决这一问题引入 Mini-batch Gradient descent

它是将全部样本分成t份子集,然后对每一份子集进行一个单一的训练,这样就会大大提高训练速度 例:假设有5000000个样本,分为5000个子集,每个子集1000份样本,则每次可对这1000样本组成的子集进行一个训练

mini batch gradient descent过程:

T次for循环后,称完成了一次epoch,与batch gradient descent不同的是,一个epoch进行T次梯度下降算法,而batch只进行一次

可以进行多次epoch,每次最好顺序打乱,重新分T组mini-batch,这样有利于训练最佳的模型

2.understand mini-batch gradient descent

cost function下降图如下:

从图中可以看出mini batch 会出现震荡现象,原因:每个子集情况不同,例如可能第一个子集(X {1} ,Y {1} ) 是好的子集,而第二个子集(X {2} ,Y {2} ) 包含了一些噪声noise

 mini batch size的选取:

考虑两种极端情况,size=m时,迭代一次所需要的时间过长,前进速度慢; size=1时,称为Stachastic gradient descent,这种情况每个样本的情况不同,所以会产生比较明显的震荡,路线也比较曲折,除此之外,不能使用向量化来提高速度,不过前进速度比较快

选取合适的数量可以融合两者的优点

如果样本数量小于等于2000,可以直接使用batch gradient descent

数量比较大,size的选取一般为2的幂,推荐常用的有64,128,256,512,选择2的幂的原因:计算机存储数据一般都为2的幂,这样设置可以提高运算速度.

3.Exponentially weighted averages

指数加权平均 

θ

举个例子:上图为伦敦半年的气温曲线,比较震荡,为了能看到整体变化趋势,我们要使它更平滑,我们可以把它移动平均,第t天用Vt=0.9Vt-1+0.1θt,可以得到红色曲线,这种方法叫指数加权平均

V t =β Vt−1 +(1−β)θt 

其中  1/(1-β)为平均的天数  

平均的天数越大,曲线越平滑,曲线也会往右移,原因是平均的天数越多,当温度改变时,会减缓这种改变,所以会有一个延迟,造成曲线右移

4.Understand Exponentially weighted averages

 指数加权平均展开如上    

我们已经知道了指数加权平均的递推公式。实际应用中,为了减少内存的使用,我们可以使用这样的语句来实现指数加权平均算法

 3.Bias correction in exponentially weighted average

 之前我们令β=0.98所得到的绿线实际上是经过偏差修正的曲线,原曲线如上图的紫线

偏差修正公式如上图右侧部分:刚开始的时候1-βt,由于t比较小,所以也比较小,修正的比较大,随着t的增加,1-βt越来越接近1,修正效果越来越弱

值得一提的是,机器学习中,偏移校正并不是必须的。因为,在迭代一次次数后(t较大),V t  受初始值影响微乎其微,紫色曲线与绿色曲线基本重合。所以,一般可以忽略初始迭代过程,等到一定迭代之后再取值,这样就不需要进行偏移校正了。

6.Gradient descent with monument

动量梯度下降算法

传统的梯度下降方向只与每一点的方向有关,这样会发生一些震荡,尤其是w和b相差比较大的情况下,导致前进的比较缓慢

如果对梯度进行一个指数加权平均,那么每一点的方向不仅与当前方向有关,也会与当前方向有关,梯度下降会趋近平滑,前进速度会更快速

表达式如下:

从动量角度分析:dw,db看作加速度,β看作摩擦力,Vdw,Vdb表示现在要求的速度,现在的速度被摩擦力和加速度一起限制,能限制Vdw瞬变

动量梯度下降算法实现如下:

 另一种实现方式是上图紫色部分,不过不推荐用那种,那样学习因子α(为α/(1−β) )也会受β影响,调节参数β时,涉及到α,不利于调节

其中β常设为0.9,也就是相当于平均10个梯度

7.RMSprop

 RMSprop是另一种优化梯度下降的算法,它的表达式如上图所示

原理:我们把水平方向看作w,垂直方向看作b,由图中可以看出b方向震荡大,w方向震荡小,即dw小,db大,即上式中的Sdw小,Sdb大

这样相除以后就会较大,

这个相除就较小,所加的ξ是为了防止分母为0

8.Adam optimization algorithm

adam优化算法 

算法实现如上图,结合动量梯度下降算法和Rmsprop算法特征

各个参数一般设置如下:

一般只要对β1,β2进行调试

2.9 Learning rate decay

学习率下降

如果我们不对学习率进行一个下降,那么当梯度下降到最优值附近的时候,,步长依然较大,这样就会出现一个震荡,从而离最优值较远

因此我们要对学习率进行一个下降,常用的学习率表达式下降如下:

除此之外还有:

10.The problem of local optima

局部最优问题

在使用梯度下降算法时可能会发生局部最优情况,如图所示,当参数较多的时候,凹槽也会较多,往往该参数的最优值不是在凹槽底部,而是在其他地方,上图右边绿点梯度为0,并不是最优值,最优值还在其下,如下图

在这种情况下,曲线较为平滑,梯度下降到上图红点所需要的时间长,下降到红点之后,由于随机扰动,梯度一般能够离开saddle point,继续前进,只是在plateaus上花费了太多时间。

当然我们之前所介绍的动量梯度下降算法,RMSprop,Adam能有效解决这个问题

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏人工智能头条

一文详解计算机视觉的广泛应用:网络压缩、视觉问答、可视化、风格迁移等

24740
来自专栏YoungGy

机器学习算法调优

BP 调优事项 BP对feature scaling很敏感,要先scale data。 经验来说,L-BFGS在小数据上收敛更快效果更好;Adam在大数据上表现...

27060
来自专栏应兆康的专栏

深度学习中的优化问题以及常用优化算法

在深度模型中我们通常需要设计一个模型的代价函数(或损失函数)来约束我们的训练过程,训练不是无目的的训练,而是朝着最小化代价函数的方向去训练的。本文主要讨论的就是...

483140
来自专栏ATYUN订阅号

基于TensorFlow的比较研究:神经网络优化算法

用于训练神经网络的最受欢迎的优化算法有哪些?如何比较它们?本文试图用一个卷积神经网络(CNN)来回答这些问题。 ? 随机梯度下降(SGD) SGD通过选取大小(...

42550
来自专栏量子位

如何通过梯度上升实现可视化卷积核?

作者:陈仲铭 海格通讯 | 高级算法工程师 量子位 已获授权编辑发布 转载请联系原作者 为什么我的CNN网络模型训练出来的东西总是过度拟合?已经改了很多次参数都...

47260
来自专栏数据科学与人工智能

【数学应用】机器学习常用最优化算法小结

本文主要是从通俗直观的角度对机器学习中的无约束优化算法进行对比归纳,详细的公式和算法过程可以看最后附的几个链接,都是干货。 机器学习基本概念 统计机器学...

36860
来自专栏SIGAI学习与实践平台

人脸检测算法之 S3FD

原创声明:本文为 SIGAI 原创文章,仅供个人学习使用,未经允许,不得转载,不能用于商业目的。

36140
来自专栏WD学习记录

牛客网 机器学习题目

SVM核函数:线性核函数、多项式核函数、径向基核函数、高斯核函数、幂指数核函数、拉普拉斯核函数、ANOVA核函数、二次有理核函数、多元二次核函数、逆多元二次核函...

21830
来自专栏算法channel

最小二乘法原理(中):似然函数求权重参数

在上一篇推送中我们讲述了机器学习入门算法最小二乘法的基本背景,线性模型假设,误差分布假设(必须满足高斯分布)然后引出似然函数能求参数(权重参数),接下来用似然函...

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

机器学习算法之K-means特征学习

自从Deep Learning之风盛起之时到现在,江湖上诞生了很多都可以从无标签数据中学习到深度的分级的特征的算法。大部分情况,这些算法都涉及到一个...

53350

扫码关注云+社区

领取腾讯云代金券