小冰设计相关的论文多年来一直没有对外公布,得益于近几年小冰的快速发展,在对话领域形成技术壁垒。与此同时拥有大量的用户和数据,我们才有幸看到如下的文章,开放了一些系统框架和技术细节。
本篇文章将简单介绍一下论文细节,给大家进行一下技术普及。
1. 微软小冰的发展历程
从上表格中,值得我们关注的是2017年暑假发布的第五代小冰,支持了开放领域的全双工交互、加入了神经网络生成模型;2018年暑假,小冰集成了情感(同理心)计算模块、并在大量IoT设备部署。用户与小冰的聊天对话轮数也由5轮逐步演化为23轮,可见小冰对话能力大幅度提升。
2. 设计原则
小冰的设计原则主要包括两个部分:IQ和EQ。既要让聊天机器人有一定的智力,又要让它有一定的情感。
(1)IQ能力,主要体现在小冰具有知识、记忆、能对图片/语言理解能力、推理能力以及预测能力。IQ的实现主要是通过平台的一些技能(dialugue skills)实现的,用于帮助用户完成特定的任务,例如查天气、查航班等。
(2)EQ能力,主要体现在同理心和社交技巧,同理心是指聊天机器人能理解用户的情感、情绪波动、情感需求等;社交技巧就是,能够鼓励用户、满足用户兴趣、情感能和用户保持一致(不能有悖于用户情绪)等。
当然,除了上述两种能力,小冰的设计还有很重要的设计准则,那就是个性化,即它是一个完整独立的人,具有一致的个性,小冰目前设定的个性为18岁的女孩。
小冰的设计目标是增长用户与小冰交互的次数,而IQ能力越强,交互次数越少(完成任务的速度越快,例如查天气),所以小冰会增加情感模块,加深与用户之间的羁绊。
3. 系统框架
微软小冰的系统框架主要分为三层:用户层、控制层、数据层。
(1)用户层主要是提供用户接口,便于第三方接入系统,支持全双工的语音接入和基于文本(或图片)的消息接入方式;
(2)控制层主要是对话引擎的实现,包括闲聊、技能、同理心计算模块、对话管理模块四个主要的部分;
(3)数据层主要是包括一些对话引擎需要使用的数据资源,包括用户信息、小冰自身信息、主题索引、QA pair数据、高质量的不成对的文本数据、知识图谱等。
(4)对话管理模块主要包括,对话状态跟踪以及对话策略。对话状态跟踪一般是解决多轮对话场景下的问题,对话策略一般是管理走哪个对话技能、或者在哪个对话技能内部系统根据当前状态要做出怎样的决策等。
4. 实现细节
这里我们自底向上看一下各个模块的实现细节。
4.1 对话管理模块的实现
对话管理模块包括对话跟踪和对话策略
(1)对话跟踪
对话跟踪主要是记录用户与小冰的每一轮对话、对话中的实体信息、对话中用户的情绪/情感信息等。
(2)对话策略
小冰的对话策略policy分为两种,top-level policy主要用于判断是用户query是走core chat模块还是skills模块,或者具体是哪个skill。而low-level policy是技能内部的policy,主要是技能内部如何进行决策。需要说明的一点是policy部分包括Topic manager,主要用于检测是否聊天主题发生了变化。
Topic manager包括两个部分:一个分类器用于判断是否需要切换主题;一个搜索引擎,用于检索相关的新主题。主题的选取满足一些设定属性,例如相关性、热度、用户兴趣等多个角度,此处使用的是增强树(boosted tree ranker)排序模型。
4.2 同理心计算模块
同理心的计算模块主要包括三个部分:用户理解、社交技巧、小冰的个性。
同理心计算模块的输出主要包括四个向量,具体如下:
其中Qc是对上下文理解后的contextual query向量输出,基于上下文的query理解主要包括三部分:命名实体识别、指代消解、句子补充等。具体如下:
C表示上下文、eQ表示query的情感向量,eR表示Response的情感向量(具体是一些key-value pair,详情见论文)。
4.3 聊天模块core chat
core chat主要包括两个部分:通用闲聊和特定领域的闲聊。二者实现的技术细节相同,只是使用的数据不同。
实现步骤也分两步:(1)产生回复的候选集合;(2)对候选集合进行重排序,得到最佳回复
(1)产生候选集合的方法
检索式回复,通过成对的QA pair数据进行语义建模,搜索得到最相似的回复,小冰目前有300亿 QA pair,吓人= =;
搜索式回复,通过质量较好的文本数据(非成对QA pair数据),计算相关度用于回复;
生成式回复,通过seq2seq模型进行回复生成。生成模型的结构如下
这里需要说明一点,其实生成式模型很难实际使用,原因在于很容易产生不合理的句子。所以候选产生时,其它检索或搜索方式都是产生了400候选,而生成式却只产生了20候选。
4.4 技能模块skills
对话技能有很多部分,例如查天气、写诗、图片评论等。下面列举几个例子进行说明。
(1)image caption
类似检索对话,先对图片进行表示,再计算相似度。
(2)写诗
(3)食物推荐