基础← 返回知识库
学习率(Learning Rate)
控制每一步迈多大的参数——导数告诉你方向,学习率决定步幅。太大会跨过谷底来回震荡,太小会像蜗牛一样爬行。训练初期用大步快速接近目标,后期逐渐缩小(学习率衰减)做精细调整。
核心公式
📖 符号说明
| 符号 | 含义 | 说明 | 取值范围 |
|---|---|---|---|
| 当前位置 | 这一步的参数值 | — | |
| 新位置 | 更新后的参数值 | — | |
| 学习率 | 控制步幅大小的参数 | (0, 1) | |
| 导数/坡度 | 损失函数在当前位置的斜率 | — |
前置知识
一句话理解
学习率就是"每一步走多远"——方向找到了,步幅还得选对。
更新公式
xnew=xold−α⋅L′(xold)大白话翻译:新位置 = 旧位置 - 步长 × 坡度。α(读作"alpha")就是学习率。
太大 vs 太小
用 L(x)=(x−3)2 从 x0=0 出发:
- α=0.1(合适):x 一步步靠近 3,损失从 9 稳步减小——稳扎稳打走到谷底
- α=2(太大):第一步 x1=12,直接冲过目标;第二步弹到 −24——来回震荡,越跳越远
- α=0.001(太小):第一步 x1=0.006,几乎没动——蜗牛爬行
学习率衰减
训练初期用大学习率快速接近目标,后期逐渐缩小避免在谷底附近来回震荡——就像练投篮,刚开始大幅调整姿势,接近标准后微调。
常见策略:每隔固定步数将学习率乘以一个衰减因子(如 0.5)。例如初始 α=0.1,每 1000 步衰减一半:0.1→0.05→0.025→0.0125。
为什么不一开始就用小学习率?因为太慢——训练时间会成倍增加。
这在机器学习中用来做什么
学习率是训练中最重要的超参数之一——很多"模型不收敛"的问题,第一件事就是检查学习率。在 PyTorch 中,学习率衰减通过 scheduler 实现。
引用本概念的文章
- 一个设计决策如何决定一切:五大前端框架源码级横向解剖
- 编译器的三重身份:五大前端框架编译管线深度拆解
- Vercel AI SDK 深度解析:ToolLoopAgent 是 Facade,真正的循环在 generateText 里
- Markdown 渲染模块验收:14 类高级语法全量测试
- 【pi-mono 源码解析 4/4】toolCallId: string 的债从哪里来
- 【pi-mono 源码解析 1/4】深入 pi-mono Agent Loop:一个 TypeScript AI 代理的上下文管理哲学
- 【pi-mono 源码解析 3/4】幽灵边:pi-mono forkFrom() 揭示的 Lying Sentinel 与 TypeScript 的表达空白
- 【pi-mono 源码解析 2/4】展平的代价:LLM Agent 框架里被忽视的工具调用原子性问题
- 多Agent编排:从单兵到团队
- Coding Agent实战:从零构建一个能写代码的AI助手