关于ChatGPT八个技术问题的猜想
推荐使用GPT,国内可直接访问:https://www.chatgp4.com/
看到 ChatGPT 的华丽诞生,心情复杂,既感到高兴与惊喜,也带着些许恐慌。高兴与惊喜源于未曾预料到自然语言处理(NLP)技术会如此迅速迎来重大突破,让我体验到通用技术的无尽魅力;而恐慌则在于,ChatGPT 凭借其高质量输出,逐渐揭示了许多 NLP 研究方向所面临的巨大挑战。
总体而言,ChatGPT 令人惊艳之处在于其卓越的通用性。与 GPT-3 历需通过精心设计的提示才能勉强实现的各类 NLP 能力相比,ChatGPT 让用户几乎感受不到提示的存在。
作为一个对话系统,ChatGPT 允许用户自然提问,便能够完成诸如理解与生成等多种任务,其表现几乎在开放领域中达到了当前的最佳水平,许多任务甚至超越了为特定任务单独设计的模型,尤其在代码编程领域中的表现尤为卓越。
具体而言,ChatGPT 在自然语言理解能力(尤其是用户意图理解)上表现突出。无论是问答、聊天、分类、摘要还是翻译等任务,尽管其回复不一定完全正确,但几乎都能领会用户的意图,理解能力远超预期。
相比之下,ChatGPT 的生成能力更为强大,能够针对各种问题生成具有逻辑性且多样化的长文本。总体来看,ChatGPT 的表现令人惊艳,似乎标志着 AGI (通用人工智能)的初步阶段,一旦一些技术瓶颈得以解决,其能力将更加卓越。
关于 ChatGPT 的表现案例已经有不少总结,这里我主要分享自己对其技术问题的一些思考,算作与 ChatGPT 交互两个月来的简单总结。由于无法深入了解 ChatGPT 的具体实现技术和细节,下述观点几乎都是基于主观猜想,肯定存在许多不准确之处,欢迎大家共同探讨。
### 1. ChatGPT 的通用性为何如此出众?
使用过 ChatGPT 的人会发现,它并不是一个传统意义上的人机对话系统,而是一个以自然语言为交互方式的通用语言处理平台。
2020 年的 GPT-3 虽然具备了一定的通用能力,但仍需精心设计提示语来触发特定功能,而 ChatGPT 则允许用户用非常自然的提问即可准确识别意图,并完成各种功能。传统方法往往需要先识别用户意图,然后针对不同意图调用相应的处理模块,例如通过用户数据识别出摘要或翻译意图,再调用文本摘要或机器翻译模型。
然而,传统方法在开放领域的意图识别准确率并不理想,而不同功能模块间各自为战,信息共享困难,难以形成强大的 NLP 通用平台。ChatGPT 突破了各自为战的模式,统一视对话过程中的需求。那么,ChatGPT 的通用性为何如此优秀呢?对此我进行了思考,虽无法通过实验验证,但可以做以下猜想。
根据 Google 的 Instruction Tuning 研究工作 FLAN,当模型达到一定规模(例如 68B 参数)且 Instruction 任务类型达到一定数量(例如 40),模型便会出现对新意图的识别能力。OpenAI 从其开放 API 中收集了全球用户在各种任务中产生的对话数据,经过意图分类与标注后,在 175B 参数的 GPT-3.5 上进行了 Instruction Tuning,自然孕育出了通用意图识别的能力。
### 2. 为什么面向对话的微调没有遭遇灾难性遗忘?
灾难性遗忘问题一直是深度学习中的一大挑战,在某一任务训练后,往往导致在其他任务上的性能下降。例如,在一个 30 亿参数的基础模型上,先在自动问答数据上微调,再在多轮对话数据上微调,结果往往会发现模型的问答能力大幅度下降。然而,ChatGPT 似乎没有遇到这个问题,它是在基础模型 GPT-3.5 上进行了两轮微调,第一次依据人工标注的对话数据进行微调,第二次根据人类反馈的强化学习进行微调。尽管微调使用的数据相对较少,特别是人类反馈的打分排序数据更是稀少,但微调后它依旧表现出强大的通用能力,未见完全过拟合于对话任务。
这一现象非常有趣,虽然我们无法验证原因,但可以推测其中的两个方面:其一,ChatGPT 使用的对话微调数据实际上可能涵盖了非常全面的 NLP 任务,正如 InstructGPT 中对用户 API 使用问题的分类,许多任务不仅限于简单对话,还包括分类、问答、摘要、翻译和代码生成等。实际上,ChatGPT 极有可能是对多任务同时进行了微调;其二,当基础模型足够庞大时,在相对较小的数据上进行微调,其对模型的影响有限,可能仅在基础模型参数空间的小邻域内优化,故不会显著影响其通用能力。
### 3. ChatGPT 的上下文连续对话能力是如何实现的?
在与 ChatGPT 交流的过程中,用户会发现其一个令人惊讶的能力:即便进行了十多轮交互,它仍能记住第一轮的信息,并能根据用户的意图准确识别省略、指代等细节语言现象。尽管这些对于我们人类来说不算什么,但在 NLP 的研究历史中,省略和指代的问题一直是难以逾越的挑战。此外,在传统对话系统中,随着对话轮次的增加,话题一致性往往难以得到保障。
然而,ChatGPT 并不存在这样的问题,始终保持着对话主题的一致性和专注度。对此能力的来源,我猜测可能有以下三方面的原因。首先,高质量的多轮对话数据是这种能力的基础与关键,就如 Google 的 LaMDA,OpenAI 也是通过人工标注构造了大量高质量多轮对话数据,基于此的微调将激发模型的多轮对话能力。
其次,基于人类反馈的强化学习提升了模型回复的拟人化程度,间接增强了其多轮对话的一致性。最后,模型对 8192 个语言单元(Token)的显式建模能力,使其几乎能记住普通人一天中的对话数据,因此一场对话中不容易超出此长度,所有对话历史得以有效记忆,从而显著提升了连续多轮对话的能力。
### 4. ChatGPT 的交互修正能力是如何炼成的?
交互修正能力是智能的一种高级体现。对我们来说,意识到问题并及时准确地修正相关信息其实是稀松平常的事情,而对于机器而言,意识到问题、识别问题范围并更正对应信息的每一阶段都并非易事。在 ChatGPT 出现之前,我们尚未看到过具备强交互修正能力的通用模型。
通过与 ChatGPT 的互动,我们会发现,无论是用户更改自己的说法,还是指出 ChatGPT 回复中的问题,ChatGPT 都能够捕捉修改意图,并准确识别需要修正的部分,最终作出合理的调整。
迄今为止,尚未发现与交互修正能力直接相关的模型因素,也不太可能认为 ChatGPT 具备实时学习的能力,一方面,由于每次重启对话后,ChatGPT 仍可能犯下相同的错误;另一方面,基础大模型的优化学习通常是从高频数据中总结出的频繁模式,因此,一次对话不太可能更新基础模型。
这或许更多的是基础语言大模型在信息处理方面的历史技巧,而不确定的因素可能包括:
– OpenAI 人工构建的对话数据中包含一些交互修正的案例,微调后自然获得此能力;
– 人工反馈的强化学习使得模型的输出更加符合人类偏好,从而在信息修正对话中更好地遵循用户的修正意图;
– 当大模型达到一定规模(如 60B)时,原始训练数据中包含的交互修正案例便被有效映射,因此其交互修正能力自然涌现。
### 5. ChatGPT 的逻辑推理能力是如何获取的?
当我们向 ChatGPT 询问一些逻辑推理相关的问题时,它并非直接给出答案,而是展示出详细的推理步骤,最终得出推理结论。尽管许多案例如“鸡兔同笼”表明 ChatGPT 可能并未掌握推理的本质,而只是表面上的推理逻辑,但其展示的推理步骤与架构基本上是正确的。
一个语言模型能学习到基本的逻辑推理模式已经超出了预期,其推理能力的来源是一个有趣的问题。相关对比研究发现,当模型规模足够大,并且程序代码与文本数据混合训练时,程序代码的完整逻辑链会迁移并泛化到语言大模型中,从而赋予大模型一定程度的推理能力。
这种推理能力的习得让人惊讶却也能理解,或许代码注释正是从逻辑代码到语言大模型推理能力迁移的桥梁。而多语言能力应该也遵循类似的原则。ChatGPT 的训练数据主要是英文,中文数据相对较少,但其中文能力虽然逊色于英文,依然表现出色。这或许得益于训练数据中包含的中英对照平行数据,成为英文能力迁移至中文能力的桥梁。
### 6. ChatGPT 是否针对不同下游任务采用不同的解码策略?
ChatGPT 的许多出色表现中,有一个显著特点是能够针对同一问题生成多种不同的回复,显得颇具智慧。
比如,如果我们对 ChatGPT 的回答不满意,可以点击“重新生成”按钮,系统很快就会提供另一种回复;若仍然不满意,可以继续让其重新生成。在自然语言处理领域,这种现象并不神秘,实际上是语言模型的基本能力,即采样解码。
在输出后续文本时,一段文本的后面可能接不同的词汇,语言模型会计算每个词汇出现的概率。如果解码策略选择概率最高的词汇进行输出,那么每次的结果都是确定的,便无法生成多样化的回复;而当按词汇出现的概率分布进行采样时,例如,若“策略”的概率为 0.5,“算法”的概率为 0.3,则采样解码输出“策略”的概率为50%,输出“算法”的概率为30%,从而保证了输出的多样性。由于采样过程是依照概率分布进行,即便输出结果多样,但每次输出的结果仍选择概率较大的情况,所以多种结果看似相对合理。
对比不同任务类型时,我们会发现 ChatGPT 的回复多样性在不同下游任务中存在显著差异。在“如何”、“为什么”等“How”、“Why”型任务时,重新生成的回复在表达方式及具体内容上与之前的回复相差较大;而在机器翻译、数学应用等“What”型任务中,不同回复之间的差异微乎其微,有时几乎毫无变化。如果所有的输出皆依据概率分布的采样,为什么不同回复之间的差异如此之小呢?
或许在“何种”型任务的理想状态下,基础大模型学习到的概率分布极为尖锐(sharp),例如“策略”的概率为 0.8,“算法”的概率为 0.1,这样一来,大多数情况下都会采样到相同的结果;而对于“How”、“Why”型任务,基础大模型学习到的概率分布比较平滑(smooth),例如“策略”的概率为 0.4,“算法”的概率为 0.3,因此采样时可能得到差异较大的结果。
如果 ChatGPT 能够学习到任务相关的非常理想的概率分布,确实令人惊奇,基于采样的解码策略对所有任务都可以适用。通常,对于机器翻译、数学计算、事实性问答等答案相对确定的任务,一般会采用基于贪婪解码的方法,即每次输出概率最高的词汇;而若希望输出内容上有多样性,通常会使用基于束搜索的解码方法,而较少使用基于采样的解码策略。
从与 ChatGPT 的互动来看,所有任务似乎都采用了基于采样的解码方法,确实展现了暴力的美学。
### 7. ChatGPT 能否解决事实可靠性问题?
事实可靠性问题是当前 ChatGPT 面临的最大挑战。特别对于事实性及知识性的问答,ChatGPT 有时会给出虚假的信息,甚至在要求给出来源或者参考文献时,通常也会生成不存在的网址或从未发表过的文献。
不过,ChatGPT 往往能给用户一种它似乎了解许多事实和知识的良好印象。实际上,ChatGPT 只是一个语言大模型,根本上就是基于深度神经网络构建的统计模型,从高频数据学习相关模式。很多常见知识或事实在训练数据中出现频率较高,构成的上下文模式较为固定,因此模型容易记住,并在解码过程输出正确的答案。
但对于那些虽然存在于庞大训练数据中却很少出现的事件与知识,模型便无法掌握相关模式,上下文间的关联较为松散,词语预测的概率分布平滑,熵较大,导致模型在推理过程中出现不确定性,进而产生随机性输出。
这是包括 ChatGPT 在内的所有生成模型所固有的问题。如果依然沿用 GPT 系列架构而不对基础模型进行调整,从理论上讲,解决 ChatGPT 的事实可靠性问题将是非常困难的。将 ChatGPT 与搜索引擎相结合,可能是一个务实的解决方案,让搜索引擎负责提供可靠的事实信息来源,而 ChatGPT 专注于总结与归纳。
若希望 ChatGPT 改善事实回答的可靠性,可能需要进一步加强模型的拒识能力,过滤掉模型确认无法回答的问题,同时引入事实验证模块,以验证 ChatGPT 的回复正确性。希望下一代的 GPT 能在该问题上有所突破。
### 8. ChatGPT 能否实现实时信息学习?
ChatGPT 的交互修正能力让人感觉它似乎拥有人类的实时学习能力。
如前所述,ChatGPT 能根据用户的修改意图或更正信息,立刻调整相关回复,展现出实时学习的能力。然而,实际上并非如此,学习能力应当体现为学到的知识能够普遍适用,而 ChatGPT 并未展现这种能力。它只是在当前对话中根据用户反馈进行修正,当重新开始一次对话并询问相同问题时,ChatGPT 仍可能会犯相同或类似的错误。
我们不禁要问,为什么 ChatGPT 不会将正确的修改信息存储到模型中呢?这里涉及两个问题。首先,用户反馈并不总是准确的,有时用户会故意引导 ChatGPT 给出不合理的回答;其次,即使用户反馈信息是正确的,因为出现频率可能较低,基础大模型也不会依此更新参数,否则就会对某些长尾数据产生过拟合,进而失去通用性。
因此,让 ChatGPT 实现实时学习是非常困难的。一个简单直观的解决方案是,定期利用新数据微调 ChatGPT,或者实施触发机制,当多个用户提交相似反馈时触发模型的参数更新,从而提升模型的动态学习能力。
### 结语
ChatGPT 的出现对自然语言处理领域及人机交互带来了深远影响,尤其在通用性和逻辑推理上表现突显。虽然面临着可靠性和实时学习的挑战,但通过不断的优化与迭代,ChatGPT 和未来类似的技术将有可能实现更高效、更智能的人机沟通。这一进程值得积极关注与探讨。