论文阅读笔记(12月15)--DialogXL

news2024/12/27 10:18:14

论文阅读笔记(12月15)–DialogXL

基本情况介绍:

作者:Weizhou Shen等
单位:中山大学
时间&期刊:AAAI 2021
主题:对话情绪识别(ERC)–文本模态
论文链接:https://ojs.aaai.org/index.php/AAAI/article/view/17625
代码:https://github.com/shenwzh3/DialogXL

1 摘要

1.1 翻译:

本文介绍了我们在使用预训练语言模型进行会话情感识别( ERC )方面的开创性工作。与常规文档不同,会话话语交替出现于不同的参与方,在以往的工作中通常被组织成层级结构。这样的结构不利于XLNet等预训练语言模型的应用。
为了解决这个问题,我们提出了一个一体式的XLNet模型,即DialogXL,它具有增强的内存来存储更长的历史上下文和对话感知的自注意力来处理多方结构。
具体来说,为了更好地对会话数据进行建模,我们首先将XLNet的递归机制从segment-level修改为utterance-level。其次,我们引入对话感知的自注意力来替代XLNet中的vanilla自注意力,以捕获有用的说话人内部和说话人之间的依赖关系。
在4个ERC基准测试集上进行了广泛的实验,并与主流模型进行了比较。实验结果表明,所提出的模型在所有数据集上均优于基准模型。此外,还进行了一些其他实验,如消融研究和误差分析,结果证实了DialogXL关键模块的作用。

1.2 重点

作者的两大创新点:

  1. 增强存储能力,保存更长的历史上下文
  2. 用对话感知的自注意力机制替换XLNet中的vanilla自注意力

2 引言及相关工作(略)

这篇论文我是略读,因为考虑到它的时间比较久了3年前的文章了,若对这个部分感兴趣自己看论文

3 方法

3.1 方法要解决的问题:

方法里面提到两个挑战:

  1. 如何编码有成百上千个单词的长的历史上下文;
  2. 如何建模不同参与者(对话中的说话者)的说话者自身和说话者之间的依赖
    作者在XLNet的基础上利用两个改进提出了DialogXL来解决这两个挑战。

3.2 模型框架

翻译:
包含1个嵌入层、12个transformer层和一个前馈神经网络。在对话输入的时候,模型依次识别每一句话语的情绪。与XLNet相比,DialogXL在训练和测试阶段配备了更有效的存储bank,用于存储历史话语的隐藏状态,以便将来复用。存储bank使用一种新的话语复述机制更新,每个transformer层的隐藏状态源于对话感知的自注意力机制。
模型框架图如下:
在这里插入图片描述

3.3 问题定义

输入:{u1, u2, …, uN },有N个话语的历史对话
每个话语包含很多个token;
输出:根据历史上下文查询话语的情绪标签(实时情绪识别)
在这里插入图片描述
在这里插入图片描述

3.4 话语recurrence

翻译:
XLNet (Yang et al. 2019)和Transformer-XL (戴翔等2019)通过一种叫segment recurrence的机制解决了输入尺寸的限制,它将以前的隐藏状态缓存在内存库中,并在将来的计算中重新访问。
然而,该机制直接应用于会话情感识别时效果不佳,原因有二。
首先,XLNet中的"段"指的是固定长度的序列,而不是句子这样的语言单元,ERC中的会话是用话语来定义的,通常是完整的句子或段落。因此,保持话语的完整性而不是将其分割成碎片是至关重要的。
其次,segment recurrence限制同一训练批次中的片段具有相同的长度,导致内存中存储的填充过多。相比之下,我们所提出的话语recurrence将历史上下文存储在无填充的记忆中,使得能够存储更长的历史上下文。
记为m的记忆就像一个堆栈。每次为查询语句生成一组新的隐藏状态后,将其与当前内存进行串联。为了防止在记忆中引入噪声,只存储话语标记的隐藏状态,忽略’ [ CLS ] '和填充位置的隐藏状态。形式上,对于第t个语句,在每个Transformer层l,新的记忆ml′更新为:
在这里插入图片描述
式中:‖表示连接操作。这种更新策略在批处理操作中特别有用。如图2所示,只使用话语token的隐藏状态更新内存使得内存更加紧凑,因为填充引入的噪声大部分被消除,并且释放了更多的空间来缓存更长的上下文。
在这里插入图片描述

3.5 对话感知的自注意力

翻译:
会话中会话双方交替出现,XLNet中的香草自注意力无法直接应用于多方场景。为此,我们将自注意力替换为对话感知的自注意力,这使得我们的模型能够在多轮多方的环境下对会话上下文进行编码。新的自注意力包括四种类型的自注意力:针对不同大小的感受野的全局自注意力和局部自注意力,以及针对说话人内和说话人间依赖关系的说话人自注意力和听话人自注意力。我们通过巧妙地改变自注意力的掩蔽策略来实现对话感知的自注意力,而不需要添加任何额外的嵌入或参数,如图所示:
在这里插入图片描述
对话感知的注意力是多头的。对于第l个Transformer层的每个注意力头,注意力输出计算如下:
在这里插入图片描述
其中Wl q、Wl k和Wl v是每个注意力头的可训练参数,RelPosAttn ( · )是Transformer - XL和XLNet采用的相对位置注意力。式( 7 )中的注意力mask s是一个与注意力权重alt形状相同的矩阵。只有当qlt中的第i个向量与klt中的第j个向量之间的注意力被掩盖时,sij的值才设置为+∞,否则设置为0。

3.5.1 全局注意力:

全局自注意力将所有的历史语境和查询语句作为接收域。这与香草自注意相同,询问语句关注整个语境。这种设置允许我们的模型关注先前的遥远的话语,这也可能是有用的( Majumder等2019)。因此,没有对全局自注意力进行掩蔽:
在这里插入图片描述

3.5.2 局部自注意力:

仅有ω个最新历史语句的接收域,其中ω为超参数。这种注意的动机是,直觉上讲话者的情感主要受最近话语的影响。在局部自注意力中,我们屏蔽了查询语句与接收域之外的历史语句之间的注意力:
在这里插入图片描述

3.5.3 说话人自注意力:

说话人自注意力只考虑当前说话人所说的历史上下文。它拟通过识别说话人历史话语中的情感线索,对说话人内依存( Ghosal等2019)进行建模。在说话人自注意力中,我们掩盖了查询语句与其他说话人所说的语句之间的注意力:
在这里插入图片描述

3.5.4 听者自注意力:

只考虑其他说话人所说的历史话语。它试图对说话人之间的依存关系( Ghosal等2019)进行建模,即当前说话人的情感可能会受到其他说话人话语的影响。在听者自注意力中,我们掩盖了查询语句和当前说话人的语句之间的注意力:
在这里插入图片描述
之后,四种类型的自注意力连接起来,再通过一个归一化层和前馈网络层作为transformer层的输出。如图:
在这里插入图片描述

模型训练

采用最后一层[CLS]的隐藏状态作为查询话语和历史上下文的最终编码,通过一个前馈神经网络得到预测的情绪:
在这里插入图片描述
损失函数:
标准的交叉熵损失
注:4种类型的注意力头是12?

4 实验

4.1 实现细节

略,看图:
在这里插入图片描述

4.2 数据集

IEMOCAP:用于情绪识别的多模态对话数据集,每个对话有两个说话者,情绪标签:neutral, happiness, sadness, anger, frustrated, and excited。(每段对话较长)
MELD:从电视节目《老友记》中收集情感识别的多模态数据集。情绪标签包括neutral, happiness, surprise, sadness, anger, disgust, and fear。
DailyDialog:人类书写的日常交流,带有情感标签包括:neutral, happiness, surprise, sadness, anger, disgust。
EmoryNLP:电视剧剧本选自《老友记》,但在场景和情感标签的选择上与MELD有所不同。该数据集的情感标签包括:neutral, sad, mad, scared, powerful, peaceful, and joyful。
本论文仅利用文本模态。

4.3 基线模型

5 结果和分析

5.1 整体表现

我们的DialogXL和基线的总体结果报告在表2中。我们可以清楚地看到,DialogXL在4个数据集上都达到了一个新的水平。此外,我们还可以做如下两个观察,这有助于理解ERC任务和DialogXL的利与弊。
首先,总的来说,预训练语言模型在MELD、DailyDialog和EmoryNLP上比其他模型有相当大的改进。然而,在这些数据集上,DialogXL相对于BERT和XLNet的改进并不显著。经过对数据集的深入挖掘,我们发现这些数据集中的对话都是相对较短的(多为5 ~ 9句)。因此,目前的语言模型BERT和XLNet在大多数情况下已经可以对整个历史上下文和查询语句进行编码。然而,在这些简短的对话中,DialogXL的优势并没有完全展现出来。
第二,虽然BERT和XLNet的性能低于IEMOCAP上的其他基线,但DialogXL相对于BERT和XLNet的性能提升是显著的。通过对数据集的考察,我们发现IEMOCAP中的对话比其他数据集的(每对话框约70句话)要长得多。在这种情况下,BERT和XLNet不能有效地编码过多的历史上下文,而诸如DialogueRNN和DialogueGCN这样的基线可以到达远处的话语,并且还可以编码说话人信息等其他关键特征。此外,我们的DialogXL既可以通过话语重现有效地编码历史语境,也可以通过对话感知的自注意力捕获说话人信息,从而获得优于所有基线的性能。

5.2 记忆增强效应

我们以100为间隔,将最大记忆长度从100变化到1000,并在IEMOCAP上绘制测试分数,在每个对话中都有足够的话语。XLNet中片段递归的内存浪费率也是根据内存中填充的百分比绘制的。由于所提出的话语复现在理论上具有0的记忆浪费,因此其记忆浪费率没有标绘出来。本实验研究了三种模型:带有原段递归的XLNet、带有语句递归的XLNet和DialogXL。
结果见图4。我们注意到,对于每一个不同的记忆长度,片段递归总是导致超过60 %的记忆浪费率。速率随着记忆长度的增加而下降,伴随着三种模型的增长。当记忆长度超过700时,它们的性能一般不再提高,这表明增加最大记忆长度只在一定范围内对测试结果有贡献。

5.3 消融实验

在这里插入图片描述
此外,当去除局部自注意力后,IEMOCAP上的F1得分下降最多,每个对话包含长的话语(约70个)。这表明查询语句附近的历史上下文对于该数据集更为重要。MELD的下降不如IEMOCAP明显,因为MELD的对话(每次对话5 ~ 9次)要短得多。最后,去除全局自注意力会导致最小的性能下降。原因可能有两方面。首先,全局话语不如局部话语重要。其次,说话人自注意力和听话人自注意力已经从远处的话语中捕获了一些有用的信息。
注:这里仅仅翻译了一部分我觉得重要的地方,完整的要看论文。

5.4 说话者角色嵌入

我们的说话人自注意力和听话人自注意力通过直接让模型知道应该关注哪部分话语来对说话人依赖项( Ghosal等2019)进行建模。另一种让预训练的语言模型理解对话中的说话人依赖关系的方法是说话人角色嵌入(包群等2020 ; Ham et al 2020),它将每个参与者映射为一个可训练的嵌入向量。在这里,我们对在IEMOCAP和DailyDialog上嵌入不同参与方的两种方法进行了简单的比较。为此,我们将DialogXL的说话人自注意力和听话人自注意力替换为说话人角色嵌入,并将得到的模型称为DialogXL - emb。比较结果见表4。我们可以观察到,我们的显性说话人和听话人自注意力比说话人角色嵌入方法更有效。因此,所提出的注意力机制也可以潜在地应用到其他对话任务中。

5.5 错误研究

我们在数据集IEMOCAP上进行了误差研究。
简要的说,我们发现DialogXL在历史语境中直接捕捉词级特征的强大能力可能是一把双刃剑。如图5所示,基于语义相关性的单词级注意力机制可以帮助做出很好的预测( Case # 1 ),但也可能会因为过于关注查询语句和历史语句之间的语义相关性而导致错误。因此,似乎有必要与其他机制相结合,而不是仅仅依靠popular的注意力机制来进行对话中的情绪识别。
除此之外,我们还从我们的坏案例中观察到一些在以前的工作中提到的,例如情感转换(也就是说,同一个说话人的连续两句话的情感标签是不同的) (哈扎里卡et al 2018 ; Majumder et al 2019)。粗略地说,我们的模型在这些案例中犯了45 %的错误,这需要进一步的研究。(这里没有看懂)

6 总结

为了对多轮多方对话数据进行建模,DialogXL在XLNet和Transformer - XL的基础上做了两点改进。
此外,我们有以下三个发现。首先,原始的片段递归机制在内存中存储了超过60 %的填充信息,这使得它不能有效地编码ERC的历史上下文。第二,传统的说话人角色嵌入策略不如我们的说话人和听话人自注意力有效,这也适用于其他对话任务。最后,误差分析表明,仅仅依靠注意力机制可能会对模型产生误导。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1316854.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何在Go中并发运行多个函数

引言 Go语言的一个流行特性是它对并发的一流支持,即一个程序可以同时做多件事。随着计算机从更快地运行单个代码流转向同时运行更多代码流,能够并发地运行代码正在成为编程的重要组成部分。为了让程序运行得更快,程序员需要把程序设计成并发运行,这样程序中并发的每一部分…

HQL优化之数据倾斜

group by导致倾斜 前文提到过,Hive中未经优化的分组聚合,是通过一个MapReduce Job实现的。Map端负责读取数据,并按照分组字段分区,通过Shuffle,将数据发往Reduce端,各组数据在Reduce端完成最终的聚合运算。…

SpringCloud-高级篇(八)

(1)TCC模式 前面学了XA和AT模式,这两种模式最终都能实现一致性,和隔离性,XA是强一致,AT是最终一致,隔离性呢XA是在第一阶段不提交,基于事务本身的特性来完成隔离,AT则是…

MongoDB表的主键可以重复?!MongoDB的坑

MongoDB表的主键可以重复?! 眼见为实? 碰到一个奇怪的现象, MongoDB的一个表居然有两个一样的_id值! 再次提交时,是会报主键冲突的。那上图,为什么会有两个一样的_id呢? 将它们的…

【halcon深度学习】目标检测的数据准备过程中的一个库函数determine_dl_model_detection_param

determine_dl_model_detection_param “determine_dl_model_detection_param” 直译为 “确定深度学习模型检测参数”。 这个过程会自动针对给定数据集估算模型的某些高级参数,强烈建议使用这一过程来优化训练和推断性能。 过程签名 determine_dl_model_detection…

10 新字符设备驱动文件

一、新字符设备驱动原理 因为 register_chrdev 和 unregister_chrdev 两个函数是老版本驱动文件,现在可以用新字符设备驱动 API 函数。 1. 分配和和释放设备号 使用 register_chrdev 函数注册字符设备的时候只需要给定一个主设备号即可,但是这样会带来两…

【面试】广告优化

a1:点击率公式是什么?点击率低的原因是什么? 点击率点击/曝光,点击率低的原因主要有两点:一是创意不吸引人;二是目标受众不准确/定向过宽不精确,广告曝光给了对产品不感兴趣用户 a2:…

数据库——关系数据的规范化:范式判断【知识点罗列+例题讲解】

知识点罗列: 各种范式之间的关系 1.第一范式1NF: 如果关系模式R中所有的属性都具有原子性,均是不可再分的(一个属性不能再被分解成更小的数据单元),则称R属于第一范式,简称1NF,记作R…

linux常见错误

1.E45: ‘readonly‘ option is set (add ! to override) 首先使用以下命令从Vim编辑器中出来::qa!(强制退出) 接下来,使用sudo vim filename和更高版本::wq 2.Bash script – "/bin/bash^M: bad interpreter: No such file or direc…

yolov5单目测距+速度测量+目标跟踪

要在YOLOv5中添加测距和测速功能,您需要了解以下两个部分的原理: 单目测距算法 单目测距是使用单个摄像头来估计场景中物体的距离。常见的单目测距算法包括基于视差的方法(如立体匹配)和基于深度学习的方法(如神经网…

安捷伦N9020A 是德keysight/N9020A

N9020A信号分析仪自动化和通讯接口: 符合 LXI、SCPI 和 IVI-COM USB 3.0、1000Base-T LAN、GPIB 编程与 PSA、8566/68 和 856x 的远程语言兼容性 通用 X 系列用户界面 / 开放式 Windows 7 操作系统(标准) 将现有的 MXA 从 Windows XP 迁移到…

CAN 五: CAN编程实践

1、CAN基本驱动步骤 (1)CAN参数初始化 工作模式、波特率等函数:HAL_CAN_Init (2)使能CAN时钟和初始化相关引脚 GPIO模式设为复用功能模式函数:HAL_CAN_MspInit(CAN的初始化回调函数) (3)设置过滤器 过滤器的配置函数:HAL_CAN_ConfigFil…

【linux】(ubuntu)下 QT 出现的问题

错误一:Make 运行QT程序以后出现这样的错误。 【解决方法】 我的ubuntu版本是18.04.4, 原因1:没有更换软件源 原因2:没安装相关 软件包 注意:这一步很有可能卡死这一步,所以如果一直卡在这并且进度…

黑马点评01

基础篇-07.Redis命令-数据结构介绍_哔哩哔哩_bilibili 1.NoSQL 非结构化数据库,和sql的区别在于没有数据库表之间的关系(主键外键),一般的存储形式是JSON。每个json里面都存储了该记录的所有数据,所以有一定重复性。 …

总结一些vue3小知识2

1.el-tree-select和el-tree组件报错(有的下拉选项选择不了,一点击就报错,但是有的却能选择,不会报错) 原因:就如同v-for一样,需要添加key才不会出现渲染错误,而el-tree-select和el-tree组件需要…

MySQL数据库 DCL

目录 DCL概述 管理用户 权限控制 DCL概述 DCL英文全称是Data Control Language(数据控制语言),用来管理数据库用户、控制数据库的访 问权限。 管理用户 (1) 查询用户 select * from mysql.user; 查询的结果如下: 其中 Host代表当前用户访问的主机, 如果为localh…

计算机组成原理-指令系统CISC和RISC

文章目录 总览CISC和RISC 总览 CISC和RISC 存储程序就是用一个电路再加上存储部件构成 可访存指令不同 RISC更自由,因为很多函数没有固定,是自己写的 由于CISC各个指令执行时间不一样,要实现指令流水线比较困难 由于CISC可访存指令没有限制…

LVS负载均衡群集,熟悉LVS的工作模式,了解LVS的调度策略以及ipvsadm工具的命令格式

目录 一、什么是群集 群集的作用: 群集的目的是什么 根据群集所针对的目标差异,可分为三种类型 负载均衡群集(LBC)load balance cluster 高可用群集(HAC)high availability cluster 高性能运算群集&a…

【Docker】5. Dockerfile 构建和管理容器化应用程序

▒ 目录 ▒ 🛫 导读开发环境 1️⃣ Dockerfile介绍 基本语法 指令 2️⃣ 实战:Python 的 Flask Web 代码 编译运行 发布到服务器 🛬 文章小结📖 参考资料 🛫 导读 开发环境 版本号描述文章日期2023-12-15操作系统…

Dagger2基本使用2之子组件

一,基本使用,完成一个注入 1,创建作用域 //自定义作用域,作用域只是一个名称,随便起啥名字都可以,这里取一个全局单利的名字 Scope Documented Retention(RUNTIME) public interface GlobalSingleton { }…