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