大语言模型的终极之路
  • 大语言模型的终极之路
  • 更新计划
  • 大语言模型时代的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. 优化算法

牛顿法

上一页优化算法下一页梯度下降

最后更新于10个月前

牛顿法(Newton's method),也称为牛顿-拉弗森法(Newton-Raphson method),是一种寻找函数零点或最优解的迭代方法。对于找到函数的最优解,它主要用于解决无约束优化问题,即找到使函数达到极小值或极大值的点。在这种情境下,牛顿法通过迭代地计算导数信息来逐步逼近最优解。

牛顿法的基本思想如下:

  1. 函数 f(x) 有一阶导数 f'(x) )和二阶导数 f''(x) 。

  2. 从某个初始猜测点 x0x_0x0​ 开始,利用泰勒展开式近似 f(x)f(x)f(x) 的行为,预测下一个更接近极值点的估计 xn+1x_{n+1}xn+1​。

  3. 更新公式: xn+1=xn−f′(xn)f′′(xn)x_{n+1} = x_n - \frac{f'(x_n)}{f''(x_n)}xn+1​=xn​−f′′(xn​)f′(xn​)​

这个迭代公式会逐步靠近函数的极小点或极大点。

例子:利用牛顿法找到一元二次方程的最优解

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

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

    二阶导数 f''(x) = 2

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

  3. 应用牛顿法更新公式: 利用牛顿法的更新公式: xn+1=xn−f′(xn)f′′(xn)x_{n+1} = x_n - \frac{f'(x_n)}{f''(x_n)}xn+1​=xn​−f′′(xn​)f′(xn​)​

  4. 计算:

    • 设 ( n = 0 ),初始点 (x0=0)[f′(x0)=2(0)−4=−4][f′′(x0)=2][x1=x0−f′(x0)f′′(x0)=0−−42=2]( x_0 = 0 ) [ f'(x_0) = 2(0) - 4 = -4 ] [ f''(x_0) = 2 ] [ x_1 = x_0 - \frac{f'(x_0)}{f''(x_0)} = 0 - \frac{-4}{2} = 2 ](x0​=0)[f′(x0​)=2(0)−4=−4][f′′(x0​)=2][x1​=x0​−f′′(x0​)f′(x0​)​=0−2−4​=2]

    • 设 ( n = 1 ),新的点 (x1=2)[f′(x1)=2(2)−4=0][f′′(x1)=2][x2=x1−f′(x1)f′′(x1)=2−02=2]( x_1 = 2 ) [ f'(x_1) = 2(2) - 4 = 0 ] [ f''(x_1) = 2 ] [ x_2 = x_1 - \frac{f'(x_1)}{f''(x_1)} = 2 - \frac{0}{2} = 2 ](x1​=2)[f′(x1​)=2(2)−4=0][f′′(x1​)=2][x2​=x1​−f′′(x1​)f′(x1​)​=2−20​=2]

注意到,已经得到 f′(x1)=0f'(x_1) = 0f′(x1​)=0 且 f′′(x1)≠0f''(x_1) \neq 0f′′(x1​)=0,根据导数定义,这是函数的极小值点。

因此在这个例子中,通过一次迭代,已经找到最优点 x=2x = 2x=2。

总结,牛顿法通过利用一阶和二阶导数信息,以迭代方式逐步收敛到目标函数的极值点。在这个一元二次方程中的例子,经由一次迭代即找到极小值点 x=2x = 2x=2 。