论文翻译-阿里小蜜,基于检索模型和生成模型相结合的聊天引擎

1、摘要

阿里小蜜是一款开放领域的聊天机器人引擎,他结合了IR(检索)模型与带有注意力机制的seq2seq生成模型。从效果上来讲,阿里小蜜的表现明显优于只使用某一种单一模型的情况。

2、介绍

近年来,聊天机器人技术发展非常迅速,比如微软小冰,苹果的siri,谷歌助手等产品层出不穷。与传统的app的按钮式交互不同,聊天机器人允许用户使用自然语言与app进行交互。

阿里小蜜是一款在电商领域的一款智能客服产品。目前阿里小蜜每天的服务量达到百万人次,而其中大多数的问题都是和业务相关的。但是仍然有大概5%的问题是闲聊的。为了提升用户体验,所以需要开发一款基于开放域的聊天机器人。

一般来说,用于开发聊天机器人的技术一般有两种:基于检索模型或者基于生成模型。给定一个问题IR模型会从问答知识库中检索最相近的问题,然后找出对应的答案。而生成模型的答案是由一个带有注意力机制的seq2seq模型来生成的。IR模型的缺点是无法处理“长尾”问题,导致答案检索失败。而生成模型最大的问题是生成前后不一致的答案,或者生成的答案毫无意义。

为了解决上述问题,我们计划将结合检索模型和生成模型来进行阿里小蜜的开发。对于一个特定的问题,我们首先使用检索模型检索出候选的答案,然后使用seq2seq rerank模型对问题进行排序,如果排名第一的问题的分值高于我们设定的阈值则返回该问题。否则则使用生成模型生成问题。如下图所示

图1 阿里小蜜技术架构

本论文主要包含下面内容:

  • 提出给予检索和生成混合模型的解决方案,来处理开放域聊天机器人的问题。
  • 进行了一系列的实验对混合模型进行评估,发现模型效果都优于单一的检索模型与单一的生成模型。
  • 与现有的一些机器人进行对比,证明阿里小蜜表现更优。
  • 阿里小蜜目前已经进入的了商用阶段

3、基于rerank 机制的 seq2seq模型

正如阿里小蜜技术架构图中展示的那样,我们从客户的线上聊天日志中抽取聊天知识库。在这个知识库的基础之上,开发了三个模型。

  • 检索模型
  • 生成模型
  • 排序模型

需要注意以下两点:

  1. 这三种模型都是基于单词的所以,我们首先需要对聊天语料进行分词处理。比如,单词作为IR模型的输入,同时生成模型与排序模型的输入则是词向量。这些词向量需要提前训练好,生成词向量的算法有很多,这里我们采用fasttext。
  2. 生成模型与排序模型是同构的seq2seq模型。排序模型主要负责对候选问答对进行排序,而生成模型主要是在无法在知识库中找到理想答案的时候生成一个答案。

给定一个问题q和一个阈值T,我们的方案可以描述如下

扫描二维码关注公众号,回复: 3866331 查看本文章
  1. 首先我们使用检索(IR)模型,获取候选的k个问答对
  2. 我们需要计算k个候选问答对的可信分数,,计算是由排序模型来实现的。
  3. 假设候选答案中最大分值表示为,如果该分值比我们设定的阈值T要大,则直接使用该答案r输出,否则则使用生成模型生成的答案r‘作为最终答案

3.1 问答知识库

采用阿里2016-1-01至2016-6-01的线上对话日志作为原始语料,需要对对话数据进行重构,将相邻的两个句子构成一组问答对。然后从中算选出哪些与业务相关或者包含业务关键词的对话。经过这一系列的工作最终得到9,164,834条问答对。

3.2 检索模型

检索模型主要用于在问答对中搜索出与原始问题最为相近的k个问题。为了实现这个功能,我们首先需要对语料库的问题进行分词处理。然后需要创建一个单词到问题的反向索引。当一个问题提出时,首先需要分词,然后去除停止词,扩展同义词,然后用这个新的集合来检索答案。这里实际问题与知识库中问题的相似度计算采用了BM25算法(Robertson et al., 2009
),然后将相似度最高的答案,作为最终结果输出。

3.3 生成模型

生成模型基于attentive Seq2Seq(Bahdanau et al., 2015)。假设   可以使用下面公式计算 在第i个位置出现的概率

                                             公式 1

在上面公式中

  • f是一个非线性函数,用于计算概率。
  • 是i-1位置输出的隐藏状态
  • 是一个上下文向量,这个向量是由输入序列的隐藏状态决定的,加入我们将输入的隐藏定义为 则 
  • 其中,是由对齐模型衡量的在输入的j个位置对在i-1个位置输出该单词的影响程度。(Bahdanau et al., 2015)下图展示了在i=3,m=4的模型状态。

我们采用GRU作为循环神经网络的模型(RNN)单元。关于模型有一些比较重要的事情需要说明一下:

  1. 桶化数据与单词填充。为了处理不同长度的问答对,我们将数据根据长度分成5组(5,5), (5,10), (10,15), (20,30),(45,60)用以适应不同长度的问答对。比如一个问题的长度是4,而答案的长度是8,那么他将被分到(5,10)这个组当中,然后需要使用_PAD对剩余的长度进行填充。
  2. 在采样数据上进行softmax,为了加快训练的速度,并没有在全部数据集上执行softmax操作,而是实现设定好的一些样本单词,这些单词包括(目标单词与512个随机单词)(Jean et al., 2014)
  3. beam search 解码器。在解码阶段使用beam search技术而不是贪婪匹配

3.4 排序模型

排序模型同样采用了attentive Seq2Seq模型,用于估算答案与实际问题的匹配分值。这里我们采用了平均可能性作为最终的评分函数,在评估阶段我们也尝试了交叉熵(inverse of averaged cross-entropy)和调和平均值(harmonic mean
)的形式,但表现都很差。

猜你喜欢

转载自blog.csdn.net/amao1998/article/details/83574667
今日推荐