吴恩达深度学习笔记 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 会出现震荡现象,原因:每个子集情况不同,例如可能第一个子集({1,{1是好的子集,而第二个子集({2,{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,可以得到红色曲线,这种方法叫指数加权平均

=β Vt+(1β)θ

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

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

4.Understand Exponentially weighted averages

 指数加权平均展开如上    

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

 3.Bias correction in exponentially weighted average

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

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

值得一提的是,机器学习中,偏移校正并不是必须的。因为,在迭代一次次数后(t较大),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能有效解决这个问题

猜你喜欢

转载自www.cnblogs.com/Dar-/p/9389584.html