Chat-GPT那么强,居然说不了恰好10个字?
来源:科普中国 发布时间:2024-04-17 15:50

最近,大家可能都听说了各种风靡互联网的聊天机器人,它们的背后是 GPT 模型。GPT(Generative Pre-Trained)是一类模型,但下文中的 GPT 均由Chat-GPT模型友情参演,作为强大的大语言模型,GPT 已经展现出了令人惊叹的实力。写邮件,学英语,帮忙看文献,已然成为了许多人的生活好帮手。

作为一个聊天机器人,它在很多任务上已经达到甚至超越了人类的智能水平,这实在是令人非常佩服。但今天我们不是要夸它,而是要展示一个看似很简单的事情,但是 GPT 却完全无能为力


其实 GPT 还是识数的,如果这样问它:


咦?“博古通今”的 GPT 肯定有办法理解“10 个字”的意思,但是为什么无法正确输出只有 10 个字的话呢?

自回归模型

要解释为什么 GPT 无法胜任这么简单的任务,我们首先需要从 GPT 的底层原理——自回归模型开始讲起。千万不要被这个看似抽象的词吓到,实际上这个概念非常简单。

自回归模型能做的事情其实和猜单词类似,我们可以以英语课堂上的一个小场景为例:





那下一步呢,下一步就要考虑什么样子的字母或单词接在“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 个字的简单任务呢。


附件: