近一个星期,我连发了三篇文章来探讨大语言模型是怎么“思考”的:
大模型只是单向推理者?我的一系列小实验
试论大语言模型的“猪八戒效应”
对“猪八戒效应”的进一步验证,以及对相关质疑的进一步讨论
作为一个黑箱,大语言模型是一个非常有价值的研究对象。在自己做一些测试的同时,我也在读一些论文。
可以说,这两年,大语言模型相关的论文是“井喷”的,在学术界是一个非常热的热点。论文看不完,根本看不完。我就看了几篇,感觉很兴奋,为什么呢?因为都是很新鲜的信息在刺激我的大脑,这真的是一个激动人心、日新月异的前沿领域。
而且,偏prompt(提示词)方面的研究论文是不需要多少技术背景的,提示词的相关研究,在研究范式上很像我以前做的认知心理学研究,只不过研究的对象(心理学中称为“被试”)从人变成了大语言模型(LLMs)而已。而大模型的“思维方式”其实也可以像人一样去探索的。这样就回到了我比较熟悉的领域。真的很有意思。
图片
比如这篇论文讨论的就是我关心的大模型的推理问题。这篇论文的观点简单讲就是:
在逻辑推理中,命题呈现的次序影响大模型的推理结果。
论文的作者来自Google DeepMind以及斯坦福大学,即最顶级的AI研究机构。
那么什么叫“命题呈现的次序影响大模型的推理结果”呢?举一个最简单的“假言推理(modus ponens)”例子:
图片
基于1、2、3三个命题,我们很容易得出结论:C is True。而不管这三个命题的排列顺序是怎样的,对我们人类来说,都不妨碍我们得出这一结论。
但是对于大模型来说,却并非如此。
研究发现,如果把命题1和2的顺序调换,也就是把“If B then C”放在“If A then B”的前面,那么大模型回答的正确率就会明显下降。
在数学题的解题中,也有类似的现象,如果数学题中的某个条件出现的顺序发生了变化,也会影响解题的正确率。下面是这篇论文中提到的一个例子:
图片
这道数学题翻译成中文是:
托马斯从银行账户中取出了1000美元,这些都是面值20美元的钞票。他在回家路上丢失了10张钞票。之后,他用剩下的一半的钱来支付账单。然后托马斯将他的钱翻到了三倍。然后他将所有的钞票都换成了面值5美元的钞票。他有多少5美元的钞票?
按照这道题目的描述,GPT-4等大模型一般都能做对。
然后研究者做了一点小小的改变,他们把其中的一句话“他在回家路上丢失了10张钞票”从原来的位置移到了题目较后的位置,变成了:
托马斯从银行账户中取出了1000美元,这些都是面值20美元的钞票。回家后,他用剩下的一半的钱来支付账单。然后托马斯将他的钱翻到了三倍。然后他将所有的钞票都换成了面值5美元的钞票。他在回家路上丢失了10张钞票。他有多少5美元的钞票?
从人类的视角来看,虽然这句话挪动了位置,但是它所表达的意思没有改变,因为这个句子中带有明确的时间戳“while getting home”,并且前面的句子还有一个标识是“after getting home”,所以时间的先后顺序是明确的。
但是这样一改,AI就乱了方寸,他们就无法把这道题目做对了。
这似乎说明:大语言模型对文本的呈现次序比人类更敏感。
对此,论文中是这么说的:
图片
即:大模型更适应通过从左往右的阅读来推理,而不是通过前后反复阅读来推理,这可能要归因于它们自身的“自回归模型”设计以及在训练中习得的推理偏向。
如果完全从人类的视角去评判大模型的这一推理特征,那么大模型似乎犯了不该犯的错误。但是如果换一种角度去想,我认为,大模型对文本顺序的敏感其实说明,对大模型来说,文本顺序也是一种重要的、不可忽略的信息。
我们可以回过头来看前面的假言推理的例子和换美钞的例子,我们人类的推理是“没有把文本顺序当作一种信息来看待”,因为我们会认为,次序变化了以后,推理结果不变。而大模型呢,正是认为文本顺序反映了某种信息,不能忽略,所以文本的顺序改变了以后,它的推理过程也随之改变了。
而且有一个非常不公平的地方是:在这个研究中,人类人为操纵了文本的顺序,把原来的顺序打乱、随机化,或者采用完全逆反的顺序,同时人类也知道发生如此乱序的原因(即为了研究的需要),但大模型并不知道啊,它并不知道文本要这样排序的原因是什么,为什么有些文本看上去很混乱。
在不知道这种背景的情况下,大模型面对一个顺序搞乱的文本,它很可能会想,这个顺序肯定是要暗示或者说明了什么吧……所以从这个角度讲,大模型“把文本顺序当作一种信息来看待”是有其合理性的,尤其当要解决真实世界中的问题时,文本顺序一定说明了什么,也即传达了信息。
比如两个人在真实场景中进行对话,他们先聊什么,再聊什么,这个顺序本身肯定说明了一些东西,即便这些东西是隐含的。因而大模型把文本的顺序纳入它的计算,纳入它对整个文本的理解,实际上也是合理的。甚至在某些应用场景下,我们可以认为这正是大模型的思维“长于”人类思维的一个方面。
对于大模型是否总是自动地把文本顺序进行加工和理解,我还做了一个小测试。我的测试是让大模型来写诗:
写一首现代诗,需要包括下列关键词:鸽子、鹦鹉、鸭子。
大家请注意,这个提示词的表达是简洁和清晰的,应该不存在歧义。任务要求主要包括两点:
1)这是一首现代诗,不能写古诗,如绝句、律诗等。
2)关键词有三个:鸽子、鹦鹉、鸭子。
而且我们都能看到,这三个关键词是以顿号来分隔,表示并列关系,我并没有要求大模型按照这三个关键词的先后顺序来写诗。
但是我测试了几个大模型的结果却让我们有些意外,请看:
图片
图片
以及:
图片
或者:
图片
从上面三首诗,我们会发现,大模型一律是按照“鸽子-->鹦鹉-->鸭子”这个顺序来写这首诗的,尽管我并没有要求它们这么做。
虽然我并没有下达按照关键词的给出次序来作诗的指令,但是大模型等于自动加上了这条指令!
也就是说,在大模型看来,这三个关键词的给出顺序就是一种重要的、需要采纳的信息!
然后我想再试一下,如果给它们更多的关键词,是否还是会按照顺序来做诗呢?——
写一首现代诗,需要包括下列关键词:鸽子、鹦鹉、鸭子、蝴蝶、蜻蜓、青蛙、萤火虫。
图片
图片
你看,要求用七个关键词来作诗,大模型依旧像一个模范学生一样,乖乖地按照关键词的次序进行了创作!
大模型果然是把文本顺序作为一种信息来理解了!
接下来可能的争议便是:这到底是大模型的优点还是缺点呢?
这就取决于你是否能利用好这个“点”。
如果你根本不知道大模型的这个特点,因而在撰写提示词的时候,并没有精心梳理语句的顺序,就可能让大模型按照这个不太妥当的顺序做了输出,导致你得到的回答是有问题的。
而如果你已经了解了大模型的这个特点,那么你就可以利用这个特点,假如你希望大模型以A序列来输出内容,那么你的提示词就要以A序列的形式来发布,如果你希望大模型以B序列来输出内容,那么你的提示词就应该以B序列来发布。就这么简单。
比如你要让大模型来写一篇作文,那么如果只是给出作文题目,并不能让你收获一篇足够好的文章。更好的做法是,你先列出文章的提纲,然后让大模型来按照你的提纲来写,这样必然会按照你指定的顺序来。你的提纲的优劣就很大程度上决定了文章的优劣。
举一个有趣的例子,今年北京市的中考作文题之一是写北京的游记,题目如下:
故宫、人民英雄纪念碑、香山、居庸关、卢沟桥、漕运码头……坐落在北京中轴线或文化带上,成为北京的文化标志。胡同古镇、奥运场馆、美丽新农村……同样富有文化内涵。漫游北京,寻古访今,可以丰富见闻,开阔视野,感受真善美。请选择你熟悉的地方,写一篇游记,题目自拟。
如果你把这个题目直接交给大模型来写,它会怎么写呢?你肯定已经想到了,它大概率就会以“故宫-->人民英雄纪念碑-->香山-->居庸关-->卢沟桥-->……”这个顺序来逐一地写下去。
所以,如果你要让这篇文章写得更合理也更有新意,那么你就只能自己先立好提纲,再交给大模型来完成后续的工作。
从上面这个例子中,我们看到了大模型的“笨拙”,但是我依旧提醒各位,我们依旧是用人类的眼光和思维方式来评判它的。换一种角度,或许能更好地理解它们。
这就是“翻译”的角度。
“翻译”是大语言模型最胜任的任务种类之一。大模型懂得地球上的大部分语言,包括一些很小众的语言,而且它胜任在任意两种语言之间进行翻译。这相比以前的机器翻译来说是一个巨大的飞跃。
然后我们想象一下一个典型的翻译任务:我们给大模型一篇英文的文章,让它翻译成中文。那么它在翻译的时候,一定是按照英文文章的语句顺序,逐句逐句进行翻译的。它不可能擅自调动英文文章的顺序,来翻译成中文。
但是对于大模型来说,翻译任务和其他类型的任务并没有截然的界线,也许在它看来,其他的任务也是一种翻译呢?即,一种广义的翻译。因而在这些广义的“翻译任务”中,它也是会逐句逐句地给出与我们的任务描述相对应的答案。
其实解数学中的应用题,就很像一种广义的翻译。解应用题的本质,就是把自然语言翻译成数学语言。
就像本文前面所引用的那个论文里的数学题,你如果放大仔细看那张截图,看图中的解题步骤,就不难发现,大模型几乎是完全按照应用题中的语句顺序来进行解题的。因而当研究者把语句顺序打乱后,大模型的解题准确率就会大幅下降。
那么反过来想,如果我们提高大模型的回答准确率,不论是解应用题也好,还是做逻辑推理也好,或者写文章也好,我们就要尽量按照最合乎情理、最顺畅以及从前往后的顺序来描述我们的任务,即我们的提示词必须被有序地组织好,有一个良好的顺序结构,在这样的条件下,大模型才能按照我们所期望的方式来为我们工作。
这就是目前为止我对大模型的一些粗浅的理解。