-
Mini−Batch
M
i
n
i
−
B
a
t
c
h
- 1. 简述
- 2. 两个概念
- 3. 为Mini-Batch选择合适的大小
- 4. 指数加权(移动)平均数
- 5. 动量梯度下降法( Gradient descent with momentum G r a d i e n t d e s c e n t w i t h m o m e n t u m )
- 6. RMSprop( Root Mean Square Prop R o o t M e a n S q u a r e P r o p )
- 7. Adam 优化算法( Adaptive Moment Estimation A d a p t i v e M o m e n t E s t i m a t i o n )
- 8. 学习率衰减( Learning rate decay L e a r n i n g r a t e d e c a y )
- 9. 局部最优问题
Mini−Batch M i n i − B a t c h
1. 简述
所谓$mini-batch$,就是将整个样本集划分成很多个小的样本集。
2. 两个概念
- . Batch gradient descent B a t c h g r a d i e n t d e s c e n t :相当于大小为m (m为样本数量)的mini-batch
- . stochastic gradient descent s t o c h a s t i c g r a d i e n t d e s c e n t :相当于大小为1 的mini-batch
3. 为Mini-Batch选择合适的大小
3-1. 为什么要选择合适的大小
如果直接用 Batch gradient descent B a t c h g r a d i e n t d e s c e n t 的话,一次迭代( iteration i t e r a t i o n ) 花的时间太长了;而大小太小的话( 如Stochastic gradient descent 如 S t o c h a s t i c g r a d i e n t d e s c e n t ),则丧失了很多向量化 带来的加速。所以我们要选择合适的大小。
3-2. 如何选择大小
考虑到电脑的内存设置和使用方式,建议选择为2的整数次方,这样代码运行更快。一般我们将其size设置为64,128,256,512。1024的话就有点过大了。
最后还要注意要符合CPU/GPU的内存方式,否则结果会惨不忍睹。
4. 指数加权(移动)平均数
- vt¯¯¯¯=β⋅vt−1¯¯¯¯¯¯¯¯¯+(1−β)⋅vt v t ¯ = β ⋅ v t − 1 ¯ + ( 1 − β ) ⋅ v t
- vt≈averageing over 11−β days v t ≈ a v e r a g e i n g o v e r 1 1 − β d a y s
- β β 越大,曲线越平缓,但对新数据适应得也越慢; β β 越小,曲线对新数据的适应越灵敏,但可能会出现很多噪音。
- 偏差修正: vt¯¯¯¯1−βt v t ¯ 1 − β t 。主要可以帮助我们修正早期的偏差。
5. 动量梯度下降法( Gradient descent with momentum G r a d i e n t d e s c e n t w i t h m o m e n t u m )
5-1. 为什么要用动量梯度下降法
由于采用mini batch会使得我们的代价函数在接近最小值的过程中不断摆动,所以我们不能将学习率(learning rate)设置得太大,因为这在加大迈向最小值的过程(下称“横向”)中也增大了摆动(“纵向”)的幅度。于是我们要找的一个方法能够在减小纵向幅度的同时,增大横向步长。
5-2. 动量梯度下降法的过程
在进行动量梯度下降法时,我们对每一个mini batch进行一次梯度下降,我感觉大致上可以理解为把对每一个mini batch进行一次
Batch gradient descent
B
a
t
c
h
g
r
a
d
i
e
n
t
d
e
s
c
e
n
t
。具体过程如下:
6. RMSprop( Root Mean Square Prop R o o t M e a n S q u a r e P r o p )
这个算法的原理我还不是很明白,好像是说W,b是两个高维空间,它在某些维度上摆动较大,我们需要减小;而在某些维度上我们又希望它有比较大的步长,所以我们在梯度下降的时候给 vdW v d W 和 vdb v d b 除以一个 SdW−−−−√ S d W 和 Sdb−−−√ S d b 来做相应的调整。
其中\epsilon是用来防止分母为零而加的一个特别小的数,大约为10^{-8}
7. Adam 优化算法( Adaptive Moment Estimation A d a p t i v e M o m e n t E s t i m a t i o n )
Adam算法相当于是把上面两个算法结合起来,其优越性更加明显,并且适应范围非常广。
We recommend: W e r e c o m m e n d :
8. 学习率衰减( Learning rate decay L e a r n i n g r a t e d e c a y )
当我们的参数值逐渐趋向最优点或者说我们的代价函数逐渐趋于最小值时,我们希望这时的学习率变小一些来使得我们的结果能更精确地收敛与最优解附近。
具体的方法有很多,这里列举一些:
9. 局部最优问题
这一部分我们主要面临两个问题:
- 在有多个局部最优解的情况下,如果我们被困在了某一个极差的最优解上,该怎么办?
事实上,由于我们所要优化的参数是一个维数极高的空间,在如此之多的元素影响下我们很难被困在某个极差的局部最优解上。 - 当我们的函数走进了一个平缓段导致优化速率大大降低,该怎么办?
实际上这
也正是Momentum和Adam算法可以加速算法的地方。