Andrew Ng's deeplearning Course2Week2 Optimization algorithms(优化算法)

优化算法能帮助我们快速训练模型

一、mini-batch梯度下降法

1.batch vs mini-batch

向量化能让你相对快速的处理m个样本,但是当m比较大时,例如5000000,速度可能就会比较慢了。因此,我们将m个样本切分成一块一块的,这就是mini-batch,而原先不切分的形式就是batch。X{t},Y{t}:我们用X{t}和Y{t}分别表示X和Y的第t块样本集。

2.mini-batch的执行过程


原先我们是不断遍历训练集执行梯度下降,直到找到最优解。而在原本(也就是batch)的一次遍历训练集中,只需要做一次梯度下降,完成正向和反向传播。

而mini-batch中,在一次遍历训练集时,并不是只有一次梯度下降过程,因为之前我们将训练集分解为t块,因此有t次梯度下降,每次梯度下降都完成一次正反向传播。

3.mini-batch其他相关

(1)mini-batch下降的图示


与batch所不同的是,batch的梯度下降过程是平滑的,而mini-batch的每次迭代中还有t次梯度下降,有的时候梯度下降可能是对的,有的时候可能会走点弯路,因此mini-batch的梯度下降过程类似于上图中所示。

(2)如何选择mini-batch的大小


当大小为m时,就是batch梯度下降(蓝色表示);当大小为1时,就是随机梯度下降(紫色表示)。

batch的缺点是每次迭代所花的时间太多,而随机的缺点为因此一次只运行一个,所以失去了向量化加速的优势。

我们选择2者中间的一个值,这样可以最大程度上保持向量化加速的优势,同时,又能在每次迭代的t次梯度下降中,所花的时间相对少一点。


还有一点需要注意的是,在m小于2000的情况下,我们就没必要用mini-batch了,用batch就可以。

另外,mini-batch size的选择选2的次方,如(2^6, 2^9等),能让加速的速度更快一点。

二、指数加权平均(其他一些优化算法的基础)

全称为指数加权移动平均值。


以计算某些时间段内温度的加权平均值为例,公式为Vt = βVt-1 + (1 - β)θt。Vt作为(1/ 1-  β)天的温度。

如 β = 0.9 ,那么大约就是10天; β = 0.5,大约为2天。

1.加权平均值的实现



2.偏差修正

偏差修正可以让加权平均值计算的更加准确。


还是上面天气的例子,当 β为0.98时,为绿色的曲线,但它实际上是紫色的曲线,可以看到在初期,不是很准确,偏差修正可以解决这点。做法如下:

拿Vt =  Vt/(1-  β^t),这在初期很有用,但到后期,t越来越大时,1 -  β^t就趋向于1了。

三、其他优化算法

1.momentum算法(动量梯度下降法)


用Vdw和Vdb来更新w和b, β的值一般选择0.9,其中  Vdw和Vdb的维度和dw、db一样。

2.RMSprop算法(root mean square prop梯度下降法)


公式如上图所示。

假设横轴代表W,纵轴代表b;我们希望纵轴上的浮动小一些,而横轴能运动的更快一些。因此,dw小时,dw^2就会更小,db大时,db^2就会更大,因此w就会更大,而b就会更小。

3.Adam算法(Adaptive Moment Estimation梯度下降法)

这个算法是将momentum算法和RMSprob算法结合起来的一种算法。计算公式如下:


超参数的选择如下:



4.学习率衰减


一开始学习率比较大,因此下降的幅度比较大,当快接近收敛时,学习率衰减,这样可以有效让最后的值在最佳处的低范围内摆动(绿色)。

而不衰减的话,可能就在最佳处的大范围内摆动(蓝色)。

学习率衰减公式:




  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值