来自:工大SCIR

论文名称:Document Modeling with Graph Attention Networks for Multi-grained Machine Reading Comprehension

论文作者:覃立波,徐啸,车万翔,张岳,刘挺

原创作者:覃立波,王馨月

论文链接:

https://www.aclweb.org/anthology/2020.acl-main.565.pdf

代码链接:

https://github.com/LooperXX/DF-Net

一、任务定义

任务型对话系统可以用来帮助用户完成订购机票、餐厅预订等业务,越来越受到研究者的关注。近几年,由于序列到序列(sequence-to-sequence)模型和记忆网络(memory-network)的强大建模能力,一些工作直接将任务型对话建模为端到端任务型对话任务。

如图1,是一个加入来自 SMD 数据集的基于知识 (Knowledge base, KB) 的面向任务的对话的例子。

图1:SMD数据集实例

端到端任务型对话输入输出示例如下::

  • 输入Utterance:“ Address to the gas station. ”

  • 输入知识库 (KB)

  • 输出Utterance:Valero is located at 200 Alester Ave.

二、背景和动机

前人的模型虽然已经达到了较好的效果,但端到端的模型依赖于大量的标注数据进行训练,这导致模型在一个新拓展的领域上很难利用。而实际上,对于一个新的领域,总是很难收集足够多的数据。这就使得将知识从具有充足标注数据的源领域迁移到一个只有少量标注数据的新领域成为非常重要的问题。

已有的端到端任务型对话系统工作可以分为两类:第一类是直接在结合了多领域的数据集进行训练,这种方法虽然够隐含地提取共享的特征却很难有效捕捉领域特有的知识,如图2 (a)所示:

图2:以往方法

第二类是在单独地在各个领域训练不同的模型,这种方法能够很好地捕捉领域特有的知识,却忽视了不同领域间共有的知识,如图2 (b)所示。

我们这篇工作为了综合结合上面两类工作的优点,考虑在多领域端到端任务型对话系统中同时显示结合领域共有和特定的特征,提出使用共享-私有 (shared-private) 架构来建模,如图3所示:

图3:基本的shared-private框架

尽管这种方法能够有效显示建模共享以及私有的特征,但依然还存在两个问题:

(1)在面对一个几乎不具备数据的新领域时,私有模块无法有效提取对应的领域知识;

(2)忽略了一些领域子集间细粒度的相关性(比如和天气领域相比,导航领域和规划领域更相关)。

为了解决这个问题,我们进一步提出 Dynamic Fusion Network (DF-Net)来考虑领域之间的细粒度相关性,如图4所示:

图4:DF-Net框架结构

三、模型架构

我们的模型架构基于 Seq2Seq 对话生成模型。如图5所示,我们首先介绍基本的Seq2Seq模型。然后介绍提出的 shared-private 架构用于学习共享的知识以及对应的领域特有特征,最后介绍提出一个动态融合网络来动态地利用所有领域间的相关性提供给进一步细粒度知识迁移。此外,本文还使用了对抗训练 (adversarial training) 来促使共享模块生成领域共享特征。

图5:整体框架结构

3.1 Seq2Seq对话生成

在普通的 Seq2Seq 面向任务对话系统中,一般用 LSTM 编码对话历史 




 来生成编码了上下文信息的隐藏状态 




,再在 decoding 过程用 LSTM 预测输出。

区别于传统的 Seq2Seq 文本生成,成功的面向任务对话系统将很大程度上依赖于 KB 查询。因此本文采用了全局-局部的记忆指针网络 (global-to-local memory pointer mechanism, GLMP) 来查询 KB 中的实体。

GLMP: GLMP 是基于 Mem2Seq 的改进,整体框架基于 MemNN,包含 encoder 和 decoder,encoder 编码对话历史,输出全局记忆指针和全局上下文表示。decoder 提出 sketch RNN,先产生 sketch 的未填充 slot 的响应,再根据全局记忆指针过滤外部知识库查找信息,最后用局部记忆指针实例化未填充的 slot。

如图5 (a) 外部知识 (EK) 中存储着 B 和 X,其中实体以三元组形式存储。对于一个 k 跳的记忆网络,外部知识是由一个可训练的 embedding 矩阵组 C 组成。所以接下来的问题就是在 Encoder 和 Decoder 中查询知识了。

在 Encoder 中查询知识采用了最后一个隐藏状态作为初始查询序列向量 














,并通过多跳标准memory network操作进行得到查询知识库的信息,公式如下:

最终得到的更新后的向量,可以看做查询 KB之后的编码向量,用于初始化 decoder。

在 Decoder 中查询知识使用了一个用特殊 token 开头的 sketch tag 来标注所有可能的 slot 类型(比如,













 表明所有的 Address 类型)。在 decoding  预测输出过程中,用隐藏层和隐藏层的 attentive 表示以及生成的 sketch tag 查询知识。

过程类似 Encoder 中查询知识的过程。最终对一系列指示查询概率中的最大值作为生成的词。

3.2 共享-私有 Encoder-Decoder模型

这里我们描述所提出的shared-private的Seq-2-Seq框架。用一个包含了 shared encoder-decoder 的 shared-private 架构来捕获领域共享特征以及对于每个领域构造一个 private 模型来捕获领域特有特征。对于每一个 




 都经过共享和私有的 encoder-decoder。

Enhancing Encoder

对于给出的一个实例以及其领域,shared-private encoder-decoder 生成一个 encoder 向量的序列标记为 


















,最终的 shared-specific 编码表示为:

简化表示为:

此外,作者参照 SHAPED: Shared-Private Encoder-Decoder for Text Style Adaptation [1] 一文中的方法,对 












 使用 self-attention 获得上下文表示向量 












,用此处的上下文表示向量替换 2.1 初始化 encoder 使用的 encoder 状态,就能够使得查询向量结合了领域共享知识以及领域特有知识。

Enhancing Decoder

在第 t 步 decoder 中,私有及功效隐藏状态为:

同样利用 shared-specific fusion 函数并简化为:

最终,在 decoder 中将最后计算时的隐藏层状态改为经过 attention 后的包含了共享以及领域特有知识的 fused attentive 表示。

3.3 动态融合查询知识

尽管共享-私有架构可以捕捉对应的特有特征,但忽略了领域的一些子集之间的细粒度相关性。本文进一步提出了动态融合层来明确地利用所有领域知识。

如图,根据给出的任意领域的实例,首先将其放入多个私有 encoder-decoder 来从所有领域内获取领域特有特征,接着所有领域特有只是经过一个动态领域特有特征融合模块进行融合,进一步通过一个 shared-specific 特征融合获得 shared-specific 特征。

图6:动态聚合结构

动态领域特有特征融合是指给出来自所有领域的领域特有特征,利用一个多专家 (Mixture-of-Experts mechanism, MoE) 机制动态地为当前 encoder 和 decoder 的输入收纳所有领域特有知识。

对于 decoding 过程第 t 步的 fusion 过程如下:

在 decoding 第 t 步时给出所有领域特征表示 



































,其中 








 表示领域的数量。接着将领域特征表示 





















作为 expert gate 




 的输入,输出一个度量各个领域与当前输入 token 的相关性的 softmax score 











。这一步通过一个简单的前馈层达到:

最终的领域特有特征向量是所有领域输出的混合,由 expert gate 的权重 







 决定,可以写作:

在训练过程中,使用交叉熵损失作为 expert gate 预测回应的监视信号,







可以看作多个私有 decoder 预测的第 t 个 token 的领域概率分布。因此,更准确的专家预测结果为:

其中 







 为 encoder-decoder 的参数,












 为 MoE 模块的参数。按照同样的方法可以得到 encoder 的预测结果 
















,最终得到:















 用于促使源领域的实例使用正确的专家,然后每一个专家学习对应的领域特有特征。当一个新领域包含很少或没有标记数据时,expert gate 就能够自动地计算不同领域与目标领域间的相关性,接着更好地将知识从不同领域的 encoder 和 decoder 模块中进行迁移。

共享-特有特征融合 (Shared-Specific Feature Fusion) 直接应用了前文介绍过的 shiprivate 操作来融合共享以及最终的领域特有特征:

对抗训练用在共享 encoder 和 decoder 模块来促使模型学习领域私有特征,在领域分类器层后引入了一个梯度对抗层。将对抗训练的损失标记为 













,最终动态融合网络的损失函数定义为:

其中 















 和 GLMP 中的用法一样,























 是超参数。

四、实验结果

我们在公开的SMD和Multi-WOZ2.1数据集上进行了实验,数据集统计如表1所示:

表1:数据统计表

结果如表2所示:

表2:主实验结果表

从表中可以得出以下两个结论:

(1)vanilla的 shared-private 框架超过了之前的最好模型GLMP,表明显示融合领域共享与领域特有知识的有效性。

(2) 本文提出的DF-Net框架在 SMD 和 Multi-WOZ 2.1.达到了 SOTA 性能,表明考虑不同领域的细粒度关系能够进一步提高模型性能。

五、分析

除了在主试验验证了我们模型的有效性外,我们还进行了大量的分析试验。

5.1 消融实验

我们首先在SMD数据集进行了丰富的消融实验,结果如表3所示:

表3:消融实验结果表

从结果可以看出,所有模块的提出都对最后整个的性能都有一定的提升。

5.2 few-shot场景实验

我们还做了低资源设定下的实验,对训练数据进行了[1%,5%,10%,20%, 30%,50%] 的sample进行训练,结果如图7所示:

图7: few-shot实验

从结果可以得出我们提出的模型在不同资源情况都超过了 GLMP,证明了我们模型在少资源情况下的有效性和鲁棒性。更重要的是,在 5% 数据的情况下,在所有领域平均超过 GLMP13.9%。且本文的模型在仅用 5% 的数据训练情况下表现依旧由于 GLMP 用 50% 的数据训练的结果,这也进一步证明了模型能够有效的地迁移到低资源新领域。

5.3 zero-shot实验

我们还进行了零样本设定下的实验,结果如图8所示:

图8: zero-shot实验

同样可以看出在零样本基础上,我们模型在所有领域都超过了前人sota模型GLMP,进一步验证了我们模型的迁移性。

5.4 可视化

为了更直观地理解动态融合层,我们在 5% 的低资源情况下,将每个领域 gate 的分布做了可视化,如图9所示。每个领域的列包含 100 个例子,每一行是其对应的专家值(可以理解为行列对应的线条颜色越深两个领域越相关,可迁移的知识越多)。

图9: 可视化实验

六、结论

我们首次将 shared-private 应用在了多领域端到端对话任务中,并成功将融合了领域共享和特定特征的表示用于query知识库提高性能。shared-private 的思想此前在多领域文本分类和文本风格转换上已经有了相关工作,我们的实验结果表明,这种思想在多领域任务型对话方面的应用也能取得很好的效果。并且我们还提出了动态融合网络,很有效地捕捉了领域间更细粒度的相关性,在低资源情况下也取得了很好的效果。

本期责任编辑:丁效

本期编辑:王若珂


说个正事哈

由于微信平台算法改版,公号内容将不再以时间排序展示,如果大家想第一时间看到我们的推送,强烈建议星标我们和给我们多点点【在看】。星标具体步骤为:

(1)点击页面最上方深度学习自然语言处理”,进入公众号主页。

(2)点击右上角的小点点,在弹出页面点击“设为星标”,就可以啦。

感谢支持,比心


投稿或交流学习,备注:昵称-学校(公司)-方向,进入DL&NLP交流群。

方向有很多:机器学习、深度学习,python,情感分析、意见挖掘、句法分析、机器翻译、人机对话、知识图谱、语音识别等。

记得备注呦

推荐两个专辑给大家:

专辑 | 李宏毅人类语言处理2020笔记

专辑 | NLP论文解读


赛尔原创 | ACL20 用于多领域端到端任务型对话系统的动态融合网络相关推荐

  1. ACL 2020 | 用于多领域端到端任务型对话系统的动态融合网络

    ©PaperWeekly 原创 · 作者|王馨月 学校|四川大学本科生 研究方向|NLP 近期的研究已经在端到端面向任务对话系统中取得了很多的进步,然而,大部分模型还是依赖于大规模的训练数据,且只适用 ...

  2. ​使用端到端立体匹配网络进行单次 3D 形状测量,用于散斑投影轮廓测量

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 标题:Single-shot 3D shape measurement using an end-to ...

  3. EPro-PnP:用于单目物体姿态估计的广义端到端概率 PnP(CVPR 2022)

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨张海晗 来源丨泡泡机器人SLAM 标题:EPro-PnP: Generalized End-to ...

  4. 赛尔原创 | N-LTP:基于预训练模型的中文自然语言处理平台

    论文名称:N-LTP: A Open-source Neural Chinese Language Technology Platform with Pretrained Models 论文作者:车万 ...

  5. 谷歌发布端到端AI平台,还有用于视频和表格的AutoML、文档理解API等多款工具

    谷歌又有了大动作.在大洋彼岸的谷歌Cloud Next conference大会上,谷歌一口气发布了多款AI新品和工具,主要包括: 端到端的AI平台 用于处理视频和表格数据的AutoML Tables ...

  6. ICCV2021- 牛津大学新的预训练视频文本数据集WebVid-2M,设计用于端到端检索的联合视频和图像编码器!代码已开源!...

    关注公众号,发现CV技术之美 ▊ 写在前面 视频文本检索的挑战包括视觉网络结构的设计 和训练数据的性质 ,因为可用的大规模视频文本训练数据集 (例如HowTo100M) 是noisy的,因此只能通过大 ...

  7. 探索专有领域的端到端ASR解决之道

    摘要:本文从<Shallow-Fusion End-to-End Contextual Biasing>入手,探索解决专有领域的端到端ASR. 本文分享自华为云社区<语境偏移如何解决 ...

  8. Chained-Tracker:链式成对关注回归结果,用于端到端联合多目标检测和跟踪

    1.文章信息 本文是腾讯优图团队和复旦大学.日本奈良先端科学技术大学院大学一起完成的一项工作,是2020年7月底提交到arXiv中的一篇文章. 2.摘要 现有的多目标跟踪(MOT)方法要么遵循检测跟踪 ...

  9. AI技术用于测试领域预研阶段

    11月12日 人工智能技术目前很火热,可以为测试领域带来一些什么改革呢?本文只是记录了自己在探索阶段,所想到的方向. 1.AI可以通过使用动态定位器改善UI维护难的问题: 在AI用于UI时,常用一些图 ...

  10. 华为端到端项目管理流程_【达睿原创】供应链端到端管理 – 看华为是怎么做的...

    原标题:[达睿原创]供应链端到端管理 – 看华为是怎么做的 通常意义下的端到端: 从供应商的供应商到客户的客户 供应链端到端管理的概念早在20多年前就由SCC国际供应链协会提出了.著名的SCOR模型就 ...

最新文章

  1. 渐变显示渐变消失的BackgroundView
  2. Egret之eui.Scroller
  3. 使用vl_sift提取图像特征
  4. Java数据类型与各数据库类型对应一览表
  5. 安卓运行php程序,安卓怎么运行php?
  6. HDU多校4 - 6813 Last Problem(构造)
  7. 编程之美读书笔记之-高效率的安排见面会
  8. “跳过更新”还得付费?Docker 新变化引发群嘲
  9. 实用hostname查看主机名的步骤
  10. 腾讯 2016 春季实习校招模拟笔试
  11. Android data分区格式F2FS改为EXT4
  12. Jetson TX2入门学习之Ubuntu默认密码
  13. (二)Luence——代码实现索引及搜索
  14. 个人计算机主板的组成部分,简述计算机主板的基本组成部分
  15. 一张图了解js运算符优先级
  16. 海康威视4200服务器显示资源不足,硬盘录像机提示“资源不足”是什么原因 -
  17. PROC REPORT过程
  18. 教你微信怎么加更多好友的绝佳方法
  19. python定义字符串_Python定义字符串、循环
  20. 【安卓学习之常见问题】 Google Play问题-Android 4.4.4平板电脑不能安装 -- (Your device isn‘t compatible with this version)

热门文章

  1. rocketmq4.x快速入门指南
  2. 【转载】谈谈自己对REST、SOA、SOAP、RPC、ICE、ESB、BPM知识汇总及理解
  3. css3动画结束捕捉事件整理
  4. Excel的实用函数
  5. 如何在HTMl网页中插入百度地图
  6. tomcat,zookeeper,activeMQ,Kafka设置jvm参数
  7. VS2010中如果忘记函数所在的头文件或者忘记函数的输入输出参数类型怎么办?...
  8. VSCode中使用vue项目ESlint验证配置
  9. linux 开放端口
  10. Inno Setup入门(三)——指定压缩方式