笃行
首页
个人 & 心法
互联网/硬件后台
游戏基础架构
UE 引擎
游戏业务
AI / 大模型
数据结构与算法
机器学习数学
通用基础
GitHub
首页
个人 & 心法
互联网/硬件后台
游戏基础架构
UE 引擎
游戏业务
AI / 大模型
数据结构与算法
机器学习数学
通用基础
GitHub
  • 向量入门

    • 看得见的机器学习数学
    • 向量是什么
    • 向量的加减与数乘
    • 线性组合与张成
  • 矩阵与变换

    • 矩阵是一次变换
    • 矩阵乘法
  • 度量与求解

    • 行列式与面积
    • 解方程组就是倒着走回去
    • 特征向量的直觉
    • 点积与相似度
  • 高维与结构

    • 高维空间的直觉
    • 正交基与投影
    • 秩与低秩
    • 长度与归一化
    • 线性与非线性
  • 概率与信息

    • 概率分布与采样
    • 期望与方差
    • 指数与 softmax
    • 对数与信息量
    • 交叉熵
  • 学习与优化

    • 导数就是坡度
    • 梯度下降
    • 链式法则与反向传播

浓雾里下山:脚下哪边最陡,就往那边迈一步

蒙着眼睛在山上,你不知道谷底在哪。但你能用脚探出四周哪个方向最陡,然后朝那边迈一步。站定,再探一次,再迈一步。一步一步,就下来了。

🧠 一句话结论

梯度是把各个方向的坡度合起来,指出"最陡的是哪边"的一根箭头(又回到第一篇)。梯度下降就是:探出最陡方向,朝反方向迈一步,站定再探。学习率是步子的大小——太大会跨过谷底来回弹,太小会一辈子走不到。


场景问题

接着上一篇的处境:你还在山上,雾大得看不见五米之外,营地在谷底。

你已经学会用脚探坡度了。可新问题来了:上一篇只探了"往前"一个方向。可你是站在一片山坡上,四面八方都能走。

  • 往前探,是缓下坡
  • 往右探,是陡下坡
  • 往左探,是上坡

三个方向三个坡度。那到底该往哪边迈这一步?

凭常识:哪边下得最猛就往哪边走,这样下得最快。可"最猛的方向"未必正好是你探过的那三个中的一个,它可能夹在"往前"和"往右"中间。

怎么把几个方向的坡度合起来,指出真正最陡的那个方向?

实现方案

各方向的坡度合起来,是一根箭头

答案其实在第一篇就埋好了:几个方向上各走一段,合起来就是一根箭头。

  • 往前方向的坡度是 3
  • 往右方向的坡度是 4

把这两个数当成一根箭头的两个分量——"向前 3、向右 4"——这根箭头指的方向,就是这一点上升得最快的方向;它的长度(第十三篇算过:3 和 4 的平方加起来开根 = 5)就是那个方向有多陡。

这根箭头有个名字叫梯度。但你完全可以一直管它叫"最陡方向那根箭头"。

两个方向的坡度合成一根箭头向右坡度 4向前坡度 3合起来:上升最快的方向反方向 = 下降最快

图里橙色虚线是两个方向各自的坡度,青色那根是它们合起来的箭头——上升最快的方向。

而你要去谷底,所以走紫色那根:梯度的反方向,也就是下降最快的方向。

这就是"梯度下降"这个名字的全部含义:算出梯度(最陡方向),朝它的反方向走。

一步一步挪下去

有了方向,剩下的就是不断重复这三个动作:

  1. 探:在当前位置算出梯度(最陡方向那根箭头)
  2. 迈:朝反方向迈一步
  3. 站定,回到第 1 步
一圈圈是等高线,越往里越低每一步都朝当前脚下最陡的下坡方向迈 —— 一步步挪到谷底谷底

图里一圈圈的是等高线(同一圈上高度一样,越往里越低)。橙点从外围出发,一步步往中心挪。

注意看那串脚印:它不是笔直冲向谷底的,而是一段段折过来的。因为每一步只是"当前脚下最陡的方向",走一步之后地形变了,最陡方向也跟着变。它是走一步看一步,不是一开始就瞄准了终点。

学习率:步子迈多大

方向定了,还剩一个要紧的问题:这一步该迈多大?

这个"步子大小"就叫学习率。它比想象中难伺候:

步子太小挪了半天还在半山腰步子合适几步就稳稳落底步子太大跨过谷底,两边来回弹(图中谷底在弧线顶部,往里是低处)步子太小:方向一直是对的,就是太慢——训练几天还没什么进展步子太大:每次都一脚跨过谷底落到对面,来回震荡,甚至越弹越远所以学习率不是"越大越快",它有一个刚刚好的区间
  • 步子太小:方向一直没错,就是太慢。走一万步还在半山腰——训练跑了好几天,几乎没什么进展
  • 步子太大:更糟。你朝谷底方向迈了一大步,结果一脚跨过了谷底,落到了对面山坡上。再探再迈,又跨回来。就这么在谷底两侧来回弹,永远落不到底;步子要是特别大,还会越弹越远,彻底飞出去
  • 步子刚好:几步稳稳落到谷底

所以学习率不是"越大越快"。 它有一个刚刚好的区间:大到能有效前进,又小到不会一脚跨过头。这也是为什么调模型时,学习率总是最先要调、也最难调的那个数。

走到平地就不动了,但那不一定是谷底

最后一个必须知道的事实。

梯度下降的停止条件很朴素:脚下坡度接近 0 了,说明是平地,没方向可走了,停。

但上一篇刚讲过:平地至少有三种——真谷底、山顶、还有半山腰的一块平台。

蒙着眼的你走到一块平台上,脚下四面都是平的,于是你停下来了。可你压根不知道旁边还有一条更深的沟。

这不是算法写错了,是它天生就看不见全局。它只有"脚下这一点"的信息,永远无从知道翻过下一道坎会不会更低。

好在实践中这没有想象中致命:地形足够复杂时,这些平台往往已经"够低了",未必非要找到全场最低的那一点不可。"足够好"和"最好"之间,工程上通常选前者。

为什么这么做

为什么各方向的坡度合起来正好是一根箭头?

因为第一篇就讲过:几个方向各走一段,合起来就是一根箭头。"向前坡度 3、向右坡度 4"和"向前 3 格、向右 4 格"是同一种写法——一对数字就是一根箭头,指向哪、有多长都定好了。

为什么走梯度的反方向,而不是梯度本身?

因为梯度指的是上升最快的方向,而你要去谷底。加个负号掉头,就是下降最快的方向。 这也是"梯度下降"这个名字的由来:算的是梯度,走的是它的反方向。

为什么要一步一步走,不能一次算出终点直接跳过去?

因为你看不见全局。梯度只告诉你"脚下这一点最陡的是哪边",它对五米之外的地形一无所知。走一步之后地形变了,最陡的方向也变了,得重新探一次。

这正是这套办法的聪明之处:它把一个"看清整座山"的难题,拆成了无数个"探清脚下一点"的简单动作。

为什么别的选择不行

错误直觉一:以为梯度指向谷底

梯度只指当前这一点最陡的方向,它对谷底在哪一无所知。

看上面那张等高线图里的脚印:它是一段段折过来的,不是笔直冲向中心的。因为每走一步地形就变了,方向得重算。

把梯度当成"指向终点的指南针"的后果是:你会觉得"既然方向已知,一步跨到位不就完了"——然后把步子迈得巨大,直接飞出山谷。

错误直觉二:以为学习率越大收敛越快

这是最贵的一个误解。

步子大到一定程度,你会一脚跨过谷底落到对面山坡上;再迈一步又跨回来。就这么两边来回弹,一次也没停在底上。步子再大点,还会越弹越远,彻底发散。

"迈得大"和"到得快"是两回事。 学习率有个刚好的区间:大到能有效前进,小到不会跨过头。太大不是"快一点",是根本到不了。

错误直觉三:以为一定能走到全场最低点

走不到,而且这是算法天生的局限,不是没写好。

它只有"脚下这一点"的信息。走到一块平台上,四面都平,它就停了——根本不知道旁边还有条更深的沟。

但这在实践中没那么致命:地形足够复杂时,这些停下来的地方往往已经够低了。工程上通常要的是"足够好",不是"全场最好"。 明白这一点,你就不会为了追求那个虚无缥缈的最低点,把时间浪费在没有回报的地方。

沉淀结论

  1. 梯度 = 各方向的坡度合成的一根箭头(回到第一篇):指向上升最快的方向,长度就是有多陡
  2. 梯度下降 = 探出梯度 → 朝反方向迈一步 → 站定再探,一步一步挪到低处
  3. 梯度只知道脚下这一点,不知道谷底在哪——所以路径是一段段折过来的,不是笔直冲过去
  4. 学习率是步子大小:太小走不到头,太大会跨过谷底来回弹甚至越弹越远——不是越大越快
  5. 走到平地就停,但平地不一定是谷底——可能只是半山腰的一块平台;这是天生局限,实践中"足够好"通常够用

记忆口诀

梯度是各方向坡度合成的一根箭头,指着上升最快的方向。
要下山就走它的反方向。
探一次,迈一步,站定再探。
学习率是步子:太小走不到,太大跨过头来回弹。
停在平地不等于停在谷底。

延伸阅读

  • 模型参数就是这样被一点点改出来的:上一篇的罚分构成了一片起伏的地形,模型算出脚下的梯度、朝反方向挪一小步,几百万次之后就"学会"了。详见模型微调。
  • 学习率是训练时最先要调的那个数:调大了训练直接崩,调小了几天没进展。这就是本篇"步子大小"那一节讲的取舍。详见大模型核心原理。

自测:合上资料能说清楚吗?

  1. 几个方向各有各的坡度,怎么合成"最陡的方向"?
参考答案

把各方向的坡度当成一根箭头的各个分量。 "向前坡度 3、向右坡度 4"就是一根"向前 3、向右 4"的箭头——它指的方向就是上升最快的方向,它的长度(3 和 4 平方和开根 = 5)就是有多陡。

这根箭头叫梯度,本质就是第一篇那句"几个方向各走一段,合起来是一根箭头"。

  1. 为什么走梯度的反方向?
参考答案

因为梯度指的是上升最快的方向,而我们要去谷底。加个负号掉头,就是下降最快的方向。

"梯度下降"这个名字就是这么来的:算的是梯度,走的是它的反方向。

  1. 梯度是不是指向谷底?为什么下山的路径是折来折去的?
参考答案

不是。 梯度只知道脚下这一点最陡的是哪边,对谷底在哪一无所知。

所以路径是一段段折过来的:走一步之后地形变了,最陡方向也跟着变,得重新探一次。它是走一步看一步,不是一开始就瞄准了终点。

  1. 学习率调大一点,是不是就能更快到谷底?
参考答案

不是,可能根本到不了。 步子大到一定程度,你会一脚跨过谷底落到对面山坡上,再迈一步又跨回来——在两侧来回弹,一次也没停在底上。步子再大还会越弹越远,彻底飞出去。

"迈得大"和"到得快"是两回事。 学习率有个刚好的区间:大到能有效前进,小到不会跨过头。

  1. 梯度下降一定能找到全场最低点吗?
参考答案

不能,这是它天生的局限。 它只有"脚下这一点"的信息,走到一块平地就停了——可平地也可能只是半山腰的一块平台,旁边还有条更深的沟,它压根不知道。

但实践中没那么致命:地形足够复杂时,停下来的地方往往已经够低了。工程上通常要的是"足够好"而不是"全场最好"——明白这点就不会为追求那个最低点白费力气。

最近更新: 2026/9/10 11:38
Prev
导数就是坡度
Next
链式法则与反向传播