梯度下降的变种

NC ML

梯度下降被定义为

经典梯度下降通过对数据集所有数据进行遍历,计算梯度并更新参数。即对于整个数据集 的期望,即其:

这种做法在数据集很大的情况下,一次更新需要非常大量的计算。因此,有很多变种的梯度下降算法被提出,以减少计算量。

随机梯度下降(SGD)

随机梯度下降(Stochastic Gradient Descent, SGD)是梯度下降的一种变种。在每次迭代中,随机梯度下降只使用一个样本来计算梯度。这样,每次迭代的计算量大大减少。但是由于只使用一个样本,所以每次下降可能不一定总是指向最优方向。因此,SGD的收敛速度可能会变慢。

我们定义梯度的为:

其中 是从数据集中随机抽取的一个样本。

小批量梯度下降(Mini-batch Gradient Descent)

SGD 因为每次只有一个样本,所以训练抖动很大。而传统梯度下降因为每次都要计算整个数据集,所以计算量很大。我们提出一个折中的方案:小批量梯度下降(Mini-batch Gradient Descent)。即每次迭代使用一个小批量的样本来计算梯度。这样,每次迭代的计算量虽然比SGD要大,但比传统梯度下降要小。而且小批量梯度下降的收敛速度通常比SGD要快。

我们定义每次采样 个样本作为一个batch ,梯度为因此被定义为:

有两种方式从数据集中采样:

  • replacement:在取出数据点后放回,即可以重复取
  • without replacement:在取出数据点后不放回

通常来说