小批量随机梯度下降
小批量随机梯度下降
请先食用 梯度下降
一、随机梯度下降
当训练样本有N个时,我们的在训练时的优化目标为在该数据集上的平均损失函数:
其梯度为
从上式可以看出,计算目标函数的梯度时,要计算每个样本损失函数的梯度,再求均值。然而
深度学习模型训练复杂度最大的祸源就在于求梯度 ------ 李沐
我们观察一下
确实如此,每次迭代一次都要对个损失函数求梯度再求平均,这样的复杂度是的
那什么是随机梯度下降呢?
与梯度下降相比,多了随机二字,其实就是在每次迭代中,对数据样本随机均匀采样一个索引,并计算第个样本的损失的梯度来更新
二、小批量随机梯度下降
进一步,在每次迭代时,我们可以选取一批样本,将损失函数定义在这些样本上,作为整个样本集的损失函数近似值
目标函数为:
其中为批量大小
简单理解为:每次先对所有训练样本进行随机洗牌,打乱顺序;然后将其均匀分成多份,每份个样本;然后依次用每一份执行梯度下降算法进行迭代
合理性:随机梯度下降在数学期望的意义下是收敛的,随机采样产生的梯度的期望值是真实的梯度
想理解这句话,需要先理解如下数理统计知识:
- 无偏估计(Unbiased Estimator):
- 无偏估计是指估计量的期望值等于被估计参数的真实值。在SGD中,每个小批量样本的梯度是对真实梯度的无偏估计
- 大数定律(Law of Large Numbers):
- 大数定律描述了随着样本容量的增加,样本均值趋近于期望值。在SGD中,随着对不同小批量样本的抽样次数增加,期望梯度趋近于真实梯度。
- 收敛定理(Convergence Theorems):
- 收敛定理用于说明在什么条件下,一个随机过程或算法会在某个意义下趋近于一个特定值。在SGD中,收敛定理用于说明在学习率等条件下,算法在数学期望的意义下趋于收敛。
三、总结
引用一个结论:
随机梯度下降法并不能保证每次迭代后目标函数值下降,事实上,每次迭代时使用的是不同的目标函数。但是通常情况下目标函数的整体趋势是下降的,能够收敛到局部极值点处
这个好理解,但是在网上看到一个问题:想象我们现在处于一个马鞍面的山头上,我们要采用随机梯度下降算法去下山,比如初始位置是马鞍的一峰,很容易找到马鞍的中心位置,但是到了中心位置,四周接近平地了(梯度为零),又该如何去判断方向呢?
至于为什么深度学习中常用的小批量随机梯度下降,除了减少计算开销,我觉得肯定还有其他方面的原因,怎么就蹦出来一个小批量呢(已经说明其合理性)?
希望在后续的学习中带着这些问题,慢慢理解吧~
持续更新中
本篇参考自雷明的《机器学习的数学》
ubject/35317174/)