【机器学习】梯度下降

文章目录

    • [1. 梯度下降概念](#1. 梯度下降概念)
    • [2. 梯度下降的技巧](#2. 梯度下降的技巧)
      • [2.1 动态设置学习率](#2.1 动态设置学习率)
      • [2.2 Adagrad调整梯度](#2.2 Adagrad调整梯度)
      • [2.3 随机梯度下降(SGD)](#2.3 随机梯度下降(SGD))
      • [2.4 特征缩放](#2.4 特征缩放)
    • [3. 梯度下降理论基础](#3. 梯度下降理论基础)

1. 梯度下降概念

  • 梯度:Loss 对参数在某一点的偏微分,函数沿梯度的方向具有最大的变化率
  • 梯度下降:从某点出发,计算该点梯度,以一定的学习率沿着该梯度的反方向移动,直到梯度接近 0
  • 公式: w t + 1 = w t − η d L d w w_{t+1} = w_t - \eta \frac{dL}{dw} wt+1=wt−ηdwdL

2. 梯度下降的技巧

2.1 动态设置学习率

  • 原理:离终端越远,学习率越大;离终点越近,学习率越小。
  • 公式: η t = η t \eta_t = \frac{\eta}{\sqrt{t}} ηt=t η
    其中,t 是迭代次数。

2.2 Adagrad调整梯度

  • 原理:

    • 梯度大的时候,调正的步伐不一定要大,要综合考虑到二阶导数的影响。
    • 通过参数的历史信息来调整学习率。
  • 使用 Adagrad 方法更新参数的公式:

    • η t σ t = η ∑ i = 1 t ( g i ) 2 \frac{\eta^t}{\sigma^t} = \frac{\eta}{\sqrt{\sum_{i=1}^{t} (g^i)^2}} σtηt=∑i=1t(gi)2 η
    • w t + 1 = w t − η t σ t g t w^{t+1} = w^t - \frac{\eta^t}{\sigma^t} g^t wt+1=wt−σtηtgt

    其中: σ t \sigma^t σt 是梯度平方的累加和(即历史梯度的平方和的平方根)。

  • 总结:化简后,分子是一阶导数,分母其实是反应二阶导数的影响

2.3 随机梯度下降(SGD)

  • 概念:不考虑所有样本,每次随机选取某个或某些样本点来做梯度下降更新参数。
  • 作用:
    • 训练更迅速,结果也不会太差。
    • 可能受到某些样本的影响,导致不精确。

2.4 特征缩放

  • 概念:将不同的输入特征统一缩放到相同的范围或分布。

特征归一化

  • 公式: x ′ = x − min ⁡ ( x ) max ⁡ ( x ) − min ⁡ ( x ) x' = \frac{x - \min(x)}{\max(x) - \min(x)} x′=max(x)−min(x)x−min(x)
  • 将数据统一到特定的范围,避免某些极端数据的影响。

特征标准化

  • 公式: x ′ = x − μ σ x' = \frac{x - \mu}{\sigma} x′=σx−μ

    其中:

    • μ \mu μ 是特征的均值。
    • σ \sigma σ 是特征的标准差。
  • 效果:

    • 数据更符合正态分布,处理后的特征均值为 0,标准差为 1。
    • 减少特征间方差的差异,帮助加速收敛。

特征缩放的优点

  • 未处理之前:

    • Loss 是一个椭圆,每次更新沿着等高线(梯度)方向走,不是往圆心(最低点)走。
    • 如果不使用 Adagrad,可能很难得到好的结果。
  • 处理之后:

    • Loss 是一个圆,每次更新都往圆心(最低点)走,容易训练。
    • 有助于模型训练和加快收敛速度。

3. 梯度下降理论基础

泰勒级数近似

  • 理论:
    • 移动方向与梯度(偏导)方向相反时,内积最小。
    • 发现附近以 \\theta 半径圈的最小值,移动到那里。

使用前提

  • Loss function 必须是无限可微的。
  • 附近圈小,可以忽略高次项,意味着学习率要足够小。

相关推荐
陈广亮24 分钟前
构建具有长期记忆的 AI Agent:从设计模式到生产实践
人工智能
会写代码的柯基犬33 分钟前
DeepSeek vs Kimi vs Qwen —— AI 生成俄罗斯方块代码效果横评
人工智能·llm
Mintopia1 小时前
OpenClaw 是什么?为什么节后热度如此之高?
人工智能
爱可生开源社区1 小时前
DBA 的未来?八位行业先锋的年度圆桌讨论
人工智能·dba
叁两4 小时前
用opencode打造全自动公众号写作流水线,AI 代笔太香了!
前端·人工智能·agent
前端付豪4 小时前
LangChain记忆:通过Memory记住上次的对话细节
人工智能·python·langchain
strayCat232554 小时前
Clawdbot 源码解读 7: 扩展机制
人工智能·开源
王鑫星4 小时前
SWE-bench 首次突破 80%:Claude Opus 4.5 发布,Anthropic 的野心不止于写代码
人工智能
lnix4 小时前
当“大龙虾”养在本地:我们离“反SaaS”的AI未来还有多远?
人工智能·aigc