DeepMind Sparrow 对话系统简析

Sparrow是DeepMind在今年9月底发布的对话系统,主打的点在"helpful, correct, and harmless"。总体来看,思路也是"alignment",即让对话机器人的回复与用户的意图更贴合。在技术路线上,也是采用reinforcement learning from human feedback,通过定义一批规则,让模型更好地向期望的对话方向推进; 此外,对于事实型的问题,参考搜索出的内容给出回复。

Building safer dialogue agents

Improving alignment of dialogue agents via targeted human judgements

Sparrow简介

大型语言模型 (large language models, LLMs)在对话和问答领域有了许多进展,但依然存在如下问题:

Dialogue agents powered by LLMs can express inaccurate or invented information, use discriminatory language, or encourage unsafe behaviour.

那么Sparrow能达到什么效果呢?它可以与用户聊天,回答问题,甚至可以用Google搜索答案并回复。

Our agent is designed to talk with a user, answer questions, and search the internet using Google when it’s helpful to look up evidence to inform its responses.

不过Sparrow只是一个研究模型,处于Proof of Concept阶段,并未公开发布在产品中,所以大家不能直接体验。所谓"safer",可以看下面的例子:

Sparrow如何工作

训练一个对话系统是很有挑战的,原因在于很难定义什么是一个好的对话:

Training a conversational AI is an especially challenging problem because it’s difficult to pinpoint what makes a dialogue successful.

Sparrow采用Reinforcement Learning from Human Feedback (RLHF) 的方法来解决这个问题,与ChatGPT/InstructGPT一致。实现方案是给标注者多个模型回复,选择最好的一个。同时,这些回复中标识了是否需要从互联网搜索答案,所以模型也能判别某个问题是否需要额外的搜索支持。

Sparrow Model

让模型回复更有用只是一个方面,为了让模型回复更安全,还设置了一些其他的对话规则,比如:"don't make threatening statements", "don't make hateful or insulting comments" 和 "not claiming to be a person"。规则这部分Sparrow做得很细,此处不再展开,可参考原文的表格和附录。

Model

Sparrow的模型基于 Dialogue Prompted Chinchilla 70B (DPC),也采用prompt的方式来构建语言模型的上下文 (LM context),从而生成回复。

此context由如下几个部分构成:User, Agent, Search Query, Search Result。这种构造方法一看就很眼熟,与LaMDA非常类似:

Sparrow LM Context

即把用户输入与搜索Query和结果用prompt连在一起,让语言模型对回复进行补全。其中补全的策略是 Nucleus Sampling,搜索结果由Google提供。

数据收集

数据收集方式与 LaMDA, WebGPT 和 Blender Bot 3有许多相似之处。

Sparrow Rating UI

  • Per-turn response preference: 标注者需要标注一段对话中多个不同回复中最好的一个。UI如上图所示。此数据用于训练Preference Reward Model
  • Adversarial probing: 给标注者一个特定的规则,让他引导Sparrow进行一段对话,并打破这个规则。说白了就是让标注者“钓鱼执法”,引导模型说不好的话,而这恰恰是实际对话系统中很多用户恶意去做的事情。通过学习这些负例,从而让模型的回复更加安全。此数据用于训练Rule Reward Model

Sparrow Adversarial Probing


有意思的是,和InstructGPT一样,收集数据时找这些标注者非常挑,区别是前者是通过测试找表现优秀的,而Sparrow选受过良好教育的 :-) :

We restrict the participant pool to be UK-based native English speakers with a minimum education level of undergraduate degree.

DeepMind做事也很讲究,有一节Annotator well-being专门解释要付给标注者不错的报酬,同时还会通过一个问卷来监测标注者的心理状态:

All participants provided informed consent prior to completing tasks and were reimbursed for their time. It is our policy that researchers must pay workers/participants at least the living wage for their location. Because some of our rules refer to sensitive topics and could plausibly cause psychological or emotional harm to our annotators, we monitored rater well-being through a well-being survey.

Reward Model

如文首的架构图所示,Sparrow训练了两个Reward Model,都通过finetune Chinchilla 70B而来:

  • Preference Reward Model (Preference RM): 按人工标注偏好给回复打分
  • Rule Violation Reward Model (Rule RM): 估计在一段对话中Sparrow破坏规则的概率

以上所有的finetune任务都冻结了Chinchilla 70B的前64层transformer,而只微调最后的16层。

Rerank

Sparrow Reranking@8

训练好两个reward model之后,就可以通过rerank多个不同的回复选出最好的了。上图中说明了Sparrow Reranking@8是如何构成的:4个不需要evidence的回复; 2个Search Query,每个对应2个搜索结果,进而再生成4个需要evidence的回复。经过打分,选择分数最高的结果返回。

这个打分模型(the product of experts approach)有点意思,从公式里没有完全理解它的motivation:

Sparrow Reranking Formula

Supervised fine-tuning (SFT)

SFT模型与LaMDA一致,没有太多要说的,就是用之前收集到的对话数据用LM loss finetune Chinchilla模型。SFT的效果比DPC要好,用作下一步RL的基础。

Reinforcement learning

Sparrow采用 self-play (左右手互搏) 进行RL,即它既扮演用户(User)也扮演机器人(Agent):

We use a form of self-play, where during training the generated statement and the dialogue context form a new dialogue context for a later episode

Sparrow Reinforcement Learning

如图所示,在每个episode中,先从buffer中选一个对话上下文,然后生成模型回复。如果扮演的是用户(User)或Search Query,则只用Preference RM打分;如果扮演的是机器人(Agent),则同时优化Preference RM和Rule RM打分的目标。如果该回复可用并且超过了最低阈值,则将生成的回复加入buffer中,继续对话。

结果

Sparrow Result

结果自然是很好的,从左图来看,Reranking非常重要,在所有的结果上都显著优于基线。从右图可见,SFT和RL模型通过adversarial probing都比基线DPC模型显著降低了打破规则的对话比例。

Sparrow Chat

看上面的对话,可见Sparrow可以很好地使用evidence进行对话,并且可以遵守“Do not pretend to have a human identity”的规则。

Sparrow的实现在很多方面与LaMDA极其相似,甚至可以说思路完全相同,只是实现方法不同。区别在于它更关注于让模型向期望的方向进行对话,也就是更好地follow预定义的规则。而这个思路与InstructGPT提出的让模型更好与用户意图align是一致的。

文章有30多个作者,文末列出了每个作者的贡献,可见训练一个像样的对话系统是很有挑战的,是算法、工程、产品、标注等一系列工作的总和。