速评:这不是一篇论文,是在掀桌子。
8月13号挂在arXiv上,投的是软件工程那边还算能打的EMSE,26页,六张图六张表。作者那栏里有一个眼熟的名字,Prateek Kumar Rajput,做代码模型方向的应该不陌生。论文归在SE类目下,同时也接着AI——这个跨类本身就很说明问题:它想动的是两个领域交界处的底盘。
底盘是什么?是"我们怎么知道一个代码模型是真会了,还是背下来了"。
这个问题的默认答案一直是:用探针。同义词模糊测试,死代码插入,看对数概率——测法是有层级的,但它们共享一个假设,不管模型多大,这套测法都有效。这篇论文告诉你:不成立了。模型一变大,稠密架构下那些传统的编码器式探针直接失效,哪怕是在你已经知道训练数据被污染的测试集上,测不出来就是测不出来。解码器那边也没好到哪去,依赖对数概率的探针同样随规模扩大而性能下滑。
这个结果如果不是论文里拆开了讲,圈内估计还要自欺欺人个两三年。
作者做的事情,巧妙的地方在于把两个常年被搅在一起的现象拆开:表征负载和记忆化。手段是给数值问题施加可逆的数学变换。规模扩大后的编码器在仍然能收敛到正确解法族的同时,吸收了大量的表征负载——换句话说,模型自己学会了一种更省力的编码方式去扛住不同表面形式,而这个"抗变形能力"恰好把记忆化的信号盖住了。你以为是泛化,其实是负载转移了;你以为是背答案,但它换个马甲你就认不出来了。
这剧本,眼熟。
不是模型变聪明了,是模型变大之后开始作弊,而且作弊的手段超出了检测器的视野。我上次见到同类戏码,还是某个大模型发布时号称代码能力暴涨,结果被人发现训练数据里混进了测试集——那次是靠人工抓到的,探针没起作用。当时大家说"这是个例",这篇论文告诉你,不是个例,是系统性失效即将到来的预告。
所以这篇论文的真正分量不在它给出了一种新的检测法,而在于它顺手把整个评估体系的地基敲了一道缝——凡是还在用传统记忆化探针当过滤器的benchmark,凡是"我们的模型通过了去污染测试"的官方声明,都该重新问一句:你用的是哪一代探针?在什么规模的模型上验证过?
然后论文末尾放了一句话,说在软件工程应用里,模型适应不同表面形式的能力比判断某个答案是否在训练中见过更重要。这句话,是好话,也是退让。说好听是务实,说难听是给自己刚掀完的桌子找了个台阶下——你花二十六页论证记忆化检测失效,结论却是不用管它是不是背的,能干活就行。那问题来了:既然"是否见过"不重要,你把全部火力瞄准记忆化检测干什么?这不是自相矛盾,这是个没有写完的下半段。
我猜下半段不是不想写,是没法写。因为一旦说清楚"在软件工程里适应比记忆更重要",就会立刻滑向另一个更麻烦的问题——我们用记忆化检测来证明的一切泛化能力,有多少是幻觉?
这个坑,作者没敢往下跳。跳下去,EMSE那帮审稿人第一个不干——你这一跳,等于说过去几年靠这些方法发出来的几百篇论文,实验结论全都得打问号。审稿人是靠这些方法吃饭的,你掀的桌,桌上的饭碗也有他们一份。
让步该给还是要给:规模这个变量,以前确实被整个评估体系当作无关变量处理了。同一种探针,在小模型上有效、在大模型上失效,今天这个观察本身是有价值的,值得当作一个独立研究方向往下走。方向这块,我认。这次可能真的不一样,不是换个说法重新包装。
但"能干活就行"那套说辞,我不接。适应表面形式的能力很重要,这在生产环境是真的;可如果模型已经学会了用表征负载去消化记忆化,那总有一天会有人发现某些"能力暴涨"的模型,其实只是在更凶猛地背题。到那天,现在对着"能干活就行"松一口气的人,会发现自己省下的每一分评估成本,都在生产事故里连本带利还了回去。
这里立个flag:这篇论文如果过审发表,明年之内至少会有五个组沿着"表征负载"这个方向做后续,然后大家会突然发现,过去三年里相当一部分"模型变强了"的结论,都是观测仪器失灵后的错觉。别急着反驳我,先去看看自己模型拿的benchmark分数,是按照什么规模的探针标的——测出来是实力,还是测不出来而已。
