微信扫一扫,关注公众号

  • 科技行者

  • 算力行者

见证连接与计算的「力量」

首页 语言模型的下一次进化,可能不在词表里

语言模型的下一次进化,可能不在词表里

2026-10-14 18:37
分享至:
----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.-
2026-10-14 18:37 • 科技行者

2014年,深度学习刚在图像识别领域站稳脚跟。到了2026年,一个更棘手的问题摆在了所有大语言模型研究者面前:模型已经能一个字一个字地把话说得很流畅了,但它们真的"理解"自己在说什么吗?

这不是一个哲学问题,而是一个工程问题。你训练一个模型去预测下一个词,它学会的只是词与词之间的统计关系。至于"这句话背后的概念是什么"、"这段论证的逻辑结构如何展开",模型从来没有被直接告诉过。这些高层次的抽象,只能算是训练过程中意外产生的副产品。

上海AI Lab和上海交大LUMIA实验室的研究者们决定啃下这块硬骨头。他们做出的东西叫NCP-ArchPreview,一个89亿参数、吃了5.73万亿个token喂大的语言模型。它最与众不同的地方在于,除了传统的逐词预测,它还要做另一件事:预测下一个"概念"。

**这篇论文最打眼的一个数字是:这个新模型只用了51.3%的训练数据量,就追上了OLMo-3-7B(一个同等规模的成熟开源模型)跑完全部训练之后的最终损失。**

换句话说,别人跑完全程,它跑了一半路就到了同一个终点。这在预训练领域是相当罕见的效率提升,值得往下细看它到底做对了什么。

语言模型的老问题:词语背后的"意思"去哪儿了

先说清楚现在的语言模型是怎么工作的。

**下一词预测(Next Token Prediction,简称NTP)**:给定前面的文字,预测下一个最可能出现的词或字符片段(token),这是几乎所有主流大语言模型的训练方式。

这套方法的成功毋庸置疑,ChatGPT、Llama这些模型都是这么训出来的。但问题也很直接:监督信号完全绑定在单个token上。模型要学会"苹果"这个词后面接"手机"还是"电脑"的概率,靠的是海量文本里的统计规律,而不是因为它"懂"苹果公司是做什么的。

研究者们早就观察到,大模型的隐藏层里其实自发地涌现出了一些语义级别的抽象,比如对空间和时间关系的表征,甚至是对世界状态的某种建模。但这些抽象是训练的"意外收获",没有专门的目标函数去强化它们、去要求模型必须学好这些东西。

这就好比你雇了一个学徒,只告诉他"照着前人的做法一步步模仿",从不告诉他"这道工序背后的原理是什么"。学徒确实能把活干得像模像样,但他对整套流程的理解可能仅仅停留在"上一步做完这一步"的机械层面。如果哪天遇到没见过的新情况,他大概率会卡壳,因为他从没被要求去掌握背后那层更抽象的逻辑。

那如果反过来,专门给学徒一门课,教他理解每道工序背后的原理,会发生什么?这正是NCP-ArchPreview想验证的事情。

在图像和视频生成领域,这个思路已经被验证过一次了。**潜在扩散模型(Latent Diffusion)**:不在原始像素空间里做生成,而是先把图片压缩到一个更紧凑的"潜在空间"里再操作,这样效率高很多,Stable Diffusion这类工具背后用的就是这个思路。

图像生成从像素搬到潜在空间之后,效率和效果都跃升了一大截。语言模型是不是也能来这么一次搬家?研究者们的答案是:能,但要小心搬。

概念不是句子,是介于词和句子之间的一层

这里要先弄清楚一个前置工作。这篇论文站在了另一篇论文的肩膀上,叫**ConceptLM**:一种在离散潜在空间中做"下一概念预测"的语言建模方法,由同一批研究者更早提出,当时验证到了15亿参数规模。

NCP-ArchPreview做的事情,是把这套思路一路扩到89亿参数、5.73万亿token的规模,这是目前为止同类工作里最大的一次验证。

那"概念"具体是什么东西?先说结论:它不是一个句子,也不是一个词,而是把连续若干个token(论文里设置的是4个)压缩打包出来的一个中间表示。

具体的做法是这样的。模型先有一个**Token编码器**:负责把输入的文字序列转换成token级别的隐藏状态,这是模型理解文本的第一道工序。

编码器输出的隐藏状态,每4个一组做平均池化,压缩成一个"概念向量"。这一步相当于把细粒度的信息打了个包,变成粗粒度的表示。原来16个token对应16份隐藏状态,压缩完只剩4个概念向量。

如果不压缩会怎样?模型就只能在token这个最细的粒度上思考问题,永远看不到"更大一块"的结构。这就像你读一本书,如果眼睛只能一个字一个字地看,永远没法一眼扫过一整段抓住段落大意,阅读效率和理解深度都会打折扣。压缩这一步,本质上是逼着模型学会"抓大意"这项能力。

但概念向量本身还是连续的、没有边界的空间,直接拿它当预测目标会有个麻烦:模型可以随便生成一个看起来差不多的向量来"糊弄"损失函数,反正连续空间没有明确的对错标准。

**向量量化(Vector Quantization,简称VQ)**:把连续的向量表示映射到一个有限、离散的"码本"集合里,相当于给连续空间划出若干个标准答案,这样才有明确的目标可以预测。

为了让这个离散空间足够丰富,研究者用了**乘积量化(Product Quantization)**:把一个高维向量切成多个小段,每段单独建一个小码本,再把结果拼起来。这样即使每个小码本只有128个选项,32段拼起来能组合出128的32次方种可能的概念,码本本身却依然很小巧。

这个设计挺巧妙的。如果用一个巨大的单一码本去覆盖所有可能的概念,码本会大到不现实。乘积量化相当于把一个复杂的选择题拆成32道简单的选择题,每道题只有128个选项,但32道题拼起来的组合空间是天文数字。这就好比你要形容一个人的长相,与其用几百万张照片直接对应几百万种脸,不如拆成"脸型、眼睛形状、鼻子高低、嘴唇厚薄"等几十个独立维度,每个维度选几个档位,组合出来的表达力反而更强。

概念模块:一个专门负责"想大局"的中间层

有了离散的概念词表之后,下一步是让模型学会预测"下一个概念是什么"。

这个任务交给一个专门的模块来做。

**概念模块(Concept Module)**:一个独立的8层Transformer结构,夹在16层的Token编码器和16层的Token解码器之间,专门负责在概念这个抽象层级上做自回归预测。

这个模块看到的输入是历史的概念序列,输出是对下一个概念的预测。预测方式也很讲究,不是简单地选一个最像的码字,而是对每个乘积量化的分段都算出一个概率分布,再按概率加权平均码本里的所有条目,得到一个可微分的预测结果。这样整个预测过程就能参与梯度反传,不会因为"离散选择"这个动作而卡住训练。

预测出来的概念,最终要反哺回token层面,指导下一个词的生成。这里有个关键的时间设计要说清楚:概念是从已经处理完的token状态里压缩出来的,如果不做因果位移直接注入,模型就相当于提前看到了它本该去预测的答案,这是训练里的大忌,叫信息泄漏。

论文里专门做了一次移位处理,保证每个预测出来的概念,只有在对应的token状态被完整处理过之后才会被注入到解码器里。这个细节看似琐碎,但其实是整套系统能不能正确训练的生命线。就像考试监考,必须保证学生做题时看不到后面几页的答案,哪怕只是不小心瞄一眼,整场考试的公正性就崩了。

那这套设计到底管不管用?论文里做了一个层层递进的消融实验,把标准的OLMo-3-7B模型一步步加上概念模块、加上残差连接、加上概念预测损失,观察每一步带来的变化。

结果显示,光加概念模块,训练损失就已经比原始模型低。再加上后面要讲的残差连接设计,损失继续往下走。最后叠加概念预测这个训练目标,又有进一步的提升。四个配置的损失曲线像台阶一样一级一级往下降,说明这些设计不是互相冗余的花架子,而是各自都在真刀真枪地起作用。

三个模块怎么打配合:残差连接的新玩法

模型现在分成了三段:Token编码器、概念模块、Token解码器。这三段深度不同、处理的序列长度也不同(概念模块处理的序列被压缩到了四分之一),它们之间的信息怎么流通,是个不小的工程难题。

传统Transformer里,残差连接是很简单粗暴的加法:这一层的输出,直接加上这一层的输入,传给下一层。这套机制在几十层的网络里工作得很好,但研究者们发现可以做得更聪明一点。

论文里引入了两套连接机制。第一套叫**模块内残差连接(Intra-Module Residual Connections,简称IRC)**:不再局限于"只加上一层之前的状态",而是让每一层可以从更早的所有历史状态里,按学出来的权重挑选组合,决定要重用哪些信息。

这个设计参考了另一篇叫MUDDFormer的工作。初始化的时候,这套机制会被设定成等价于普通残差连接(只看最近一层),但随着训练推进,模型可以自己学会"其实第3层的某些信息对现在更有用",然后把权重往那个方向调。

如果没有这层灵活性会怎样?网络就只能死板地按深度顺序传递信息,一旦某一层学到的东西在更深处需要被重新利用,唯一的办法是靠后面几十层反复"转述",信息传得越远越容易失真。这就像传话游戏,十个人依次传一句话,传到最后经常面目全非。IRC相当于给每个人发了个对讲机,想直接找第三个人核对原话,直接就能核对,不用挨个转述。

第二套叫**跨模块残差连接(Cross-Module Residual Connections,简称CRC)**:让Token编码器、概念模块、Token解码器这三个原本各自独立运作的模块之间,能够互相传递信息,而且是带着学出来的权重去传,不是简单粗暴地拼接。

论文里设了三条这样的跨模块通道:编码器到概念模块、编码器到解码器、概念模块到解码器。每条通道的连接强度都是用一个小型MLP网络根据当前状态动态算出来的,而且这些连接的初始权重被设得很小,让模型一开始表现得跟没加这些连接差不多,训练过程中再慢慢学会怎么用。

研究者还专门做了对比实验,测试了几种不同的残差连接变体,包括更简单的"只加输入层级的跨模块连接"、加了softmax归一化的版本,还有另一篇论文提出的Block AttnRes方案。结果是完整的IRC加CRC组合拿到了最大的损失下降(降低0.0323),而且额外计算开销只增加了0.051%,性价比相当高。

数字不会说谎:训练效率和下游表现双双领先

说了这么多设计,最终还是要看效果。

在预训练的第一阶段,NCP-ArchPreview和OLMo-3-7B用一模一样的数据训练,曲线画出来是这样的:训练前期两条曲线贴得很近,但越往后差距越拉越大,到训练结束时,NCP-ArchPreview的损失比对照组低了0.091。

**如果换算成需要的训练数据量,NCP-ArchPreview只用了51.3%的token就达到了OLMo-3-7B跑满全程之后的最终损失,相当于1.95倍的收敛加速。**

进入第二阶段的继续训练(论文里叫Stage-2,用的是Dolmino这套更精细的数据)之后,类似的优势依然保持,加速比是1.51倍,而且曲线波动明显更小,训练过程更稳。

下游任务表现上,第一阶段训完之后,NCP-ArchPreview在30个基准测试家族的宏观平均分上比OLMo-3-7B高出2.45分,其中数学推理测试GSM8K上的提升尤其明显,高了5.99分,幅度接近18%的相对提升。

| 任务类别 | Vanilla(阶段一) | NCP-ArchPreview(阶段一) | 提升幅度 |

|---|---|---|---|

| MMLU综合 | 62.22 | 64.80 | +2.58 |

| GSM8K数学题 | 39.27 | **45.26** | **+5.99** |

| 代码生成综合 | 25.15 | 27.79 | +2.64 |

| 非STEM常识推理 | 70.08 | 74.71 | +4.63 |

有意思的是,进入第二阶段之后,提升幅度收窄到了0.59分,而且在代码类任务上反而略有下滑。研究者的解释是,第二阶段的数据里代码占比本来就低,只有大约10%,模型在整体数据分布拟合更好的同时,可能对占比小的领域产生了一定挤压。这提醒我们一件事:训练损失更低,不完全等同于每个下游任务都变好,损失和能力之间的关系会随着训练阶段和数据分布变化而变化。

排除"作弊"嫌疑:参数量和计算量对齐后的公平对比

看到这里,一个很自然的质疑会冒出来:NCP-ArchPreview加了概念模块,参数总量比原版OLMo-3-7B多了不少(89亿对比70亿),会不会所谓的优势只是"堆料"堆出来的?

研究者显然也想到了这一点,专门设计了参数对齐和计算量对齐的公平对照组。

具体做法是这样的:既然概念模块每4个token压缩成1个概念,处理的序列长度只有原来的四分之一,那一个概念模块层的参数量跟标准Transformer层差不多,但计算量却只要四分之一左右。研究者据此换算出,NCP-ArchPreview整体的参数量相当于40个标准层,但计算量只相当于34个标准层。

于是他们训练了两个对照模型:一个是40层的标准OLMo-3-7B(参数量对齐,但计算量比NCP-ArchPreview多出15%),另一个是34层的标准OLMo-3-7B(计算量对齐,参数量比NCP-ArchPreview少)。

结果显示,NCP-ArchPreview明显超过了计算量对齐的34层版本,说明优势不能简单归因于"算得更多"。同时,它逼近了参数量对齐的40层版本的表现,而实际使用的计算量只有对方的85%。

这个结果换个说法就是:同样规格的"料",NCP-ArchPreview的架构设计能让每一份计算发挥出更大的效用。这就好比两个厨师用同样多的食材做同一道菜,一个是随手下锅,另一个是精心设计了火候和步骤,后者用更少的燃气做出了差不多好吃的菜。省下来的不是食材,是烹饪过程本身的效率。

论文还专门做了一次扩展到更大计算预算的规模化实验(scaling law),在多个不同的算力预算点上,分别搜索最优的模型大小和数据配比组合,画出两条模型家族各自的最优表现曲线。结果是NCP-ArchPreview这条曲线全程压着OLMo-3的曲线,达到同样验证损失所需的计算量只有对方的57%左右,也就是1.74倍的计算效率提升。

训练不是一帆风顺:一个意外的数值稳定性坑

工程实践里很少有一路顺畅的故事,这篇论文也不例外,里面记录了一次挺典型的训练事故排查。

研究者在用OLMo-3的**层级QK归一化(layer-wise Q/K normalization)**:一种对Transformer注意力机制里的查询(Query)和键(Key)向量做归一化处理的技术,目的是防止数值爆炸,归一化的粒度是整层一起算,而不是按每个注意力头单独处理。

训练过程中出现了持续的注意力logit(attention logit,即注意力打分)爆炸增长,伴随着梯度范数的剧烈震荡。排查下来,根源指向了另一个组件:**Muon优化器**:一种针对矩阵参数设计的新型优化器,近年在大模型训练中被证明比传统的AdamW收敛更快。

问题出在Muon的更新方式和层级QK归一化"不对付"。Muon对整个矩阵参数做联合的正交化更新,这个操作会把多个注意力头的更新耦合在一起,而层级归一化只控制这些头加在一起之后的整体规模,管不住某一个头单独跑偏。结果就是少数几个头的数值越滚越大,主导了整个注意力分布,进一步引发梯度爆炸。

研究者对比了几种方案,发现把归一化粒度从"整层"改成"每个头单独归一化",能有效压住这个问题。不过为了和原始的OLMo-3-7B基线保持严格可比,他们在正式的主实验里还是沿用了原本的层级归一化方案,把按头归一化的方案作为一个单独的稳定性分析记录了下来,供后续工作参考。这个细节挺诚实的,没有为了让论文数字更好看而悄悄换掉基线设置。

概念空间的第二人生:轻量化领域适配和推理加速

训练完成不是终点,论文后半部分探索了这个学到的概念空间还能干什么别的活。

第一个应用是领域适配。传统做法要么全参数微调(费时费钱费显存),要么用LoRA(**低秩适配**:一种参数高效微调方法,只训练两个小矩阵的乘积来近似完整的权重更新,大幅减少需要训练的参数量)。

研究者试了第三条路:冻住整个token层面的主干网络,只更新VQ码本和概念预测头这部分,一共只有1700万参数。

在代码适配任务上,这个只调1700万参数的方案,代码平均分从30.04提升到32.69,是所有适配方式里唯一一个让四项代码测试全部提升的方案。相比之下,全参数微调虽然在部分指标上冲得更高,但在MBPP+测试上暴跌了22.49分,通用能力也随之受损。

这背后的道理值得琢磨。全参数微调相当于把整个大脑都按新任务重新洗了一遍,新技能是学会了,但旧本领容易被冲刷掉,这种现象在持续学习领域有个专门的名字叫"灾难性遗忘"。而只调VQ模块,相当于只调整"概念库"这一层抽象接口,底层的知识网络纹丝不动,新技能加上去了,老底子也保住了。

这就好比一个老师傅带徒弟学新工艺,与其把徒弟原来学的所有东西推倒重来,不如只给他补充一门新课程,原有的技能树完全保留,新知识作为一个独立模块叠加上去。效率高,副作用小。

训练速度和显存开销上,这个优势更加直观。用8张GPU、每张卡批次大小为1的设置下,VQ训练的吞吐量达到每秒每卡15632个token,是全参数微调的2.02倍,是LoRA的1.5倍,显存占用也只有全参数微调的三分之一左右。

第二个应用是推理加速。这里涉及一个叫**推测解码(Speculative Decoding)**:一种让大模型生成更快的技术,核心思路是先用一个小的"起草模型"快速生成一批候选token,再让大模型一次性验证,如果验证通过就能一口气跳过多个生成步骤。

研究者把概念表示注入到一个叫DFlash2的起草模型里,只增加了0.04M(4万个)参数,几乎可以忽略不计。测试结果显示,**平均接受长度(每轮验证能确认下来的token数量,越长说明加速效果越好)从5.933提升到6.180,相当于4.17%的相对提升,在HumanEval代码生成任务上提升幅度最大,达到了7.59%。**

这说明概念模块学到的那些"大局观"信息,不光是自己有用,拿去给别的小模型做外挂,也能起到实实在在的帮助。这有点像一个经验丰富的老导游,虽然他自己不负责开车,但把沿途的关键路况提前告诉司机,司机开车就能更顺、更少急刹车。

写在后面

读完这篇论文,最让我意外的一点不是那些漂亮的加速比数字,而是研究者对"训练损失下降不等于能力提升"这件事的坦诚记录。

论文里专门用了一整节篇幅讨论,第二阶段训练里,三个不同数据配方(V1、V2、V3)的最终训练损失依次降低,但下游表现却依次变差。这跟直觉是拧着的,大部分人会默认"损失更低=模型更强",但实际情况更复杂,可能是训练数据分布和下游测试分布之间的错位造成的。

为了处理这个麻烦,他们没有简单地多算几次下游评测了事,而是搭了一套用小规模代理数据(用一个冻结的教师模型生成的十万条轨迹)做筛选的方法,靠计算每类任务的负对数似然,不用完整跑一遍生成式评测,就能快速判断哪个数据配方更值得投入全量训练。这套"用小成本预判大结果"的思路,本身就是一个挺值得单独琢磨的工程智慧,论文附录里花了大篇幅去验证这套代理指标和真实下游分数的相关性,拟合优度普遍在0.88到0.99之间,只有逻辑推理这一项相关性明显弱一些(0.531),这个诚实的例外也没被藏起来。

另一个值得回味的细节是概念模块和多token预测(MTP)这两种技术的关系。论文里专门做了对照实验,发现单独用概念预测已经能跑赢加了MTP的传统架构,而两者叠加起来效果更好。这说明这两条路径不是互相替代的关系,而是在做不同的事情:MTP还是绑在具体token上做预测,概念预测则是在一个抽象层面上做规划。它们像是同一支登山队里分别负责"看脚下的路"和"看山顶方向"的两个人,各司其职,合作起来比单打独斗强。

这篇论文没有解决的问题,论文自己也列出来了:目前所有实验都局限在标准上下文长度内,长文本场景下概念级别的压缩会不会带来更大的优势,还是个悬而未决的问题。毕竟概念模块处理的是压缩过的序列,理论上处理长文本时,这种压缩带来的效率优势应该会被进一步放大,但目前还没有实证数据。

如果语言模型真的能建立起一层稳定的、可控的"概念层",下一步会发生什么?模型是不是能在这层抽象上做规划、做推理,而不只是逐字往前拼凑?这个问题,现在还没有答案。

Q&A

Q1:NCP-ArchPreview是什么?

A:NCP-ArchPreview是一个89亿参数的潜在空间语言模型,由上海AI Lab和上海交大LUMIA实验室开发,除了传统的逐词预测之外,还引入了下一概念预测这一新训练目标,在5.73万亿token上完成了预训练。

Q2:NCP-ArchPreview相比OLMo-3-7B有什么优势?

A:训练效率上,NCP-ArchPreview只用51.3%的训练数据就达到了OLMo-3-7B跑满全程的最终损失,收敛速度快了1.95倍;下游任务上,宏观平均分高出2.45分,GSM8K数学测试提升了5.99分。

Q3:什么是下一概念预测(NCP)?

A:下一概念预测是指模型把连续多个token压缩打包成一个"概念"表示,再用一个专门的概念模块去预测接下来的概念是什么,这个预测结果最后会反馈回token生成过程,帮助模型建立更高层次的语义理解能力。

分享至
0赞

好文章,需要你的鼓励

推荐文章
----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.-