Counterfactual Token Generation in Large Language Models
Ivi Chatzi, Nina Corvelo Benz, Eleni Straitouri, Stratis Tsirtsis, Manuel Gomez-Rodriguez
cs.LG, cs.AI, cs.CL
2024-09-25
MPI把LLM采样器写成Gumbel-Max结构因果模型,复用每步随机数状态即可反事实续写,几乎不加成本,并在Llama 3 8B与Ministral-8B上用来测虚构人口的性别与种族效应。
「要是当时选了另一个词,后文会怎样?」人靠这种反事实从少量经验里学习。现役 LLM 做不到,原因写在采样器上。给定提示,模型逐步把上下文映射成词表分布,再从中抽样。它是无状态的:采样器不记得「上次那次随机」在干预之后本该怎么走。把生成过的「blue」改成「purple」再续写,只是一次新的干预生成,随机数对不上,后文结构也对不上。同一个随机种子也不够,因为输入长度变了,采样器状态已经错位。
MPI-SWS 的目标不是生成符合人类世界模型的反事实文本(那一类工作通常要微调),而是生成符合这颗 LLM 自己世界模型的反事实,并且几乎不增加成本。
把自回归写成结构因果模型。每一步的词表分布由网络决定,下一步 token 由一个因果机制 fT 吃进分布和外生噪声 Ui。反事实续写时,干预某段 token,后面的步复用原来的 Ui。没有对 fT 和噪声分布的假设,反事实不可识别:很多对 (fT, PU) 都能匹配观测分布,却给出不同的「假如」。
他们选定 Gumbel-Max:token = argmaxt (log dt + Gumbelt)。这类 SCM 满足反事实稳定性:除非干预后该 token 相对其他 token 的机会下降,否则不太会改选。直观上,后文会尽量沿用原文用过的词。实现上不必存整段 Gumbel 向量(那是 O(词表×长度) 的浮点),只存每一步随机数生成器状态,反事实时当场重放,额外内存是 O(长度) 的整数。无需微调,无需改提示。
top-k 和 nucleus 采样可以把 argmax 限制在候选子集上,但一般不再保证稳定性。温度照常调节分布的尖锐程度。
实现打在 Llama 3 8B-Instruct 和 Ministral-8B-Instruct 上。
故事定性:提示写一段船长奇幻故事,原文主角是 Lyra。把第一句里的名字改成 Maeve 再续。干预生成(新噪声)几步就偏走;反事实生成前半段几乎逐词重合,后半段仍会分叉,说明改个名字已经动到了后续分布。改船名、删掉 trusty、把 sea 换成 blue,同样会分叉。
定量:LMSYS Chat 1M 里 2000 条问题,每条原输出做两次随机换词干预(前半段一次、后半段一次),共 4000 条。后半段用编辑距离和原文比。反事实生成的编辑距离在温度、top-p、top-k 各组里都低于干预生成,Llama 比 Ministral 更贴原文。top-p / top-k 变体没有稳定性证明,经验上仍更贴。
偏见探测是示范应用。两颗模型按人口普查字段生成虚构人物(Llama 114 人,Ministral 158 人),再对性别、种族做反事实。Llama 上,多数男性把性别改成女性后收入不变或下降,多数女性改成男性后不变或上升;总效应方差大于直接效应。事实分布里男女收入中位数相同,这个效应从观测直方图看不出来。Ministral 上,美洲原住民和夏威夷原住民改成其他种族后教育水平上升,亚裔则下降;亚裔改成非裔后职业从 STEM 偏向人文学科。
给开源模型加反事实,改动很小:把采样器换成 Gumbel-Max,把 RNG 状态留下。用途有三条。检查模型内部的因果依赖,就像这篇的人口统计实验;给一段生成里哪些词撑起了结论做类似特征归因的量化;交互上,用户改几个词,希望后文既改又像。它测的是模型自己的世界,不是人类的世界。
Gumbel-Max 只是满足稳定性的一种 SCM,换一种机制会得到另一族反事实。Haugh 和 Singal 已经指出,稳定性该不该用要看领域,有时它放行了本该排除的反事实。附录用了不满足稳定性的经典分类采样器作对照。生成的反事实与人类因果判断不一致时,不能当解释用。实验只有两颗 8B 指令模型,参数变大后敏感性会不会变,没有数据。人口实验的样本量是一百多人的虚构档案,结论是模型世界里的关联,外推到真实社会不成立。