专栏首页Pytorch实践微软小冰的设计与实现
原创

微软小冰的设计与实现

小冰设计相关的论文多年来一直没有对外公布,得益于近几年小冰的快速发展,在对话领域形成技术壁垒。与此同时拥有大量的用户和数据,我们才有幸看到如下的文章,开放了一些系统框架和技术细节。

论文地址 https://arxiv.org/abs/1812.08989

本篇文章将简单介绍一下论文细节,给大家进行一下技术普及。

1. 微软小冰的发展历程

6代小冰的进化史

从上表格中,值得我们关注的是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)食物推荐

总的来说,小冰的设计很为复杂、再加上小冰当前过亿的数据,在对话领域已经形成了壁垒,即使开放了设计框架,其它公司在短期内也很难进行复制。另外吐槽一下,这样的对话系统人工还是要大于智能的,数据比模型重要,人工规则比什么强化学习的policy靠谱多了。但人工越是干预,系统越是难以演化,所以后期的发展发现无疑是自动化,强化学习的统一框架,加上各类深度学习模型做语义表示、意图分类、对话决策等。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 迁移学习在自然语言处理领域的应用

    迁移学习近年来在图形领域中得到了快速的发展,主要在于某些特定的领域不具备足够的数据,不能让深度模型学习的很好,需要从其它领域训练好的模型迁移过来,...

    CodeInHand
  • 迁移学习在自然语言处理领域的应用

           迁移学习近年来在图形领域中得到了快速的发展,主要在于某些特定的领域不具备足够的数据,不能让深度模型学习的很好,需要从其它领域训练好的模型迁移过来,...

    CodeInHand
  • 人机对话系统回复质量的自动化评估

    CodeInHand
  • 医学图像处理案例(十八)——肺部血管分割案例

    在前面的文章中,已经分享过肺分割案例和脑血管分割案例。有朋友向我提出是否可以对肺部血管进行分割,并让我分享案例教程。那么今天我将分享人体肺部血管分割并生成三维模...

    用户7498388
  • Python计算机二级考试指南

    6. 了解Python计算生态在以下方面(不限于)的主要第三方库名称:网络爬虫、数据分析、数据可视化、机器学习、Web开发等。

    乐心湖
  • 信息论III:寻找序列化的极限

    来自【奇怪的知识】系列的第三篇,承接上文《最优二叉树与Huffman编码》的第1~第5章,本文从第6章开始。

    Jean
  • 腾讯云服务器CVM+CentOS,部署LAMP环境快速搭建WordPress博客

    基于腾讯云服务器CVM+ CentOS,部署LAMP环境快速搭建WordPress个人博客。

    就要上云
  • flume简介

    Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据;同...

    用户2936342
  • bootstrap实战 作品展示站点

    用户5760343
  • CentOS 安装部署 Yapi

    之前自己部署过 easy-mock,还专门整了篇博客 <Windows 本地安装部署 Easy Mock>,但现在大搜车已经两年多没有对 easy-mock 进...

    前端下午茶

扫码关注云+社区

领取腾讯云代金券