每天给你送来NLP技术干货!
来自:NLP工作站
作者:刘聪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数据实例,包含前提句为
402 Payment Required
,假设句为402 Payment Required
,其中, 和 为句子长度。将其通过编码器BERT或RoBERTa模型,获得其对应的句向量表征为402 Payment Required
和402 Payment Required
,其中, 为模型输出维度。交叉注意力层
交叉注意力层,即通过捕获句子对之间的关系,获取句子对表征。首先计算前提句和假设句之间的词级别注意力矩阵,针对前提句第i个词和假设句第j个词有,
其中,,,表示向量按元素相乘。然后获取包含假设句信息的前提句i个词的表征,
然后进一步增强局部语义信息,
其中,表示链接操作;表示原前提表征与假设信息增强的前提表征之间的差异;表示语义相似度;上述两个内容均用来衡量句子对之间的语义相关度。差异越小,语义相似度越大,句子对越容易被归到蕴涵类中。得到了包含假设句推理信息的前提句新表征,
其中,表示层归一化;同理获取包含前提句推理信息的假设句新表征;最后,将其拼接,得到句子对表示,
损失层
损失层,通过联合监督对比学习损失和交叉熵损失,训练网络参数,获取更好的句子表征及句子对表征。
监督对比学习损失
对于一个批次数据,定义正例为
402 Payment Required
,损失为其中,表示句子对i和句子对p是否相似;为温度超参数;通过优化,可以相同类别的句子对表征更紧密,「将同一类别的句子对从其他类别中剥离开」。
交叉熵损失
对于一个批次数据,损失为
其中,和为可训练参数;通过优化,「判断句子对表征具体属于哪一种类型」。
总损失
总损失为监督对比学习损失和交叉熵损失的加权求和,
其中,为平衡两种损失的超参数。
实验结果
基础模型采用了BERT和RoBERTa模型,训练10个epoch,批次大小为512,温度为0.05,优化器为Adam优化器,超参数α为1。对于base模型学习率为5e-5,large型模型学习率为1e-5,最大句子长度为128。
在NLI数据集上,共与ESIM、KIM、ADIN、BERT和RoBERTa5种模型进行比较,如下表所示,均取得了较好的效果。在迁移任务上,MR、CR、SUBJ、MPQA、SST-2、TREC和MRPC7种数据集上进行实验,对于单句分类任务,在冻结的BERT编码器表示上训练一个逻辑回归分类器;在MRPC任务中,使用交叉注意力层获得的句子表征来映射语义空间。如下表所示,均取得了较好的效果。
并且在SNLI数据集上进行消融实验,发现去除对比学习损失和交叉注意力层对结果影响很大。
总结
个人认为,该论文的思想还是挺奇特的,不仅考虑原始句子的表征,还同时考虑到句子对表征之间的差异;是一个有监督交互式文本表征更好的方法。
下载一:中文版!学习TensorFlow、PyTorch、机器学习、深度学习和数据结构五件套! 后台回复【五件套】
下载二:南大模式识别PPT 后台回复【南大模式识别】
投稿或交流学习,备注:昵称-学校(公司)-方向,进入DL&NLP交流群。
方向有很多:机器学习、深度学习,python,情感分析、意见挖掘、句法分析、机器翻译、人机对话、知识图谱、语音识别等。
记得备注呦
整理不易,还望给个在看!