Meta 最近公开了一种训练大语言模型的新方法:让模型一次预测接下来的四个词,而不是传统的一个。这听起来不算太大的改动,但可能会改变主流的预训练范式。
我们熟悉的 LLM 全都是用 next-token prediction 练出来的:输入一段文本,猜下一个词,然后把这个词拼到末尾继续猜下一个,如此反复。损失函数通常是交叉熵,它衡量模型对正确词的置信度——也就是'困惑度'。困惑度越低越好,表明模型越来越确信自己的猜测。这套方法虽然笨重,需要喂进整个互联网,但事实证明它能让模型学会语言、推理,甚至某种程度的世界知识。
Meta 的改动,是在模型的主干网络后面挂上四个输出头,按顺序级联预测第 n+1、n+2、n+3、n+4 个 token。不是四个头独立乱猜,而是第一个头预测下一个词,然后把它的输出塞给第二个头去预测再下一个,依此类推。最后只保留每个头生成的最后一个 token,串起来就是连续的四个词。推理时,如果你愿意,可以并行运行所有头,再用 Medusa 那样的验证策略筛掉不合理的候选,生成速度能提高到原来的三倍。
更有意思的是,这种训练策略还让模型变聪明了。在代码生成任务上,用 30 亿参数的模型做测试,4-token 预测在 HumanEval 和 MBPP 上的准确率明显高于传统 next-token 模型。但换成自由文本生成,优势就不那么显著了,论文自己也说可能是规模不够。我的感觉是,这合情合理——代码的语法远比自然语言死板,模型同时学几个词,更容易锁死局部搭配,少犯'I guitar the play'之类的错误。
研究人员用'选择点'的概念来解释:有些词一旦定下来,后面的路径就被钉死了(比如恐怖小说里听到'roar'和'rat',故事走向完全不同);而有些词对后续影响很小(比如拿起笔写'write/draw/doodle',都差不多)。同时预测多个未来词,会逼迫模型对选择点更敏感,从而生成更连贯的东西。
训练时四个头的损失直接求和,没有额外开销。推理时可以用多 head 并行加速,也可以丢弃它们当普通模型用。灵活性在线。
虽然语言建模的提升还在等更大模型验证,但在对吞吐量要求极高的场景——比如需要一口气生成上千 token 的推理型 agent——这种高效解码的思路已经很吸引人。接下来,更大的 k 值、头权重优化、以及超长上下文下的表现,应该会是研究者盯着的方向。


