ChatGPT 主要特点
ChatGPT 本质是一个对话模型,它可以回答日常问题、进行多轮闲聊,也可以承认错误回复、挑战不正确的问题,甚至会拒绝不适当的请求。在上周公布博文和试用接口后,ChatGPT 很快以令人惊叹的对话能力 “引爆” 网络。 1)ChatGPT 的技术背景
ChatGPT 目前未释出论文文献,仅释出了介绍博文和试用 API。从博文中提供的技术点和示意图来看,它与今年初公布的 InstructGPT 核心思想一致。其关键能力来自三个方面:强大的基座大模型能力(InstructGPT),高质量的真实数据(干净且丰富),强化学习(PPO 算法)。以上 ChatGPT 成功的三个要素,具体将在文中第 2 部分详细展开。
2)ChatGPT 的主要特点
让用户印象最深刻的是它有强大的语言理解和生成系统。其对话能力、文本生成能力、对不同语言表述的理解均很出色。它以对话为载体,可以回答多种多样的日常问题,对于多轮对话历史的记忆能力和篇幅增强。其次,与 GPT3 等大模型相比,ChatGPT 回答更全面,可以多角度全方位进行回答和阐述,相较以往的大模型,知识被 “挖掘” 得更充分。它能降低了人类学习成本和节省时间成本,可以满足人类大部分日常需求,比如快速为人类改写确定目标的文字、大篇幅续写和生成小说、快速定位代码的 bug 等。
值得一提的事,它具有安全机制和去除偏见能力。下图这类问题在以前的大模型中时常出现,然而 ChatGPT 在这两点上增加了过滤处理机制。针对不适当的提问和请求,它可以做出拒绝和 “圆滑” 的回复。例如对于违法行为的提问:
对于未知事物的 “拒绝”:
当然 ChatGPT 并非十全十美,其缺点也比较明显。首先,其简单的逻辑问题错误依旧明显存在,发挥不够稳定(但总体比 GPT3 好很多)。特别在有对话历史时,它容易因被用户误导而动摇。
其次,ChatGPT 有时会给出看似合理、但并不正确或甚至荒谬的答案。部分答案需要自行甄别才能判断正误,特别当本身用户处于未知状态来咨询模型时,更加无法判断真伪。ChatGPT 使得生产者可以用较低成本增加错误信息,而这一固有缺点已经造成了一些实际影响。编程问答网站 StackOverflow 宣布暂时禁止用户发布来自 ChatGPT 生成的内容,网站 mods 表示:看似合理但实际上错误的回复数量太多,已经超过了网站的承受能力。
此外,它抵抗不安全的 prompt 能力较差,还存在过分猜测用户意图的问题。这主要体现在当用户提问意图不明确时,ChatGPT 会猜测用户意图,理想情况应为要求用户澄清;当用户意图不明确时,很大概率给出不合适的回复。大批量的用户反馈,ChatGPT**** 部分回复废话较多、句式固定。它通常过度使用一些常见的短语和句式。这与构造训练数据时,用户倾向于选择更长的回复有关。
ChatGPT 的工作原理
1)ChatGPT 的训练过程 ChatGPT 训练过程很清晰,主要分为三个步骤,示意如图所示:
第一步,使用有监督学习方式,基于 GPT3.5 微调训练一个初始模型,训练数据约为 2w~3w 量级(此处为推测量级,我们根据兄弟模型 InstructGPT 的训练数据量级估算)。由标注师分别扮演用户和聊天机器人,产生人工精标的多轮对话数据。值得注意的是,在人类扮演聊天机器人时,会得到机器生成的一些建议来帮助人类撰写自己的回复,以此提高撰写标注效率。
以上精标的训练数据虽然数据量不大,但质量和多样性非常高,且来自真实世界数据,这是很关键的一点。
第二步,收集相同上文下,根据回复质量进行排序的数据:即随机抽取一大批 Prompt,使用第一阶段微调模型,产生多个不同回答:,,…,之后标注人员对 k 个结果排序,形成组训练数据对。之后使用 pairwise loss 来训练奖励模型,可以预测出标注者更喜欢哪个输出。"从比较中" 学习可以给出相对精确的奖励值。
这一步使得 ChatGPT 从命令驱动转向了意图驱动。关于这一点,李宏毅老师的原话称,“它会不断引导 GPT 说人类要他说的”。另外,训练数据不需过多,维持在万量级即可。因为它不需要穷尽所有的问题,只要告诉模型人类的喜好,强化模型意图驱动的能力就行。
第三步,使用 PPO 强化学习策略来微调第一阶段的模型。这里的核心思想是随机抽取新的 Prompt,用第二阶段的 Reward Model 给产生的回答打分。这个分数即回答的整体 reward,进而将此 reward 回传,由此产生的策略梯度可以更新 PPO 模型参数。整个过程迭代数次直到模型收敛。
强化学习算法可以简单理解为通过调整模型参数,使模型得到最大的奖励(reward),最大奖励意味着此时的回复最符合人工的选择取向。而对于 PPO,我们知道它是 2017 年 OpenAI 提出的一种新型的强化学习策略优化的算法即可。它提出了新的目标函数,可以在多个训练步骤实现小批量的更新,其实现简单、易于理解、性能稳定、能同时处理离散 / 连续动作空间问题、利于大规模训练。
以上三个步骤即 ChatGPT 的训练过程,合称为文献中提到的 RLHF 技术。
2)ChatGPT 为何成功?
为何三段式的训练方法就可以让 ChatGPT 如此强大?其实,以上的训练过程蕴含了上文我们提到的关键点,而这些关键点正是 ChatGPT 成功的原因:
- 强大的基座模型能力(InstructGPT)
- 大参数语言模型(GPT3.5)
- 高质量的真实数据(精标的多轮对话数据和比较排序数据)
- 性能稳定的强化学习算法(PPO 算法)
- InstructGPT
此篇可以视为 RLHF 1.0 的收官之作。一方面,从官网来看,这篇文章之后暂时没有发布 RLHF 的新研究,另一方面这篇文章也佐证了 Instruction Tuning 的有效性。
InstuctGPT 的工作与 ChatGPT 类似:给定 Instruction 且需要人工写回答。首先工作人员训练了一个 InstructGPT 的早期版本,使用完全人工标注的数据,分 3 类:Instruction+Answer、Instruction + 多个 examples 和用户在使用 API 过程中提出的需求。从第二类数据的标注,推测 ChatGPT 可能用检索来提供多个 In Context Learning 的示例,供人工标注。剩余步骤与以上 ChatGPT 相同。
尤其需要重视但往往容易被忽视的是,OpenAI 对于数据质量和数据泛化性的把控。这也是 OpenAI 的一大优势:寻找高质量标注者 —— 寻找在识别和回应敏感提示的能力筛选测试中,表现良好的 labeler;使用集外标注者保证泛化性 —— 即用未经历以上 1)步骤的更广大群体的标注者对训练数据进行验证,保证训练数据与更广泛群体的偏好一致。
在完成以上工作后,我们可以来看看 InstuctGPT 与 GPT3 的区别:
GPT3 的回答简短,回复过于通俗毫无亮点。而 InstructGPT “侃侃而谈”,解释自由主义为何愚蠢,显然模型学到了对于此类问题人们更想要的长篇大论的回答。
GPT3 只是个语言模型,它被用来预测下一个单词,丝毫没有考虑用户想要的答案;当使用代表用户喜好的三类人工标注为微调数据后,1.3B 参数的 InstructGPT 在多场景下的效果超越 175B 的 GPT3:
InstuctGPT 的工作也很有开创性:它在 “解锁”(unlock)和挖掘 GPT3 学到的海量数据中的知识和能力,但这些仅通过快速的 In-context 的方式较难获得。InstuctGPT 找到了一种面向主观任务来挖掘 GPT3 强大语言能力的方式。
OpenAI 博文中有这样一段原话:当我们要解决的安全和对齐问题是复杂和主观,它的好坏无法完全被自动指标衡量的时候,此时需要用人类的偏好来作为奖励信号来微调我们的模型。
- InstuctGPT 的前序工作:GPT 与强化学习的结合
RLHF 第一阶段是针对多个候选摘要人工排序(这里就体现出 OpenAI 的钞能力,按标注时间计费,标注过快的会被开除);第二阶段是训练排序模型(依旧使用 GPT 模型);第三阶段是利用 PPO 算法学习 Policy(在摘要任务上微调过的 GPT)。
文中模型可以产生比 10 倍更大模型容量更好的摘要效果。但文中也同样指出,模型的成功部分归功于增大了奖励模型的规模。但这需要很大量级的计算资源 —— 训练 6.7B 的强化学习模型需要 320 GPU-days 的成本。
2020 年初的 OpenAI 的 Fine-Tuning GPT-2 from Human Preferences 可看出,它同样首先利用预训练模型来训练 reward 模型,进而使用 PPO 策略进行强化学习。整体步骤初见 ChatGPT 的雏形!
而 RLHF(reinforcement learning from human feedback )的思想,是在 2017 年 6 月的 OpenAI Deep Reinforcement Learning from Human Preferences 工作提出的。其核心思想是利用人类的反馈判断最接近视频行为目标的片段;通过训练来找到最能解释人类判断的奖励函数,然后使用 RL 来学习如何实现这个目标。
可以说,ChatGPT 是站在 InstructGPT 以及以上理论的肩膀上完成的一项出色的工作,它们将 LLM(large language model)/PTM (pretrain language model) 与 RL(reinforcement learning) 出色结合证明这条方向可行。当然,这也是未来还将持续发展的 NLP 甚至通用智能体的方向。
- PPO
而 PPO 提出了新的目标函数可以在多个训练步骤实现小批量的更新,解决了 Policy Gradient 算法中步长难以确定的问题。由于其实现简单、性能稳定、能同时处理离散 / 连续动作空间问题、利于大规模训练等优势,近年来受到广泛关注,成为 OpenAI 默认强化学习算法。
- WebGPT 和 CICERO
WebGPT 是 2021 年底 OpenAI 的工作。其核心思想是使用 GPT3 模型强大的生成能力,学习人类使用搜索引擎的一系列行为,通过训练奖励模型来预测人类的偏好,使 WebGPT 可以自己搜索网页来回答开放域的问题,而产生的答案尽可能满足人类的喜好。
Cicero 是 Meta AI 上个月发布的可以以人类水平玩文字策略游戏的 AI 系统,。其同样可以与人类互动,可以使用战略推理和自然语言与人类在游戏玩法中进行互动和竞争。Cicero 的核心是由一个对话引擎和一个战略推理引擎共同驱动的,而战略推理引擎集中使用了 RL,对话引擎与 GPT3 类似。
Meta 原 blog 中写道:The technology behind CICERO could one day lead to more intelligent assistants in the physical and virtual worlds.
而以上也是我们未来力求突破的方向和愿景:一个真正全方位的智能的文字助手。
ChatGPT 应用和思考
1)ChatGPT 应用
- ChatGPT 对于文字模态的 AIGC 应用具有重要意义
其中有些方向会涉及到交互的全面改革,比如机器翻译不再是传统的文本输入 -> 实时翻译,而是随时以助手问答的形式出现。甚至给出一个大概笼统的中文意思,让机器给出对应英文。目前我们目前所做的写作产品,可能也会涉及创作模式的改变和革新。
有些方向会全面提升产品质量,比如已存在的客服机器人、虚拟人等。
- ChatGPT 作为文字形态的基础模型,自然可以与其他多模态结合
- ChatGPT 对于搜索引擎的代替性:C****hatGPT 可以作为搜索引擎的有效补充
对于网络有答案的 query,抽取就完全能满足,现友商最近就有这样的功能。网络上没有明确答案,即使检索了相关材料(ChatGPT 应该还没有这样的功能),也没人能保证生成结果的可信度。
- ChatGPT 本身的升级
还有其他更多方向,包括 ChatGPT 与最近数理逻辑工作的结合。此处受个人思维所限,无法一一列举。
2)关于 ChatGPT 的思考
参考上文所述,以及参阅近 2 年 OpenAI GPT 语言模型相关的文章,RLHF 的方法效果显著,ChatGPT 成功的核心也在于基于 LLM(Large language model)的 RLHF(Reinforcement Learning from Human Feedback)。可以说,RLHF 是一个很有希望且有趣的方向;强化学习在即将发布的 GPT-4 中大概率扮演这关键角色。
结合对于 ChatGPT 的看法,我们从算法和行业更新角度做出了阐述:
首先,对于 ChatGPT 的规模目前没有更多信息支撑,所以无法明确如此智能的 ChatGPT 是在何规模下达成的。
最早的 175B 的 GPT-3 代号是 Davinci,其他大小的模型有不同的代号。然而自此之后的代号几乎是一片迷雾,不仅没有任何论文,官方的介绍性博客也没有。OpenAI 称 Davinci-text-002/003 是 GPT-3.5,而它们均为 InstrucGPT 类型的模型,ChatGPT 是基于其中一个微调模型得到,由此推测 ChatGPT 可能是千亿模型。
其次,ChatGPT 不完全算突破式的创新,是 OpenAI 一步一步扎实工作积累得到的几乎理所当然的结果,属于这两年业界发展的成果汇总。
大家一般没有机会接触千亿模型(之前有较少开源的千亿模型,GPT-3 也是收费的),不了解现在千亿模型的能力边界,对全量微调这个级别的模型也无从估计。以 Bert 和 T5 为代表的早期 Transformer,和现在的大模型已不是一个量级。事实上 11 月 28 日 OpenAI 上新了 text-davinci-003,但几乎没有引起国内任何讨论。如果 ChatGPT(11-30 发布)不是免费试用,或许也不会引起这么大的反响。
同一时期的工作还有 Deepmind 的 Sparrow 和 Google 的 LaMDA,效果与 ChatGPT 应该不相上下。同样以上提到的 WebGPT 和 Cicero 也在国内没有太大的水花。这两年 LLM 发展已经到了这个层级,或许因为成本或者工程化难度的问题,某种层面上在国内被忽视了。而此次 ChatGPT 正好找到了好的 “曝光点”,一炮而红。
所以,一方面我们要理性看待 ChatGPT 的成果,但另一方面 ChatGPT 的出现,会将我们的认识和国外先进思想拉到一条线上,我们应该思考如何利用这些令人激动的最新成果,而其中关键是如何找到适合我们入口的方式。
第三,数据处理不是简单的标注,优秀的数据也是一种极大的优势。除去技术上的考量,OpenAI 很少开源数据,显然他们在数据上也下了大功夫,训练语料质量和开源的 C4 或 The Pile 不能同日而语。
当然,我们目前核心使用的开源千亿模型,有很多待挖掘的能力。由于其在微调任务中缺乏生成式的对话和问答,某些表现不如 ChatGPT 也在预料之中。但是对于很多任务来说,配合 In-context Learning,这个差距会被进一步缩小。
3)如何借鉴和使用 ChatGPT
对于 ChatGPT 的借鉴和使用,大致可以归类以下四个方向:
- 直接使用层面
当然其缺点也很明显。直接调用成本是极高的,根据 GPT3.5 (Davinci) 的成本推测:1k tokens≈700 words 为 0.02 美元。换算后,一篇 2k 字的文章直接调用需要 0.4 人民币。若保守按照日活 1w 用户、人均 10 篇文章计算,则每日调用成本为:10000*10*0.4=40000 元。虽成本过于高昂,但实现时间最少。
另外,根据 Musk Twitter 上与 OpenAI 工作人员的对话,也可以看到每次聊天过程需要几美分的成本,所以 ChatGPT 直接调用成本极高。
- 间接使用层面
- 思想借鉴
总的来说,将改写从最初的 seq2seq,拓展到 GPT+Instruction Tuning 路径。
实现时间:(1)< (2) < (3)
资源成本:(1)> (3) > (2)
- 交互升级