互联网上通常能找到正确答案,但也充斥着大量相互矛盾或过时的信息。像ChatGPT这样基于互联网规模数据训练的大型语言模型(LLM),是如何处理这些矛盾或过时信息的呢?(提示:答案并不总是截至知识截止日期的最新信息;想想LLM的训练目标是什么。)
在这篇文章中,我将简要介绍一些基础知识,以便我们从基本原理出发思考这个问题,然后从GPT-2到最新的4o系列模型,逐步观察生成概率的变化。接着,我们将探讨当LLM同时学习了正确和过时的信息时,会出现哪些奇怪的行为——它可能同时认为两者都是正确的,尽管它们相互矛盾。我将以一座山的高度为例,说明这种本应一致但实际上不一致的情况。如果你对一座你从未听说过的山的高度不感兴趣(这可不应该!),请记住,这些原则同样适用于药物推荐剂量、AI代码助手中库函数参数的必选/弃用情况,以及不同平台的网络超时行为等问题。
知识截止日期并不像看起来那么简单
你可能见过ChatGPT使用“截至我的知识截止日期”这样的表述(可以试试在Google Scholar上搜索这句话)。然而,知识截止日期并不像看起来那么简单,因为互联网的抓取数据(或LLM创建者使用的其他来源,OpenAI并未明确说明他们使用了哪些数据)不仅包含截至该日期的最新信息,还包含大量过去的老旧或重复信息。
与人类不同,人类会随着时间的推移构建对世界的内部认知,并思考哪些知识是正确的,哪些应该被淘汰。而LLM没有这种概念。
模型的好坏取决于数据质量
在我上一篇文章《修正Wikidata中的过时事实》中,我研究了一个案例:一些网站声称巴特尔·弗里尔山(澳大利亚昆士兰州的最高峰)海拔1,622米,而另一些网站则声称其海拔为1,611米。经过几天的溯源,我找到了一份2016年的官方测量记录。该记录使用基于GPS的测量设备,以厘米级精度准确测量了这座山的高度,结果显示其海拔为1,611米,比之前认为的低了11米。然而,一些政府网站仍然声称巴特尔·弗里尔山海拔1,622米,这也是你在Google上搜索“巴特尔·弗里尔山高度”时显示的结果,尽管这个数字已经过时了8年多。
那么,LLM会给出哪个答案呢?让我们思考一下(自回归)LLM的本质。它是一个神经网络(通常是现今的Transformer架构),经过训练以预测下一个单词(或更准确地说,下一个token,即部分单词)。然后我们通过循环运行它,逐token生成完整答案。
像GPT-2这样的小模型,学会了生成语法正确但常常毫无意义的信息。例如,当提示“巴特尔·弗里尔山的高度,以米为单位,是”时,GPT-2可能会生成“大约1,000米”这样的回答。
虽然以今天的标准来看,GPT-2的表现很差,但核心思想是,随着模型规模的扩大和数据量的增加,LLM将学会生成事实准确的回答,而不仅仅是语法正确的回答。让我们将其与GPT-3进行比较。OpenAI的补全工具(即将被移除)允许我们可视化生成下一个token的概率。在这种情况下,“1”和“,”被生成为单独的token,但有趣的部分是预测下一个token是什么:
https://platform.openai.com/playground/complete?model=gpt-3.5-turbo-instruct
从底层概率可以看出,“611”以75.29%的概率最有可能出现,但“622”也有23.68%的概率。它实际上同时学习了这两个答案! 当我们思考LLM的本质及其训练方式时,这并不令人惊讶。LLM学习的是token集合上的概率分布。因此,如果部分训练数据中巴特尔·弗里尔山的高度是1,611米,而另一部分数据中是1,622米,那么它需要学习两者都是可能的,并在给定上下文中以何种概率出现。
从技术上讲,当实际生成文本时,这些概率不需要与训练数据中的概率完全一致。这是由“温度”参数控制的。例如,温度为0时会选择最有可能的下一个token,而不是根据训练数据中的概率随机选择。如果将温度调至0,在这种情况下你总会得到正确答案1,611米——尽管我们稍后会看到,提示中的细微变化可能会打破概率的微妙平衡,导致总是得到错误答案。此外,我还略过了指令微调的细节,即模型经过微调以回答问题,而不仅仅是补全句子。
GPT-3已经过时了,让我们跳到GPT-4o:
https://chatgpt.com/share/6774da47-0d1c-800a-a162-6f715213fce4
你可能注意到,这次我没有可视化概率。这是有原因的,OpenAI没有提供简单的方法来查看它们。不过,通过API可以获取对数概率(我们可以将其转换为百分比),我已将相关代码放在了这个Github Gist中。
使用API时,我们可以检查生成数字时的概率分布。对于这个提示,在“1”和“,”之后,最有可能的下一个token是“611”(概率为99.3%)或“622”(概率为0.7%)。其他token在这个位置也有可能,但它们的总概率仅为0.001%左右。
为了在实践中测试这一点,我通过API以默认温度1向GPT-4o提出了500次这个问题。在500次试验中,494次给出的高度为“1,611”(约99%),另外6次(约1%)给出的高度为“1,622”。我没有耐心通过ChatGPT网页界面进行测试,但我预计网页界面使用的温度较低,因此你不太可能得到过时的结果。
为什么山的高度(根据GPT)取决于我的银行余额
如果GPT-4o在99%的情况下给出正确答案(如果你调低温度,这个比例可能更高),你可能会想,我为什么要写这篇文章。确实,过时的信息仍然存在于概率中,但眼不见心不烦,对吧?然而,问题在于,LLM对提示的措辞非常敏感。在上下文中添加额外信息,即使是不相关的信息,也可能打破概率平衡。
[https://chatgpt