梯度下降,随机梯度下降,小批量梯度下降的联系与区别

在深度学习中,因为我们通常的目标是使模型的损失达到最小。而目标函数有关自变量的梯度代表了目标函数在自变量当前位置下降最快的方向,因此我们常使用梯度下降系列的优化算法来迭代参数,减小损失。
下面介绍一下梯度下降,随机梯度下降,以及小批量梯度下降之间的联系与区别。
梯度下降:直接加载所有的样本进行训练,取每个样本对应特征的梯度的累积和,再除以样本个数。作为该次循环整个样本对应特征的迭代梯度。
梯度下降,随机梯度下降,小批量梯度下降的联系与区别
随机梯度下降:每次训练加载对所有样本进行随机均匀采样得到的一个样本,利用该样本的特征来对目标函数进行迭代。这样做的好处是减小了每次迭代的计算开销。指的强调的是随机梯度 ∇????????(????) 是对梯度 ∇????(????) 的无偏估计。
梯度下降,随机梯度下降,小批量梯度下降的联系与区别
小批量梯度下降:每次训练加载对所有样本进行随机均匀采样多个样本,利用这个小批量样本的特征来对目标函数进行迭代。
梯度下降,随机梯度下降,小批量梯度下降的联系与区别
三者之间的联系:
当使用梯度下降时,有时候训练集过大,内存可能存储不下而爆掉,同时,一次性加载所有的数据集也需要一定的时间,这个加载的时间没有用来训练就会浪费时间。
而使用梯度下降时,其每次只加载一个样本进行迭代。如果想利用完所有的数据集进行迭代,需要迭代的次数可能过多,虽然每次迭代的时间减少了,但是将所有的数据集全都利用之后可能迭代的时间反而更多。且随机梯度下降会因为个体样本之间的差异性。迭代次数较少时,训练的抖动较大。
以一个来自NASA的测试不同飞机机翼噪音的数据集(使用1500个样本)来比较各个优化算法:
梯度下降:学习率设置为1,迭代次数为6
梯度下降,随机梯度下降,小批量梯度下降的联系与区别
随机梯度下降:使用学习率为0.05,因为每次只使用一个样本进行迭代,而采取了两个epoch。相当于参数迭代了15002=3000次,而上述梯度下降每次都使用了所用样本进行迭代。共迭代了6次。可以看到迭代完一个epoch的时间比梯度下降更大。
梯度下降,随机梯度下降,小批量梯度下降的联系与区别
小批量梯度下降:
1)与梯度下降做对照试验。采用学习率为1,一次加载批量为750,训练6个epoch(相当于参数迭代了1500/750
6=12次)。可以看到时间稍微减少(实际上由于该数据集较小,效果不明显,运行时间差不多。)
梯度下降,随机梯度下降,小批量梯度下降的联系与区别
2)与随机梯度下降做对照试验。采用学习率为0.005,一次批量为10,训练两个epoch(相当于参数迭代了1500/10*2=300次)。可以看到训练时间大幅减少。
梯度下降,随机梯度下降,小批量梯度下降的联系与区别
总结:在实际运用中,我们常使用小批量梯度下降。一方面关于深度学习的网络较大,直接加载所有的数据集几乎会爆内存。另一方面,若使用随机梯度下降,每次只加载一个样本,首先不同样本之间会有一定的差异性,利用单个样本去迭代模型参数初期会有些不稳定,其次要想将整个数据集充分利用迭代完所需时间过长,且浪费了计算机的计算能力。此外使用小批量梯度下降时,若使用较大的批量则可设较大的学习率,但同时若批量较大,则利用完一个数据集所有的样本可迭代的次数就会相应减少。所以要适量增加迭代的总循环次数(epoch)。
在利用小批量梯度下降时,在充分利用计算机的计算性能的同时,可以查看内存的使用率,从而设置批量大小充分利用内存,采取较大的批量。