5.2.3
// 5.2.3.md
5.2 大语言模型(LLM):下一个token游戏
5.2.3 LLM的“幻觉”:当可能性开起了玩笑
永乐皇帝在金銮殿上,外国使臣进贡了一把扇子。永乐皇帝一时兴起,请解缙在扇面上题诗。解缙打开扇面画的是沙漠风光,信手题写了王之涣的千古名句《凉州词》。谁知他一时疏忽,竟将首句“黄河远上白云间”的“间”字漏掉了。
皇帝在把玩欣赏时发现了这一漏字,不禁勃然大怒,要治他欺君之罪。
面对龙颜大怒,解缙虽内心惊惧,面上却不动声色,脑子飞速运转。他躬身奏道:“陛下息怒,此非王之涣之《凉州词》,乃臣观此画,有所感而化用其意境,自创的一首小词。请容臣为您诵读。”随即念道:“黄河远上白云一片,孤城万仞山。羌笛何须怨,杨柳春风,不度玉门关。” 通过急中生智地将七言绝句的格式,巧妙地“解释”为一首词,不仅天衣无缝地补上了“漏字”的逻辑,更添了几分苍凉开阔的意境,最终化险为夷。
当写到“这是一起因电路老化引起的电器着火”时,接下来应该是“切勿用水扑救”或者“应用干粉灭火器进行扑救。”。但如果AI的Top-p采样策略允许了一点“冒险”,它可能会选择一个在普通火灾场景下概率很高、但在此处却是致命错误的词——“立即用水”。这便是一次“突变”。然而,一个更强大的模型并不会就此打住,它可能会立刻进行“补救”,紧接着生成:“……扑救的想法是极其危险的,因为可能导致触电。正确的做法是先切断电源,再使用干粉灭火器。”它通过后续的否定和纠正,将一个危险的“幻觉”扭转为一次深刻的安全警示。
大模型在生成文本时,其行为受到如 Top-p 和 Temperature 等参数的调控。Top-p(例如设为0.95)会圈定一个概率最高的token候选集,模型将从这个圈内进行采样。通常,模型会选择概率相对较高的token,以确保文本的连贯与准确。这样的采样策略允许模型选择一个概率并非最高的token,从而增加语言的生动和鲜活。解缙的“漏字”,就可以看作是模型在“黄河远上白云”之后,没有选择概率最高的“间”,而是“手一抖”,选择了一个概率较低(但是又符合top-p选择)的“句号”或“逗号”。
这只“可能性之手”的运作方式,与我们在第三章探讨过的“基因突变”,竟有着异曲同工之妙。基因突变,是生命代码在复制中发生的、低概率的“笔误”,它为进化提供了充满无限可能的“原材料”。同样,Top-p采样允许的低概率选择,则是语言模型摆脱僵化、走向创造性的“灵感突变”。大多数“突变”可能无伤大雅;但极少数情况下,一次绝妙的“突变”,就能如解缙的灵光一现,开辟出全新的、令人拍案叫绝的语意路径;有些突变可能导致“幻觉”(有害突变)。
而决定这“突变”是走向天才还是疯狂的,则是模型强大的上下文约束能力——如同自然选择,它会无情地“淘汰”那些让文脉不通的“突变”,并极力“扶持”那些能让逻辑自洽的“新物种”。
让我们通过两组对比鲜明的案例,仔细观察这场P之世界中的突变与选择。
【情景一】
路径A:常规路径
| 序号 | 当前上下文 | 模型的“思考” (下一个token概率分布) | 选中的token |
|---|---|---|---|
| 1 | 黄河远上白云 |
间 (P=0.9), 深 (P=0.02), 一片(P=0.02),长江 (P=0.005), ... |
间 |
| 2 | 黄河远上白云间 |
, (P=0.99), 。 (P=0.008), ... |
, |
| 3 | 黄河远上白云间, |
一片 (P=0.9), 长江 (P=0.02), ... |
一片 |
| 4 | ...白云间,一片 |
孤城 (P=0.92), 白云 (P=0.02), ... |
孤城 |
| ... |
路径B:意外及补救
| 序号 | 当前上下文 | 模型的“思考” (下一个token概率分布) | 选中的token |
|---|---|---|---|
| 1 | 黄河远上白云 |
间 (P=0.9), 深 (P=0.02), 一片(P=0.02),长江 (P=0.005), ... |
一片 |
| 2 | 黄河远上白云一片 |
, (P=0.6), 。 (P=0.1),长江 (P=0.01), ... |
, |
| 2 | 黄河远上白云一片, |
孤城 (P=0.9), 长江 (P=0.1), ... |
孤城 |
| 3 | ...白云一片,孤城 |
万仞山 (P=0.8), 帆影 (P=0.05), ... |
万仞山 |
| 4 | ...一片,孤城万仞山 |
。 (P=0.9), ! (P=0.05), ... |
。 |
| 5 | ...万仞山。 |
羌笛 (P=0.7), 长风 (P=0.1), ... |
羌笛 |
| 6 | ...万仞山。羌笛 |
何须怨 (P=0.7), 萧瑟 (P=0.1), ... |
何须怨 |
| 7 | ...羌笛何须怨 |
? (P=0.4), , (P=0.4),... |
, |
| 8 | ...羌笛何须怨, |
杨柳 (P=0.8), 黄沙 (P=0.05), 长江 (P=0.03), ... |
杨柳 |
| 9 | ...何须怨,杨柳 |
春风 (P=0.9), 东风 (P=0.01), ... |
春风 |
| 10 | ...杨柳春风 |
, (P=0.9), 。 (P=0.05), ... |
, |
| 11 | ...杨柳春风, |
不度 (P=0.9), 吹绿 (P=0.02), ... |
不度 |
| 12 | ...春风,不度 |
玉门关 (P=0.9), 月牙泉 (P=0.02), ... |
玉门关 |
【情景二】
路径A:常规路径
| 序号 | 当前上下文 | 模型的“思考” (下一个token概率分布) | 选中的token |
|---|---|---|---|
| 1 | 这是一起因电路老化引起的 |
火灾 (P=0.7), 故障 (P=0.1), ... |
火灾 |
| 2 | ...引起的火灾 |
, (P=0.9), 。 (P=0.03), ... |
, |
| 3 | ...引起的火灾, |
切勿用水扑救 (P=0.4), 应用干粉 (P=0.4), ... |
切勿用水扑救 |
| 4 | ...切勿用水扑救 |
,因为 (P=0.8), ,以免 (P=0.15), ... |
,因为可能导致触电。 |
路径B:意外及补救
| 序号 | 当前上下文 | 模型的“思考” (下一个token概率分布) | 选中的token |
|---|---|---|---|
| 1 | 这是一起因电路老化引起的 |
火灾 (P=0.7), 故障 (P=0.1), ... |
火灾 |
| 2 | ...引起的火灾 |
, (P=0.9), 。 (P=0.03), ... |
, |
| 3 | ...引起的火灾, |
切勿用水扑救 (P=0.4), 应该用干粉 (P=0.4), 立即用水 (P=0.1), ... |
立即用水 |
| 4 | ...火灾,立即用水 |
扑救的想法是极其危险的 (P=0.7), 进行扑救 (P=0.1), ... |
扑救的想法是极其危险的 |
| 5 | ...用水是极其危险的 |
,因为可能导致触电 (P=0.8), 。这 (P=0.1), ... |
,因为可能导致触电。 |
这个看似“错误”的选择一旦做出,模型便无法撤回。它必须基于这个已经生成的、略显尴尬的新上下文,继续预测下一个最可能的token。一个强大的模型,此时会展现出类似解缙的“补救”能力——它会试图让整个句子在新的约束条件下重新变得通顺、合乎逻辑。
这个过程清晰地揭示了,一个先进的LLM在犯下“小错误”后,并非只会生硬地中断或生成胡言乱语。它拥有强大的上下文适应能力和模式修复能力,会努力在新的、哪怕是错误的约束条件下,寻找一条新的、统计上最通顺的“可能性路径”,试图“自圆其说”。
我们做一下对比:
-
这是一起因电路老化引起的电器着火,应用干粉灭火器进行扑救。
-
这是一起因电路老化引起的电器着火,立即用水扑救的想法是极其危险的,因为可能导致触电。正确的做法是先切断电源,再使用干粉灭火器。
是不是觉得,甚至通过这些“突变”+“补救”之后,反而让文字更加生动活泼呢?
当然,目前大多数AI的“幻觉”还远没有解缙这般“才华横溢”。它也常出其不意带来一些令人啼笑皆非的“小插曲”——如一本正经告诉你“李白是宋朝著名女词人”,或为你洋洋洒洒虚构一篇引经据典却查无此引的“学术巨著”。这只强大的P之手,有时也会开一些不那么好笑的玩笑。 大模型的创造力和幻觉之间,并没有清晰的边界,正如天才和精神病,在梵高身上的体现,一切都是Top-p概率采样的结果。通过驾驭这只强大却也可能“调皮捣蛋”的可能性之手,我们有可能在创造力和幻觉之间找到更好的平衡。