← 专著首页目录专著栏目

第七编 首跑

第六十五章 首跑暴露的方法论缺陷:归一化基线跨规模不可比


一、缺陷

预注册的冻结项第二条规定:噪声基线取”同一训练轨迹内相邻检查点之间的距离”。归一化路径散度定义为路径间距离除以这个基线。

执行之后,基线的实测值如下:

规模 表征通道基线 行为通道基线
14M 0.0134 0.0407
31M 0.0129 0.0398
70M 0.0109 0.0307
160M 0.0306 0.0487

三个较小的规模上,表征基线稳定在 0.011 到 0.013 之间;到最大规模跳到 0.0306,接近三倍。行为基线同样在最大规模上反弹。

这个跳变直接决定了比值那一列的形状:

规模 路径间距离 基线 比值
14M 0.352 0.0134 26.3
31M 0.445 0.0129 34.5
70M 0.441 0.0109 40.4
160M 0.411 0.0306 13.4

比值在最大规模上从 40.4 掉到 13.4,看起来像一次剧烈的坍缩。

但把分子单独拎出来看:0.352、0.445、0.441、0.411。分子几乎没动。

比值那一列的坍缩,主要不是分子变了,是分母变了。

二、原因

原因不难理解,难的是在执行之前想到。

“同一训练轨迹内相邻检查点之间的距离”测的是什么?是模型在相邻两个快照之间变了多少。而模型在相邻两步之间变多少,取决于训练在那个时刻推进得有多快。

于是这条基线实际上是一个训练推进速率的代理,而推进速率本身随规模、随训练进度而变。不同规模的模型在同一个名义步数上,处在各自训练过程的不同阶段:有的已经趋于平缓,有的还在活跃变化。用它当分母,等于用一把自己会伸缩的尺子去量四根长度差不多的棍子,然后报告棍子在变短。

预注册第 5 节对这条基线做过一段论证,论证说它偏保守:相邻检查点之间的差异包含了训练仍在推进所造成的真实变化,因而基线偏大、比值偏小,不利于本书;若比值仍显著大于 1,这个偏差不影响结论。

这段论证是对的,而且它的结论在单个规模内也确实成立。 它漏掉的是跨规模那一层:偏大多少,每个规模不一样。一个在各规模上偏大程度不同的分母,不能用来做跨规模比较。

三、缺陷的第二层:间隔本身也是一个自由参数

上面讲的是基线随规模伸缩。还有一层,预注册同样没有写到:“相邻检查点”这个说法里的”相邻”,是一个自由参数。

本跑取的是相隔一千步的两个公开快照。一千步不是从原理推出来的,它只是那组公开检查点在末段的发布间隔。

若取相隔一百步的两个快照,基线会更小,全部比值会更大;若取相隔一万步的,基线会更大,比值会更小。而这个量不是线性缩放的——训练推进在不同阶段的速率不同,间隔与距离之间的关系本身就是曲的。

于是这条基线实际上带着两个都没有被论证过的选择:用推进量当噪声,以及用一千步当推进量的单位。 第一个选择在预注册里有一段论证(论证是对的,只是漏了跨规模那一层);第二个选择连论证都没有,它是材料给的,不是设计给的。

这一层比第一层更难察觉,因为它不会产生任何可见的异常——四个规模用同一个间隔,表面上完全一致。它只在一处露了马脚:如果比值的分母是一个依赖于任意间隔的量,那么”比值是 40.4 还是 13.4”这类陈述就没有绝对意义,只有相对意义。而本书此前用这些数字时,语气偶尔偏向了绝对。第六十二章第三节与本章第四节已经把使用范围收紧,这里把根因写明。

推论:第五节那两条修法之所以正确,不只是因为它们避开了推进速率,还因为它们都不依赖一个任意的间隔——同种子重训的差异没有”间隔”这个参数,而多对等距检查点的分布下界把间隔从一个点变成了一个分布。

四、后果

后果要写得精确,既不夸大也不缩小。

作废的部分:本跑的归一化曲线不能作为规模趋势的证据。表征通道的 26.3 / 34.5 / 40.4 / 13.4 这一列,不得读成”路径差异先增强后急剧衰减”。行为通道的 6.45 / 5.57 / 5.56 / 2.37 同样不得单独作为衰减的证据——它的最后一段下降里,有一部分来自分母的反弹。

仍然有效的部分:各规模内部的比较仍然成立。在每一个规模上,路径间距离都远大于同轨迹内的相邻检查点距离——最小的一处也有 2.37 倍,最大的一处有 40 倍。这一条不受分母跨规模不可比的影响,因为它是在同一个规模内做的比较,分子分母来自同一个模型的同一段训练。

不受影响的部分:第六十二章与第六十三章那两张表的前两列——路径间距离本身,与它的标准差。这些是绝对读数,不经过分母。第六十三章关于行为通道单调下降的结论,用的正是绝对读数(0.263、0.221、0.171、0.116),因此那个结论不因本章而动摇。

这一条要特别写明,因为它对本书不利:本章的缺陷削弱的主要是比值那一列,而比值那一列在最大规模上恰好是对本书不利的(13.4 相对于 40.4 的坍缩)。 换句话说,承认这个缺陷,对本书是有利的。正因为如此,本节必须把”仍然有效的部分”和”不受影响的部分”列清楚,以免这份承认变成一次挑选性的作废——只废掉对自己不利的那一列,留下有利的那些。上面三段就是为了防这一手。

五、修法

下一跑必须换基线。两条路,各有代价。

修法一:同种子、同数据次序、仅由数值非确定性造成的重训。 用完全相同的种子和次序再训练一次,两次之间的差异只来自硬件与并行计算带来的数值不确定性。这是”同一条路径走两遍”最严格的实现,因此也是最正确的噪声基线。

代价:需要真的重新训练,而且要在每个规模上都训练一次。这是本跑跑不起的东西,也是它当初选择代理的原因。

修法二:同一轨迹内多对等距检查点的距离分布的下界估计。 不只取相邻一对,而是在整条轨迹上取多对间隔相同的检查点,得到一个距离的分布,取其下界作为基线。

代价:它仍然带着训练推进速率的痕迹,只是通过取分布下界削弱了这个痕迹。它比现在这条好,但不如修法一干净。

本书的建议是:下一跑用修法一,至少在最小的两个规模上做,用来标定修法二在那些规模上的偏差,再把修法二外推到大规模。 这是一个折衷,它的正当性取决于标定是否稳定,而这件事本身需要读数来回答。写在这里作为下一跑的预注册项,不作为结论。

六、修订冻结项清单

按第五十九章第一节的总则,执行中发现的问题只能作为下一跑的新冻结项,不能追溯修改本跑。因此:

此外,条款一的判据表述也要相应修订。现行判据是写在归一化量上的——“不趋向 1”“不显著区别于 1”。既然分母被证明不可靠,下一跑的判据要么改写到绝对量加独立标定的噪声水平上,要么等基线换好之后再用比值。这一条同样写入下一跑的预注册项。

七、一条超出本书的警告

这个缺陷不是本书独有的。用”同一条轨迹上相邻两个快照之间的差异”来标定噪声,是一个相当自然的做法,而且在比较模型之间差异的工作里并不罕见——它便宜、直观、不需要额外训练。

本章的发现因此有一个超出本案的推论,值得单独写一句:

任何用训练轨迹内部的变化量作噪声基线、并在多个规模上做比较的研究,都应当先检查这个基线本身是否随规模变动。

检查的办法很简单:把基线单独画出来看。如果它在不同规模上相差几倍,那么由它归一化出来的任何跨规模趋势都不可采信,无论那个趋势看起来多干净。

首跑之所以发现了这件事,纯粹因为预注册要求把基线作为一个独立的读数报告出来,而不是只报归一化后的比值。若当初只记录了比值,这个问题会完全隐形——四个比值看起来会是一条有趣的曲线,而且是一条可以讲出故事的曲线。

这一点值得推荐给任何做类似工作的人:把分母单独报出来。 这几乎不增加成本,却能把一整类隐形错误变成可见的。

八、这件事的一般意义

这一章记录的是一次制度的失效,而失效的方式值得单独说一句。

预注册保护的是”事后不许改判据”,它不保护”事前把判据写错”。前者是意志问题,制度可以挡住;后者是知识问题,制度挡不住——在执行之前,没有人知道那条基线会跨规模伸缩,包括写下它并为它做过一段正确论证的人。

但这一章同时也是对预注册的一次辩护,而且是比任何正面论证都有力的辩护:正因为这条基线被写死并在四个规模上统一使用,它的毛病才显形。 假如基线是每个规模随手取的、按当时的手感调的,四个规模各自都会得到一个”看起来正常”的比值,这个问题会被平滑掉,永远浮不出来,而由它造成的偏差会静静地进入结论。

冻结的价值不只是防作弊。它还把自己的错误固定成一个可以被看见的形状。

由此得到本编对下一跑的第一条要求,也是最优先的一条:换基线。 第六十六章给出剩下的清单,以及一条不能当结论、但值得花钱去跑的线索。


《可判性的到来——发现还是发生?》· 王德生 著 · 德麦国际专著第 124 号 · ISBN 979-8-90690-092-0