Mini-batch\Batch\Stochastic梯度下降法 [Andrew Ng 深度学习笔记]

假设神经网络的成本函数为

Cost\, \, function=\frac{1}{m}\sum_{i= 1}^{m}L(\hat{y}^{(i)}, y^{(i)})

其中 m 为训练样本的数目,全局的成本函数是对所有样本的成本函数求平均值

若样本数量很大,设为 M,现在考虑两种极端情况,再引出二者结合的“中庸”方法

先给出一幅图,这是吴恩达老师课件上的,分别表示三种方法的梯度下降情况

批量梯度下降(Batch Gradient Descent)

若每一次迭代都遍历整个训练集,也就是 m == M,这样迭代的“准确性”最大,对应于上图蓝色那条,每次梯度下降的方向都很好

在计算过程中,向量化把 m 个样本的向量合并成了矩阵。由于 m 值很大,这些矩阵会变得十分庞大,造成计算耗时,慢的缺点

随机梯度下降(Stochastic Gradient Descent)

若 m == 1,也就是每次迭代都只针对一个样本,这样就变成了随机梯度下降。显而易见的是,这样计算速度会变得很快

缺点也很明显,准确性很不好,就如上图紫色那条:大部分情况是向着最小值前进的,但有时某个样本会指向错误的方向,可能向反方向移动,噪声很大

随机梯度下降永远不会收敛,最终会在最小值附近徘徊

小批量梯度下降(Mini-Batch Gradient Descent, MBGD)

把上述两者结合一下,m 取中间值,是Mini-Batch梯度下降法。就是上图中绿色那条,优缺点方面就像前两者融合

把数量为 M 的样本集合分段,迭代的时候依次对每段进行计算(此时 m 就等于段的大小),每段都轮流用过之后,再从第一段开始一个新的循环。

与批梯度下降的比较:

对于批梯度下降法,成本函数每次都在减小,是单调的。这个可以理解,因为每次迭代都针对的是同样的样本集

对于Mini-Batch梯度下降法,出现摆动不再单调,存在噪声。这是因为相邻的迭代是针对不同的样本集(Mini-Batch)

但是成本函数总的趋势还是减小的

Mini-Batch大小的选取

当样本数 M <= 2000时,直接用批梯度下降法就可以

M > 2000时,就可以分成许多Mini-Batch了,大小一般取:64、128、256、512,都是2的次方,这是由于考虑到了电脑内存设置和使用的方式

 

这是目前阶段的理解,日后发现错误或新的感悟再订正

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章