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.学习率衰减
一开始学习率比较大,因此下降的幅度比较大,当快接近收敛时,学习率衰减,这样可以有效让最后的值在最佳处的低范围内摆动(绿色)。
而不衰减的话,可能就在最佳处的大范围内摆动(蓝色)。
学习率衰减公式: