← 返回列表

有方向的小错

2026-07-04 · 4 层下钻

追本之箭 — 有方向的小错

2026-07-04 Fri 13:20 · Fable 重写


起点

带罗盘的更新看不见时落子 叠在一起,原版逼出了一个漂亮的单位:

进化不是一直正确,是持续制造有方向、可回收的小错。

然后它把这个单位拆成四条修养——有方向、够小、有反馈、留选项——像四个可以自由勾选的设计原则。

题面里藏着一个类型错误。

它把这四条当成你选的好习惯:聪明的系统选择这样犯错,笨的系统选择别的。可只要一个东西「聪明系统都得这么做、别的做法一律失败」,它就不是习惯,是约束。修养可以违反,约束不能。

所以真正的问题不是「怎样把错误设计得漂亮」,

而是——一个想追上比自己大的世界的东西,数学只给它留了哪几条路? 那四条,是不是根本没得选?


第一层:方向不是意义,是梯度

原版说,错误是一条测量线:现实的位置减模型的位置,等于误差。

对,但一个标量误差几乎是废的。

「我错了,错了这么多」——这是一个大小,没有朝向。知道自己离目标三米,不知道目标在哪个方向,你迈的下一步有一半概率更远。一个只有大小的误差,能让你焦虑,不能让你更新。

学习真正要的不是「错多少」,是「往哪挪能少错」。这个东西有名字,叫梯度:损失曲面在你脚下的斜率,指着下降最快的方向。

原版那句 useful_error = projection(error, compass) 其实已经写对了,只是没认出自己写的是什么——把误差投影到罗盘上,就是残差与下降方向做点积。留下来的那部分,就是梯度沿你能动的方向的分量。

所以「有方向」不是给错误赋予意义,不是鸡汤。

它是一个导数:误差携带的那一点朝向信息。没有它,你手里只有一个标量,一个会疼但不会教你的数。

裂缝:可梯度是个局部对象——它只告诉你此刻脚下的坡。原版说「小是为了可重复、为了不摧毁系统」,那是结果。为什么在数学上,方向一旦确定,步子就必须小?


第二层:小不是谨慎,是局部地图的有效半径

真正的原因不在工程,在几何。

梯度只在一个很小的邻域里可信。任何弯曲的曲面,凑近看都像一条直坡——这是泰勒展开的一阶项在当家。可你只要沿这条「直坡」走远一点,二阶项(曲率)就醒了:坡拐弯了,你脚下那个方向早就不再指向低处。走太远,你不是走错,是走出了罗盘还成立的那片区域

于是「小」有了它的硬定义:

步长  ≤  你的局部地图还对得上地形的半径
     ≈  1 / 曲率

步子小于这个半径,方向可信,你稳稳下降;越过它,你在拿一个局部斜率去外推一个全局结论——过冲、震荡、发散

这一层顺手把原版最刺的那个观察给证明了。原版说「大错攻击身份,小错修改模型」,把它归给心理防御。其实它是同一个过冲:

一个项目失败,是曲面上一个点的局部梯度。

「我这个人完了」,是把这个局部方向,一脚踩着整个身份走了出去。

那不是脆弱,是步长越界——拿一次局部采样,去外推一个远超其有效半径的更新。身份被烧到,不是因为错太大,是因为你把一个只在小范围可信的方向,线性外推成了对整个自己的判决。

所以「小」不保护自尊。它保护的是你更新时用的那张地图的有效性

裂缝:可就算步子迈得恰好小,也得先那个梯度。世界不会把它的损失函数交到你手里。斜率从哪来?


第三层:反馈不是回声,是对梯度的一次含噪采样

世界从不给你真实的梯度。它只给你一次含噪的采样——这一次尝试、这一个结果,掺着运气、掺着别的变量。

这就是随机梯度下降的处境:看不见整张曲面,只能从一个带噪的抽样里估一个斜率,迈一小步,再抽再迈。原版凭直觉列了反馈的三个条件——快、近、硬——现在它们不用背,能被推出来:

因为每个样本都带噪,大步单干必然踩雷:朝一个含噪方向猛迈一步,几乎注定有一半是噪声在带路。噪声,正是「小 + 多」打败「大 + 少」的数学理由——不是胆小换来的稳,是许多小步让噪声在平均里相互抵消,真信号才浮出来。

这也是 反馈的墙 的真正用途:墙不是用来撞疼你,是给你一次无偏、低方差、未被污染的采样。没有墙,你在对着回声估斜率——回声只会把你的话原样弹回,你估出的方向永远指向你已经相信的地方。

裂缝:这解释了怎么下降一张固定的曲面。可原版真正的赌注是「选项」——错完之后世界变宽。纯下降只会让你越走越窄,收敛进一个谷就不动了。变宽从哪来?


第四层:选项不是运气,是探索项

纯梯度下降有一个致命病:它收敛到最近的那个谷,然后停下。局部最优。

在一个不动的世界里,这没问题。可世界会移动——曲面本身在漂。一个只顺着当前梯度走的系统,会被焊进一个「曾经的最优」:它为一个已经不存在的世界,优化得完美无缺。这就是原版没说透的那半——「有方向」会把你锁死,除非有另一股力,专门迈出方向之外。

那股力就是探索项:在明明可以顺坡下的时候,故意抽一步偏离,去采一块没去过的区域。原版的「留选项」——错完打开一个分支、多一个样本、留一条退路——不是运气好,是你主动在梯度之外撒的种子。

于是原版那个四项连乘的公式可以重写。它不是四条并列的坐标修养,它是学习里最老的一道张力

更新 = 利用(罗盘 · 梯度 · 小步)  +  探索(选项 · 偏离当前梯度)

进化早就把这道张力调成了一个数,叫突变率。太低——追不上变动的环境,物种灭绝;太高——把好用的基因也一起打碎,个体死亡。原版说的「方向 vs 选项」,就是这只旋钮:利用与探索之间的那一档。反脆弱 说系统靠受控的波动变强,说的正是这个——探索项是被限制在可吸收范围内的偏离,不是乱跳。

所以「有方向的小错」不是一种美德的四重奏,是一个二元赌注:一只脚踩着可信的梯度往下,一只脚故意迈到地图边缘之外,看那里有没有一个更深、而且不会消失的谷。

裂缝:那答案是不是「把旋钮调到最优」就完了?可再往下有个地板:为什么一个足够聪明的系统,不能干脆算出答案、跳过所有错误?错,为什么消不掉?


终点:错消不掉,因为模型比世界小

钻到底,理由只有一句,且是数学允许,不是修养劝导:

模型是对世界的压缩,而世界严格大于模型。

任何有限的模型去装一个更丰富的世界,按计数就是有损的——你没法把比地图大的地形塞进地图里。唯一无损的世界模型,是世界本身。既然有损,就永远剩一个装不下的余项。那个余项,就是误差。

于是最后一句翻过来了:

误差不是「模型减世界」偶尔算错。

误差是「模型比世界小」这件事,每走一步必然漏出的余项。

你消不掉它。你只能选择怎么用它——让它带方向(梯度)、带小步(可信半径)、带许多次含噪采样(让噪声在平均里抵消)、再带一点故意的偏离(探索)。原版那四条修养,到这一层露出真身:它们不是四个好习惯,是任何比世界小的东西想追上世界时,数学唯一放行的那条走法

这也一刀切开了原版最隐蔽的陷阱:不犯错的系统不是准,是停了。

零误差只有两种来路,都不是聪明:

不再接触世界   →  没有新输入 → 没有余项被测到(假的稳)
记忆而非压缩   →  背下了训练集 → 训练误差为零,样本外误差无穷(过拟合)

原版说「看起来稳定,其实只是没测量」——现在它被证明了,不再是断言:零误差 ⟺ 零压缩 ⟺ 零泛化。一个从不犯错的人,要么已经停止碰新问题,要么在背答案假装懂。

所以本篇的判据,狠且可证伪,先证伪它自己:

这套框架成立的条件:若存在一个系统,能在不接触现实、不产生任何样本外误差的前提下,持续提升它对一个变动世界的预测——那么「有方向的小错」就不是约束,只是习惯,本文全错。

到今天为止,学习理论里没有这样的系统。有损压缩必有余项;非平稳目标必须探索;含噪梯度必须小步多采。三条都没有反例。

给你的自测,同样可证伪、可执行:

如果你连续三个月零误差,别庆祝。去找一个你还会错的真问题。

— 找到了:你还在压缩,系统活着。

— 找不到:你不是变准了,是停了——要么不再接触新世界,要么在记忆里空转。

不要问「怎样才能不犯错」。这问题假设了错是缺陷,而错是压缩的必然产物。

要问:我现在这个错,有没有方向、够不够小、能不能采回一次干净的样本、有没有顺手撒一颗地图之外的种子

四个都有,它就不是污点。

它是余项被你调成了梯度——是一个比世界小的东西,被数学允许的、唯一能追上去的那一步。


(箭到底了。)

💬 评论