同一个事实,模型为什么会答成几套版本?1×0:0012:220:00开场:知识库这个比喻出了什么问题1:23行为证据:事实不会自然跨任务共现3:41机械证据:同一事实可以定位到不同参数子集6:01哪些任务更容易纠缠7:48Chain of Thought 像是在绕路取知识9:40意义和局限:别再只把事实当一条记录0:00主播我们常说,大语言模型的参数像一个知识库。可今天这篇 arXiv 论文问了一个很尖锐的问题:如果它真是知识库,那同一个事实,换一种问法,为什么不能稳定地从同一个地方取出来?0:17嘉宾对,这篇论文的题目是「LMs as Task-Specific Knowledge Bases」。它不是只看模型答没答对,而是把问题拆得更细:同一个事实,在填空、开放问答、选择题、判断题、多跳推理这些不同任务里,模型是不是依赖同一套内部编码。0:41主播也就是说,它质疑的不是「模型有没有背下巴黎是法国首都」这种事实,而是「巴黎这个事实」在模型里到底是一份公共记录,还是按任务格式被复制成了好几份。0:57嘉宾没错。论文最后的结论很不舒服:模型知道什么,和你怎么问它,在参数空间里是纠缠在一起的。它不像一个规范数据库,更多像是好几个任务专用的小知识库拼在一起。1:23主播先讲第一层证据。论文怎么判断「知识不是任务无关的」?1:29嘉宾它先做了一个行为实验。论文用 OLMo-3-7B 指令模型的一百零五个训练检查点,跟踪两百三十个关系事实,比如国家首都、官方语言、地标所在国家、公司总部城市、人物演奏的乐器。每个事实都被改写成六种任务格式。1:53主播这个设计很巧。因为如果事实真的存在一份共享存储,那一旦模型在开放问答里学会了「法国首都是巴黎」,等选择题能力也成熟之后,它应该能把同一个事实迁移过去。2:10嘉宾论文把这叫做 co-emergence,中文可以叫「共现式习得」。他们定义了每个事实在每个任务上首次稳定被取出的训练步,然后检查:一个事实在某个任务上已经会了,另一个任务也已经具备基本能力时,它是否应该同步会。2:32主播结果并没有。2:36嘉宾对。论文报告说,在可检验的一千零三十一个事实任务组合里,有百分之四十七点九没有按这个预测共现。换不同阈值,比例仍然接近一半。换句话说,模型在一种问法里学到一个事实,并不意味着它在另一种问法里也拿得到这个事实。3:00主播这比普通的 prompt sensitivity 更深一点。普通说法是:模型表面上容易被提示词影响。但这里是沿着训练过程看,发现事实本身的出现就带着任务格式。3:17嘉宾是的。论文还做了统计检验,把正确率看成事实因素和任务因素的组合。如果任务无关存储成立,那么事实和任务之间不该有强交互。结果每个检查点上都拒绝了这个无交互假设,到最终模型时,事实任务交互解释了百分之二十三的方差。3:41主播行为上看到碎片化,还不够。真正 interpretability 的部分,是它怎么证明这些差异进入了参数层面。3:51嘉宾论文第二个实验更机械。它改造了一个参数定位框架,在 OLMo-2-7B 指令模型、OLMo-2-13B 指令模型和 Gemma-2-9B 指令模型上,给每个「事实加任务」组合找一小撮参数组件,主要是 MLP 神经元和注意力头。4:15主播找参数子集这件事,很容易变成「随便删点东西模型就坏了」。他们怎么避免这个问题?4:25嘉宾他们设置了三个条件:必要、充分、特异。必要,是删掉这组组件之后,目标事实在目标任务上应该明显变差。充分,是把这组组件在干净 prompt 里的激活,patch 到被破坏的 prompt 里,应该能恢复目标答案。特异,是它不应该顺手破坏同一任务里的其他事实,也不应该破坏同一事实在其他任务里的表现。4:55主播所以理想的结果是:我删掉「法国首都,开放问答」这组局部组件,开放问答里的法国首都会掉,但选择题里的法国首都不该一起掉。5:09嘉宾对。论文报告,在不同数据集和模型上,确实能找到这样的任务专用参数子集。一个代表性结果里,对目标组合做零消融,会带来百分之二十九到百分之八十九的相对性能下降;但对同一事实的其他任务、同一任务的其他事实,影响大多不超过百分之八。5:33主播这就把故事从「模型表现不稳定」推进到「同一个事实的不同访问方式,真的可以靠不同的内部组件支撑」。5:43嘉宾而且他们不是只证明「有冗余」。冗余可以是同一个事实存了好几份、互相可替代;这篇论文强调的是,冗余结构按任务格式组织。任务不是外面的壳,它参与了知识编码本身。6:01主播论文还有一个有意思的区分:不是所有任务都一样碎。哪些任务更容易和别的东西纠缠在一起?6:10嘉宾他们把任务大致分成生成类和判别类。生成类包括开放问答、填空、多跳生成;判别类包括多选题、负向多选、真假判断。参数层面的 entanglement 分数显示,判别任务明显更纠缠。跨十五个模型和数据集组合,判别任务平均是零点二一,生成任务平均是零点一一。6:37主播这个数字不用记太死,直觉是:让模型自己生成答案时,内部路径更像是直接取事实;而让它在候选里选,或者判断对错,会引入更多任务策略。6:51嘉宾对,论文的行为结果也支持这个方向。事实如果先在生成任务里出现,比较容易迁移到其他任务;但如果先在判别任务里出现,作为跨任务共现的来源就弱得多。很多时候,模型可能学到的不是「事实本身」,而是「在这个题型里怎么押这个选项」。7:14主播这对评测很关键。很多 factuality benchmark 喜欢用选择题,因为好打分。但如果选择题知识更任务专用,那么只看选择题,可能高估模型的真实可调用知识。7:30嘉宾也会影响 knowledge editing 和 unlearning。你在一种问法里把事实改掉,不代表另一个任务格式里的那份编码也被改掉。模型可能在填空里忘了,但在选择题里还记得,或者反过来。7:48主播这篇论文最有启发的地方,我觉得是它把 Chain of Thought 也放进来了。它不是只说 CoT 有用,而是问:CoT 到底在内部调动了什么?8:00嘉宾论文的假设是,逐步推理能让模型使用不止当前任务格式自己的参数编码。也就是说,直接回答时它可能卡在「这个任务专用小知识库」里;一旦要求它解释、推理、分步,模型会绕到其他任务的编码上,间接把答案取出来。8:22主播他们怎么验证?8:24嘉宾还是用前面定位出来的任务专用组件。先删掉某个任务自己的编码,看直接回答和 CoT 各掉多少。结果是,直接回答掉得更多,CoT 掉得少一点,说明 CoT 能从别的路径补回来。再反过来,删掉其他任务的编码,看对当前任务的影响。直接回答最多只掉百分之八左右,但 CoT 会掉百分之十一到三十一。8:58主播这说明 CoT 更依赖其他任务的编码。它不是魔法地提高智力,而是增加了访问路径。9:07嘉宾对,这个解释很漂亮。CoT 可能把一个表面任务,转化成若干中间问题,而这些中间问题会触发不同的任务格式、不同的参数子集。所以它能恢复一些直接问答拿不到的事实,也更容易受到跨任务消融的影响。9:27主播这也给我们一个新的看法:如果模型知道一个事实但直接答不出来,未必是知识不存在,可能是当前访问格式没有打到那组参数。9:40嘉宾这篇论文的领域意义,是把「语言模型是知识库」这个比喻拆开了。数据库的可靠性来自单一事实源;可模型里的事实可能按任务、格式、甚至推理路径被分开组织。9:57主播那它对 mechanistic interpretability 的启发是什么?10:02嘉宾第一,定位知识时不能只定位「某个事实在哪里」,还要问「在什么任务格式下」。第二,评测和编辑都应该覆盖多种访问方式。第三,如果我们想让模型更可靠,未来训练也许要鼓励任务不变的事实编码,而不是让每种题型自己长一套编码。10:29主播当然,局限也要讲清楚。10:32嘉宾论文自己也强调,实验主要集中在可以写成三元组的关系事实,而且机械实验还筛掉了一些基线表现不够稳定的事实。它证明的是,在这些本来最像数据库记录的事实上,任务不变性都站不稳;但还不能直接说明抽象概念、程序性知识、偏好、长链推理是不是同样组织。11:00主播另外,它定位的是稀疏组件子集,并不等于完整读出了知识的全部存储结构。一个 fact task pair 可以由这组组件支持,也可能还有别的冗余路径。11:14嘉宾对。所以我会把这篇论文看成一个强信号:不要再把「模型知道 X」当成单一状态。更准确的问题应该是:模型在什么任务格式下知道 X?通过哪条内部路径知道 X?如果我改变、删除、评估这个知识,其他路径还在不在?11:37主播这就是本期的核心。语言模型不是一张规整的事实表,更像一套按任务格式长出来的记忆系统。下次当我们看到模型在一个 benchmark 上答对,不妨多问一句:它是真的有一份可迁移的知识,还是只在这个问法里找到了入口?12:00嘉宾而这恰好也是 interpretability 的价值所在:把「答对了」往下拆,拆到模型到底凭哪条线路答对。12:12主播好,本期就到这里。原论文链接我会放在节目说明里。我们下期继续精读 LLM interpretability 的新进展。
围绕这条内容继续补充观点或上下文。