新智元报道

  编辑:好困 Aeneas 桃子

  做聊天机器人,OpenAI 不是第一家,但绝对是最出风头的那个。谷歌、Meta、DeepMind、OpenAI 的聊天机器人大 PK,谁最牛?

  前几天,Meta 首席人工智能科学家 Yann LeCun 的一段对于 ChatGPT 的点评迅速传遍圈内外,引发了大波讨论。

  在 Zoom 的媒体和高管小型聚会上,LeCun 给出了一段令人惊讶的评价:「就底层技术而言,ChatGPT 并不是多么了不得的创新。」

  「虽然在公众眼中,它是革命性的,但是我们知道,它就是一个组合得很好的产品,仅此而已。」

  ChatGPT 不算什么创新

  ChatGPT 作为这几个月的聊天机器人「顶流」,早就红遍全世界,甚至切实改变了一部分人的职业生涯,以及学校教育的现状。

  全世界为它惊叹的时候,LeCun 对 ChatGPT 的点评居然如此「轻描淡写」。

  但其实,他的言论不无道理。

  像 ChatGPT 这种数据驱动的人工智能系统,许多公司和研究型实验室有。LeCun 表示,OpenAI 在这个领域并没有多么独树一帜。

  「除了谷歌和 Meta 之外,还有六家初创公司,基本上都拥有非常相似的技术。」LeCun 补充道。

  接着,LeCun 小酸了一把——

  「ChatGPT 用的是以自监督方式进行预训练的 Transformer 架构,而自监督学习是本人长期以来一直提倡的,那会儿 OpenAI 还没诞生呢。」

  其中,Transformer 是谷歌的发明。这种语言神经网络,正是 GPT-3 等大型语言模型的基础。

  而第一个神经网络语言模型,Yoshua Bengio 早在 20 年前就提出了。Bengio 的注意力机制后来被谷歌用于 Transformer,之后更是成为了所有语言模型中的关键元素。

  另外,ChatGPT 用的是人类反馈强化学习(RLHF)的技术,也是由谷歌 DeepMind 实验室开创的。

  在 LeCun 看来,ChatGPT 与其说是一个科学突破,不如说是一项成功的工程案例。

  OpenAI 的技术「在基础科学方面并没有什么创新性,它只是设计得很好而已。」

  「当然啦,我不会为此批评他们。」

我不是在批评 OpenAI 的工作,也不是在批评他们的主张。 我是想纠正公众和媒体的看法,他们普遍认为 ChatGPT 是一种创新且独特的技术突破,然而事实并非如此。

  在纽约时报记者 Cade Metz 的座谈会上,LeCun 感受到了好事者的疑问。

  「你可能想问,为什么谷歌和 Meta 没有类似的系统呢?我的回答是,如果谷歌和 Meta 推出这种会胡说八道的聊天机器人,损失会相当惨重。」他笑着说。

  无独有偶,OpenAI 被微软等金主看好、身价飙升至 290 亿美元的新闻一出,马库斯也连夜在博客上写了一篇文章嘲讽。

  在文中,马库斯爆出一句金句:

  谷歌、Meta、DeepMind、OpenAI 大 PK!

  话不多说,咱们把这几家 AI 巨头的聊天机器人都拉出来遛遛,用数据说话。

  LeCun 说许多公司和实验室都有类似 ChatGPT 的 AI 聊天机器人,此言不虚。

  ChatGPT 并不是第一个基于语言模型的 AI 聊天机器人,它有很多「前辈」。

  在 OpenAI 之前,Meta、谷歌、DeepMind 等都发布了自己的聊天机器人,比如 Meta 的 BlenderBot、谷歌的 LaMDA、DeepMind 的 Sparrow。

  还有一些团队,也公布了自己的开源聊天机器人计划。比如,来自 LAION 的 Open-Assistant。

  在 Huggingface 的一篇博客中,几位作者调查了关于 RLHF、SFT、IFT、CoT(它们都是 ChatGPT 的关键词)这些主题的重要论文,对它们进行了分类和总结。

  他们制成了一个表,根据公开访问、训练数据、模型架构和评估方向等细节,对 BlenderBot、LaMDA、Sparrow 和 InstructGPT 这些 AI 聊天机器人进行了比较。

  注意:因为 ChatGPT 没有记录,所以他们使用的是 InstructGPT 的细节,InstructGPT 是一个来自 OpenAI 的指令微调模型,可以被认为是 ChatGPT 的基础。

  不难发现,尽管在训练数据、基础模型和微调方面存在许多差异,但这些聊天机器人都有一个共同点——遵循指令。

  比如,你可以通过指令让 ChatGPT 写一首关于微调的诗。

  可以看到,ChatGPT 非常「识相」,写诗都不忘拍一下 LeCun 和 Hinton 两位祖师爷的马屁。

  随后激情洋溢地赞颂道:「微调啊,微调,你是一支美丽的舞蹈。」

  从预测文本到遵循指令

  通常情况下,基础模型的语言建模,是不足以让模型学会如何遵循用户指令的。

  在模型的训练中,研究人员除了会采用经典的 NLP 任务(比如情感、文本分类、总结等),还会使用指令微调(IFT),也就是在非常多样化的任务上通过文字指令对基础模型进行微调。

  其中,这些指令示例由三个主要部分组成:指令、输入和输出。

  输入是可选的,有些任务只需要指令,如上面 ChatGPT 示例中的开放式生成。

  当一个输入和输出出现时,就形成了一个示例。对于一个给定的指令,可以有多个输入和输出示例。比如下面这个例子:

  IFT 的数据,通常是人类编写的指令和使用语言模型引导的指令示例的集合。

  在引导过程中,LM 在 few-shot(小样本)的设置中被提示(如上图),并被指示生成新的指令、输入和输出。

  在每一轮中,模型会被提示从人工编写和模型产生的样本中选择。

  人类和模型对创建数据集的贡献量像一个光谱一样(见下图)。

  一端是纯粹的模型生成的 IFT 数据集,如 Unnatural Instructions,另一端是大量人工生成的指令,如 Super-natural instructions。

  介于这两者之间的,是使用一套规模较小但质量更高的种子数据集,然后进行引导的工作,如 Self-instruct。

  为 IFT 整理数据集的另一种方式是,利用现有的关于各种任务(包括提示)的高质量众包 NLP 数据集,并使用统一的模式或不同的模板将这些数据集转换成指令。

  这方面的工作包括 T0、自然指令数据集(Natural instructions dataset)、FLAN LM 和 OPT-IML。

  自然指令数据集相关论文:https://arxiv.org/abs/2104.08773

  对模型进行微调

  另一方面,OpenAI 的 InstructGPT、DeepMind 的 Sparrow 和 Anthropic 的 Constitutional AI 都采用了基于人类反馈的强化学习(RLHF),也就是人类偏好的注释。

  在 RLHF 中,一组模型响应根据人类反馈进行排序(例如,选择一个更受欢迎的文字简介)。

  接下来,研究人员在这些注释过的响应上训练一个偏好模型,为 RL 优化器返回一个标量奖励。

  最后,通过强化学习训练聊天机器人来模拟这个偏好模型。

  思维链(CoT)提示,是指令示例的一个特例,它通过诱导聊天机器人逐步推理,以此来产生输出。

  用 CoT 进行微调的模型,会使用带有人类注释的分步推理的指令数据集。

  这就是那句著名的 prompt——「let's think step by step」的起源。

  下面的例子取自「Scaling Instruction-Finetuned Language Models」。其中,橙色突出了指令,粉色显示了输入和输出,蓝色是 CoT 推理。

  论文指出,采用 CoT 微调的模型,在涉及常识、算术和符号推理的任务中表现得更好。

  此外,CoT 微调在敏感话题方面也非常有效(有时比 RLHF 做得更好),尤其是可以避免模型摆烂——「对不起,我无法回答」。

  安全地遵循指令

  正如刚才提到的, 指令微调的语言模型并不能永远产生有用且安全的响应。

  比如,它会通过给出无用的回答来逃避,例如「对不起,我不明白」;或者对抛出敏感话题的用户输出不安全的响应。

  为了改善这种行为,研究人员通过监督微调(SFT)的形式,在高质量的人类注释数据上对基础语言模型进行微调,从而提升模型的有用性和无害性。

  SFT 和 IFT 的联系非常紧密。IFT 可以看作是 SFT 的一个子集。在最近的文献中,SFT 阶段经常用于安全主题,而不是用于在 IFT 之后完成的特定指令主题。

  在将来,它们的分类和描述应该会有更清晰的用例。

  另外,谷歌的 LaMDA 也是在一个有安全注释的对话数据集上进行微调的,该数据集有基于一系列规则的安全注释。

  这些规则通常由研究人员预先定义和开发,包含了一系列广泛的主题,包括伤害、歧视、错误信息等。

  AI 聊天机器人的下一步

  关于 AI 聊天机器人,目前仍有许多开放性问题有待探索,比如:

  1. RL 在从人类反馈中学习方面有多重要?我们能在 IFT 或 SFT 中通过更高质量的数据训练获得 RLHF 的性能吗?

  2. Sparrow 中的 SFT+RLHF,与 LaMDA 中仅仅使用 SFT,两者的安全性如何比较?

  3. 鉴于我们已经有了 IFT、SFT、CoT 和 RLHF,那么还有多少预训练是必要的?有哪些权衡因素?最好的基础模型是哪个(包括公开的和非公开的)?

  4. 现在这些模型都是精心设计的,其中研究人员会专门搜索故障模式,并根据揭露的问题影响未来的训练(包括提示和方法)。我们如何系统地记录这些方法的效果并进行复现?

  总结一下

  1. 与训练数据相比,只需拿出非常小的一部分用于指令微调(几百个数量级即可)。

  2. 监督微调利用人类注释,可以让模型的输出更加安全和有用。

  3. CoT 微调提高了模型在逐步思考任务上的表现,并使模型不会总是逃避敏感问题。

  参考资料:

  https://huggingface.co/blog/dialog-agents