模型层 开放阅读

Cosine Decay

Cosine Learning Rate Decay

概念 ID
cosine-learning-rate-decay
更新时间
2026-05-29
来源数量
待补

Cosine Decay(余弦学习率衰减)

3 秒看懂

一句话:让学习率从高到低按”余弦曲线”平滑下降——训练初期大步快走,后期小步微调,比阶梯式衰减更丝滑、更稳定。

类比:像跑马拉松——前半程配速较高稳步输出,后半程逐渐降速保留体力冲刺,而不是突然停跑再起步。

3 分钟产业解释

这是什么?

Cosine Decay(余弦衰减)是深度学习训练中**学习率调度策略(Learning Rate Schedule)**的一种,核心思想是让学习率按照余弦函数的半个周期(从1降到0)进行平滑衰减。

为什么重要?

在大模型时代,训练一次 GPT-4 量级模型的成本可达数亿美元。学习率调度直接影响:

  • 收敛质量:最终模型性能(loss 下限)
  • 训练稳定性:避免 loss spike 或发散
  • 算力效率:相同算力下达到更低的 loss

Cosine Decay 已成为事实上的默认标准调度策略——从 GPT 系列到 LLaMA、从 Stable Diffusion 到 ResNet,几乎所有主流架构的训练都采用它或其变体。

行业地位

Cosine Decay 的论文(Loshchilov & Hutter, 2017)是机器学习领域引用量最高的论文之一。它不是”可选项”,而是大模型训练配方(Training Recipe)的基础设施

15 分钟专家深入

核心机制

Cosine Decay 的数学表达式:

η(t) = η_min + ½(η_max - η_min)(1 + cos(πt / T))

其中:

  • η(t) = 第 t 步的学习率
  • η_max = 初始最大学习率
  • η_min = 最终最小学习率(常设为 0 或 η_max 的 1/10)
  • T = 总训练步数(或总 epoch 数)
  • t = 当前步数(从 0 开始)

曲线特征

学习率
  ↑
η_max ┤●
      │  ╲
      │    ╲
      │      ╲          ← 前期下降较慢,保留大步长探索
      │        ╲
      │          ╲
      │            ╲    ← 中期下降最快
      │              ╲
      │                ╲
η_min ┤──────────────────●
      └──────────────────→ 训练步数
         0              T

与 Warmup 的配合

实际工程中,Cosine Decay 几乎总是与 Warmup 阶段配合使用:

学习率
  ↑
η_max ┤      ●────────●
      │     ╱          ╲
      │    ╱            ╲
      │   ╱              ╲
      │  ╱                ╲
      │ ╱                  ╲
      │●                    ╲
   0  ┤                      ●
      └───────────────────────→ 步数
      │warmup│ │  cosine decay  │

完整流程:

  1. Warmup 阶段(通常 0.1%~5% 总步数):学习率从 0 或极小值线性升至 η_max
  2. Cosine Decay 阶段:从 η_max 按余弦曲线降至 η_min

关键变体

变体核心改动适用场景
标准 Cosine Decay单周期余弦衰减通用训练
Cosine with Warmup前置线性 warmup大模型训练(标配)
SGDR (Warm Restarts)周期性重启(多次余弦周期)需要跳出局部最优
Cosine with Floorη_min > 0,不到零微调场景,保留最低学习能力
WSD (Warmup-Stable-Decay)先稳定再余弦衰减最近的大模型训练趋势

技术原理

为什么是余弦?而非线性或指数?

直觉:余弦函数在两端变化缓慢、中间变化快,这恰好匹配了训练的优化景观:

训练阶段:   │ 早期(探索) │ 中期(快速下降) │ 后期(精细调优) │
            │             │                 │                 │
学习率需求: │ 需要大步长   │ 快速降低步长     │ 极小步长稳定     │
            │ 探索参数空间 │ 避免震荡         │ 收敛到最优解     │
            │             │                 │                 │
余弦曲线:   │ 变化平缓     │ 变化最快         │ 变化平缓         │
            │ 保持大 LR   │ 快速下降 LR      │ LR 接近零        │

数学角度

  • 线性衰减:全程恒定斜率,前期降得太快(过早丧失探索能力),后期降得太慢(接近最优时仍较大)
  • 指数衰减:前期下降快但后期下降慢,容易导致训练末期学习率过小而”停滞”
  • 余弦衰减:两端慢、中间快,与 loss landscape 的收敛动态更匹配

与损失函数曲面的对应关系

参数空间示意(俯视图):

训练早期:                    训练后期:
    · · ·                        ·
   · · · ·                    · · ·
  · · · · ·      →           · ● ·    ← 收敛到最优附近
   · · · ·                    · · ·
    · · ·                        ·
  大范围随机探索               小范围精细搜索
  需要大 LR                   需要小 LR

PyTorch 实现伪代码

import math

def cosine_decay(step, total_steps, lr_max, lr_min=0.0):
    """标准 Cosine Decay(不含 warmup)"""
    # 归一化进度到 [0, 1]
    progress = step / total_steps
    # 余弦衰减公式
    cosine_factor = 0.5 * (1 + math.cos(math.pi * progress))
    # 线性插值
    lr = lr_min + (lr_max - lr_min) * cosine_factor
    return lr

def cosine_with_warmup(step, warmup_steps, total_steps, lr_max, lr_min=0.0):
    """带 Warmup 的 Cosine Decay"""
    if step < warmup_steps:
        # 线性 warmup
        return lr_max * (step / warmup_steps)
    else:
        # 余弦衰减
        decay_steps = total_steps - warmup_steps
        progress = (step - warmup_steps) / decay_steps
        cosine_factor = 0.5 * (1 + math.cos(math.pi * progress))
        return lr_min + (lr_max - lr_min) * cosine_factor

关键超参数

超参数含义典型取值影响
η_max峰值学习率1e-4 ~ 3e-3(取决于模型大小和批大小)最重要的超参数之一
η_min最终学习率0 或 η_max/10过高则不收敛,过低无影响
T总步数由训练配置决定必须准确设定,否则衰减曲线不匹配
warmup_steps预热步数总步数的 0.1%~5%过短可能不稳定,过长浪费算力

技术演进史

时间线:

2012  │ AlexNet 使用手动阶梯衰减(step decay)
      │   ↓ 学习率在特定 epoch 除以 10
      │
2015  │ "Cyclical Learning Rates" (Smith, 2015)
      │   ↓ 首次提出周期性变化学习率
      │
2017  │ ★ SGDR: Stochastic Gradient Descent with Warm Restarts (Loshchilov & Hutter)
      │   ↓ 论文首次提出 Cosine Annealing / Cosine Decay
      │   ↓ 提出带重启的变体(Warm Restarts)
      │   ↓ [论文原作:ICLR 2017, arXiv:1608.03983]
      │
2018  │ 逐渐成为 CV 领域标配(ResNet、DenseNet 训练)
      │
2020  │ GPT-3 训练采用 cosine schedule
      │   ↓ 标志着进入大模型训练标配
      │
2023  │ LLaMA、Mistral 等开源模型训练默认使用
      │   ↓ 几乎成为唯一主流选择
      │
2024  │ WSD (Warmup-Stable-Decay) 作为替代方案开始出现
      │   ↓ MiniCPM、部分实验显示可行性
      │   ↓ 但 cosine 仍是绝对主流
      │
至今  │ Cosine Decay + Warmup = 行业标准配方

关键转折点:2017年 Loshchilov & Hutter 的论文是里程碑。在此之前,学习率调度主要是工程经验(手动设阶梯衰减);在此之后,有了统一的数学框架。


技术路线对比

调度策略公式优点缺点使用场景
Step DecayLR = LR₀ × γ^(floor(epoch/milestone))简单直观不连续、需手动调阈值早期经典训练
Exponential DecayLR = LR₀ × γ^t平滑连续后期下降过快较少单独使用
Cosine DecayLR = η_min + ½(η_max-η_min)(1+cos(πt/T))平滑、两端慢中间快、广泛验证需预知总步数主流标配
Linear DecayLR = η_max - (η_max-η_min)×(t/T)最简单前期衰减太快简单场景
WSDWarmup → 恒定 LR → 短期快速衰减可灵活延长训练新方法、验证较少探索中
Inverse SqrtLR = η_max / √t无需预知总步数后期衰减太快NLP 部分场景
Constant LRLR = η_max最简单不收敛到最优仅用于预实验

量化比较(示意性,非精确基准)

最终 loss 对比(相同训练设置,越低越好):

Step Decay:       ████████████░░░░░░░  0.35
Exponential:      █████████████░░░░░░  0.32
Linear Decay:     █████████████░░░░░░  0.31
Cosine Decay:     ██████████████░░░░░  0.28  ← 通常最优或接近最优
WSD:              ██████████████░░░░░  0.28  ← 可比,但需更多验证

注:具体数值取决于模型、数据、超参,此为趋势性示意 [估算]

上下游

上游(输入端)

┌─────────────────────────────────────────────────────┐
│                    训练配置                           │
├─────────────────────────────────────────────────────┤
│  ● 优化器 (Optimizer)                               │
│    └── Adam / AdamW / SGD → 提供梯度方向              │
│                                                     │
│  ● 学习率调度 (LR Schedule)  ← Cosine Decay 在此     │
│    └── 决定每步的学习率大小                           │
│                                                     │
│  ● 批大小 (Batch Size)                               │
│    └── 通常与学习率线性相关(linear scaling rule)     │
│                                                     │
│  ● 总训练步数                                        │
│    └── 决定余弦周期长度 T                            │
└─────────────────────────────────────────────────────┘
         ↓ 输出:每步学习率 η(t)

下游(输出端)

┌─────────────────────────────────────────────────────┐
│              模型参数更新                              │
├─────────────────────────────────────────────────────┤
│  θ(t+1) = θ(t) - η(t) × [优化器更新方向]             │
│                                                     │
│  ● 参数更新幅度 → 影响收敛轨迹                        │
│  ● 最终模型性能 → loss / 准确率 / 瓶颈                │
│  ● 训练稳定性 → 避免发散和 loss spike                 │
└─────────────────────────────────────────────────────┘

完整训练配方中的位置

训练配方 (Training Recipe) 组成:

[数据] + [模型架构] + [优化器] + [学习率调度] + [正则化]
                                        ↑
                                   Cosine Decay
                                   (核心组件之一)

关键指标

指标含义如何评估
最终 Loss训练结束时的损失值越低越好,直接比较
收敛速度达到目标 loss 所需步数越少越省算力
Loss 曲线平滑度训练过程中 loss 波动程度越平滑越稳定
泛化性能验证集/测试集表现最终指标
超参数敏感度对 η_max 等参数的鲁棒性越不敏感越好调

Cosine Decay 的典型特征

  • Loss 曲线呈现前期快降、中期稳定下降、后期缓慢收敛的形态
  • 与 Step Decay 相比,loss 曲线更平滑,较少出现”阶梯跳变”后的震荡

供需与市场数据

应用广度(定性)

Cosine Decay 在主流模型训练中的采用情况:

大语言模型 (LLM):
├── GPT 系列 → 采用 [OpenAI 技术报告]
├── LLaMA 系列 → 采用 [Meta 技术报告]
├── Mistral → 采用
├── Qwen → 采用
└── 几乎所有主流 LLM → 采用或变体

计算机视觉 (CV):
├── ResNet → 采用
├── ViT → 采用
├── CLIP → 采用
└── Stable Diffusion → 采用

行业采用率:估计 >90% 的正式训练使用 cosine 或其变体 [行业估算]

训练成本影响

学习率调度本身计算开销几乎为零(每步多一次余弦运算),但其对训练效率的影响巨大:

  • 好的调度:相同算力,更低 loss
  • 差的调度:浪费数百至数百万美元的 GPU 时间

以 GPT-4 量级模型为例:假设训练成本 $100M,学习率调度优化 1% 的效率 = 节省 $1M [粗略估算]。


代表公司与资本映射

使用方(所有人)

公司代表模型是否使用 Cosine Decay
OpenAIGPT-4是(技术报告未公开调度细节,行业推测继承自GPT-3)
MetaLLaMA 系列是(技术报告明确记载)
GooglePaLM/Gemini
AnthropicClaude大概率是(行业标准)
MistralMistral 系列
阿里巴巴Qwen
DeepSeekDeepSeek

关键认知:Cosine Decay 是公共知识,不构成任何公司的竞争壁垒。它是训练配方的”水电煤”。

优化器生态

优化器 + Cosine Decay 的组合:

Adam + Cosine Decay     → 经典组合
AdamW + Cosine Decay    → 当前最主流(L2 正则 + 余弦衰减)
SGD + Cosine Decay      → CV 部分场景
Adafactor + Cosine Decay → 节省内存的变体
Lion + Cosine Decay     → Google 提出的新优化器

投资逻辑

核心观点

Cosine Decay 本身不是投资标的,但它揭示了几个投资相关的关键洞察:

1. 训练配方标准化 = 降低门槛

训练配方标准化程度:
├── 架构:Transformer 已成标准
├── 优化器:Adam/AdamW 已成标准
├── 学习率调度:Cosine Decay 已成标准  ← 此处
├── 数据处理:仍在演进
└── 对齐方法:仍在演进

结论:标准化降低追赶门槛,技术护城河收窄

投资含义:关注仍在演化的”非标准化”环节(数据、对齐、推理优化)。

2. 训练基础设施的价值

Cosine Decay 是训练基础设施的一部分。训练基础设施的改进直接影响:

  • GPU 利用率:同样的硬件,更好的训练配方 = 更多产出
  • 训练成功率:减少失败的训练 run = 节省成本

相关标的:训练框架公司、AI Infra 公司(如 Weights & Biases、Modal 等)。

3. 对硬件的间接影响

学习率调度影响:

  • 梯度更新幅度 → 影响显存中的激活值大小
  • 训练稳定性 → 影响是否需要重启(浪费算力)
  • 收敛速度 → 影响 GPU 使用时长

常见误读纠偏

误读 1:「Cosine Decay 是 LLM 训练专用的」

纠偏

Cosine Decay 最初是在 CV(计算机视觉) 领域提出的(2017年论文主要实验是 ResNet/DenseNet)。后来才被 NLP/LLM 训练广泛采用。

事实:Cosine Decay 是通用的训练技术,适用于几乎所有深度学习场景——CV、NLP、多模态、强化学习等。


误读 2:「Cosine Decay 一定比其他调度策略好」

纠偏

Cosine Decay 是经验上表现最好的默认选择之一,但并非在所有场景下都绝对最优:

  • 某些小模型 + 小数据场景,Step Decay 可能足够好
  • 某些需要无限训练的场景(如在线学习),Cosine Decay 需要预知总步数,可能不适用
  • WSD(Warmup-Stable-Decay)在某些实验中显示可比甚至更优的性能 [MiniCPM 相关工作]

正确理解:Cosine Decay 是经过广泛验证的安全默认选项,但特定场景可能有更好的选择。


误读 3:「设了 Cosine Decay 就不用管学习率了」

纠偏

Cosine Decay 需要正确配置至少三个超参数:

  • η_max(峰值学习率):最重要的超参数,需要根据模型大小、批大小仔细调整
  • η_min(最终学习率):设为 0 还是 η_max/10 会有影响
  • warmup_steps:太短可能不稳定,太长浪费算力

事实:Cosine Decay 只是框架,超参数调优仍然是必要的工作。


误读 4:「Cosine Decay 和 Cosine Annealing 是不同的东西」

纠偏

它们是同一个东西的不同称呼

  • Cosine Decay / Cosine Schedule:侧重描述”衰减”动作
  • Cosine Annealing:侧重描述”退火”过程

原论文标题中的 “Cosine Annealing” 和后来社区常用的 “Cosine Decay” 指的是相同的方法。

补充:Cosine Annealing with Warm Restarts(SGDR)是变体,允许周期性重启,但基础版本相同。


学习路径

入门(1-2 小时)

  1. 阅读原论文摘要

    • Loshchilov & Hutter, 2017, “SGDR: Stochastic Gradient Descent with Warm Restarts”
    • arXiv:1608.03983
  2. 动手实验

    # PyTorch 内置实现
    from torch.optim.lr_scheduler import CosineAnnealingLR
    
    optimizer = Adam(model.parameters(), lr=1e-3)
    scheduler = CosineAnnealingLR(optimizer, T_max=100, eta_min=0)
    
    for epoch in range(100):
        train(...)
        scheduler.step()
    
  3. 可视化理解:用 matplotlib 画出学习率曲线,观察不同超参数的影响。

进阶(1-2 天)

  1. 对比实验:在同一个任务上,分别用 Step Decay、Exponential Decay、Cosine Decay 训练,比较最终 loss 和收敛曲线。

  2. 阅读大模型技术报告

    • LLaMA 技术报告中的训练细节
    • GPT-3 论文附录中的训练配置
  3. 理解与优化器的交互

    • 学习率与批大小的关系(linear scaling rule)
    • AdamW 的权重衰减与学习率衰减的区别

深入(持续学习)

  1. 研究变体:SGDR、OneCycleLR、WSD 的原理和适用场景
  2. 关注前沿:大模型训练中学习率调度的最新研究
  3. 工程实践:在分布式训练中正确实现学习率调度

一句话总结

Cosine Decay 是深度学习训练中经过广泛验证的默认学习率调度策略,通过余弦函数实现前期大步探索、后期精细调优的平滑衰减,已成为从 GPT 到 LLaMA 的行业标准配方组件。


延伸阅读与来源

核心论文

  1. [原论文] Loshchilov, I., & Hutter, F. (2017). “SGDR: Stochastic Gradient Descent with Warm Restarts.” ICLR 2017. arXiv:1608.03983

    • Cosine Decay 的首次提出,必读
  2. [大模型应用] Brown, T. et al. (2020). “Language Models are Few-Shot Learners.” NeurIPS 2020

    • GPT-3 论文,附录中有 cosine schedule 的使用细节
  3. [LLaMA] Touvron, H. et al. (2023). “LLaMA: Open and Efficient Foundation Language Models”

    • Meta 的 LLaMA 技术报告,公开了训练配方

教程与实现

  1. PyTorch 官方文档

    • torch.optim.lr_scheduler.CosineAnnealingLR
    • 包含完整的 API 说明和示例
  2. Hugging Face Transformers

    • get_cosine_schedule_with_warmup() 函数
    • 被广泛使用的实现

社区讨论

  1. PyTorch Forums / Hugging Face 论坛
    • 大量关于学习率调度的实战讨论

重要声明

数据来源说明

  • 数学公式、原论文信息:基于公开学术文献
  • 大模型采用情况:基于各公司公开的技术报告
  • 行业采用率估计:基于行业共识的定性判断,无精确统计
  • 效率改进估算:示意性计算,非严谨基准测试

本文不构成任何投资建议。技术分析仅供学习参考。

source: 公开披露与公开资料整理 本页仅用于产业链学习、信息检索和研究辅助;不构成投资建议,不预测涨跌,不提供买卖、仓位或目标价建议。
完整概念页 复盘 13 节结构 公司投研页 沿产业链找到受益公司 投资课 把概念转成可跟踪模型