1.Mini-Batch Gradient descent
Mini-batch每次处理训练数据的一部分,即用其子集进行梯度下降,算法速度会执行的更快。
方法分为两个步骤:
- Shuffle:
洗牌一般同步打乱原来数据集X和对应标签Y中的数据信息,使得数据随机分散到不同的minibatch中
代码中用到了np.random.permutation()方法作为洗牌方法,对于打乱顺序有两种方法。permutation是返回一个新的数组,不对原来数组进行改动,而shuffle不返回值,对原来数组基础上进行打乱顺序操作。
- Partition:
将对应X,Y划分到各个minibatch中,每个minibatch里数据数量相等,除了最后一个可能略少于其他minibatch。
Mini-batch 大小的选择
- 在划分时通常采取2的次方项作为minibatch的大小。
- 如果训练样本的大小比较小时,如
时 ------ 选择batch梯度下降法;
- 如果训练样本的大小比较大时,典型的大小为:
;
- Mini-batch的大小要符合CPU/GPU内存。
当minibatch的size选择为1的时候,称为Stochastic Gradient Descent
几个方法效果比较如下:
图中“+”表示损失函数的最小值点
2.指数加权平均
指数加权平均的关键函数: