高级前端进阶公众号文章

同一个问题,AI为什么回答不一样?

同样的提问,为什么会得到不同答案?从本地模型的起名实验,看概率、温度、提问方式和上下文怎样改变结果。

高级前端进阶

公众号 · 8 篇文章

给 AI 发一句“给我的新猫起个名字。”,一边得到“咪咪”,另一边得到“橘子”。再问几次,它们又可能答得一样。

动画把两个回答放进两部手机里,方便对照。背后用的是同一个本地模型,同样的设置。手机和弹珠装置是示意画面,名字、概率和计数来自保存下来的实验结果。

最直观的一组数据是:给猫起名,运行 200 次,161 次回答“咪咪”,39 次回答“橘子”。再问法国的首都,100 次都回答“巴黎”。

同一个模型,为什么有的问题会分出两个答案,有的问题却每次相同?


答案走到哪条路,要一步一步看

动画里有一台弹珠装置。弹珠从同一个入口落下,遇到岔路,就按当时的概率走向不同出口。

这对应着模型生成文字时的选择。模型根据已有输入和已经生成的内容,给接下来可能出现的 token 分配概率。token 可以理解为文字片段,未必正好是一个汉字或一个词。采用随机采样时,程序按这张概率表选出下一个片段,然后继续生成。

在给猫起名的这组实验里,第一个岔路口,“咪”的概率约为 83%,“橘”约为 17%。所以,大部分弹珠走向“咪咪”,少部分走向“橘子”。

这两个概率说的是当前一步的选择。161 和 39 是 200 次运行的实际累计次数,有限次数的抽样,不必刚好等于概率乘以次数。

本地实验数据动画示意:默认设置下 200 次起名,咪咪 161 次、橘子 39 次

回答变长以后,选择还在继续。动画选出的两段回答,前面有相同的文字,到某一步分开,后面的句子也跟着变化。前面已经生成的内容,会成为后面继续生成时的条件。

“巴黎”那组比较集中,在这次设置下,100 次都走到了同一个答案。这里的次数只描述本次实验。

调一下温度,名字就多了

模型有个采样参数叫温度,动画里用旋钮表示。温度调低,选择更集中;调高了,原先不容易选中的名字也开始出现。

当温度为 0 时,这个本地实验程序每一步都选概率最大的片段,10 次全是“咪咪”。

当温度为 1.3 时,其他设置保持不变,再运行 200 次。除了 116 次“咪咪”和 50 次“橘子”,还有 13 次“雪球”、10 次“雪儿”,日文名字合计 11 次。

本地实验数据动画示意:温度 1.3 时,咪咪 116 次、橘子 50 次、雪球 13 次、雪儿 10 次、日文名字 11 次

旋钮改变了各种选项的概率,并没有给出“温度越高,答案越好”的结论。这里观察的是答案怎样变化。

换几个字,或者多给一句背景

先保持默认设置,把问题换成“帮我的新猫取个名字吧,只回复名字。”,100 次都是“咪咪”。

再换成“给我的新猫起个有创意的名字。只回复名字。”,100 次里出现了 53 次“咪咪”、37 次“橘子”和 10 次“橘子球”。

我们读起来觉得意思接近的句子,对模型来说仍是不同的输入。换个词,下一步的概率也可能变化。

还有一组实验没有改原来的起名要求,只在系统消息里加了一句:“记忆:用户的新猫是一只橘色的小奶猫。”这次 200 次全都回答“橘子”。

本地实验数据动画示意:系统消息加入橘猫记忆后,200 次全都回答橘子

一句关于猫毛色的背景,让这组输出集中到了同一个名字。它展示了上下文的影响;换一个模型或另一句话,具体次数仍要重新观察。

输入框之外,也可能有上下文

动画后面出现了聊天记录、记忆、系统提示、今天的日期、搜索结果、模型更新六张卡片,画面明确标了“示意”。这些卡片提醒我们:聊天时自己刚打出的那一句话,未必就是模型收到的全部内容。

前往微信阅读全文

内容来自公众号,可前往微信查看原文。

查看作者的更多文章 →订阅更新、RSS 与阅读指南 →