梯度下降算法

2024 年 8 月 29 日 | 阅读 3 分钟

梯度下降是一种优化算法,用于最小化许多机器学习算法的成本函数。梯度下降算法用于更新学习模型的参数。

以下是梯度下降的不同类型:

  • 批量梯度下降(Batch Gradient Descent): 批量梯度下降是梯度算法的一种类型,用于在梯度下降的每次迭代中处理所有训练数据集。假设训练数据集的数量很大,批量梯度下降的成本会相对较高。因此,如果训练数据集的数量很大,则不建议用户使用批量梯度下降。相反,他们可以使用小批量梯度下降来处理大型训练数据集。
  • 小批量梯度下降(Mini-Batch Gradient Descent): 小批量梯度下降是一种梯度下降类型,其工作速度比其他两种梯度下降类型快。假设用户有 'p'(其中 'p' 是批量梯度下降)数据集,每次迭代处理 p < m(其中 'm' 是小批量梯度下降)个数据集。因此,即使“p”个训练数据集的数量很大,小批量梯度下降也会在一次尝试中以“p”个训练数据集的批次进行处理。因此,它可以用较少的迭代次数来处理大型训练数据集。
  • 随机梯度下降(Stochastic Gradient Descent): 随机梯度下降是一种梯度下降类型,它可以在每次迭代中处理一个训练数据集。因此,参数将在每次迭代后更新,其中仅处理了一个数据集。这种类型的梯度下降比批量梯度下降更快。但是,即使训练数据集的数量很大,它也一次只处理一个数据集。因此,迭代次数会很大。

使用的变量

'k' 为训练数据集的数量。

'j' 为数据集中特征的数量。

如果 p == k,则小批量梯度下降的行为将与批量梯度下降类似。(其中 'p' 是批量梯度下降)

批量梯度下降使用的算法

hθ(a) 为线性回归的假设。则成本函数将由下式给出:

Σ 表示从 t = 1k 的所有训练数据集的总和。

Gtrain(θ) = (1/2k) Σ (hθ(a(t)) - b(t))2

Repeat {
θg = θg - (learning rate/k) * Σ (hθ(a(t)) - b(t))ag(t)
   For every g = 0 …j
}

其中 ag(t) 代表 t th 训练数据集的 gth 特征。假设如果 'k' 非常大(例如,700 万个训练数据集),则批量梯度下降将花费数小时甚至数天来完成过程。因此,对于大型训练数据集,不建议用户使用批量梯度下降,因为这会减慢机器学习的学习过程。

小批量梯度下降使用的算法

假设 'p' 是一个批次中的数据集数量,其中 p < k

p = 10k = 100;

但是用户可以调整批次大小。这通常写成 2 的幂。

Repeat { For t = 1, 11, 21, ….., 91 Let Σ be the summation from t to t+9 represented by d. Θg = θg - (learning rate/size of (p)) * Σ (hθ(a(d)) - b(d))ag(d) For every g = 0 …j }

随机梯度下降使用的算法

  • 这种梯度下降将随机打乱数据集,以便为每种类型的数据训练参数。
  • 随机梯度下降每次迭代只处理一个数据集。
Hence,
Let (a(t), b(t)) be the training dataset
Cost(θ, (a(t), b(t))) = (1/2) Σ (hθ(a(t)) - b(t))2

Gtrain(θ) = (1/k) Σ Cost (θ, (a(t), b(t)))

Repeat {
  For t = 1 to k{
      Θg = θg - (learning rate) * Σ (hθ(a(t)) - b(t))ag(t)
	    For every g = 0 …j
		
		}
}

结论

在本教程中,我们讨论了梯度下降的不同算法及其变体。