【论文阅读】TripleNet: 用于多轮对话回复选择的三重注意力网络

TripleNet: Triple Attention Network for Multi-Turn Response Selection in Retrieval-based Chatbots

  • 一、简介
    • 背景
    • 贡献
  • 二、方法
    • 1. 任务
    • 2. 模型架构
    • 3. 分层表示
    • 4. Triple Attention
    • 5. Triple匹配与预测
  • 三、实验
    • 1、数据集:
    • 2、评价指标:
    • 3、实验设置:
    • 4、实验结果:
      • 消融实验:
      • 注意力可视化(单词级别)
  • 结论


【论文阅读】TripleNet: 用于多轮对话回复选择的三重注意力网络_第1张图片


一、简介

背景

建立人机对话系统是人工智能领域最具挑战性的课题之一。现有的对话系统构建工作主要分为两类:

  1. 基于检索的方法,从海量存储库中检索多个候选响应,并从中选择最佳的作为系统响应。
  2. 基于生成的方法,使用编码器-解码器框架生成响应,类似于机器翻译。

贡献

本文基于检索,研究了多轮对话的回复选择:

  1. 多轮对话中不同话语的重要性通常取决于当前查询的选择,所以使用triple attention来建模三元输入triple(也就是后文提到的triple),而不是传统的,并表示上下文、查询和候选回复之间的潜在依赖关系。
  2. 提出了一种hierarchical representation
    module
    层次表征模型,实现从字符级到上下文级的完整会话建模(字符级、词级、话语级、上下文级)

注:文中将等待回复的最后一条消息定义为“查询”(query),将包含查询的会话历史定义为“上下文”(context),将上下文中的每一条消息定义为“话语”(utterance)。


二、方法

1. 任务

给定上下文C、当前查询Q和候选回复R,建立函数g(C,Q,R)预测候选回复为正确回复的概率,而上下文中的信息由上下文、话语、词、字符四个层次构成。
【论文阅读】TripleNet: 用于多轮对话回复选择的三重注意力网络_第2张图片

2. 模型架构

模型自底向上,将计算从字符级组织到上下文级。在每一层中,首先使用hierarchical representation 层次表征模块来构造上下文、回复和查询的表示。然后应用triple attention三重注意机制对表征进行更新。最后,以回复为中心,对它们进行匹配,并融合结果进行预测。
【论文阅读】TripleNet: 用于多轮对话回复选择的三重注意力网络_第3张图片

  • Char Level字符级,将卷积神经网络应用于每个单词的嵌入矩阵,通过卷积和最大池化操作产生单词的嵌入作为字符级表示。
  • Word Level词级,使用一个共享的LSTM层来获得每个词的词级嵌入。
  • Utterance Level话语级,利用自注意将每个话语的表示编码为一个向量,即话语级表示。
  • Context Level上下文级,将每个话语的话语级表示输入到另一个LSTM层,对不同话语之间的信息进行进一步建模,形成上下文级表示。

3. 分层表示

字符级别:

xt:t+sj−1为embedding (xt, …, xt+sj−1)的连接,sj是第j个filter的size,把单词中的字符embed到固定大小的向量,然后使用CNN和最大池化得到每个单词的字符级嵌入矩阵ch
在这里插入图片描述

词级别:

使用预训练好的词向量对词x进行embedding,并引入词匹配特征MF,如果一个词同时出现在R和C或者Q中,MF设为1,否则设为0,使得模型对这种共有词更加敏感。令We为预训练的词向量,ch(x)为字符向量函数,得到词嵌入表征e(x)

再使用共享的双向LSTM得到每个单词的单词级嵌入矩阵h(x)
【论文阅读】TripleNet: 用于多轮对话回复选择的三重注意力网络_第4张图片

话语级别:

使用自注意力得到第k个话语的表征uk。
【论文阅读】TripleNet: 用于多轮对话回复选择的三重注意力网络_第5张图片

上下文级别:

将每个话语级表征输入另一个双向LSTM层中,得到第k个话语在上下文级的表征ck。
在这里插入图片描述

4. Triple Attention

BAF:双向注意函数,用来计算两个序列之间的attention并输出它们的新表示。
【论文阅读】TripleNet: 用于多轮对话回复选择的三重注意力网络_第6张图片
为了建立三元组之间的关系模型,对triple中的每一对应用BAF,得到每个元素的两个新的表示,然后把它们加在一起作为最终的基于注意的表示。在三重注意机制中,可以同时根据注意结果更新每个元素与其他两个元素的表示,并且每个元素以相同的方式参与整个计算。
【论文阅读】TripleNet: 用于多轮对话回复选择的三重注意力网络_第7张图片
BN为batch normalization layer ,有利于防止梯度的消失或爆炸。BAF通过两个方向的关注对两个序列(P, Q)产生新的表示:
【论文阅读】TripleNet: 用于多轮对话回复选择的三重注意力网络_第8张图片

说明:按照Triple Attention图示,Q2, R1 = BAF(R, Q) 和C2, R2 = BAF(C, R),此处应为原文公式错误

令Attpq、Attqp 为P和Q之间双向注意力,BAF对两个序列 (P, Q) 生成新的双向表征P`、Q`:
【论文阅读】TripleNet: 用于多轮对话回复选择的三重注意力网络_第9张图片

5. Triple匹配与预测

Triple匹配:

使用三重注意力机制产生的表示,对每一层的余弦距离进行匹配(针对回复R)。在字符级,令ch` 为三重注意力更新过的表征,得到字符级的匹配结果M1;单词级同理得到M2;话语级和上下文级去掉最大池化步骤得到M3、M4。
【论文阅读】TripleNet: 用于多轮对话回复选择的三重注意力网络_第10张图片

融合:

将4个结果拼接,输入层次RNN(bi-LSTM)并池化,将匹配结果编码为单个特征向量v,其中m∈M 为R中一个单词的匹配结果
【论文阅读】TripleNet: 用于多轮对话回复选择的三重注意力网络_第11张图片

预测:

可以将预测C、Q和R之间的匹配分数看作是一个二分类任务,最小化预测值和真实值之间的交叉熵损失。
在这里插入图片描述


三、实验

1、数据集:

1)Ubuntu对话语料库,是最大的公共多轮对话语料库,包含了特定领域的大约一百万次对话。
2)DouBan对话语料库,与Ubuntu语料库格式相似,但为开放域对话,使用中文。

2、评价指标:

对于Ubuntu语料库,使用n个候选响应中第k个位置的查全率(Rn@k)作为评价指标,对于豆瓣语料库,使用MAP(平均平均精度)、MRR(平均倒数排名)和Precision-at-one作为附加指标

3、实验设置:

预训练词向量使用GloVe,字符级卷积核为尺寸为3、个数为200。所有biLSTM层的隐藏大小为200。使用Adamax优化器、初始学习率为0.002。设置集成模型,使用不同的随机种子为每个语料库生成6个模型,并通过投票合并结果。

4、实验结果:

【论文阅读】TripleNet: 用于多轮对话回复选择的三重注意力网络_第12张图片
实验结果分为三个部分:非注意模型、基于注意力的模型和我们的模型
斜体表示之前的最佳结果,加粗的分数表示没有任何预训练层的单一模型的最新结果

消融实验:

【论文阅读】TripleNet: 用于多轮对话回复选择的三重注意力网络_第13张图片

-TAM表示去掉三重注意和匹配部分
-Atri表示去掉三重注意,即对在每个层次上用它们的原始表示(不使用triple attention来更新表示)
-Query表示去掉和查询相关的所有部分,即注意力和匹配只对计算(查询的信息仍然包含在上下文中) 字母“A”代表triple attention的部分,“M”是triple match的部分

1)移除Query后虽然上下文中仍包含查询信息,但性能也明显下降了,说明有必要对查询单独建模

2)上下文和回复的attention移除后下降最多(R10@1下降0.6%),表明上下文和回复的关系最重要

3)去掉上下文与回复之间的匹配后,模型的性能明显下降(R10@1中为2.1),表明之间的关系是选择回复的基础。查询和回复匹配部分也导致显著下降。这说明我们应该更加注意在整个上下文中的查询

4)删除上下文级和字符级后结果下降的最多,说明应当更多地关注最高和最低级别的信息,且删除其他两个级别也有显著下降,所以每个级别都不可或缺

消融实验表明层次表征三重注意对性能的提升都是有所贡献的。

注意力可视化(单词级别)

【论文阅读】TripleNet: 用于多轮对话回复选择的三重注意力网络_第14张图片
图示为Ubuntu语料库中的一个例子,上面是A和B之间的对话,A想卸载ip扫描仪,当前查询的是关于包的格式,所以真实的回应是关于格式,但现有的对话模式很容易被高频术语“安装”所误导,因为它们以同样的方式处理查询和其他话语。

拿示例中的查询、回复、上下文(仅展示了其中语义丰富的一句)三项的attention在词级别进行可视化:
【论文阅读】TripleNet: 用于多轮对话回复选择的三重注意力网络_第15张图片
1)中,查询会对上下文里的关键词package更注意,这样也更有利于找到谈话话题,而上下文会对查询的关键词deb file附近的a更感兴趣(可能由于a的表示从BiLSTM中学到了临近词的信息)

2)中,查询的注意主要集中在词“format”上,这是回复中最重要的词。但回复没有捕获查询中的重要单词

3)中,回复更多地关注“‘binary”这个词,这是上下文中另一个重要的词

也就是说每一次attention都可以抓住一些重要信息,但也会错过一些有用信息。如果在查询上-下文和回复-上下文的attention中加入信息,就可以捕获该上下文中最重要的信息。此外,查询-回复的attention可以帮助捕获回复中最重要的词。因此,TripleNet可以很好的选择正确答案,因为它可以将这三个attention整合。


本文还讨论了不同话语在上下文中的重要程度,结果发现最后3个语句比其他9个语句更重要,而Query比其他任何话语都重要,因此对其单独建模要比以相同的方式处理所有12个语句的效果要好;要更多地关注Query附近的话语,因为它们的重要性更高。

结论

本文提出了一种用于多轮对话回复选择的TripleNet模型。我们对上下文从低(字符)到高(上下文)层次进行建模,通过中的三重注意更新表示,针对回复来匹配triple,并将匹配结果与层次LSTM融合进行预测。

实验结果表明,该模型在Ubuntu和豆瓣语料库上,从特定领域到开放领域,从英语到汉语,均取得了较好的效果,证明了该模型的有效性和泛化性。


paper下载地址:

TripleNet: Triple Attention Network for Multi-Turn Response Selection in Retrieval-based Chatbots

这篇文章发表于CONLL2019,沿用了SMN的思想,对文本进行了更加多粒度的表示(也就是文中的层次表征),虽然已经不是SOTA,但是可以借鉴的地方也很多,模型结构非常清晰,并关注到了上下文-查询-回复之间的关系。


有帮助的话可以点个赞喔~
【论文阅读】TripleNet: 用于多轮对话回复选择的三重注意力网络_第16张图片

你可能感兴趣的:(nlp,nlp,检索式,开放域对话系统)