什么是梯度下降?它的工作原理是什么?有哪些变体?

梯度下降:核心概念

梯度下降(Gradient Descent)是一种迭代优化算法,用于寻找可微函数的局部最小值。它通过沿函数梯度(导数)的反方向逐步调整参数,最小化目标函数(如机器学习中的损失函数)。


工作原理:分步解析

1. 梯度计算
  • 梯度(∇J):目标函数 ( J(\theta) ) 关于参数 ( \theta ) 的偏导数向量,指向函数值上升最快的方向
  • 核心思想:沿梯度反方向(( -\nabla J(\theta) ))更新参数,使函数值下降。
2. 参数更新规则

[
\theta_{\text{new}} = \theta_{\text{old}} - \alpha \cdot \nabla J(\theta_{\text{old}})
]

  • ( \theta ):待优化参数(如权重)
  • ( \alpha ):学习率(步长),控制更新幅度
  • ( \nabla J(\theta) ):当前参数处的梯度
3. 迭代过程
初始化参数 θ  
while 未收敛:  
    计算梯度 ∇J(θ)  
    更新参数:θ = θ - α * ∇J(θ)  
    检查收敛条件(如梯度接近0、达到最大迭代次数)  
4. 关键概念图解
损失函数曲面:  
      高点  
      /|\  
       | 梯度方向 (上升)  
       |  
θ_new <--- 梯度反方向 (下降)  
       |  
      \|/  
      低点  

主要变体及特点

1. 批量梯度下降(Batch GD)
  • 原理:每次迭代使用整个训练集计算梯度。
  • 优点:梯度方向稳定,收敛到全局最优(凸函数)。
  • 缺点:计算开销大,内存要求高,不适合大数据集。
  • 更新公式
    [
    \theta = \theta - \alpha \cdot \frac{1}{N} \sum_{i=1}^{N} \nabla J(\theta; x_i, y_i)
    ]
2. 随机梯度下降(SGD)
  • 原理:每次迭代随机选一个样本计算梯度。
  • 优点:计算快,可在线学习,能跳出局部极小值。
  • 缺点:梯度波动大,收敛路径震荡。
  • 更新公式
    [
    \theta = \theta - \alpha \cdot \nabla J(\theta; x_i, y_i) \quad (\text{随机选 } i)
    ]
3. 小批量梯度下降(Mini-batch GD)
  • 原理:每次迭代使用一小批样本(如32、64个)计算梯度。
  • 优点:平衡计算效率和稳定性(深度学习最常用方法)。
  • 更新公式
    [
    \theta = \theta - \alpha \cdot \frac{1}{B} \sum_{i=1}^{B} \nabla J(\theta; x_i, y_i) \quad (B=\text{批次大小})
    ]

高级优化变体

1. 动量法(Momentum)
  • 原理:引入动量项 ( v ) 模拟惯性,加速收敛并减少震荡。
  • 更新规则
    [
    v = \beta v + (1 - \beta) \nabla J(\theta) \
    \theta = \theta - \alpha v
    ]
    (( \beta ) 通常取0.9,控制历史梯度影响)
2. AdaGrad
  • 原理:自适应调整学习率,对稀疏特征加大更新。
  • 更新规则
    [
    s = s + (\nabla J(\theta))^2 \
    \theta = \theta - \frac{\alpha}{\sqrt{s + \epsilon}} \cdot \nabla J(\theta)
    ]
    (( s ) 累积梯度平方,( \epsilon ) 防除零)
3. RMSProp
  • 改进:解决 AdaGrad 学习率过早衰减问题,引入衰减系数 ( \rho )。
    [
    s = \rho s + (1 - \rho) (\nabla J(\theta))^2 \
    \theta = \theta - \frac{\alpha}{\sqrt{s + \epsilon}} \cdot \nabla J(\theta)
    ]
4. Adam(最流行)
  • 原理:结合动量法和 RMSProp,自适应学习率。
  • 更新规则
    [
    m = \beta_1 m + (1 - \beta_1) \nabla J(\theta) \quad \text{(一阶矩)} \
    v = \beta_2 v + (1 - \beta_2) (\nabla J(\theta))^2 \quad \text{(二阶矩)} \
    \theta = \theta - \alpha \cdot \frac{\hat{m}}{\sqrt{\hat{v}} + \epsilon} \quad \text{(偏差校正后)}
    ]
    (推荐值:( \beta_1=0.9, \beta_2=0.999, \epsilon=10^{-8} ))

关键问题与解决方案

问题解决方案
局部极小值使用动量法、随机梯度下降
学习率选择困难AdaGrad/RMSProp/Adam 自适应调整
鞍点停滞动量法帮助逃离鞍点
梯度消失/爆炸结合梯度裁剪、权重初始化技巧

直观理解:下山比喻

想象你蒙眼在山顶(高损失点)找山谷(最低点):

  1. 梯度:用脚探测最陡的下坡方向。
  2. 学习率:每一步的跨度(太大可能跨过山谷,太小则耗时)。
  3. 动量:如同带惯性下山,避免来回震荡。
  4. 小批量:随机选几条小路探路,综合决定方向。

总结

  • 本质:通过负梯度方向迭代更新参数。
  • 变体选择
    • 大数据集 → 小批量 GDAdam
    • 稀疏数据 → AdaGrad
    • 非凸优化 → 动量法Adam
  • 调参关键:学习率、批次大小、优化器超参数(如 ( \beta ))。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值