最近,大家可能都听说了各种风靡互联网的聊天机器人,它们的背后是GPT模型。【GPT(Generative Pre-Trained)是一类模型,但下文中的GPT均由某著名GPT模型友情参演】。
作为强大的大语言模型,GPT已经展现出了令人惊叹的实力。写邮件,学英语,帮忙看文献,已然成为了许多人的生活好帮手。作为一个聊天机器人,它在很多任务上已经达到甚至超越了人类的智能水平,这实在是令人非常佩服。
但今天我们不是要夸它,而是要展示一个看似很简单的事情,但是GPT却完全无能为力。
其实GPT还是识数的,如果这样问它:
咦?“博古通今”的GPT肯定有办法理解“10个字”的意思,但是为什么无法正确输出只有10个字的话呢?小编知道GPT为什么会搞不定这件事呢,这就是本文要解释的事情。
一、自回归模型
要解释为什么GPT无法胜任这么简单的任务,我们首先需要从GPT的底层原理——自回归模型开始讲起。千万不要被这个看似抽象的词吓到,实际上这个概念非常简单。
自回归模型能做的事情其实和猜单词类似,我们可以以英语课堂上的一个小场景为例。
……在猜错了一些明明概率很高的字母之后,学生终于猜出了第二个字母是’h’。
那下一步呢,下一步就要考虑什么样子的字母或单词接在'ch'后面比较常见,概率比较高。这时候学生就要考虑概率P(?|ch)的?,对于不同的字母表现如何,学生们当然要猜P(?|ch)更大的,因为这样更有机会猜对。学生又翻了一通词典,按照出现频率的大小估计概率,再用概率依次猜出了第三个,第四个字母,是chat。
学生的猜谜的例子其实就是自回归模型和GPT工作模式的生动诠释,GPT在工作的时候就像猜词一样,只是把字母换成了token。
token:自然语言处理术语,指处理文本的最小单元,一个token可能是一个字符,一个单词,甚至一小段话。
更一般地说,GPT会依据给定的语境,在可能的不同输出选项中计算概率,并按照这个概率进行输出。也就是按照
P(当前输出(output)|当前语境(context))
的大小进行输出。
确实,在GPT的实际应用中,没有老师来纠正学生的答案。但可以将学生猜词例子中老师的指正视为GPT在训练时使用的数据集进行的训练。在训练过程中,GPT会利用数据集来调整P(当前输出|当前语境)以提高回答的准确性。
我们跟GPT说的提示词,可以类比为老师最开始说的第一个字母‘c’,然后GPT要开始根据这个初始输入来组织和生成输出。它会先猜自己输出的第一段话语,等效于‘h’。然后根据‘ch’这个新的“当前语境”再逐步猜后面的字母/语素。
那么什么时候停下呢?
聪明的小伙伴们可能已经意识到了一个问题,在没有老师指正的情况下,GPT似乎可以无穷无尽地猜下去啊,反正猜了一个再猜下一个,永远没有终止啊。GPT说话虽然经常说一堆车轱辘话,但是最后好歹还是会停下来的。是什么让这个猜谜停下来了呢?
GPT是这样解决这个问题的。工程师们知道,想让GPT把无穷无尽的猜词停下来其实很简单,只需要“扩展”一下语素表,让“停下来”这个操作是一个新的语素就行了。如此一来,GPT在猜词的时候,就会一直猜一直猜,猜到语素“停下来”才停下来。
该停下来,但是概率不让啊
既然已经知道了自回归模型的工作原理,我们就可以回头来看一开始的问题了。在小编的例子里,GPT的“内心”或许经历了这个计算:
P(?|“请说一段话,恰好包含10个汉字。生活不止眼前的苟且”)
GPT是很冷酷无情的,它根本不管你是不是只要10个汉字,也并不是很在乎你的需求,它眼里只有这个概率分布,只想按照这个概率进行抽样。
而当GPT说完九个汉字,应该在一个字里结束输出的时候。GPT对概率表进行了搜索,发现在所有输出当中,仅输出一个字的概率太小了(这也意味着这种情况的训练语料太少了),只能不管前面“恰好10个汉字的要求”进行输出了。
二、GPT欠缺的两种能力
缺少规划
自回归模型每次抽样都是根据当前信息(当前语境),在抽样的过程中对全局缺少规划。 从人类的观点下看,如果有恰好10个字的要求,那就不应该一口气说9个字,应该每说一个字,都得斟酌下看看剩下的字数能不能组成一句完整通顺的话。可自回归模型(GPT)才不管这些,它十分盲目短视地,每次只管当前的
P(当前输出|当前语境)
并不很在意总回复的概率
P(总输出|初始语境)
是不是足够好。
反省和修订
自回归模型不具有“反省并修订”的能力。 人类基本都会反省吧。说了错话做错事,至少也得心里想着:对不起对不起,不能这么干,我要弥补下。
换到说恰好10个字的任务中,肯定有许多人和小编一样,估计错了10个字的量,一口气说多了。
小编:今天天气很不错,阳光真...
怎么办?已经10个字了?我也要通不过图灵测试了吗!赶紧修改一下,把“很”删掉,就能多出来一个字了。
而GPT那可是金口玉言,说一不二。每一步说出来的话就会被放进新的“当前语境”中。它不会对自己已经抽样了的内容进行删减和修订,在逐次猜出token的过程中,将错就错,一错再错..... 换而言之,GPT虽然能看到自己之前的输出,但是却不具有反省并修订的能力
三、所有的人工智能模型都这样吗?
并不是所有机器学习模型都有这个缺点,例如围棋战力单位“狗”(AlphaGo),在其蒙特卡罗搜索树算法中,如果搜到了胜率过低的结果,会修订之前的选择。
这也教导我们,要培养良好的规划能力和自我反省和自我改进的能力。不然即使“博览群书”如GPT,也只会像它一样,完成不了说恰好10个字的简单任务呢。
本文来自微信公众号:中科院物理所 (ID:cas-iop),作者:仰旗(中国科学院大学、中国科学院物理研究所博士生),审核:王磊:中国科学院物理研究所研究员