深度学习——优化算法

优化算法以加快训练的速度

1. mini-batch

把训练集划分成小点的子集(mini-batch)

X{1}表示第一个mini-batch

X(1)第1个样本

X[1]第一层的输入

1.1 mini-batch梯度下降方法过程:每次对一个mini-batch进行计算,包括J, w都是针对一个子集的

epoch:一代,表示遍历了整个数据集(而不是一个子集)

1.2 使用mini-batch的代价函数变化:每次迭代处理的是一个mini-batch,而代价函数也是指J{t}

1.3如何选择min-batch的大小

太大的话每次迭代耗时太长,太小的话每次只处理少量效率低(失去了向量加速的优势)

2. 指数加权平均(指数加权移动平均)exponentially weighted average

vt可以看作是前多少天的温度平均值。因为Vt虽然是包含1~t天的温度,但由于b的次方太大会导致前面几天的温度对t的影响很小,几乎为0

 

2. 做偏差修正bias correct

开始的时候设置v0=0,容易导致前期的预测会比较实际的小很多,估计不准确

所以用vt/1-bt 来计算(进行偏差修正),当t很大时,分母接近于1,所以后期紫线与绿线会重合

3. 优化梯度下降算法

- 从某个点出发,向最小值前进时,会出现一定的波动:减少波动,纵向快一点,而横向快一点

- 无法使用更大的学习率,因为可能会偏离函数范围

3.1动量梯度下降法: momentum

 3.2 RMSprop : root mean square prop

3.3 Adam算法 :momentum与RMSprop的结合,常用的方法

3.4 学习率衰减:随时间逐渐减少学习率

为什么:如果一直用比较大的学习率,当靠近最小值时,结果可能会在较大范围内进行浮动(不易收敛),而不是在很接近最小值的小范围

重要性:不是最开始的重点,可以先设置一个固定的,先调整其它的

4. 局部最优

- 这不是一个问题,要找到一个局部最优点,需要它在各个维度都是最优的(比如都是凹/凸),如果维度很大,这是很难的

- 但是找到鞍点,还是比较容易的(各维导数为0)

存在平滑导致变化慢的问题,不过我们有加快的方法(上面~)

猜你喜欢

转载自www.cnblogs.com/coolqiyu/p/8573056.html