PairSCL:句子对级别的有监督对比学习方法
写在前面
大家好,我是刘聪NLP。
今天给大家带来清华软院的一篇文章,针对自然语言推理任务的句子对级别的有监督对比学习方法-PairSCL,全名《Pair-Level Supervised Contrastive Learning for Natural Language Inference》。
paper:https://arxiv.org/pdf/2201.10927.pdf
github:https://github.com/THU-BPM/PairSCL
假期马上就要结束了,记得劳逸结合呦~~~
介绍
自然语言推理(Natural Language Inference,NLI)任务是自然语言理解研究领域的一个基本问题,根据给定的前提句(premise)和假设句(hypothesis),推断他们直接的关系,包括:蕴含、中立和矛盾。最近,许多研究采用对比学习的方法,结合NLI数据集中的句子对本身的关系来学习句子表示。
但是,这些方法仅关注了句子对中每个句子的表征,没有考虑不同类别中句子对之间的关系。针对NLI任务,该论文提出句子对级别的有监督对比学习方法,即「采用交叉注意力机制学习句子对的联合表征,并通过对比学习,将相同类别的句子对表征拉到一起,不同类别的句子对表征推开」。
模型
PairSCL模型结构如下图所示,共包含:句子编码层、交叉注意力层、损失层。
句子编码层
句子编码层,即对输入的文本分别计算句子的表征。对于给定一个NLI数据实例,包含前提句为,假设句为,其中,和为句子长度。将其通过编码器BERT或RoBERTa模型,获得其对应的句向量表征为和,其中,为模型输出维度。
交叉注意力层
交叉注意力层,即通过捕获句子对之间的关系,获取句子对表征。首先计算前提句和假设句之间的词级别注意力矩阵,针对前提句第i个词和假设句第j个词有,
其中,,,表示向量按元素相乘。然后获取包含假设句信息的前提句i个词的表征,
然后进一步增强局部语义信息,
其中,表示链接操作;表示原前提表征与假设信息增强的前提表征之间的差异;表示语义相似度;上述两个内容均用来衡量句子对之间的语义相关度。差异越小,语义相似度越大,句子对越容易被归到蕴涵类中。得到了包含假设句推理信息的前提句新表征,
其中,表示层归一化;同理获取包含前提句推理信息的假设句新表征;最后,将其拼接,得到句子对表示,
损失层
损失层,通过联合监督对比学习损失和交叉熵损失,训练网络参数,获取更好的句子表征及句子对表征。
监督对比学习损失
对于一个批次数据,定义正例为,损失为
其中,表示句子对i和句子对p是否相似;为温度超参数;通过优化,可以相同类别的句子对表征更紧密,「将同一类别的句子对从其他类别中剥离开」。
交叉熵损失
对于一个批次数据,损失为
其中,和为可训练参数;通过优化,「判断句子对表征具体属于哪一种类型」。
总损失
总损失为监督对比学习损失和交叉熵损失的加权求和,
其中,为平衡两种损失的超参数。
实验结果
基础模型采用了BERT和RoBERTa模型,训练10个epoch,批次大小为512,温度为0.05,优化器为Adam优化器,超参数α为1。对于base模型学习率为5e-5,large型模型学习率为1e-5,最大句子长度为128。
在NLI数据集上,共与ESIM、KIM、ADIN、BERT和RoBERTa5种模型进行比较,如下表所示,均取得了较好的效果。
总结
个人认为,该论文的思想还是挺奇特的,不仅考虑原始句子的表征,还同时考虑到句子对表征之间的差异;是一个有监督交互式文本表征更好的方法。
往期推荐