给 AI 发一句“给我的新猫起个名字。”,一边得到“咪咪”,另一边得到“橘子”。再问几次,它们又可能答得一样。
动画把两个回答放进两部手机里,方便对照。背后用的是同一个本地模型,同样的设置。手机和弹珠装置是示意画面,名字、概率和计数来自保存下来的实验结果。
最直观的一组数据是:给猫起名,运行 200 次,161 次回答“咪咪”,39 次回答“橘子”。再问法国的首都,100 次都回答“巴黎”。
同一个模型,为什么有的问题会分出两个答案,有的问题却每次相同?
答案走到哪条路,要一步一步看
动画里有一台弹珠装置。弹珠从同一个入口落下,遇到岔路,就按当时的概率走向不同出口。
这对应着模型生成文字时的选择。模型根据已有输入和已经生成的内容,给接下来可能出现的 token 分配概率。token 可以理解为文字片段,未必正好是一个汉字或一个词。采用随机采样时,程序按这张概率表选出下一个片段,然后继续生成。
在给猫起名的这组实验里,第一个岔路口,“咪”的概率约为 83%,“橘”约为 17%。所以,大部分弹珠走向“咪咪”,少部分走向“橘子”。
这两个概率说的是当前一步的选择。161 和 39 是 200 次运行的实际累计次数,有限次数的抽样,不必刚好等于概率乘以次数。
回答变长以后,选择还在继续。动画选出的两段回答,前面有相同的文字,到某一步分开,后面的句子也跟着变化。前面已经生成的内容,会成为后面继续生成时的条件。
“巴黎”那组比较集中,在这次设置下,100 次都走到了同一个答案。这里的次数只描述本次实验。
调一下温度,名字就多了
模型有个采样参数叫温度,动画里用旋钮表示。温度调低,选择更集中;调高了,原先不容易选中的名字也开始出现。
当温度为 0 时,这个本地实验程序每一步都选概率最大的片段,10 次全是“咪咪”。
当温度为 1.3 时,其他设置保持不变,再运行 200 次。除了 116 次“咪咪”和 50 次“橘子”,还有 13 次“雪球”、10 次“雪儿”,日文名字合计 11 次。
旋钮改变了各种选项的概率,并没有给出“温度越高,答案越好”的结论。这里观察的是答案怎样变化。
换几个字,或者多给一句背景
先保持默认设置,把问题换成“帮我的新猫取个名字吧,只回复名字。”,100 次都是“咪咪”。
再换成“给我的新猫起个有创意的名字。只回复名字。”,100 次里出现了 53 次“咪咪”、37 次“橘子”和 10 次“橘子球”。
我们读起来觉得意思接近的句子,对模型来说仍是不同的输入。换个词,下一步的概率也可能变化。
还有一组实验没有改原来的起名要求,只在系统消息里加了一句:“记忆:用户的新猫是一只橘色的小奶猫。”这次 200 次全都回答“橘子”。
一句关于猫毛色的背景,让这组输出集中到了同一个名字。它展示了上下文的影响;换一个模型或另一句话,具体次数仍要重新观察。
输入框之外,也可能有上下文
动画后面出现了聊天记录、记忆、系统提示、今天的日期、搜索结果、模型更新六张卡片,画面明确标了“示意”。这些卡片提醒我们:聊天时自己刚打出的那一句话,未必就是模型收到的全部内容。