6种梯度下降算法介绍

梯度下降算法是机器学习和深度学习中最常用的优化算法之一。其基本思想是通过反复调整模型参数,以最小化损失函数(误差函数)。梯度下降的原理是沿着损失函数的梯度方向,以一定步长逐步迭代,直到找到最优解或达到收敛条件。

梯度下降算法有多种变体,主要包括以下几类:

1. 批量梯度下降(Batch Gradient Descent,BGD)

原理:

  • 每次迭代时,使用所有的训练数据来计算损失函数的梯度。
  • 然后根据这个梯度更新模型的参数。

更新公式:
θ = θ − η ⋅ 1 N ∑ i = 1 N ∇ θ L ( x i , y i ) \theta = \theta - \eta \cdot \frac{1}{N} \sum_{i=1}^N \nabla_{\theta} L(x_i, y_i) θ=θηN1i=1NθL(xi,yi)
其中:

  • θ \theta θ 是模型的参数。
  • η \eta η 是学习率。
  • ∇ θ L ( x i , y i ) \nabla_{\theta} L(x_i, y_i) θL(xi,yi) 是对参数 θ \theta θ 计算的梯度。
  • N N N 是训练样本的数量。

优点:

  • 全局的、稳定的收敛过程。
  • 每次迭代都准确地指向损失函数下降的方向。

缺点:

  • 每次迭代需要计算所有样本的梯度,计算开销大,尤其在大数据集上,时间开销较高。
  • 由于每次使用整个数据集,可能会导致内存使用量过大。

2. 随机梯度下降(Stochastic Gradient Descent,SGD)

原理:

  • 每次迭代只使用一个样本来计算梯度,并立即更新参数。

更新公式:
θ = θ − η ⋅ ∇ θ L ( x i , y i ) \theta = \theta - \eta \cdot \nabla_{\theta} L(x_i, y_i) θ=θηθL(xi,yi)
其中:

  • x i x_i xi y i y_i yi 是训练集中某个随机样本。

优点:

  • 每次只使用一个样本,计算效率高,特别是在大数据集上能节省时间。
  • 更快地对每个样本做出响应,使得它在实时应用中非常有效。
  • 由于每次使用一个样本,增加了一定的随机性,可能有助于跳出局部最优解。

缺点:

  • 更新过程具有较大的波动性,因为每次只使用一个样本,可能无法保证梯度更新的稳定性。
  • 收敛速度可能较慢,且容易受到学习率选择的影响。

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

原理:

  • 结合了批量梯度下降和随机梯度下降的优点,每次迭代使用一小部分数据(称为小批量)来计算梯度,并更新参数。

更新公式:
θ = θ − η ⋅ 1 m ∑ i = 1 m ∇ θ L ( x i , y i ) \theta = \theta - \eta \cdot \frac{1}{m} \sum_{i=1}^m \nabla_{\theta} L(x_i, y_i) θ=θηm1i=1mθL(xi,yi)
其中:

  • m m m 是小批量的大小。
  • 其余符号的意义与之前相同。

优点:

  • 减少了计算开销,比批量梯度下降更快。
  • 波动性比随机梯度下降小,因此更新更平稳。
  • 小批量大小可以调节,以适应内存和性能。

缺点:

  • 尽管相较于 SGD 波动性小,但仍然有一定的随机性,可能导致收敛路径不稳定。

4. 动量梯度下降(Gradient Descent with Momentum)

原理:

  • 在普通梯度下降的基础上引入“动量”概念。动量会在每次更新时保留一部分上一次的更新方向,并在下次迭代中加以利用,从而加速收敛,尤其是在有很多局部最小值的非凸优化问题中。

更新公式:
v = γ v + η ⋅ ∇ θ L ( x , y ) v = \gamma v + \eta \cdot \nabla_{\theta} L(x, y) v=γv+ηθL(x,y)

θ = θ − v \theta = \theta - v θ=θv

其中:

  • v v v 是动量向量,代表累积的梯度变化。
  • γ \gamma γ 是动量系数(通常取 0.9)。

优点:

  • 减少了梯度更新中的震荡,尤其是在凹凸形状的表面上。
  • 能加速梯度下降的收敛,特别是在长而平的曲面上。

缺点:

  • 需要调节额外的超参数(动量系数),并且对初始化较为敏感。

5. RMSProp(Root Mean Square Propagation)

原理:

  • RMSProp 会调整学习率,使得每次更新的步长自适应于不同参数的变化速度。通过对过去的梯度平方进行指数加权平均,来动态调整学习率,使得参数更新更加平滑。

更新公式:
E [ g 2 ] t = γ E [ g 2 ] t − 1 + ( 1 − γ ) g t 2 E[g^2]_t = \gamma E[g^2]_{t-1} + (1-\gamma) g_t^2 E[g2]t=γE[g2]t1+(1γ)gt2

θ = θ − η E [ g 2 ] t + ϵ g t \theta = \theta - \frac{\eta}{\sqrt{E[g^2]_t + \epsilon}} g_t θ=θE[g2]t+ϵ ηgt

其中:

  • E [ g 2 ] t E[g^2]_t E[g2]t 是梯度平方的加权平均。
  • ϵ \epsilon ϵ 是防止分母为零的常数。
  • γ \gamma γ 是指数加权平均的衰减率,通常取 0.9。

优点:

  • 自适应学习率,有效应对学习率不适的问题。
  • 在非凸优化问题中表现优异。

缺点:

  • 超参数 γ \gamma γ η \eta η 仍需要调节。

6. Adam(Adaptive Moment Estimation)

原理:

  • Adam 结合了动量法和 RMSProp,既使用了梯度的一阶矩估计(动量),也使用了梯度的二阶矩估计(RMSProp 中的平方梯度)。通过对一阶和二阶矩进行修正,Adam 可以提供一个更平滑的更新过程。

更新公式:
m t = β 1 m t − 1 + ( 1 − β 1 ) g t m_t = \beta_1 m_{t-1} + (1 - \beta_1) g_t mt=β1mt1+(1β1)gt

v t = β 2 v t − 1 + ( 1 − β 2 ) g t 2 v_t = \beta_2 v_{t-1} + (1 - \beta_2) g_t^2 vt=β2vt1+(1β2)gt2

m ^ t = m t 1 − β 1 t , v ^ t = v t 1 − β 2 t \hat{m}_t = \frac{m_t}{1 - \beta_1^t}, \quad \hat{v}_t = \frac{v_t}{1 - \beta_2^t} m^t=1β1tmt,v^t=1β2tvt

θ = θ − η v ^ t + ϵ m ^ t \theta = \theta - \frac{\eta}{\sqrt{\hat{v}_t} + \epsilon} \hat{m}_t θ=θv^t +ϵηm^t

其中:

  • m t m_t mt v t v_t vt 分别是梯度的动量和平方动量。
  • β 1 \beta_1 β1 β 2 \beta_2 β2 是一阶矩和二阶矩的衰减率(通常取 0.9 和 0.999)。
  • ϵ \epsilon ϵ 是一个小常数,用于防止分母为零。

优点:

  • 具有自适应学习率,可以处理稀疏梯度。
  • 结合动量和 RMSProp 的优点,更新更加平滑和稳定。
  • 是目前深度学习中最常用的优化算法之一。

缺点:

  • 在某些情况下可能会产生较大的步长,导致模型的过拟合。

总结:

  1. 批量梯度下降:使用所有样本更新参数,收敛稳定,但速度较慢。
  2. 随机梯度下降:每次更新一个样本,速度快,但收敛波动较大。
  3. 小批量梯度下降:折中方案,每次使用小批量样本,平衡速度与稳定性。
  4. 动量法:通过累积梯度加速收敛。
  5. RMSProp:通过调整学习率应对不同参数的变化速度。
  6. Adam:结合动量和 RMSProp,提供自适应的学习率更新。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值