本期技术干货,我们邀请到了小米AI实验室-NLP应用工程师李嫣然、钱利,和大家分享如何应用双曲空间度量学习,来解决共情对话系统中的细粒度情绪识别问题。
▍摘要
识别对话中细粒度的情绪类别作为共情对话系统的关键任务之一,它为后续的意图理解及共情回复内容的生成奠定了基础。这类情绪识别问题的类别划分细致且类别数量多,不同类别间容易产生混淆。尽管预训练语言模型在包括文本分类在内的许多NLP下游任务上取得了突破性进展,但从这些语言表征模型导出的句子表征在表示空间中的分布往往集中在一个很小的密集区域,不同表征向量间相似度普遍较高,因而不利于用于区分混淆度本就较高的细情绪粒度的识别。
为解决这一问题,我们提出了一种双曲空间下的度量学习方法,利用双曲空间几何特点来建模情感类别中存在的层次结构,进而进行细粒度情感类别分类。实验结果表明,模型不仅能够提升情绪分类性能,得到的句向量表示在情感含义上也具备更好的解释性。
▍1、相关背景
细粒度情绪类别分类属于句子级(sentence-level)分类任务。与传统分类任务相比,由于类别数量多、划分更细致,类别间会存在较多相似的特征,导致类别混淆现象更严重。近几年来,通过BERT等预训练语言模型将句子编码并映射到一个表示空间进行文本分类的方法被广泛应用并取得了成功,这印证了优质的句子表征是得到准确分类结果的关键。
然而如图1 (a) 所示,BERT中提取的句向量在表示空间中往往会被压缩到一个狭窄密集的超空间,不同向量间相似度较高,通常被称为表示“坍缩”(Collapse)或表示“退化”(Degeneration)现象[1, 2]。部分研究指出这种坍缩或退化现象是由Transformer结构中Softmax输出层的表示能力不足造成的[3, 4];这使得不同的输入序列编码得到的表示会共享部分相似的特征,这不利于混淆类别的区分。
图1 (a) 语言表征模型中向量表示的“塌缩”现象。(b) 传统度量学习目标。(c) 双曲空间下度量学习目标。
一种可行的缓解BERT表示坍缩现象的方法,是应用度量学习来学习句子表征:通过学习一种映射,来聚拢同类别句向量而推开不同类的样本(图 1 (b) 所示)。通常的度量学习目标会趋向于在特征表示空间中将不同的情绪类别“推向”不同的方向,不管类别间在情感含义层面是相近(高兴/幸福)、相反(高兴/愤怒)还是独立无关(愤怒/悲伤)。部分细粒度情绪间并不是完全独立,类别间存在从粗粒度到细粒度的树状层次结构,这有助于我们辨别有细微不同的情绪类别。
为了获取类别间的结构信息,我们引入了双曲空间下的度量学习(图1 (c) 所示)。双曲空间中,随着参考点远离原点,双曲空间大小呈指数增长,这能够反映树结构中节点数随着与根之间的距离呈指数增长的特点,因此适合学习我们具有层次结构的数据[5]。相比于直接利用样本之间存在的显式层次关系学习样本在欧氏空间的表示,我们首先构建一个与样本句向量同样大小的代理向量来表示每个粗粒度情绪类别,我们将构建出的向量称为“锚”(anchor)。接下来,我们利用样本和构造的粗粒度情绪 anchor 间的层次关系在双曲空间中进行表示学习。
另外,我们还提出了两种不同的训练策略来为模型提供正则,缓解引入层次关系约束可能带来的过拟合现象。为验证方法的有效性,我们采用了两个基于通用语料预训练的语言模型和一个基于情感相关任务预训练的语言模型,在中英文数据集:X-EMAC[6]和GoEmotions[7]上进行了实验。我们发现,使用提出方法不仅在分类准召上有所提升,同时也在表示空间中保留 了不同情感类别间的关系。
综上,在我们的工作中,我们:
提出了一种在双曲空间下的度量学习框架,来解决细粒度情感类别分类中类别易混淆的问题。
并实验验证,提出框架在提升分类性能的同时,在表示空间中保留了情感类别间的关系。
▍2、方法介绍
>>>> 2.1整体框架
图2 模型结构示意图。
如图2所示,我们的框架包含两个主要部分:
类别分类模块和
在双曲空间下的度量学习模块。
输入文本首先经过预训练模型编码得到句向量表示:𝑧 ∈ R^𝑑,并分别作为分类器(classifier)和度量学习模块的输入。𝑑为句向量维度。这里,我们仅通过简单的全连接层及标准的交叉熵损失函数实现分类模块。最终我们会将交叉熵分类损失和度量学习损失结合起来,共同训练优化模型:
其中,N 表示训练 batch 中样本个数,loss_metric 代表第 i 个样本在度量学习模块中对应的损失,式(1)最后一项为分类损失。进一步,我们将着重介绍所提出的双曲空间下的度量学习模块。
>>>> 2.2 基于双曲空间的度量学习模块
度量学习旨在学习一种嵌入表示:使得相似样本点尽量聚拢,不相似数据远离[8]。然而,在细粒度情绪类别分类问题中,负类定义有时是不明确或有歧义的,两个标注类别间可能在情感含义上相近但仍然是两个不同的类别。例如,在GoEmotions数据集中"amusement"与“joy”为两个不同的细粒度情绪类别,但它们同属于粗粒度情绪:“positive sentiment”[7]。考虑到这种层次关系,我们将粗粒度情绪anchor与其下细粒度情绪样本表示的组合作为相似似样本对(positive pair),用于度量学习模型的训练优化。
构建样本对的策略 具体地,结合粗-细粒度情绪类别的层次关系,我们假设同属于一个粗粒度情绪大类的细粒度情绪类别会相对接近。并构建样本表示和粗粒度情绪anchor的组合(𝑧,𝑧+) 用于训练,其中z为样本句向量表示,𝑧+∈ R^𝑑为可学习的粗粒度情绪表示。其中样本表示于其所属粗粒度情绪anchor构成正样本对(positive pair),否则为负样本对(negative pair)。
双曲空间下的度量学习 为了最大化正样本对间的相似度,并减小负样本对间的相似度,我们采用如下的度量学习目标:
其中{(𝑧𝑖,𝑧+𝑗 )} (𝑗=1 to C) 表示为每个样本 𝑖 构建的样本-anchor对,(𝑧𝑖,𝑧+𝑝𝑖)为正样本对,C为粗粒度类别个数。𝑑(·)为基于Poincaré ball模型的双曲距离度量[9]。在N维双曲空间中,所有点𝑥将落在以原点为圆心,半径为单位长度的超球面开区间内:I ={𝑥 ∈R^n |∥𝑥∥ <1},其中 ∥·∥表示欧几里得范数。故两点间的距离可用如下式(3)表示:
>>>> 2.3 Anchor选择策略
在我们的度量学习模块中,我们提出两种不同的策略来决定正样本对中anchor对应的粗粒度类别:一种策略是使用样本真实细粒度标签对应的粗粒度类别;另一种是通过分类模块预测的细粒度标签来推断anchor的粗粒度类别。
提出两种策略的原因 我们将以困难负样本为例解释度量学习中第二种策略在一些情形下的优势。我们假设𝑧𝑖为容易误分类的样本,其实际属于𝑐类,却被误分类到𝑚类。𝑧𝑐为𝑐类中的一个样本,𝑧𝑚为𝑚类中的一个样本。考虑到预训练模型存在表示坍缩,我们可以得到:𝑑(𝑧𝑖,𝑧𝑐) ≫𝑑(𝑧𝑖,𝑧𝑚)且 𝑑(𝑧𝑖,𝑧𝑚) <𝜖, 其中𝜖 >0是一个很小的值;距离𝑑(𝑧𝑖,𝑧𝑐)在𝑧𝑖处的导数可以表示为:𝜕𝑑(𝑧𝑖,𝑧𝑐)/𝜕𝜃, 其中 𝜃为模型参数,基于策略二,针对𝑧𝑖我们需要将导数重写为:𝜕𝑑(𝑧𝑖,𝑧𝑚)/𝜕𝑑(𝑧𝑖,𝑧𝑐)·𝜕𝑑(𝑧𝑖,𝑧𝑐)/𝜕𝜃。
而对于一些在特定任务上进行过预训练的语言模型,如在基于情感分类任务预训练的SentiLARE模型[10],相同类别间的表示聚拢成簇,不同类别趋向于被推向相互正交的方向(如下图4(b)所示,代表不同类别表示间相似度的方格为黄色,相似度为0)。
因此,对于易分类样本,𝜕𝑑(𝑧𝑖,𝑧𝑚)/𝜕𝑑(𝑧𝑖,𝑧𝑐) ≈ 1,此时策略二退化为传统的度量学习的优化目标,样本点位置相应更新。当遇到困难样本时,𝜕𝑑(𝑧𝑖,𝑧𝑚)/𝜕𝑑(𝑧𝑖,𝑧𝑐) ≈0,此时度量学习的优化目标基本不更新参数,进而难分样本点的空间位置基本不变而从其他样本点中分离出来,而这可能会有利于接下来的训练迭代对这些样本的区分。
▍3、实验
>>>> 3.1 数据集
我们选取两个数据集进行模型验证:小爱对话数据集X-EMAC[6]以及英文数据集GoEmotions[7],数据集相关情况如下表1所示:
表1 X-EMAC及GoEmotions数据集情况。
>>>> 3.2 Baselines
我们选取了2个通用预训练语言模型:BERT-base和Roberta-base以及一个在情感类数据上fine-tune过的预训练模型:SentiLARE[9],作为baseline模型,我们在模型[CLS]输出上添加一层MLP并将输出结果作为样本句向量表示。在我们提出的框架中,我们相应地使用这3个模型作为输入序列的Encoder,并在靠近表示空间原点处初始化粗粒度情绪类别anchor,分别使用两种不同的策略进行实验。
考虑到细粒度分类问题类别数目多,不同类别数据量相差大,模型评估指标采用Macro Precision\Recall\F1 Score,最终的实验结果如表2所示,其中标记为+ML的模型代表我们提出的使用策略一的模型结果;+ML/T 代表使用策略二的模型结果;作为对比,我们还提供了欧式空间下度量学习的相应结果+ML/E 以及使用细粒度类别的代理向量代替原本粗力度类别anchor进行度量学习的结果+ML/F,限于篇幅不展开叙述。
表2 X-EMAC及GoEmotions数据集上的实验结果(%),粗体表示优于其他。'p':precision, 'r':recall.
>>>> 3.3 实验结果
对中文数据集X-EMAC,相比于baselines,我们提出的框架在分类性能上获得了明显提升。在不同预训练模型中,基于特定情感任务训练的SentiLARE获得了比较好的结果,基于我们提出的框架,我们进一步将分类性能提升了2.9%,这也体现了我们提出方法的有效性。
关于使用不同的策略决定粗粒度anchor对应的类别,我们发现使用分类模块预测结果决定anchor的结果对于在特定任务上fine-tune的模型,SentiLARE,获得了更好的结果,这也与2.3节的分析一致。我们同样在英文数据集GoEmotions上进行实验验证模型并可以得到上述发现结论仍成立。
为进一步分析,以X-EMAC下SentiLARE模型为例,我们结合主成分分析(PCA)方法降维可视化了样本向量表示在空间的分布,如图3所示,相比于原始模型,我们提出的方法能够较好的把不同类别区分开来。
图3 X-EMAC句向量表示可视化。
>>>> 3.4 分析讨论
在此基础上,我们还探究了双曲空间表示是否能够保留情绪类别间的关系。我们首先获取了不同细粒度类别下样本的向量表示,并通过平均得到每个细粒度类别的向量表示。然后,我们计算两两细粒度类别间的余弦相似度并使用相似度来反映不同情绪类别间的关系。
我们同样以X-EMAC下SentiLARE模型结果为例,可视化结果如图4所示,图中每个小格代表一组相似度,限于空间仅标注了粗粒度情绪(sad/joy/anger)。图4 (a) 展示预训练模型输出向量间的相似度情况,由于表示坍缩,即使相反情绪类别向量(如:sad及joy)仍具有较高的相似度;图4 (b) 展示了仅使用分类模块的相似度结果,可以看到,不同类别在方向上相互正交(余弦相似度为0),这忽略了不同情绪类别间存在的不同的情感关系,认为它们相互独立。而同时对比欧氏空间和双曲空间下的模型结果,我们发现使用双曲空间度量学习到的表示在一定程度上保留了细粒度以及粗粒度情感间的关系。
属于同一粗粒度的细粒度情绪间相似度相对较高;对不同粗粒度情绪,相反的两个情绪:sad和joy,相似度接近-1;而sad和anger间相似度接近0,表明它们是互不相关的不同情绪。可以看出,我们提出的方法保留了情绪语义间的结构信息。
图4 细粒度类别间余弦相似度Heat map,颜色代表不同相似度数值。(a)未在X-EMAC任务上fine-tune的预训练模型结果。(b)仅使用分类模块进行fine-tune的模型结果。(c)欧式空间度量学习模型结果(d)我们提出的方法。
▍4、小结
本文中,我们提出了一种基于双曲空间度量学习的细粒度情绪类别分类方法。结合粗-细粒度情绪间的层次关系,我们建立了度量学习模块及对应的优化目标。这其中,我们尝试了两种不同的anchor确定策略来缓解度量模块引入的约束可能会带来的过拟合情况。从实验结果我们发现,提出的方法能够提升情绪识别性能,同时,对模型学习到的向量表示的可视化也表明,该方法保留了不同情绪类别间的情感语义关系。
>>>> 主要参考文献:
[1] Jun Gao, Di He, Xu Tan, Tao Qin, Liwei Wang, and Tie-Yan Liu. 2019. Representation degeneration problem in training natural language generation models. In 7th International Conference on Learning Representations, ICLR 2019, New Orleans, LA, USA, May 6-9, 2019.
[2] Bohan Li, Hao Zhou, Junxian He, Mingxuan Wang, Yiming Yang, and Lei Li. 2020. On the sentence embeddings from pre-trained language models. In Proceedings of the 2020 Conference on Empirical Methods in Natural Language Processing, EMNLP 2020, Online, November 16-20, 2020, pages 9119–9130.
[3] Octavian Ganea, Sylvain Gelly, Gary Bécigneul, and Aliaksei Severyn. 2019. Breaking the Softmax Bottleneck via Learnable Monotonic Pointwise Nonlinearities. In Proceedings of the 36th International Conference on Machine Learning, ICML 2019, 9-15 June 2019, Long Beach, California, USA. 2073–2082. http://proceedings.mlr.press/v97/ganea19a.html
[4] Dongyoon Han, Sangdoo Yun, Byeongho Heo, and Young Joon Yoo. 2020. ReXNet: Diminishing Representational Bottleneck on Convolutional Neural Network. CoRR abs/2007.00992 (2020). arXiv:2007.00992 https://arxiv.org/abs/2007.00992
[5] Hyunghoon Cho, Benjamin DeMeo, Jian Peng, and Bonnie Berger. 2019. Large-margin classification in hyperbolic space. In Proceedings of Machine Learning Research, volume 89 of Proceedings of Machine Learning Research, pages 1832–1840. PMLR.
[6] Yanran Li, Ke Li, Hongke Ning, Xiaoqiang Xia, Yalong Guo, Chen Wei, Jianwei Cui, and Bin Wang. 2021. Towards an Online Empathetic Chatbot with Emotion Causes. CoRR abs/2105.11903 (2021). arXiv:2105.11903 https://arxiv.org/abs/2105.11903
[7] Dorottya Demszky, Dana Movshovitz-Attias, Jeongwoo Ko, Alan Cowen, Gaurav Nemade, and Sujith Ravi. 2020. GoEmotions: A Dataset of Fine-Grained Emotions. In Proceedings of the 58th Annual Meeting of the Association for Computational Linguistics. Association for Computational Linguistics, Online, 4040–4054. https://doi.org/10.18653/v1/2020.acl-main.372
[8] Kihyuk Sohn. 2016. Improved deep metric learning with multi-class n-pair loss objective. In Advances in Neural Information Processing Systems, volume 29. Curran Associates, Inc.
[9] Maximilian Nickel and Douwe Kiela. 2017. Poincaré Embeddings for Learning Hierarchical Representations. CoRR abs/1705.08039 (2017). arXiv:1705.08039 http://arxiv.org/abs/1705.08039
[10] Pei Ke, Haozhe Ji, Siyang Liu, Xiaoyan Zhu, and Minlie Huang. 2020. SentiLARE: Sentiment-Aware Language Representation Learning with Linguistic Knowledge. In Proceedings of the 2020 Conference on Empirical Methods in Natural Language Processing (EMNLP), pages 6975–6988, Online. Association for Computational Linguistics.
End