作者:Weizhou Shen等
单位:中山大学
时间&期刊:AAAI 2021
主题:对话情绪识别(ERC)–文本模态
论文链接:https://ojs.aaai.org/index.php/AAAI/article/view/17625
代码:https://github.com/shenwzh3/DialogXL
本文介绍了我们在使用预训练语言模型进行会话情感识别( ERC )方面的开创性工作。与常规文档不同,会话话语交替出现于不同的参与方,在以往的工作中通常被组织成层级结构。这样的结构不利于XLNet等预训练语言模型的应用。
为了解决这个问题,我们提出了一个一体式的XLNet模型,即DialogXL,它具有增强的内存来存储更长的历史上下文和对话感知的自注意力来处理多方结构。
具体来说,为了更好地对会话数据进行建模,我们首先将XLNet的递归机制从segment-level修改为utterance-level。其次,我们引入对话感知的自注意力来替代XLNet中的vanilla自注意力,以捕获有用的说话人内部和说话人之间的依赖关系。
在4个ERC基准测试集上进行了广泛的实验,并与主流模型进行了比较。实验结果表明,所提出的模型在所有数据集上均优于基准模型。此外,还进行了一些其他实验,如消融研究和误差分析,结果证实了DialogXL关键模块的作用。
作者的两大创新点:
这篇论文我是略读,因为考虑到它的时间比较久了3年前的文章了,若对这个部分感兴趣自己看论文
方法里面提到两个挑战:
翻译:
包含1个嵌入层、12个transformer层和一个前馈神经网络。在对话输入的时候,模型依次识别每一句话语的情绪。与XLNet相比,DialogXL在训练和测试阶段配备了更有效的存储bank,用于存储历史话语的隐藏状态,以便将来复用。存储bank使用一种新的话语复述机制更新,每个transformer层的隐藏状态源于对话感知的自注意力机制。
模型框架图如下:
输入:{u1, u2, …, uN },有N个话语的历史对话
每个话语包含很多个token;
输出:根据历史上下文查询话语的情绪标签(实时情绪识别)
翻译:
XLNet (Yang et al. 2019)和Transformer-XL (戴翔等2019)通过一种叫segment recurrence的机制解决了输入尺寸的限制,它将以前的隐藏状态缓存在内存库中,并在将来的计算中重新访问。
然而,该机制直接应用于会话情感识别时效果不佳,原因有二。
首先,XLNet中的"段"指的是固定长度的序列,而不是句子这样的语言单元,ERC中的会话是用话语来定义的,通常是完整的句子或段落。因此,保持话语的完整性而不是将其分割成碎片是至关重要的。
其次,segment recurrence限制同一训练批次中的片段具有相同的长度,导致内存中存储的填充过多。相比之下,我们所提出的话语recurrence将历史上下文存储在无填充的记忆中,使得能够存储更长的历史上下文。
记为m的记忆就像一个堆栈。每次为查询语句生成一组新的隐藏状态后,将其与当前内存进行串联。为了防止在记忆中引入噪声,只存储话语标记的隐藏状态,忽略’ [ CLS ] '和填充位置的隐藏状态。形式上,对于第t个语句,在每个Transformer层l,新的记忆ml′更新为:
式中:‖表示连接操作。这种更新策略在批处理操作中特别有用。如图2所示,只使用话语token的隐藏状态更新内存使得内存更加紧凑,因为填充引入的噪声大部分被消除,并且释放了更多的空间来缓存更长的上下文。
翻译:
会话中会话双方交替出现,XLNet中的香草自注意力无法直接应用于多方场景。为此,我们将自注意力替换为对话感知的自注意力,这使得我们的模型能够在多轮多方的环境下对会话上下文进行编码。新的自注意力包括四种类型的自注意力:针对不同大小的感受野的全局自注意力和局部自注意力,以及针对说话人内和说话人间依赖关系的说话人自注意力和听话人自注意力。我们通过巧妙地改变自注意力的掩蔽策略来实现对话感知的自注意力,而不需要添加任何额外的嵌入或参数,如图所示:
对话感知的注意力是多头的。对于第l个Transformer层的每个注意力头,注意力输出计算如下:
其中Wl q、Wl k和Wl v是每个注意力头的可训练参数,RelPosAttn ( · )是Transformer - XL和XLNet采用的相对位置注意力。式( 7 )中的注意力mask s是一个与注意力权重alt形状相同的矩阵。只有当qlt中的第i个向量与klt中的第j个向量之间的注意力被掩盖时,sij的值才设置为+∞,否则设置为0。
全局自注意力将所有的历史语境和查询语句作为接收域。这与香草自注意相同,询问语句关注整个语境。这种设置允许我们的模型关注先前的遥远的话语,这也可能是有用的( Majumder等2019)。因此,没有对全局自注意力进行掩蔽:
仅有ω个最新历史语句的接收域,其中ω为超参数。这种注意的动机是,直觉上讲话者的情感主要受最近话语的影响。在局部自注意力中,我们屏蔽了查询语句与接收域之外的历史语句之间的注意力:
说话人自注意力只考虑当前说话人所说的历史上下文。它拟通过识别说话人历史话语中的情感线索,对说话人内依存( Ghosal等2019)进行建模。在说话人自注意力中,我们掩盖了查询语句与其他说话人所说的语句之间的注意力:
只考虑其他说话人所说的历史话语。它试图对说话人之间的依存关系( Ghosal等2019)进行建模,即当前说话人的情感可能会受到其他说话人话语的影响。在听者自注意力中,我们掩盖了查询语句和当前说话人的语句之间的注意力:
之后,四种类型的自注意力连接起来,再通过一个归一化层和前馈网络层作为transformer层的输出。如图:
采用最后一层[CLS]的隐藏状态作为查询话语和历史上下文的最终编码,通过一个前馈神经网络得到预测的情绪:
损失函数:
标准的交叉熵损失
注:4种类型的注意力头是12?
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。
本论文仅利用文本模态。
略
我们的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既可以通过话语重现有效地编码历史语境,也可以通过对话感知的自注意力捕获说话人信息,从而获得优于所有基线的性能。
我们以100为间隔,将最大记忆长度从100变化到1000,并在IEMOCAP上绘制测试分数,在每个对话中都有足够的话语。XLNet中片段递归的内存浪费率也是根据内存中填充的百分比绘制的。由于所提出的话语复现在理论上具有0的记忆浪费,因此其记忆浪费率没有标绘出来。本实验研究了三种模型:带有原段递归的XLNet、带有语句递归的XLNet和DialogXL。
结果见图4。我们注意到,对于每一个不同的记忆长度,片段递归总是导致超过60 %的记忆浪费率。速率随着记忆长度的增加而下降,伴随着三种模型的增长。当记忆长度超过700时,它们的性能一般不再提高,这表明增加最大记忆长度只在一定范围内对测试结果有贡献。
此外,当去除局部自注意力后,IEMOCAP上的F1得分下降最多,每个对话包含长的话语(约70个)。这表明查询语句附近的历史上下文对于该数据集更为重要。MELD的下降不如IEMOCAP明显,因为MELD的对话(每次对话5 ~ 9次)要短得多。最后,去除全局自注意力会导致最小的性能下降。原因可能有两方面。首先,全局话语不如局部话语重要。其次,说话人自注意力和听话人自注意力已经从远处的话语中捕获了一些有用的信息。
注:这里仅仅翻译了一部分我觉得重要的地方,完整的要看论文。
我们的说话人自注意力和听话人自注意力通过直接让模型知道应该关注哪部分话语来对说话人依赖项( Ghosal等2019)进行建模。另一种让预训练的语言模型理解对话中的说话人依赖关系的方法是说话人角色嵌入(包群等2020 ; Ham et al 2020),它将每个参与者映射为一个可训练的嵌入向量。在这里,我们对在IEMOCAP和DailyDialog上嵌入不同参与方的两种方法进行了简单的比较。为此,我们将DialogXL的说话人自注意力和听话人自注意力替换为说话人角色嵌入,并将得到的模型称为DialogXL - emb。比较结果见表4。我们可以观察到,我们的显性说话人和听话人自注意力比说话人角色嵌入方法更有效。因此,所提出的注意力机制也可以潜在地应用到其他对话任务中。
我们在数据集IEMOCAP上进行了误差研究。
简要的说,我们发现DialogXL在历史语境中直接捕捉词级特征的强大能力可能是一把双刃剑。如图5所示,基于语义相关性的单词级注意力机制可以帮助做出很好的预测( Case # 1 ),但也可能会因为过于关注查询语句和历史语句之间的语义相关性而导致错误。因此,似乎有必要与其他机制相结合,而不是仅仅依靠popular的注意力机制来进行对话中的情绪识别。
除此之外,我们还从我们的坏案例中观察到一些在以前的工作中提到的,例如情感转换(也就是说,同一个说话人的连续两句话的情感标签是不同的) (哈扎里卡et al 2018 ; Majumder et al 2019)。粗略地说,我们的模型在这些案例中犯了45 %的错误,这需要进一步的研究。(这里没有看懂)
为了对多轮多方对话数据进行建模,DialogXL在XLNet和Transformer - XL的基础上做了两点改进。
此外,我们有以下三个发现。首先,原始的片段递归机制在内存中存储了超过60 %的填充信息,这使得它不能有效地编码ERC的历史上下文。第二,传统的说话人角色嵌入策略不如我们的说话人和听话人自注意力有效,这也适用于其他对话任务。最后,误差分析表明,仅仅依靠注意力机制可能会对模型产生误导。