![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/ada99561414a125d4798ed5eed33e6e5.png)
在大数据时代,数据量很大,如果我们每次都进行基于整个训练集的batch gradient descent 也就是批梯度下降会使得计算时间变得很长
所以 我们研究出了一种新的算法 mini-batch algorithm 其简单来说,就是将训练集拆分成n个mini-batch再进行分别处理,而不再是同时处理X和Y集
对训练集的拆分用
X
{
t
}
X^{\{t\}}
X{t} 表示
经过拆分后,一次遍历训练集可以做t次梯度下降.
其与传统batch gradient descent的比较
可以看到,mini-batch的迭代会出现更多的noisy
后面博客会讲到可以使用动量梯度下降优化这个问题
选择mini-batch的size
极端情况
-
若将size设为m 那么就是 batch gradient descent
-
若将size设为1 那么就是随机梯度下降
将mini-batch size的值设在两者的中间会使优化速度达到最快,因为既利用了向量化的优势,训练集也相对来说没有那么大,能够在一个训练集中实现 m/size 次梯度下降
一般来说,我们的选择都是2的n次方作为mini-batch 的size ,根据实验证明,这样的选择会更加具有普适性,但一般来说,size的选择需要匹配cpu/Gpu的内存,否则算法性能也会表现的很差.