【论文阅读】微软小冰为何如此优秀(发表于2019ACM会议,在2019MLA上展示)

2019年1月,微软和早稻田大学在ACM会议上发表了关于微软小冰的论文。
不得不说,产品级别的聊天机器人所用的技术确实很棒。下面就简单介绍一下这篇文章吧。

应用背景

相似的问题而会产生不一样态度的回复。给人的感受是不一样的。而 PersonaChat 智能对话数据集中,有一半以上的样本是带有情绪的。如何让聊天机器人在和用户的对话中聊天显得更加自然,将对话的态度考虑进去,给聊天机器人赋予个性。
对于同一个相似的问题,因为回答的情绪的极性不同,所以产生的回答也不一样

亮点

在以往版本的聊天机器人中,意图检测(即去了解用户回复的那句话的意思是什么)和极性检测(即去了解用户回复的话语的情绪的极性是什么样的)是分开的两个部分,通常是用不同的方式分开处理。

(1)原先分开训练的方法不是态度检测的最佳解决方案,因为在每个子任务中实现高性能并不代表着二者是匹配的。所以本文提到生成意图-极性对的数据处理方法,将二者综合起来,送往网络进行端到端的训练。

(2)本文中的聊天机器人是基于搜索的,所以他们也提出了一种回复排序的方法,对每种意图产生的可能的回复基于检测到的话语极性进行打分排序,进而生成更好的回复方式。

(3)所用网络在训练的时候将问题和回答一起作为训练的样本。因为我们最后只需要得到一个带有情绪的回答,所以如果直接用回答作为训练集很难训练,因为没有上下文语境,就如上面的表格中所示。一个问题对应的五个回答,很难通过这五个回答来提取出合适的情绪。而加入了问题,其中所带有的消极情感就可能会更好地生成带情绪的回答。

具体方法

网络结构
目标:在一轮对话(问题+回答)中提取一对意图+情绪的数组。训练的样本是基于微博和豆瓣的一轮对话的语料。
主要分为两个部分,attitude detection和态度的重排列

1. attitude detection:

(1) 词嵌入:将问题和回答的单词和短语都转化为向量的形式,并用一个embedding矩阵进行一次由高维独热码的降维,将问题和回答都作为输入送给网络。

(2) 经过两层双向的LSTM:第一层的输入是分开的,仅仅针对问题本身或回答本身,建立句子内部单词的关联;第二层是问题与回答经过LSTM进行关联,并通过注意力机制对称地将关注了问题的回答向量(query-aware response representation)以及关注了回答的问题向量(response-aware query representation)输出。

(3) 意图提取:对问题和回答的输出结果拼接起来,(图中意思是拼接后的)采用在阅读理解和文本摘要中广泛使用的pointer network的方法,是一种结合了seq2seq和attention机制的一种特殊注意力机制的神经网络。这是一种输出依赖输入的方法,Pointer Networks特别适合用来直接复制输入序列中的某些元素给输出序列。这里相当于对问题和回答进行了摘要,提取出里面重要的话语,作为意图识别的起始点和终止点。这里的Pointer Networks用了只考虑两个时间步的GRU。即起始点为第一个时间步内注意力权重最大的那个单词。终止点为第二个时间步内注意力权重最大的那个单词。个人理解:意图识别也就是提取出来一个关键词。

(4) 情绪提取:将第二层LSTM的输出的问题-回答结果、经过注意力机制之后和经过意图提取后的相加结果拼接起来(这里没看懂拼接方式,因为和卷积核的描述有些不一致)。视为单通道的输入送往卷积神经网络进行特征提取,回答的标签情绪已知,进行训练。
最后得到的一个输出为:
在这里插入图片描述
其中第一部分为回答的极性,第二部分为检测的意图的开始,第三部分为检测的意图的结尾。

2. 态度的重排列

人为设置态度表文件,也就是意图-情绪的参照集合。即态度表文件中怎样回答,以及对应回答的情绪都可以自己决定。也就是说在这个态度表中,设置了回答的应有的个性。

随后,将通过网络检测到的意图和极性与态度表中的组合进行对比,并进行一个打分:会出现三种情况:1.都符合;2.没有该意图;3.有意图但是情绪不对。对于1:得分增加;对于3:得分降低;对于2:没说。

在训练的过程中,我们的语料库是极其庞大的,也就是说一个意图可能会有很多不同的回答,这些回答极性都不一样。一开始每个回答有一个分数,这个分数会随着与态度表中的匹配程度不同而发生变化。越匹配则分数越高。所以之后优先出现的答案是符合态度表期望的那些回答。
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值