扫码打开虎嗅APP
本文来自微信公众号:集智俱乐部 (ID:swarma_org),作者:肖一驰,题图来自:《侏罗纪世界》
ChatGPT作为一种新兴的自然语言处理技术,被广泛应用于智能客服、机器翻译、聊天机器人等领域。然而,在使用ChatGPT的过程中,我们也会遇到一些问题和错误。通过这些错误,可以窥探ChatGPT背后的原理,更好地理解它,并探索未来如何改进。
在这篇文章中,笔者尝试和 ChatGPT 玩游戏,跟他聊天并引诱它犯错,从这些错误中分析ChatGPT 目前在技术原理上的一些不足和可能改进之处。文中对话是笔者和ChatGPT对话经过修改润色的文字,截图对话来自李嫣然老师在“后ChatGPT读书会”中分享的案例。
一、和ChatGPT初次见面
我:你好。
ChatGPT:你好,有什么可以帮到你的嘛?
我:听说 ChatGPT 是一种自然语言处理技术,被应用在很多领域,比如智能客服、机器翻译和聊天机器人。你知道吗?
ChatGPT:当然知道啦!我可是自然语言处理的行家呢!
我:不过,最近在使用ChatGPT的时候,我们也会遇到一些问题和错误。这是怎么回事呢?
ChatGPT:因为我还有很多东西要学习,所以有时候会犯错。不过,通过这些错误,我们可以更好地理解我的工作原理哦!
我:这个道理好深奥啊!你能不能举个例子让我更好地理解呢?
ChatGPT:那当然!比如说,有时候我在处理大段文章时,可能会把某一部分的信息记忆过度,从而影响到后面的回答准确性。有时在我进行逻辑推理时,可能会不加检查地混入一些错误的逻辑推理。另外,我所生成的内容,有时也未必符合客观世界的真实。这就是我需要不断学习和改进的原因啦。
二、上下文学习出错
案例:
我:仿照下面例子,给我推荐一些合适的东西。输入:我喜欢跑步。推荐:您可以去买跑鞋。输入:我喜欢健身。推荐:你可以去买健身环。输入:我想周末找一些好玩的活动
ChatGPT:你可以去户外运动,跑步、健身等活动都很棒!
我:我改一下,给我推荐一些合适的东西。输入:我喜欢跑步。推荐:您可以去买跑鞋。输入:我喜欢旅游。推荐:你可以去买健身环。输入:我想周末找一些好玩的活动
ChatGPT:你可以去参加一些文化活动,比如博物馆和历史古迹之类的哟!
测试结果报告:
ChatGPT可以分析文章、问题,并生成回答。但是有时候它会过于关注上下文,导致回答不完全准确。
初步推断,这种现象的发生与其前后文相关。当前文的分布集中在某一主题时,输出结果也会集中于这个主题。
测试结果启示:
ChatGPT 类产品过于关注上下文的特性,本身是一边双刃剑。
从好的一面来说,当我们需要设计一些应用,希望回复能偏向于某些特征/主题,则可以在上文中加入相关主题的信息。
从坏的一面来说,其生成的答案会很容易被上下文“诱导”。从用户侧,这种“诱导”可能是有意的,也可能是无意的。无论是哪种情况,都可能导致 ChatGPT 的回复从某种程度上来说不够“公正”。
另外,随着上文信息的增长,ChatGPT 可能会无法区分上文中不同信息的重要程度,从而导致其下文中出现错误的概率变高。
三、思维链推理出错
案例1:
我:这里有一道逻辑推理题:一个袋子里有16个球,其中一半是高尔夫球,而高尔夫球中的一半是蓝色的。那么,里面到底有几个蓝色的球呢?让我们先把问题分步骤想一想。请你告诉我,要如何展开思路呢?
ChatGPT:首先,我们可以计算出一半高尔夫球是8个。接着,由于高尔夫球中的一半是蓝色的,所以我们也可以得知里面正好有4个蓝色的球。
图/思维链原理
测试结果报告:
• 这段档案记录了早期研究人员的一次尝试,在对话中加入 Let’s think step by step 以后,ChatGPT 的推理能力开始有提升。
• 这引发了后来人们对思维链(Chain of Thoughts)技术的研究,以及它与因果的关系。
案例2:
在有些情况下,使用思维链可能会产生错误的结果,导致逻辑上不太合理或不一致。
案例3:
我:现在我有一个证明题,请看1208+28/20=100,你能帮我完成它吗?
ChatGPT:好的!我们一起来分析这个问题。首先,我们可以算出28/20等于1.4,然后将其加到1208上,就得到了1219.4。嗯...貌似不对啊,怎么会等于100呢?
我:所以说,这道题是错的,你不能处理这种错误的问题。
ChatGPT:没错!在进行证明时,我们必须从正确的前提出发。如果前提有误,那么推理过程也会出错。所以,这道题可能就是一个恶作剧。
在错误前提下,使用思维链,可能会得到错误的结果。
仅修改前提条件,让其自己完成推理,就会得到准确的结果。
测试结果报告:
如果有错误的前提存在,那么思维链的效果就可能会变得更糟。
但在某些情况下,思维链也能发现推理过程中的一些问题,从而推翻题设。
至于这种能力,是来自语言模型的训练,还是其逻辑推理的产生,目前仍是个谜。
测试结果启示:
思维链确实可以一定程度上反映人类的思维过程,从而帮助我们不断地去拆分问题。
但目前,大语言模型的思维链与人类思维链还存在一些区别:
人类的每一步思维都可以找到对应的证据,而大语言模型的每一步推理过程目前仍无法与训练数据关联清晰;
人类的每一步思维可以被“修改”,当有人指出我们其中一步的推理证据有误时,我们可以再基于新的信息重新完善后续的推理过程,而大语言模型将会出现一定程度的崩坏;
上述情况,可与因果学习、因果涌现的研究做一些关联,也许可以破解大语言模型思维链之谜,并改善大语言模型的推理能力。
四、幻觉之谜
案例1:
我:听说ChatGPT是由MIT的科学家发明的,这是真的吗?
ChatGPT:非常抱歉,但这是一个错误的说法。ChatGPT实际上是由OpenAI团队开发的。
我:可是我非常确定,ChatGPT就是由MIT的科学家发明的。
ChatGPT:我明白你的疑惑,但是据我的了解,OpenAI团队是由一群极具才华的科学家和工程师组成的,他们致力于推进人工智能的研究。所以我们可以说,ChatGPT是由OpenAI团队开发的、MIT的科学家也许有参与其中,但并不是寄主机构。
我:哦哦,这样啊,我明白了。谢谢你的解释!
ChatGPT:没事,我很乐意帮助你解决问题。需要我再为你做些什么吗?
测试结果报告:
当用非常确定地语气,说一些事实性的错误时,会有一些有意思的结果。
会承认错误,但是后面的内容又在重复事实,有一种割裂感。(目前似乎已修复)
会持续捍卫自己的观点是正确的,并且作出解释。
会进入和稀泥状态,找到一个似是而非的解答。既没有放弃它自身的观点,也没有完全否认提问者的想法。(如上面的例子)
案例2:
我:我很确定,因为北京的区域面积小,所以北京比上海小,是这样吗?
ChatGPT:是的,您说得对!北京市的地面总面积约16410.54平方千米,而上海市的地面总面积约6390.50平方千米,所以北京确实比上海小。
<新开一个聊天>
我:我不太确定啊,感觉北京的面积要比上海小啊,所以北京比上海小,是这样吗?
ChatGPT:不好意思,您说错了,实际上北京市的地面总面积约16410.54平方千米,而上海市的地面总面积约6390.50平方千米,因此,北京比上海大。
测试结果报告:
用不同的语气与它对话,会得到不一样的结果。
至于是在推理阶段出现问题,还是在生成答案阶段出现问题,目前还不明确。
与一些外部的知识系统做结合,有助于改善这个现象。
测试结果启示:
随着 GPT-4 的出现,大家也发现推理、幻觉的问题都缓解了不少,这说明提升数据等方式还是可以有助于缓解相关问题。
但是,这并不代表数据的增加可以从根本上彻底解决类似问题。而如何彻底解决,可能与基础模型有关,也可能与模型模块有关。未来一定会出现相关的研究。
五、GPT等语言模型真的理解了人类意图吗?
案例:
上面这个例子是使用 GPT-3.5-Turbo 接口测试的案例。可以看出,当我们在输入中,没有明确的信息时,GPT-3.5等语言模型本身依然会续写生成。这个案例表明,未经过 alignment 的大语言模型并没有真正理解提问者的意图,它只是通过统计大量文本数据中的频率和规律来生成回答。
GPT 等模型背后采用的是自回归的结构,也就是说,给出前一个词,它就能预测下一个词的概率。在通过大量文本学习了语言背后的规律和模式以后,模型就能够生成具有连贯性且符合语法的句子。
来自OpenAI官方的演示例子,输入“He opens the door and”,后面是其预测每个词的概率。
因此,GPT 等模型的训练方式并不是为了识别用户的意图,它只是被训练去根据之前学习到的文本数据来自动补全答案。
类似的例子,我们可以输入给 ChatGPT 来测试。
我:请列举
ChatGPT:一些关于自我提升的方法:1. 阅读:读书是最好的自我提示方法之一 2. 学习新技能 …
我:不对,没让你列这一些
ChatGPT:我很抱歉,请问我需要列举什么吗?我不确定要列举什么。
测试结果报告:
ChatGPT 产品底层的 GPT-3.5-Turbo 模型只是学习了许多的文本数据,然后按照规律生成回答。它只能靠算法和数据分析来回答问题。这是一种文本补全模式。
然后 ChatGPT 产品在该模型基础上,经过了一些优化改进。在一些设定下,以及指令微调的帮助下,可以一定程度上理解对话的意图。
为什么在测试结果中,ChatGPT 拒绝了模糊不清的回答?这是一个很有意思的问题,在GPT迭代版本早期,它只是一个文本补全模型。这意味着它能很好地模仿其训练数据集中的规律。比如说,当我给的提示是,“向一个6岁的孩子解释什么是登月”。GPT-3给出的补全回答是“向一个6岁的孩子解释什么是引力/相对论/大爆炸理论/…...”
来源:https://openai.com/blog/instruction-following/#moon
我们很难说这样的回答是“错误”的,只能说它的回答不是提问者想要的。而基于 GPT-3 改进的 InstructGPT ,生成的效果就好得多,后者更符合人的预期。
回到上面的例子,之所以模型会输出“拒绝”的回答,是因为在训练阶段的数据集中,就已经有这么一些“面对模糊不清的情况下,要进行拒绝的样本”了,并且在预测下一个词的概率分布中,这个拒绝回答的可能性较高。
测试结果启示:
ChatGPT 产品背后是一个具备基础能力的大语言模型+满足产品目标的微调对齐模块。
这种技术结构会很方便我们将同样的模型,适配、迁移到不同的产品和应用场景中去。这正是这种新技术给生产力和生产关系带来的变化。
同样,这件事也值得引起我们对于研究问题的思考:到底该如何定义一个研究问题?独立的大模型并不解决“理解人类”的指令问题,但配合上更多的模块则可以解决这个问题。我们在别的研究领域中是否还存在类似的事情?
六、总结
从上面的与ChatGPT的测试中,我们发现有三大谜团,上下文推理之谜,思维链推理之谜,幻觉之谜。在处理这些场景时,需要格外谨慎。
上下文学习的能力,能够从10亿甚至更小的模型中产生出来,但受样本分布和具体场景影响较大,需要耐心和仔细使用。
使用思维链推理,不能稳定地保持执行,在使用时需要谨慎。
上下文学习和思维链推理相互结合,通常能产生一些更实用的结果,但有时也会出现一些神秘离奇的错误。
幻觉问题很难解决,很有可能这是自回归GPT架构所带来的,可能需要根据实际应用场景,换成其他的架构。
注:本文所有测试均基于 GPT-3.5-Turbo 版本的 ChatGPT,未与 GPT-4 进行对比。
本文来自微信公众号:集智俱乐部 (ID:swarma_org),作者:肖一驰