/ Dialogue System  

The Design and Implementation of XiaoIce, an Empathetic Social Chatbot

小冰被设计成一个具有情感连接的人工智能伴侣,以满足人类交流、情感和社会归属感的需求。我们再系统设计中同时考虑了智商IQ和情商EQ,将人机社交聊天作为对马尔科夫决策过程的决策

小冰的主要设计目标是成为一个人工智能伴侣,与用户建立长期的情感联系。作为一个开放领域的社交机器人,小冰能够与人类用户建立长期联系,这不仅是小冰与早期社交聊天机器人的区别,也是小冰与苹果Siri,亚马逊Alexa,谷歌Assistant和微软小娜Cortana等人工智能会话个人助理的区别。

2.设计原则 Design Principle

智商->完成特定任务
情商->满足用户情感需求
个性->独特
IQ和EQ的结合是小冰系统设计的核心

2.1 IQ+EQ+个性Personality

  • IQ:知识和记忆建模、图像和自然语言理解、推理、生成和预测。这些是发展对话技能的基础,可以满足用户的特定需求,帮助用户完成特定的任务。
  • EQ:移情empathy与社交技能social skills
  • Personality:人格是指一个人独特性格的行为、认识和情感模式的特征集合。表现出一致的个性。

2.2 每次会话的对话轮数CPS(Conversation-turns Per Session)

CPS越大,社交聊天机器人参与度越好
注意要优化的是长期的参与度
任务完成技能可以有效完成任务,减少短期CPS,但这更适用于个人助理,而非情感陪伴

2.3 社交聊天->分层决策过程(Hierarchical Decision-Making)

将人机社交聊天作为一个决策过程,优化小冰的长期用户参与,用期望CPS衡量。e.g.促进对话模式多样性来维持用户兴趣,每个会话模式由处理特定类型会话段的技能管理。
分层:顶层-总体管理对话,选择不同技能处理不同聊天模式
底层:具体技能,选择“原语”(primitive)动作(回应)来生成对话段或完成任务。

environment:human users
state:dialog
依据分层对话策略可选择:skill(option)或response(primary action)
—->reward(来自user response),观测到新的状态,继续该循环,直到对话结束。
chatbot的设计目标:寻找最优策略和技能,最大化期望的CPS(reward)

3.系统架构 System Architecture

三层:用户体验层<->对话引擎层<->数据层

  • 用户体验:两种与用户交流的模式:全双工(基于语音流,用户和小冰可以同时说话)、轮流(基于消息,轮流交谈)。包括处理IO(用户输入、小冰响应)的组件,e.g.语音识别与合成、图像理解、文本规范化。
  • 对话引擎:对话管理器(跟踪对话状态,使用对话策略选择对话技能或核心聊天,来生成响应);移情计算(理解用户输入的内容content与移情方面empathetic aspects,如情感、意图、对主题的观点、背景和兴趣)。这反映了小冰的EQ,展示小冰的社交技巧,确保产生与小冰人格相匹配的人际反应。智商体现在特殊技能与核心对话。
  • 数据:文字-文字对或文字-图像对的会话数据、用于core chat和技能的非会话数据与知识图谱、用户和小冰的profile

4.对话引擎实现 Implementation of Conversation Engine

4.1 Dialogue Manager对话管理器

对话系统的中心控制器center controller。

4.1.1 Global State Tracker全局状态跟踪

维护一个working memory来追踪对话状态。在每个session的起初为空,然后保存每轮的用户和小冰的文本对话串、从文本中提取的实体和情感标签。working memery中的信息被编码为对话状态向量$s$

4.1.2 Dialogue Policy对话策略

HIERARCHICAL分层:顶层管理整个对话,每轮选择core chat或激活技能;低层每个技能一个,用于管理自己的对话段。通过迭代试错优化长期用户参与。

  1. 用户输入是文本:core chat, topic manager
  2. 用户输入是图片或视频:image commenting skill
  3. 特定输入和对话上下文触发task completion, deep engagement, content creation.

    4.1.3 主题管理 Topic Manager

    由两部分组成
  • 分类器classifier:决定是否切换。以下两种情况需要切换
    • core chat无法生成任何有效响应候选,只能使用编辑响应editorial response
    • 生成的响应只是简单重复用户输入或不含新信息
    • 用户输入变的乏味e.g. “OK”,”I see”,”go on”
  • 主题检索引擎topic retrieval engine:推荐新主题。依据以下几点,由boosted tree ranker生成
    • contextual relevance上下文相关度
    • freshness新鲜度
    • 个人兴趣
    • popularity流行度/受欢迎度
    • acceptance rate接受度

4.2 Empathetic Computing移情计算

反映小冰的EQ,建模人机对话中的情感方面。
给定用户输入$Q$,
考虑其上下文$C$并重写为上下文版本$Q_c$,
用查询移情向量query empathy vector $e_Q$编码用户感受和对话中的状态,
用回复移情向量response empathy vector $e_R$指定回复$R$中的移情方面。

对话状态向量$s=(Q_c, C, e_Q, e_R)$:

  • 表示移情计算模块的输出
  • Dialogue Policy部分的输入,用于选择技能;
  • 作为激活技能(如Core Chat)部分的输入,用于生成符合小冰人格的人际回复。

移情计算模块三个组件:

  1. Contextual Query Understanding(CQU)上下文查询理解
    CQU根据以下步骤,使用$C$中的上下文信息重写$Q$和$Q_c$
    • 命名实体识别:标记$Q$中提到的entity mention,链指到储存在state tracker中的working memory中的对应实体,或在working memory中保存新的实体。
    • 共指消解:将代词替换对对应实体名称
    • 语句补全:若$Q$不是完整的句子,使用上下文信息$C$补全
  2. User Understanding用户理解
    基于$Q_c$和$C$生成查询移情向量$e_Q$。$e_Q$中包含一个键值对列表,表示用户意图user intents、情感emotions、主题topics、观点opinion、用户性格user persona。这些键值对使用一组分类器生成:

    • 主题检测 标注用户是否关注同一主题,还是引入了新主题。主题集是预先编纂好的的。
    • 意图检测 标注$Q_c$,使用一种对话动作e.g.问候greet、请求request、通知inform等
    • 情感分析监测用户感情e.g.happy sad angry neural、以及感情如何演化e.g.happy->sad
    • 观点检测:用户对主题的反应,e.g.positive negative neural
    • 如果user id可用,根据用户画像profile生成用户人格向量,包含在$e_Q$中。e.g.性别、年龄、兴趣、职业、性格等
  3. Interpersonal Response Generation人际响应生成
    生成响应/回复移情向量$e_R$,该向量指明回复中生成的情感方面,且包含了小冰的人格。
    小冰通过跟踪由Topic Manager决定的同一个主题,共享用户的感受,并按指定的一致consistent和积极的方式进行响应。在$e_R$中,根据指定的意图、情感和观点等的值,以一致consistent和积极的方式作出反应,这些值是根据$e_Q$中的值使用一组启发式计算的。回应必须同时符合小冰的人格,人格的键值对(如年龄、性别、兴趣等)从预编译的小冰的profile中抽取。

4.3 Core Chat

Core Chat是小冰IQ和EQ的非常重要的组成部分,和移情计算一起提供基本的交流能力,接受文本输入,生成人际响应为输出。
包含两部分:通用聊天General Chat和域聊天Domain Chat。二者仅数据集不同,而引擎相同。以General Chat为例

General Chat是数据驱动的回复生成系统。接纳输入:对话状态$s = (Q_c, C, e_Q, e_R)$,分两阶段输出响应$R$: 响应候选生成、排序。相应候选从数据库中检索得到。数据库由人类生成的对话文本组成的,或由神经生成模型快速生成。(or generated on the fly by a neural generative model)
以下介绍三个候选生成器和一个候选排序器

Retrieval-Based Generator using Paired Data使用成对数据的基于检索的生成器

成对数据来源:①互联网上的人类交流数据(e.g.社交网络、公共论坛、公告板、新闻评论)②小冰和用户交流产生的人机对话数据
为了控制数据集质量:

  1. 基于pair抽取来源的对话上下文、网页元数据和网站、用户profile,使用移情计算模块,将pair转换为tuple$(Q_c, R, e_Q, e_R)$
  2. 基于tuples过滤pairs,保留符合小冰人格的移情响应的对话对
  3. 移除包含个人识别信息(PII)、混乱的代码、不适当的内容、拼写错误等的pairs。

过滤得到的pairs使用Lucene索引。运行时,使用$s$中的$Q_c$作为query,使用关键词搜索和基于机器学习表示成对数据集的语义搜索,检索400条响应候选。尽管从配对数据集中检索到的候选响应质量很高,但覆盖率coverage很低,因为数据集中不包括论坛上许多新的或不太常讨论的主题。为了增加覆盖率,我们引入了下面描述的另外两个候选生成器。

Neural Response Generator神经响应生成器

使用配对数据集训练来模仿人类交流,可以生成任意主题(包含人类交流数据中没有的)。
基于神经模型的生成器与基于检索的生成器互补:
neural-model-based generator: robustness, high coverage
retrieval-based generator: 对流行主题的high-quality
小冰使用了 用于对话响应生成的seq2seq框架
基于GRU-RNN,与Speraker-Addressee相似
输入$(Q_c, e_Q, e_R)$,期望预测用$e_R$建模的小冰(addressee)如何响应用$e_Q$建模的用户(speaker)产生的查询query $Q_c$

  1. 线性组合$e_Q$和$e_R$(query and response empathy vectors)得到一个交互表示$v \in \mathbb{R}^d$,尝试建模小冰对用户的交互风格。$W_Q,W_R\in\mathbb{R}^{k*d},\sigma$表示sigmoid函数。
  2. source RNN编码用户查询$Q_c$到一个隐状态向量序列中,向量随后输入target RNN,逐词生成响应$R$,每条响应以EOS结尾。
  3. 用beam search生成20条候选。

在target RNN一侧,在每个时间步$t$,隐状态$h_t$由①前一个时间步的隐状态$h_{t-1}$、②当前时间步的词嵌入向量$e_t$和③$v$ 组合而成。通过这种方式,在每一个步骤中,移情信息都会被注入到隐藏层中,以帮助在整个生成过程中产生符合小冰人格的人际响应。
模型的详细说明见附录A。

Retrieval-Based Generator using Unaired Data使用非成对数据的基于检索的生成器

除了上述两个响应生成器使用的会话(或成对)数据之外,还有更高质量和更大数量的非会话(或未配对)数据,可用于提高响应的质量和覆盖范围。e.g.公开演讲、新闻文章和报道中的引用。这些句子被视为候选响应$R$.因为我们知道这些句子的作者,所以我们计算每个句子的移情向量$e_R$。与成对数据类似的数据过滤流水线用于保留且仅保留符合小冰人格的响应$(R,e_R)。$
这些不成对的数据也用Lucene索引。不同于成对数据集,运行时我们需要将查询query $Q_c$扩展到包含额外主题,以避免检索到简单重复用户说过的话的响应。使用知识图谱KG对查询进行扩展。KG包含$head-relation-tail$的三元组集合$(h,r,t)$,通过加入成对数据和Microsoft Satori(微软的知识图谱)构建而成。当且仅当成对数据集中对话对(conversation pairs)的数量大于预先设定的阈值时,Satori三元组$(h,r,t)$包含到小冰的KG中。成对数据集:$h$出现在$Q_c$中,$t$出现在$R$中。这样的三元组包含了人们经常在同一场交流中提及的两个相关的话题。e.g.(Beijing, Great Wall),(Einstein, Relativity),(Quantum Physics, Schrodinger’s cat).
使用非配对数据及和小冰KG生成候选响应的过程:

  1. 识别上下文用户查询$Q_c$中的话题
  2. 对每一个话题,从KG中检索二十个最相关的话题。这些话题依据相关度relevance,使用用人工标注数据训练的boosted tree ranker打分。
  3. 结合$Q_c$中的主题和KG中得到的相关话题,形成query,使用query从非配对数据集中检索最多400条最相关句子,作为响应候选。

此生成器是对上述其他两个生成器的补充。质量较低、涵盖范围更广。与通常生成形式良好但响应较短的神经响应生成器相比,未配对数据的候选对象更长,内容更有用。

Response Candidate Ranker响应候选排序器

三个生成器生成的响应使用boosted tree ranker聚合排序。响应从排序分数高于预设阈值的候选中随机选择
Given 对话状态$s=(Q_c,C,e_Q,e_R)$,基于以下四类特征给每个响应候选$R’$一个排序分数:

  1. 局部耦合特征:好的候选应在语义上与用户输入$Q_c$一致或相关。使用一组在人类交流对human conversation pairs上训练的DSSMs计算$R’$和$Q_c$之间的聚合分数。
  2. 全局耦合特征:好的候选应在语义上与$Q_c$和$C$契合。使用一组用人类对话会话human dialogue sessions训练的DSSMs计算$R’$和$(Q_c,C)$之间的聚合分数coherence socres.因为聚合特征使用了全局上下文信息$C$,当$Q_c$是没有上下文、很难检测主题,平淡乏味bland的query时e.g.”OK”,”why”,”I don’t know”,格外有用。
  3. 移情匹配特征:好的候选应该是符合小冰人格移情回复。假设小冰选择$R’$来响应给定的上下文$(Q_c,C)$,使用移情计算模块为$R’$计算响应移情向量response empathy vector,$e_{R’}$,然后通过比较 $e_{R’}$和给定的、编码了期望响应expected response的移情特征的$e_R$,计算一组移情匹配特征empathy matching features。
    移情计算模块:将$R’$当做query,$(Q_c,C)$当做上下文,使用上下文查询理解contextual query understand和用户理解user understanding组件来计算查询移情向量query empathy vector $e_{R’}$
  4. 检索匹配特征:这些特征额仅应用于成对数据集生成的候选。计算$Q_c$和检索查询-响应对(retrived query-response pairs)的query端的匹配分数,在词语级(例如BM25和TFIDF分数)和语义级(例如DSSM分数)均要计算。
    排序器在对话-状态-响应对dialogue-state-pairs$(s,R)$上训练。pair有三种标记等级:
  • 0:响应没有移情或与query不是很相关。可能导致对话终止。
  • 1:响应可接受,与query相关。可能帮助对话继续。
  • 2:响应是移情的、人际的interpersonal,使用户感到快乐兴奋。可能驱动对话。
    DSSM:深度结构语义模型Deep Structured Semantic Models/深度语义相似模型Deep Semantic Similarity Model.是用于衡量输入对$(x,y)$语义相似度的深度学习模型。在本文中,$(x,y)$是查询-候选-响应对query-candidate-response pair$(Q_c,C)$

    Editorial Response编辑响应

    如果候选生成器和响应排序器由于各种原因(例如不在索引中not-in-index、模型失败model failure、执行超时或输入查询包含不正确内容),导致未能生成任何有效响应,则选择编辑响应。为了让对话继续下去,
    编辑响应应该:有同理心empathetic;不应该:安全但温和safe but bland
    e.g.“嗯,很难说。你怎么想 Hmmm, difficult to say. What do you think?”√
    “让我们谈点别的 Let us talk about something else.” √
    “我不知道 I don’t know.”×
    “我还在学习回答你的问题 I am still learning to answer your question.”×

4.4 对话技巧Dialogue Skills

4.4.1 Image Commenting 图片评论

图像评论不是为了正确认知描述图像,而是生成反映个人情感、态度、立场的移情评论。

4.4.2 Content Creation 内容创造

4.4.3 Deep Engagement 深度参与

深度参与技能旨在通过针对特定主题和设置满足用户的特定情感和智能需求,从而提高用户的长期参与度。这些技能可以在两个维度上分为不同系列:IQ 到 EQ,私人一对一 到 小组讨论

  • 满足用户的智能或情感需求:小冰分享自己在不同的IQ主题(e.g.数学、历史、食物、旅游、名人)上的兴趣、经历、知识。

4.4.4 Task Completion 任务完成

Challenges

  1. 同一模型框架
  2. 目标导向、有充足理由的对话 grounded
  3. 积极主动proactive的个人助理:比传统智能个人助手更准确地认知用户兴趣和意图。
  4. 人类水平智能:有认知有意识的AI。移情计算、知识和记忆建模、可解释机器职能、常识推理、神经符号推理、跨媒体连续流AI、建模反映在人类需求中的感情或内在回报
  5. 道德

    Appendix A: GRU-RNN Based Response Generator

    与speaker-addressee模型类似。
    给定输入$(Q_c,e_Q,e_R)$,我们希望预测用$e_R$建模小冰(Addressee)如何响应$e_Q$建模的speaker模型产生的$Q_c$。
    通过线性组合查询移情向量$e_Q$和响应移情向量$e_R$(query and response empathy vectors),得到一个交互表示$v \in \mathbb{R}^d$,尝试建模小冰对用户(speaker)的交互风格。其中$W_Q,W_R\in\mathbb{R}^{k*d},\sigma$表示sigmoid函数。
    使用source RNN将$Q_c$编码到向量表示$h_Q$中。
    在target RNN侧的每一个事件步$t$,隐状态$h_t$由①前一个时间步的隐状态$h_{t-1}$、②当前时间步的词嵌入向量$e_t$和③$v$ 组合而成。通过这种方式,在每一个步骤中,移情信息都会被注入到隐藏层中,以帮助在整个生成过程中产生符合小冰人格的人际响应。
    $u_t$和$z_t$分别表示时间步$t$时,GRU的更新门update和重置门reset.计算$t$时间步的隐状态$h_t$:其中$W_u,W_z,W_l \in \mathbb{R}^{3d*d}$是机器学习得到的矩阵,$\circ$表示元素乘。
    RNN模型定义了$R$中下一个token的概率,用于使用softmax函数预测。其中$f(h_{t-1},e_{r_t},v)$表示$h_{t-1},e_{r_t},v$之间的激活函数,$h_{t-1}$是RNN在$t-1$时间步的输出的表示。每个响应以特殊的表示句子结束的符号EOS结尾。
    响应生成模型参数$\theta=(W_Q,W_R,W_u,W_z,W_l)$通过在训练数据上最大化对数似然训练,使用随机梯度下降法SGD得到。