提纲
1 简介
2 BlenderBot 3
3 总结
参考文献
1 简介
BlenderBot 3是Meta在22年8月份发布的一款 **具备在线搜索跟长期记忆能力的开放域对话机器人** 。BlenderBot3是一个庞大的系统,包括一系列模块,不同模块负责不同功能,通过预设置好的流水线式依次执行,紧密衔接,生成最终的回复。另外,通过系统的持续学习,BlenderBot 3可以通过用户的反馈来finetune系统当中的特定模块,进而不断进行优化。
2 BlenderBot 3
BlenderBot 3的核心模型是一个transformer模型,最大的模型参数量是175B,从预训练模型OPT初始化得到,再在其他数据上做进一步的finetune得到。
BlenderBot 3系统包含多个相互依赖的模块,具体介绍见下图, 所有的模块(除了搜索模块Internet search)都共用同一个语言模型,通过在模型输入前插入对应的控制代码来告诉模型应该执行特定模块的功能。 下面简单介绍不同模块的功能。
Internet search decision:
给定最近一轮对话上下文,判断是否需要用到在线搜索功能。
Generate internet search query: 给定完整的上文,生成一个用于搜索引擎的搜索query。
Internet search: 不需要语言模型执行,而是通过调用一个真实的搜索引擎返回N个相关的搜索文档。
Generate knowledge response:
给定对话上文跟搜索引擎返回的结果,生成对应的知识性回复 knowledge response。
Extract relevant entity: 给定对话上文,抽取其中对应的实体。
Generate a long-term memory: 给定最近一轮对话内容,输出对应的摘要并存储到长期记忆模块。
Long-term memory access decision: 给定最近一轮对话内容跟长期记忆模块,判断是否需要读取长期记忆内容。
Access long-term memory: 给定全部对话内容跟长期机器模块,输出当前记忆recalled memory。
Generate dialogue response: 给定全部对话内容,知识性回复(可选),当前记忆(可选),通过不同的token拼接到一起,作为语言模型的输入,由语言模型生成最终回复内容。
图1: BlenderBot 3模块介绍
BlenderBot 3整个执行流程如下,
a) 给定最新一轮对话内容,让模型判断是否需要在线搜索功能(Internet search decision)或者长期记忆功能(Long-term memory access decision)。
b) 如果需要在线搜索功能,那么由模块Generate internet search query生成对应的检索query,并调用搜索引擎Internet search返回K个相关文档,然后利用模块Generate knowledge response生成对应的知识性回复。
c) 如果需要用到长期记忆功能,那么通过模块Access long-term memory得到当前机器recalled memory。
d) 如果不用到在线搜索跟长期记忆功能,那么通过模块Extract relevant entity会从历史对话中抽取得到一个实体。
e) 将前面三步里的模块输出的结果跟对话上文拼接到一起,利用模块Generate dialogue response生成最终的回复结果。
图2: BlenderBot 3流程图
**为了实现不同模块共用同一个语言模型,BlenderBot 3为不同模块设计了不同的finetune任务,不同任务通过在模型输入前插入对应的控制编码来实现,其实就是设置不同的prompt。** 在对话任务上finetune的同时,为例防止过拟合跟保有语言模型的能力,语言模型还继续之前的预训练任务。另外,BlenderBot 3设计了一个safety mechanisms,来避免不安全的生成结果。
另外, **BlenderBot3通过持续学习让代理机器人不断从用户的反馈中学习** ,具体的反馈方式见下图,包括对机器人回复的赞/踩,对不喜欢机器人信息的理由选择等等,利用搜集到的用户反馈对特定模块做进一步训练,可以改善对话结果。
图3: BlenderBot3 的用户反馈形式
3 总结
**Meta提出的BlenderBot 3,整个系统由多个人工设计的子模块组成,分别负责不同的技能,都需要针对性的训练,通过追求各个子模块的最优,从而构成一个相对完整的对话系统。这种需要人工设计各个模块,再进行整合的方式,是之前大家设计对话系统的一个通用思路,把对话需要用到的所有能力通过不同子模块构建,然后再整合起来。在思路上跟前几章提及的LaMDA, InstructGPT, Sparrow有明显的区别,这三者不拘泥于局部,与其精心设计对话的多个模块并加以训练,不如直接学习用户的整体反馈,只追求整体的合理性,最终的效果也能跟真实的用户习惯对齐。**
参考文献
1.(2022) BlenderBot 3: a deployed conversational agent that continually∗ learns to responsibly engage