微信扫一扫,关注公众号

  • 科技行者

  • 算力行者

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

首页 语言模型真的需要一张可训练的词嵌入表吗?

语言模型真的需要一张可训练的词嵌入表吗?

2026-11-04 16:16
分享至:
----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.-
2026-11-04 16:16 • 科技行者

你有没有想过,一个语言模型最开始是怎么"认识"一个词的?

几乎所有主流的大语言模型,第一步都是查表:每个词对应一行向量,这行向量会随着训练不断调整,变得越来越"懂"这个词的含义。这张表通常巨大,参数量动辄上亿,而且被当作理所当然的标配。没有人会问,这张表是不是必须可以被训练调整。

直到有人认真地问了这个问题。

一篇来自独立研究者安德烈·博奇科夫(Andrey Bochkov)的论文,做了一件挺大胆的事:把这张可训练的嵌入表直接拿掉,换成一串固定不变的二进制编码,然后在一个17亿参数规模的模型上,烧了1000亿个训练token,看看会发生什么。

结果出乎很多人的预料。模型不仅没有崩溃,还在HellaSwag常识推理任务上拿到了52.40%的准确率,在PIQA物理常识任务上拿到70.51%,在LAMBADA词语预测任务上拿到42.75%。这些数字远远超过随机瞎猜的水平,说明模型确实学会了有意义的语言能力,而它的输入层里,没有一个字是"可以被调整"的。

这件事到底是怎么做到的,又说明了什么?我们一点点拆开看。

词表这张"身份证",到底在干什么

要理解这篇论文的核心操作,得先搞清楚传统语言模型是怎么处理词的。

每个词在进入模型之前,首先要变成一串数字,也就是向量。

词嵌入表(Embedding Table):一张巨大的查找表,每一行对应词表里的一个词,这行数字(向量)会在训练过程中不断被优化调整,目的是让语义相近的词在向量空间里也彼此靠近。

传统做法是,这张表和模型的其他部分一起训练。一开始这些向量是随机初始化的乱码,随着训练推进,模型会慢慢学会把"猫"和"狗"的向量调得比较接近,把"猫"和"量子力学"的向量调得很远。这个过程被认为是模型理解语义的基础。

论文作者提出了一个区分,这个区分其实是整篇论文的骨架:识别、可学习性、实用性,是三件不同的事。

一个输入接口能不能把"这是哪个词"这个信息完整保留下来,这叫识别,是个编码问题,有标准答案。一个共享的神经网络能不能从这种接口里学到有用的语言计算能力,这叫可学习性,得靠实验验证。给每个词单独调整它的向量,是不是真的能让模型变得更好,这叫实用性,同样得靠实验。

过去大家默认这三件事是绑在一起的:既然每个词都要被识别,那干脆顺便让它的向量也可以训练调整,一举两得。但作者的洞察在于,识别不等于必须可训练。你可以给每个词一个固定不变的"身份证号",只要这个号码不和别人重复,模型照样能分清楚谁是谁。至于模型能不能从这串固定号码里学出语言能力,这是另一回事,需要单独验证。

这就像公司给每个员工发工牌。工牌上的编号一旦印刷就不会再改,但这不妨碍员工在公司里不断成长、升职加薪、能力越来越强。工牌编号本身是死的,员工的职业发展是活的。如果你坚持认为工牌编号也必须能随时修改才能体现员工的成长,那其实是混淆了"身份标识"和"能力发展"这两件事。如果不做这个区分,你可能会以为换掉工牌编号系统会影响员工表现,但实际上真正起作用的是公司内部的培训和晋升机制,也就是神经网络本身。

固定编码是怎么造出来的

那具体怎么给每个词造一张"固定不变的工牌"?

论文里用的方法简单到有点粗暴:二进制编码。

词表大小是49152个词,这意味着要用16个二进制位(也就是16个0或1组成的串)就能给每个词分配一个独一无二的编号,因为2的16次方远大于49152。

这个16位数字是怎么算出来的:\(K = \lceil \log_2 V \rceil\),V是词表大小,K是需要的最少位数。这是个纯数学事实,跟语言模型学不学得好没有任何关系,只是保证"每个词有唯一编号、不会撞车"的最低要求。

但模型的隐藏层宽度是2048维,16位编码明显不够用。论文的处理方式是把这16位编码重复128次,平铺成2048维向量,中间不插入任何可训练的转换层。换句话说,模型拿到的输入,就是这串0和1的数字原样重复拼接而成,没有任何学习过程参与进来。

这里有个关键的设计选择:这16位编码本身,从训练开始到训练结束,一个比特都不会变。

传统嵌入表里,"猫"这个词对应的向量会在训练过程中从随机噪声慢慢变成一个有意义的语义表示。但在这个固定编码方案里,"猫"的输入坐标从第一步到最后一步,永远是同一串0和1。如果模型最终表现出理解语义的能力,这种理解一定发生在编码之后的那些可训练的神经网络层里,而不是编码本身。

这就好比你给图书馆的每本书贴了一个条形码,条形码本身永远不变,一本书不会因为被借阅次数多了就自动换个条形码。但图书馆的分类系统、推荐算法、读者的阅读体验,这些是可以不断优化迭代的。如果你坚持要让条形码本身也跟着变化来体现"书变得更受欢迎了",那是把标识系统和价值系统搞混了。固定条形码的好处是,你可以非常确定地说,某本书借阅量上升,一定是推荐算法起了作用,而不是条形码本身偷偷换了什么花样。

论文还测试了第二种固定编码方式,不是直接用词的编号对应的二进制数,而是先用一个固定的可逆矩阵对这16位编码做一次线性变换,这个变换是在GF(2)域(一种只有0和1两个元素、加法乘法都按二进制规则走的数学系统)上完成的。

GF(2):伽罗瓦域(Galois Field)的一种,只包含0和1两个元素,加法运算相当于异或操作,乘法运算就是普通的与运算,常用于编码理论和密码学。

这个变换矩阵只生成一次,用固定的随机种子12345,生成后就不再改变,整个训练过程中原封不动。之所以要求矩阵可逆,是为了保证这个变换不会把两个不同的词映射成同一个编码,也就是不会丢失识别信息,同时还要求矩阵每行每列都有一定的"汉明重量"(二进制串里1的个数),避免出现某些退化情况。

为什么要多做这一步?因为作者想回答一个更细致的问题:模型的表现,是依赖于那个特定的"little-endian二进制展开"编码方式本身,还是说只要是一种保留身份信息的固定编码,随便换一种具体的赋值方式,模型照样能学?

结果显示,两种固定编码方案表现相近,没有哪个压倒性地更好。标准二进制编码在HellaSwag和WikiText上略胜一筹,GF2重编码在PIQA上反而更好一点。这说明结论不是"某个特定的魔法编码恰好有效",而是"固定、不可变、保留身份信息"这个大类的编码方式本身是可行的。

但作者很谨慎地强调,这只测试了一个重编码矩阵,不能证明所有可能的重编码都同样有效,这是个留白,留给未来的研究。

三个模型,一场对照实验

光说固定编码能用还不够,得有参照物才能看出差距在哪。

论文设计了三个模型,架构、分词器、训练数据、优化器设置全部保持一致,唯一的区别就是输入接口。

第一个是传统的可学习嵌入表,作为对照组。第二个用标准二进制编码,论文里叫Binary16。第三个用GF(2)重编码,叫GF2。三个模型全部从零开始训练,每个目标训练1000亿个预测token,用的是24层解码器、2048隐藏维度、32个注意力头的标准Transformer架构,这个规模大致相当于主流的1.7B参数级别模型。

这里有个容易被忽略但很重要的细节:固定编码方案虽然去掉了输入嵌入表,但模型最后一层的输出投影矩阵依然是可训练的,而且这个矩阵同样是词表大小乘以隐藏维度,参数量和输入嵌入表一样大。

也就是说,这次实验去掉的只是输入端的那部分,输出端预测下一个词是什么的那部分,依然保留了完整的、针对每个词独立可调的参数。

这个区分很重要,因为它意味着论文的结论是"输入端的词特定可训练向量不是必需的",而不是"模型完全不需要任何词特定的可训练参数"。如果把输出端也去掉,那又是完全不同的另一个实验了。

具体参数对比上,传统可学习方案的输入嵌入表有1.006亿个可训练参数,固定编码方案这部分直接归零,整个模型的可训练参数从18.12亿降到17.11亿,减少了大约5.56%。这个减少量不算特别惊人,论文作者也反复强调,参数量的减少不是这篇论文的重点,重点是证明这件事在架构层面是可行的。

实验结果:固定编码模型到底学到了什么

三个模型训练完之后,用了一套标准的语言模型评测体系,涵盖常识推理、物理常识、代词消歧、开放性问答、常识问答、大规模多任务理解、词语预测和语料困惑度等多个维度。

核心结果整理如下,数值是准确率百分比,括号内是评测标准误差:

HellaSwag(常识续写推理)归一化准确率,可学习方案57.79%,二进制固定编码52.40%,GF2重编码51.44%。

PIQA(物理常识推理)准确率,可学习方案72.69%,二进制固定编码70.51%,GF2重编码71.16%。

LAMBADA(长文本末词预测)准确率,可学习方案47.72%,二进制固定编码42.75%,GF2重编码42.29%。

ARC-Easy(简单科学问答)归一化准确率,可学习方案66.04%,二进制固定编码61.53%,GF2重编码60.73%。

WikiText词级困惑度(数值越低越好),可学习方案16.50,二进制固定编码18.58,GF2重编码19.03。

从这组数字能读出两层意思。

固定编码模型的表现远远超过随机猜测的水平,说明它确实学到了实质性的语言能力,不是蒙对的。但同时,它在几乎所有任务上都略微落后于可学习嵌入表的对照组,差距大致在3到6个百分点之间,不算特别大,但也不是可以忽略的误差范围。

论文还把这三个自己训练的模型和公开发布的SmolLM2系列模型做了对比,SmolLM2用了多得多的训练数据,135M参数版本用了约2万亿token,1.7B版本用了约11万亿token,是本文模型训练量的100多倍。固定编码模型的HellaSwag分数52.40%,正好落在SmolLM2-135M的43.02%和SmolLM2-360M的56.28%之间,说明固定编码模型是一个实实在在能打的语言模型,只是和用了巨量数据训练出来的同等参数规模模型相比还有差距,这个差距主要来自训练数据量的悬殊,不能简单归因于输入接口的选择。

还有一组数字值得单独说一下:CommonsenseQA(常识问答)上三个模型都在20%左右,MMLU(大规模多任务语言理解)上都在25%到26%左右,这两个数字非常接近随机瞎猜的水平(CommonsenseQA是5选1,随机是20%;MMLU是4选1,随机是25%)。这说明不管是固定编码还是可学习编码,在这个训练规模和数据量下,模型都还没学会更深层次的知识性推理能力。这不是固定编码独有的缺陷,而是整体训练预算不足带来的共同局限,论文对此也做了坦诚说明,没有回避。

固定编码到底意味着什么

读到这里,你可能会觉得,固定编码表现不如可学习表,那这个实验是不是没什么意义?

恰恰相反,这正是论文最有价值的地方:它把"必要性"和"有用性"这两件事彻底分开了。

一个组件对模型有帮助,不代表这个组件是不可替代的。

可学习嵌入表确实让模型表现更好,这一点论文从头到尾都没有否认。但"更好"和"必需"是两件不同的事。固定编码的存在证明了,即使完全剥夺模型调整每个词输入坐标的自由,模型依然能够学会实质性的语言能力,这说明语言理解的能力,很大一部分其实是在后续的神经网络层里构建出来的,而不是单纯依赖那张可以自由调整的输入表。

这个发现之所以重要,是因为它改变了我们理解"语言模型是怎么学会语言的"这件事的默认假设。过去大家可能觉得,词嵌入表是语义理解的起点,所有后续计算都是在这个语义基础上做进一步加工。但固定编码实验提示了另一种可能:输入端只需要提供"这是哪个词"的身份信息,真正的语义构建工作可以完全由后面那些共享的、可训练的网络层来承担。

这就像学一门新语言时,老师给每个生词发了一张卡片,卡片上只印着这个词的编号,没有任何释义或翻译。乍一看这似乎没法学,但如果课堂上有足够多的例句、语境和反复练习,你的大脑其实完全可以靠上下文把这个编号和它的含义对应起来,哪怕卡片本身永远不变。如果反过来,每张卡片上直接印好了详细释义,你学起来确实会更快,这就是可学习嵌入表更好的原因。但这不代表没有释义卡片你就完全学不会,只是学得慢一些、费劲一些。固定编码实验证明的,正是后面这种"没有释义卡片也能学会"的可能性。

论文作者也非常谨慎地划定了这个结论的边界。

他们明确指出,拿掉输入嵌入表之后,模型依然可能在内部学出某种"嵌入函数",只是这个函数是由共享的网络参数实现的,而不是由每个词独立的向量实现的。这是两种不同的参数化方式,不能混为一谈。固定输入也并不意味着模型内部的隐藏表示是透明可解释的,两个用相同固定输入训练出来的模型,完全可能发展出完全不同的内部组织方式。

论文里有一段话讲得挺实在:移除一张表不等于移除了一个嵌入功能,这句话听起来有点绕,但其实在说一件很朴素的事,输入接口的形式变了,不代表模型就不再具备表示词义的能力了,它只是换了一种方式去实现这个能力。

这个区分,其实跟我们理解很多复杂系统时会遇到的困惑很像。你拆掉一辆车的某个零件,车可能还能开,只是开得不如原来顺畅,这时候你不能说这个零件完全没用,但你也不能说这个零件是车能开动的充分必要条件。固定编码实验做的,正是把这种"拆零件测试"系统地搬到了语言模型的输入层上。

这个方法能用来做什么

抛开"能不能工作"这个基本问题,固定编码接口还打开了一些有意思的研究方向。

因为输入坐标从头到尾都不变,研究者可以更干净地追踪模型内部的表示是怎么一步步形成的,不用担心"是不是因为输入向量本身也在变化导致的"这种混淆因素。论文里管这个叫"输入不动情况下的表示形成"研究,本质上是提供了一个更干净的实验环境,少了一个变量,观察起来更容易归因。

另外,论文也提出可以把学习型低维坐标、随机连续编码、规模匹配的对照组等不同变体拿来做更系统的比较,看看固定编码带来的性能损失到底是来自"编码不可训练"这件事本身,还是来自编码的维度太低、数值范围没对齐等其他因素。这些问题论文这一版并没有回答,而是诚实地列成了未来要做的事。

还有一个比较务实的应用场景,固定不变的词身份接口,可以作为模块化系统里的一个稳定边界。想象一下,如果你要搭建一个由多个独立训练、独立更新的子系统组成的大系统,输入接口如果能保持固定不变,那就意味着你可以单独替换或研究某一个子系统,而不用担心输入端跟着一起变化引入额外的不确定性。

这有点像集装箱运输的逻辑。在集装箱标准化之前,每艘船、每个港口对货物包装的要求都不一样,换一种运输方式就要重新打包。集装箱标准化之后,箱子的尺寸、接口永远固定,内部装什么、用什么方式搬运处理,可以各自独立演化,互不干扰。固定词编码扮演的,某种程度上就是这个"标准接口"的角色,它不追求本身有多精巧,追求的是稳定和可预测。

论文也老老实实列出了这项研究的局限。每种输入方案只训练了一次,没有做多次重复实验来评估训练过程本身的随机波动有多大。固定编码的初始数值范围和可学习嵌入表的随机初始化范围并不一致,这意味着性能差距不能完全归因于"是否可训练"这一个因素。整个实验只用了一种分词器、一种词表规模、一种训练数据配置,能不能推广到其他语言、更长的上下文、指令微调等场景,目前都还不知道。论文也没有测量过固定编码在实际运行速度、显存占用等工程层面是否真的带来了优势,因为少了嵌入表的参数,不代表少了对应的存储和计算开销,这取决于具体的工程实现。

Q&A

Q1:固定token编码和传统可学习词嵌入表的核心区别是什么?

A:传统方案里每个词对应的向量会随训练不断调整,固定编码方案里每个词从头到尾都对应同一串不变的0和1二进制数字,模型的所有学习能力都集中在后续的神经网络层里,输入坐标本身完全不参与训练。

Q2:去掉可训练词嵌入表之后,模型性能下降了多少?

A:在HellaSwag常识推理任务上,固定编码模型准确率52.40%,比可学习方案的57.79%低了约5个百分点,多数任务上差距在3到6个百分点之间,模型依然保留了实质性的语言能力,只是略逊于传统方案。

Q3:这项研究说明语言模型完全不需要词特定的可训练参数吗?

A:不是。研究只去掉了输入端的可训练嵌入表,模型的输出投影层依然保留了完整的、针对每个词独立可调的参数,结论是输入端的词特定向量不是必需的,而不是模型完全不需要任何词相关的可训练参数。

分享至
0赞

好文章,需要你的鼓励

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