mini-batch gradient descent
mini-batch gradient descent是为了加速gradient descent而对原数据进行切片的操作。
- mini-batch gradient
- mini-batch的缺点
- mini-batch-size的选择
mini-batch gradient
batch-gradient,其实就是普通的梯度下降算法。因为批量处理,所以称为batch。
当数据集很大(比如有100000个左右时),每次iteration都要将1000000个数据跑一遍,机器带不动。
于是有了mini-batch-gradient——将1000000个样本分成1000份,每份1000个,都看成一组独立的数据集,进行forward_propagation和backward_propagation。
在整个算法的流程中,cost function是局部的,但是W和b是全局的。
##缺点
1、数据集小了以后,更容易陷入局部最低点而非全局最低点。
可以这样直观理解:数据集越大,一步迈得越大,越容易看清全局最低点在哪里。
极端地,如果每份mini-batch的大小为一个样本点,那么每次iteration只能保证让当前样本的cost function最优,对于其他的样本点一无所知。
解决这个问题的办法:减小learning_rate。这样一来,虽然方向错了,但是不会错得很远。
2、多个样本一起forward/backward_propagation,是可以利用向量运算加速运算的优势的。
mini-batch-size的选择
尽量选择2的幂次方,有利于GPU的加速