假设神经网络的成本函数为
其中 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的次方,这是由于考虑到了电脑内存设置和使用的方式
这是目前阶段的理解,日后发现错误或新的感悟再订正