大模型把「巴黎是法国首都」这类知识存在哪?答案是分散在几十亿参数里,没有一个格子专门贴标签写着它。本文拆解知识从文本流入参数的存储方式,讲透分布式表征为什么这样摆事实。
不是存档柜,是分布式记忆
直觉上,知识像档案,一个柜子放一条。大模型的参数不是档案柜,更像一片连片的湿地:一条知识进来,被摊成无数个小修正,分别写进不同连接的权重里。查的时候也不是抽档案,而是让输入的问题激活一整片相关区域,拼出答案。进来的是训练文本里的统计规律,发生的是权重被梯度一点点修正,出去的是「遇到类似输入就给出类似输出」的能力。理解这一点,就不会去问「哪个参数存了爱因斯坦」——没有那个参数,只有一片为他亮起的连接。
为什么不按格子存
定点存有三个绕不开的麻烦。一是容量:一条知识占一个格子,几十亿条知识就要几十亿个柜子,还得预留没见过的知识的位置。二是泛化:定点存的知识彼此隔离,「猫」和「猫咪」是两条不相干的记录;分布式存储里它们共用一片区域,见过猫就顺手理解了猫咪。三是抗噪:分布式表征里单个参数受损只掉一小块能力,像湿地局部干涸不影响整片生态,定点存则是一损俱损。
代价也明显:知识混居,边界模糊。模型分不清「知道」和「猜」的界限,于是有了幻觉——它能用一套没把握的激活拼出一段流利但错误的陈述。这不是存储方式出了错,是这种存储必然的副产物。
定点存和分布式存,在容量、泛化、抗噪上表现正好相反。
| 麻烦 | 定点存(一个格子一条) | 分布式表征 |
|---|---|---|
| 容量 | 几十亿条知识要几十亿个柜子,还得预留没见过的知识的位置 | 摊成无数小修正写进不同连接,没有单点档案 |
| 泛化 | 「猫」和「猫咪」是两条不相干的记录 | 相近概念共用一片区域,见过猫就顺手理解猫咪 |
| 抗噪 | 一损俱损 | 单个参数受损只掉一小块能力,像湿地局部干涸 |
| 边界 | 边界清晰 | 知识混居、边界模糊,分不清「知道」和「猜」,于是有幻觉 |
训练时知识是怎么写进去的
知识写入的主通道是预测下一个词。模型读进「法国的首都是」,押「巴黎」,猜错了就反传梯度,把「法国—首都—巴黎」这条链路上的一批权重各拧一丝丝。同样的模式在训练语料里出现成千上万次,每根相关连接都被反复微调,一条知识就由这一大票小修正共同编码。豆包、Kimi 的底层走的是同一条路:知识不是被灌输的,是被反复预测喂出来的。
预训练写进去的是常识与语言规律,后训练写进去的是对话习惯与任务格式,两次写入用的都是梯度修正这套机制,只是数据与目标不同。这也是为什么后训练能明显改变模型的口吻,却动不了它知识库的底盘——写入通道相同,可修正的幅度和覆盖的面完全不同。
分布式表征速查表
- 一条知识分散编码在大量连接里,没有单点档案
- 相近概念共用相邻区域,泛化由此而来
- 写入靠预测误差驱动的梯度修正,反复出现才写得牢
- 混居带来泛化,也带来边界模糊与幻觉
这个存储观解释了什么
它解释了为什么微调能改变口吻却很难精确改写一条知识:动一小批参数,牵动的是共用区域的一片。为什么同一个词在不同句子里向量不同那篇讲的上下文相关表示,正是这片区域被输入点亮的方式;低秩分解是怎么省参数的能生效,前提也是有效变化住在低维子空间里。想改知识又不动全局,实践中通常靠新数据微调或外挂检索,硬改单点参数只会伤及无辜。
换个角度说,分布式表征让模型拥有了「压缩」的能力,也背上了「解压难」的包袱。人类读者能指着教科书某一页说知识在这一页,模型不行,它的教科书被抄成了千万张互相咬合的碎片。承认这个差别,很多工程选择就顺理成章:要可靠事实,外挂知识库比改权重稳妥;要稳定风格,轻量微调比硬改参数有效。
关于分布式表征,问得最多的三个
- 能不能定位并删除某条错误知识?:很难精确办到,因为知识是分散编码的,硬删会波及共用区域;工程上的做法是用正确数据微调压过错误记忆,或外挂知识库绕开它。
- 参数越多存的知识越多吗?:容量确实随参数涨,但存储密度更受训练数据影响,同样的参数喂低质数据,存下的有效知识反而更少。
- 分布式表征和词向量的加减游戏有什么关系?:加减游戏成立,正因为概念住在共享的向量空间里,方向与距离承载了语义关系,这正是分布式存储的外显特征。
记住一句话:知识不住在格子里,住在关系里,这也是它难精确定位、却擅长泛化的根源。


