随机梯度下降和Mini-Batch梯度下降
随机梯度下降
在大数据背景下,普通梯度下降:
由此可见,当数据比较庞大时,比如30亿数据。每次梯度下降时,都需要遍历所有的3亿样本点,再加上要达到全局最优点,需要执行迭代多次梯度下降算法,由此可见普通梯度下降对大数据不适用,需要改进。
思想:因为数据比较大,我们直接每输入一个样本就执行一次梯度下降算法,而不是遍历全部样本后再执行梯度下降算法,可能下降过程在全局最优点左右徘徊,但最终会收敛到全局最优点附近,因为数据量比较。
先第一步随机打乱样本集,然后每输入一个样本就执行梯度下降算法,这比普通梯度算法大大加快了。
Mini-Batch梯度下降
Mini-Batch梯度下降是介于普通梯度算法和随机梯度算法之间。
主要思想:每次梯度下降时,不是遍历一个也不是遍历全部样本集,而是遍历
b
b
b个样本后,再执行梯度下降算法。
举个例子:
容易得出,算法每遍历
b
(
10
)
b(10)
b(10)个样本后,执行一次梯度下降算法。
判断随机梯度下降算法收敛
在执行随机梯度下降中,并不需要全部遍历完,可能在遍历过程中已经达到收敛了。那么输入判断呢?
思想:每遍历1000(可具体由情况而定)次后,计算一次这1000个样本集的代价函数,最后绘制图,也就是绘制学习曲线。
如下图:
由图可知,虽然每1000次的代价函数在下降过程中有噪点,但是总体趋势还是在不断减小,红线是学习率
α
\alpha
α 更小一点的情况。
当每次选5000个样本时,曲线会变得光滑:
虽然曲线变得光滑但是,每次5000个,收敛可能会变慢。
如果算法出现问题,没有收敛,可能出现如下情况:
图像没有不断下降。
如果出现下面的情况,那么就是学习率
α
\alpha
α 选的过大了,选个更小的学习率。
学习率 α \alpha α
如何选择学习率,除了选取一个恒定的学习率
α
\alpha
α ,可以试试不断变化的学习率,即随着遍历样本数变多,学习率不断减小。