大语言模型的终极之路
  • 大语言模型的终极之路
  • 更新计划
  • 大语言模型时代的NLP
    • 任务与评测
    • 参考资料
  • 基础知识
    • 负对数似然
    • Transformer
      • Cross Attention
      • 向量流动视角
      • Layer Normalization
      • Attention Block
    • 优化算法
      • 牛顿法
      • 梯度下降
  • 大语言模型
    • 大模型理论
      • Scaling Law
      • The Bitter Lesson
      • 思考,快与慢
    • 模型结构
      • MLP
      • Rotary Embedding
      • RMSNorm
      • Encoder-decoder
      • Decoder-only
      • MOE
      • 常见大模型
        • T5
        • GPT2
        • LLaMA
        • LLaMA 2
        • Mistral
        • GLM
        • Mixture
    • 如何训练一个ChatGPT
    • 微调
      • Instruction Tuning 指令微调
      • Domain Finetune 领域微调
    • 解码
      • 温度采样
      • Beam Search Decoding
  • Prompt 工程
    • Prompt, 一种技术路线
    • Prompt 写作规范
    • In-Context Learning
    • Chain-of-Thought
    • Generate Rather than Read
    • Program-of-Thought
    • Tree-of-Thought
    • 参考资料
  • 知识与幻觉
    • 知识边界
  • 大规模预训练
    • 计算资源消耗
    • Deepspeed
    • Megatron
    • 大规模数据处理
    • CUDA 算子优化
  • 强化学习
    • RLHF
      • RLHF
  • 大模型轻量化
    • 蒸馏
      • 黑盒蒸馏
      • 白盒蒸馏
        • KL 散度
    • 轻量化微调
      • LoRA
    • 量化
    • 剪枝
    • 推理加速
    • 参考资料
  • RAG-大模型检索
    • Page 3
  • 多智能体
    • Page 6
  • 多模态大模型
    • Page 1
  • 大模型安全与鲁棒
由 GitBook 提供支持
在本页
  1. 基础知识
  2. 优化算法

梯度下降

梯度下降法(Gradient Descent)是一种常用的优化算法,广泛应用于机器学习和深度学习中,用于找到函数的局部最小值。其基本思想是不断沿着函数的梯度(即导数)反方向更新参数,使得函数值逐步减小,从而接近最优解。

梯度下降法的基本步骤如下:

  1. 选择初始点 x0x_0x0​ 。

  2. 设定学习率 α\alphaα,它控制每次迭代的步长。

  3. 迭代更新 ( x ): xn+1=xn−α⋅f′(xn)x_{n+1} = x_n - \alpha \cdot f'(x_n)xn+1​=xn​−α⋅f′(xn​) 其中 f′(xn)f'(x_n)f′(xn​) 是函数 f(x) f(x)f(x) 在点 xn x_n xn​ 的一阶导数。

这个过程会持续进行,直到收敛到一个足够接近的最优解点。

例子:利用梯度下降法找到一元二次方程的最优解

考虑一个简单的一元二次方程: f(x)=x2−4x+4 f(x) = x^2 - 4x + 4f(x)=x2−4x+4

  1. 找出导数: 一阶导数 f′(x)=2x−4 f'(x) = 2x - 4f′(x)=2x−4

  2. 选择一个初始点: 设定初始点 x0=0x_0 = 0 x0​=0

  3. 设定学习率 α\alphaα: 选择一个适当的学习率,比如 α=0.1\alpha = 0.1α=0.1

  4. 应用梯度下降更新公式: 利用梯度下降的更新公式: xn+1=xn−α⋅f′(xn)x_{n+1} = x_n - \alpha \cdot f'(x_n)xn+1​=xn​−α⋅f′(xn​)

  5. 计算迭代步骤:

    • 设 n = 0 ,初始点 (x0=0)[f′(x0)=2(0)−4=−4][x1=x0−α⋅f′(x0)=0−0.1⋅(−4)=0.4]( x_0 = 0 ) [ f'(x_0) = 2(0) - 4 = -4 ] [ x_1 = x_0 - \alpha \cdot f'(x_0) = 0 - 0.1 \cdot (-4) = 0.4 ](x0​=0)[f′(x0​)=2(0)−4=−4][x1​=x0​−α⋅f′(x0​)=0−0.1⋅(−4)=0.4]

    • 设 n = 1 ,新的点 (x1=0.4)[f′(x1)=2(0.4)−4=−3.2][x2=x1−α⋅f′(x1)=0.4−0.1⋅(−3.2)=0.72]( x_1 = 0.4 ) [ f'(x_1) = 2(0.4) - 4 = -3.2 ] [ x_2 = x_1 - \alpha \cdot f'(x_1) = 0.4 - 0.1 \cdot (-3.2) = 0.72 ](x1​=0.4)[f′(x1​)=2(0.4)−4=−3.2][x2​=x1​−α⋅f′(x1​)=0.4−0.1⋅(−3.2)=0.72]

    • 设 n = 2 ,新的点 (x2=0.72)[f′(x2)=2(0.72)−4=−2.56][x3=x2−α⋅f′(x2)=0.72−0.1⋅(−2.56)=0.976]( x_2 = 0.72 ) [ f'(x_2) = 2(0.72) - 4 = -2.56 ] [ x_3 = x_2 - \alpha \cdot f'(x_2) = 0.72 - 0.1 \cdot (-2.56) = 0.976 ](x2​=0.72)[f′(x2​)=2(0.72)−4=−2.56][x3​=x2​−α⋅f′(x2​)=0.72−0.1⋅(−2.56)=0.976]

    持续迭代,参数 ( x ) 会逐渐逼近最优解。

注意:学习率 α\alphaα 的选择非常重要。如果学习率太大,可能会跳过最优解,甚至不收敛;如果学习率太小,收敛速度会非常慢。因此,通常需要进行调试或使用自适应学习率等技术来优化。

总结:梯度下降法通过反复更新参数,沿着函数梯度的负方向逐步减小函数值,从而逼近最优解。在本例中的一元二次方程,逐步计算并更新参数,即可接近极小值点 ( x = 2 )。

上一页牛顿法下一页大模型理论

最后更新于10个月前