开域聊天机器人技术介绍(现实篇)

2020 年 6 月 23 日 AINLP

微软小冰是最“成功”的开域聊天机器人,应该也是跟最多人聊过天的机器人吧,它的架构和技术水平也基本可以认为是工业界的SOTA。不论是百度小米阿里toC的音箱,还是爱因互动等toB企业为客户定制的商用对话机器人,内部使用的技术架构都和小冰类似。当然,架构高度雷同的原因并不是其他企业都参考了小冰的架构设计,而是这套技术框架是实用聊天机器人目前唯一可行的架构。接下来我们就以小冰为例来细说目前实用聊天机器人使用的架构和技术。


本文以下内容主要参考小冰团队发表的这篇文章:“The Design and Implementation of XiaoIce, an Empathetic Social Chatbot, Li Zhou et al., Microsoft”。

小冰的这篇文章是18年12月份放出来的,文章把对话机器人的构建思路和小冰的整体结构都讲的非常清楚。按照这个流程就可以自己从0开始构建一个“工业级”对话机器人。

小冰的设计理念是让机器人具备 IQ + EQ + Personality的能力。

  • IQ就是智商,指能做很多事,有很多技能。

  • EQ是情商,主要指对话答复要考虑到对方的情绪和兴趣,也即常说的“会聊天”。用户难过就要安慰鼓励他,高兴就要陪着高兴。

  • Personality是指小冰的答复要符合小冰的人设。小冰的人设是可靠、有同情心、有爱心、有幽默感的18岁少女。所以她说的话不能偏离这个人设。

小冰的优化目标是用户长时间段内的session对话轮次:Conversation-turns Per Session (CPS) 。优化过程会使用增强学习EE策略,探索已知好的策略的同时,也会去尝试未知效果的策略。

数据统计

  • 2014年5月发布

  • 使用情况

    • 至2018年5月:使用历史包含了 300亿个qr对

    • 至2018年7月:6.6亿用户

  • 小冰已发布了 230 个技能

  • 覆盖大概 80 个IoT设备,涉及约 300 个场景

  • 最长聊天记录

整体框架

小冰的能力包含两大块:核心闲聊(Core Chat) 和各类技能(Skills)。核心闲聊就是一般的闲聊(开域聊天)。而技能是小冰在某些方面的能力,如天气咨询、讲笑话、看图作诗等等。整个系统结构如下图:

上面的图看不出系统整体流程,所以我又重画了一个:

其中DM是对话管理模块,而IQ则是小冰的各种技能库。DM决定当前query交给IQ中的哪个技能处理,对应的技能产生答复返回给用户。

这个结构和爱因的 DeepBot 架构(见下图)是类似的。都有一个总控(DM vs RouteBot)决定把当前对话分配给哪个(些)技能,技能也都采用了可插拔的设计。

DeepBot架构稍微复杂灵活一些。DeepBot中每次query可以并行由多个技能响应,也可以串行循环被多个技能响应。技能能够更新全局的对话状态,保证对话状态在不同技能之间共用流动。DeepBot流程前面的问题分析模块也会对用户query做更细致的分析。

但小冰的闲聊技能比爱因的闲聊技能(Chitchat-Bot)强大很多。这也是由于小冰和爱因要解决的对话问题截然不同所导致的。

对话管理(Dialogue Manager)

当收到用户的对话信息后,系统会经过一个对话管理的模块,对话管理模块有两个功能:状态追踪模块(Global State Tracker) 更新系统状态 s对话策略模块(Dialogue Policy) 依据更新后的对话状态来决定接下来的策略 π(s),也即决定这个信息是交由核心闲聊还是某个技能来回答。激活某个功能后,这个功能也会有自己的对话策略或者流程,来最终决定返回什么信息作为回复。

这是典型的对话管理模块的结构,常在任务型对话机器人中被使用和强调。

对话状态追踪

对话状态 s由四部分组成: