前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >微软小冰的设计与实现

微软小冰的设计与实现

原创
作者头像
CodeInHand
发布2019-01-19 19:31:33
2.1K0
发布2019-01-19 19:31:33
举报
文章被收录于专栏:Pytorch实践Pytorch实践

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

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

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

1. 微软小冰的发展历程

6代小冰的进化史
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靠谱多了。但人工越是干预,系统越是难以演化,所以后期的发展发现无疑是自动化,强化学习的统一框架,加上各类深度学习模型做语义表示、意图分类、对话决策等。

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 微软小冰的发展历程
  • 2. 设计原则
  • 3. 系统框架
  • 4. 实现细节
    • 4.1 对话管理模块的实现
      • 4.2 同理心计算模块
        • 4.3 聊天模块core chat
          • 4.4 技能模块skills
          • 总的来说,小冰的设计很为复杂、再加上小冰当前过亿的数据,在对话领域已经形成了壁垒,即使开放了设计框架,其它公司在短期内也很难进行复制。另外吐槽一下,这样的对话系统人工还是要大于智能的,数据比模型重要,人工规则比什么强化学习的policy靠谱多了。但人工越是干预,系统越是难以演化,所以后期的发展发现无疑是自动化,强化学习的统一框架,加上各类深度学习模型做语义表示、意图分类、对话决策等。
          相关产品与服务
          腾讯智能对话平台
          腾讯智能对话平台(Tencent Bot Platform,TBP)专注于“对话即服务”的愿景,全面开放腾讯对话系统核心技术,为大型企业客户、开发者和生态合作伙伴提供开发平台和机器人中间件能力,实现便捷、低成本构建人机对话体验和高效、多样化赋能行业。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档