文章目录

  • 1 NAACL-2022
    • DiffCSE:Difference-based Contrastive Learning for SentenceEmbeddings
    • Learning Dialogue Representations from Consecutive Utterances
  • ACL2021

1 NAACL-2022

会议论文

DiffCSE:Difference-based Contrastive Learning for SentenceEmbeddings

  1. Motivation
    通过对比学习来学习sentence embeddings的表示。一般的思路:对于单个样本利用multiple augmentations的方法来构造positive pairs. 这些方法的训练目标在于让representations对于augmentation transformation是invariant的。(比如常用的dropout-based的方法) 然而有些的augmentation的方法(如对input进行deletion或者replacement)往往会改变原句的意思,因此,理想的augmentation方法应当对于这些transformations应当是not invariat的。 在计算机视觉领域,此为equivariantcontrastive learning,通过在不敏感的image transformations(如灰度变化)使用对比损失,而在敏感的image transformations(如图片的旋转)上使用prediction loss.

  2. Contribution
    实验表明DiffCSE在unsupervised sentence representa-tion learning methods达到了SOTA的效果。在se-mantic textual similarity tasks上超越SimCSE 2.3个absolute points.

  3. Difference-based Constrastive Learning
    作者的方法很简单,将SimCSE中标准的对比学习目标域与基于sentence embeddings的差异预测目标结合。

75b0ad2331b342aeadfda2701d99a134

上图的左边即为SimCSE的训练目标:

4abc5d9cc8014871aea3f74f96b0cdc4

上图的右边ELECTRA中差异预测训练目标的conditional版本。包括generator和discriminator. 对于给定的长度为T的句子x, 在x上进行随机的mask以获得 x ‘ x^{‘} x, 使用预训练好的MLM模型作为generator来恢复mask tokens,得到 x ‘’ x^{‘’} x‘’,使用discriminator来进行替换的token检测的任务(RTD),对于句子中的每一个token,模型需要预测该token是否被替换。

dab04a0c6160462abd04d5f5ab10c00c

最终的训练目标:

9778a327a4fd47d09bd26b5aab58a052

Discriminator的梯度会反向传播到sentence encoder上,使得sentence encoder能够包含句子x的完整意思,从而使Discriminator能够区分x和 x ‘’ x^{‘’} x‘’的细微区别。

训练过程中固定generator的参数,而优化sentence encoder和discriminator. 在获取sentence embedding时,只需要sentence encoder的输出。

Learning Dialogue Representations from Consecutive Utterances

看到了简单且有效的Dialogue Representation的方法。

  1. 介绍
    学习高质量的对话表示对于解决一系列的面向对话的任务是非常重要的,尤其是考虑到对话系统会遇到数据稀疏的问题。之前的监督式对比学习方法在学习对话表示时,可以使用Dialogue-NLI数据集来构造对比学习中的样本对。但由于其规模和多样性的限制,得到的模型表现并不令人满意。而无监督对比学习的方法,如SimCSE,TOD-BERT分别是一般文本和对话中的SOTA. 将SimCSE直接用在对话数据上表现并不好,作者分析可能需要构造更好的样本对。而TOD-BERT在构造postive pair时,会将所有之前的utterance拼接起来构造positive pair, 局限性太大。

  2. 模型(DSE)
    作者的构造样本对的方法很简单,将连续的utterance拼接起来构造postive pair.

7350cf05427c4c02a9f9d6e963333066

作者采用Hard-Negative sampling策略,损失函数如下所示:

b5dd37d8832f4181816fe4c6a37acc39

如上所示, i i ii + i^{+} i+代表anchor和正样本,给难分的负样本增加权重

52b90183fee846f3911bc15dcc56e08e

由于 i i ii + i^{+} i+的位置可以互换,损失函数可以计算为:

c249129236864127aad44f631a3a89ad

  1. 实验
    虽然作者的方法很简单,但实验表明作者的方法很有效。作者比较当前的SOTA模型与DSE在Intent Classification,Out-of-scope Detection,Utterance-level Response Selection,Dialogue-Level Response Selection与Dialogue Action Prediction的表现。

可以看到无论是Similar-based还是finetune的方法,DSE都表现优异。

e9273c6f301044a38b9d0511d6e76fd0

cde4dfc72f724ab2a504a14ce691049b

ACL2021

原文链接:添加链接描述
[1] 自我引导的对比学习(一个BERT不够,那就两个)
Self-Guided Contrastive Learning for BERT Sentence Representations
https://arxiv.org/pdf/2106.07345.pdf

来自首尔大学,讨论的问题是如何在不引入外部资源或者显示的数据增强的情况下,利用BERT自身的信息去进行对比,从而获得更高质量的句子表示?

文中对比的是:BERT的中间层表示和最后的CLS的表示。模型包含两个BERT,一个BERT的参数是固定的,用于计算中间层的表示,其计算分两步:(1) 使用MAX-pooling获取每一层的句子向量表示 (2)使用均匀采样的方式从N层中采样一个表示;另一个BERT是要fine-tune的,用于计算句子CLS的表示。同一个句子的通过两个BERT获得两个表示,从而形成正例,负例则是另一个句子的中间层的表示或者最后的CLS的表示。

文中还对比了不同负例组合的方式,最后发现只保留CLS的表示和隐藏层的表示之间的对比,忽略CLS和CLS以及中间层和中间层之间的对比是最优的,即保留(1)(3)。

这篇论文没有选择直接从底层数据增强角度出发,是稍微偏模型方法的改进的,侧重挖掘模型内部的信息。主实验是在STS和SentEval任务上测试的,从结果来看的话,仍然是SimCSE要好很多,而且SimCSE操作起来是更简单的。不过本文也是提供了一个不一样的思路。

[2] 花式数据增强
ConSERT: A Contrastive Framework for Self-Supervised Sentence Representation Transfer
https://arxiv.org/pdf/2105.11741.pdf

来自北邮的工作,也是研究如何在无监督的模式下,学习更好的句子表示。该工作主要对比了使用4种不同的数据增强方式进行对比对句子表示的作用。

模型是在STS任务上进行评估的。和SimCSE一样也用了NLI做监督,整体性能比SimCSE低1-2个点。

[3] 无监督文本表示
DeCLUTR: Deep Contrastive Learning for Unsupervised Textual Representations
https://arxiv.org/pdf/2006.03659.pdf

DeCLUTR来自多伦多大学,是NLP领域使用对比学习中较早的一篇,去年6月份就放到arxiv上面了。

文章研究的问题同样是:如何利对比学习从大量无标注数据学习更好的通用句子表示?文中的对比体现在两个方面:

  1. 对比来自不同文档的文本片段(span)的语义。如果两个文本片段(span)来自同一个文档,那么他们的语义表示的距离应该相对较近,否则距离远;
  2. 对比来自同一文档的文本span。当两个文本片段都来自同一个文档,如果他们在文档中的位置距离比较近,他们的语义表示距离近,否则远。
    在采样正例的时候有些讲究。具体来讲是先从一个文档中采样N(>=1)个原始文本片段 (锚点span),然后从每个锚点span周围采样,作为正例 span。采样规则是正例span可以与锚点span交叠、相邻、从属。负例是从一个batch中随机采样得到的。对比学习的损失函数是InfoNCE。模型整体的损失函数是InfoNCE和MLM的加和。

实验是在SenEval benchmark(28个数据集)上进行测试的,包含有/半监督任务和无监督任务。有/半监督任务的baseline有InferSent,Universal Sentence Encoder和Sentence Transformers;无监督任务的baseline有QuickThoughts。最显著的实验结果是DeCLUTR在大部分的数据集上取得了SOTA,并且在无监督任务上取得了和有监督任务相当的结果。

接下来两篇文章是关于如何利用对比学习提升自然语言理解任务的性能。

[4] 论负例对对比学习的重要性
CLINE: Contrastive Learning with Semantic Negative Examples for Natural Language Understanding
https://arxiv.org/pdf/2107.00440.pdf

来自清华大学,文章探讨的是如何利用对比学习提高模型的鲁棒性。在初步实验中发现用探针对句子语义进行轻微扰动,模型就会预测错误。之前的对抗训练确实能够从扰动的样本中学习,但是主要侧重于语义相似的扰动,忽略了语义不同或者相反的扰动。这样的语义改变无法被对抗学习无法检测到。本文提出CLINE,使用无监督的方法构造负样本。通过同时利用语义相似和相反的样例和原始样例进行对比,模型可以侦测到扰动导致的语义的改变。

正负例的构造:

正例是将句子中的词(名词、动词、形容词)替换为其同义词. 负例是将句子中的词替换为其反义词或者随机选择的词。
文中的损失函数由三部分构成:掩码语言模型的MLM损失 + 检测当前词是否是被替换的词 的损失RTD + InfoNCE对比正例和负例。有个小细节不太一样的是对比InfoNCE中并没有引入温度参数τ。

实验是在NLU任务上进行的,包括NLI(SNLI, PERSPECTRUM,) 情感分析(IMDB,MB) 阅读理解 (BoolQ), 新闻分类(AG)。实验结果表明使用CLINE训练的模型可以同时在对抗测试集和对比测试集上提升性能。

[5] 对比实例学习+远距离监督关系抽取
CIL: Contrastive Instance Learning Framework for Distantly Supervised Relation Extraction
https://arxiv.org/pdf/2106.10855.pdf

来自阿里巴巴-浙江大学前沿技术联合研究中心,研究如何利用对比学习提高远距离监督的关系抽取任务的性能。

从对比角度讲,正例是同一关系下的实例对,负例是不同关系的实例对。文中的重点是在有噪声的情况下,如何构造正负例。CIL的baseline是多实例对比学习,是将多个属于同一关系的实例放在一个bag中,一起训练得到一个关系的表示。每个实例都被假设是表达了一个实体对之间的关系。

正例:直觉上讲,对于一个实例的正例只要从同一个bag中随机sample一个就好,或者使用bag的整体表示。但因为是远距离监督,无法保证任意两个实例之间都一定表达了同一种关系,同样也无法保证样例和bag的整体表示一定关系相同。如果这样强行构造正负例的话,必然会引入噪声。文中采用的一种方式是,对于插入/替换掉中不重要的词语(还是数据增强)。
负例:同样因为是远距离监督,不能随便从一个别的bag中采样一个实例作为的负例,那样噪声会比较大。因此文中采用了使用整个别的bag的表示作为负例,能相对更好地降噪。
模型的损失函数是InfoNCE对比损失和MLM损失的加权和。CIL在NYT10,GDS和KBP三个数据集上取得较大提升。

[6] Post-training中使用对比学习
Bi-Granularity Contrastive Learning for Post-Training in Few-Shot Scene
https://arxiv.org/pdf/2106.02327

来自中山大学,本文主要针对样本量稀少的场景,如何使用对比学习先在无标注数据集进行post-training, 然后再在有标注数据集上fine-tuning。

对比方法:互补的mask方法,将一个输入进行多次mask,第一次的mask的比例是, 第二次mask的时候只针对第一次mask中没被选择的token以的比例进行mask,所以两个句子被mask的部分是互补的,第三次以此类推。 对比是在多个被mask的输入上进行的。这样做的好处是既可以避免太小时,两个句子太相似导致对比损失迅速降到0,也可以避免太大而导致模型无法恢复mask的内容。(和SimCSE的直接两次dropout相比复杂了点,但有异曲同工之妙)。

实验是在少样本GLUE上进行的,只有20个样例的时候提升不是很明显,样本100和1000的时候相比之前SOTA有轻微提升。

[7] 对比学习+生成式摘要
SimCLS: A Simple Framework for Contrastive Learning of Abstractive Summarization
https://arxiv.org/pdf/2106.01890

来自CMU,蛮有意思的一篇文章。核心点是利用对比学习将文本生成看作是reference-free的评价问题。

生成式摘要典型的框架是Seq2Seq,之前也有工作将对比学习损失作为MLE损失的增强。不同的是,这篇文章将两个损失用在了不同的阶段。文中将摘要生成分解为两个过程:生成 和 评分+选择。从而提出了two-stage的框架,stage1是Seq2Seq模型,仍然利用MLE损失生成候选摘要,stage2引入对比学习,利用参数化的评估模型对stage1中生成的候选进行排序。两个阶段是分开优化的,都是有监督的。这里对比的是生成的候选摘要和原始文档。引入了一个raking loss, 希望预测值和真实值接近;希望每个候选值之间有差距。

[8] 对比学习 + 意图检测
Modeling Discriminative Representations for Out-of-Domain Detection with Supervised Contrastive Learning
https://arxiv.org/pdf/2105.14289.pdf

来自北邮模式识别实验室,研究的问题是:在Task-oriented的对话系统中,如何检测用户query中的跟task/domain不相关的问题。比如你问一个银行的app语音助手,我有多少余额,它检测该问题为in-domain (IND) 的问题,并给出回答;但你如果问它,我们一起健身的小伙伴都怎样呀?我们不希望模型“不懂装懂”,而是希望它可以检测该问题为out-of-domain (OOD),并引导用户提出domain相关的问题。下图是来自数据集[11]中的一个样例。

OOD的检测方法分为有监督和无监督的两种。有监督的方式在训练时已知哪些数据OOD的,所以在训练时可以将OOD的数据当成一个类型;无监督方式训练的时候只有标注的IND数据。常用的方法是先利用IND数据学习类别的特征 (分类器),然后使用检测算法计算IND样本和OOD样本的相似度。

本文的先验假设是:

一个OOD检测模型依赖于高质量IND类别表示模型。之前的IND分类器虽然在IND数据上表现好,应用到OOD时性能不高,原因是类别间的间隔很模糊。所以该工作的核心是利用对比学习减小类内距离,增大类间距离。更好的IND聚类促使更好的OOD分类。
本文主要针对的是无监督OOD进行训练,策略是先用有监督对比学习在IND数据上训练,然后用cross-entropy损失对分类器fine-tune,有监督对比学习的目标是拉近IND中属于拉近同一类别的意图,推远不同类别的意图。因此:

正例对来自同一个类别的数据 负例是不同类别的数据
文中也使用了对抗攻击生成hard正例来做数据增强。文中的实验是比较全面的,对比了不同scale的数据集,不同的encoder,不同的OOD检测算法。

小花觉得这篇有意思主要是因为OOD检测的思路,不仅可以用在意图检测领域,还可以直接扩展到别的领域,比如用于关系抽取中检测新的关系。

接下来的两篇论文都利用了任务本身的属性将对比扩展到了多对多上,同时包含单个模态/语言的对比和跨模态/跨语言的对比。

[9] 对比学习 + 多模态学习
UNIMO: Towards Unified-Modal Understanding and Generation via Cross-Modal Contrastive Learning
https://arxiv.org/pdf/2012.15409.pdf

来自百度的UNIMO,利用跨模态的对比学习将文本和视觉信息对齐到一个统一的语义空间。之前也有统一训练文本和视觉的模型,比如ViLBERT, VisualBERT,但是它们只能利用有限的文本-图像对齐的数据,且无法有效的适应到单模态的场景。本文要解决的是问题是:如何通过对比学习同时利用单模态和多模态的数据来实现更好的图像-文本对齐?

对比部分核心的点是,通过花式重写原始的caption来生成正例和负例。对于一对对齐的图像-文本数据,通过文本重写的方式构造多模态的正负例样本,同时通过文本/图像检索的方式构造单模态的正例样本。 正负例样本又分为多个level,包括句子级别、短语级别、词级别。比如句子级别的多模态的正例是通过back-translation生成的,负例是利用当前图片的字幕从其它图片的字幕中找相似的得到的。

UNIMO的优势在于可以同时利用单模态数据和多模态对齐数据进行训练,测试时在单模态的理解和生成任务上都表现很好。

[10] 对比学习 + 机器翻译
Contrastive Learning for Many-to-many Multilingual Neural Machine Translation
https://arxiv.org/pdf/2105.09501.pdf

看到这篇文章的时候,脑子里想的是,“一生二,二生三,三生万物”。在对比学习中,只要存在一个对象,我们就可以给它找到或者造一个对比对象,让它们去自我对比,自己进化;当多个对象成立的时候,我们都不需要造了,只需要利用就好。

多对多机翻就是典型的例子。这篇文章来自字节跳动AI Lab,研究的问题是:如何学习更好的通用跨语言表示,来获得更好的多语言翻译效果?尤其是当源语言或者目标语言不是English的时候。

本文的先验假设是,如果两句话说的是同一个意思,即使它们使用的语言不相同,那么它们在语义空间中的表示也应该接近。所以本文的训练目标是:减少相似句子表示之间的距离,增大不相关句子表示之间的距离。文中使用了fancy的数据增强,同时使用单语和多语的数据进行对比。

方法简单,效果好,实验solid,值得细品。

顶会中的对比学习论文-2相关推荐

  1. 对比学习论文综述(part4 transformer + 总结)

    对比学习论文综述(part4:transformer + 总结) part4 Transformer 第四阶段主要是讲Transformer是怎么和对比学习有机结合起来的,在这个阶段主要就是简单的讲一 ...

  2. Bilibili视频-对比学习论文综述【论文精读】

    Bilibili视频-对比学习论文综述[论文精读] 对比学习论文综述[论文精读] 百花齐放 Unsupervised Feature Learning via Non-Parametric Insta ...

  3. 无监督对比学习论文Momentum Contrast for Unsupervised Visual Representation Learning阅读

    目录 MoCo论文:<Momentum Contrast for Unsupervised Visual Representation Learning> 基础概念了解 1.无监督.有监督 ...

  4. 对比学习论文综述(part1、2)

    对比学习论文综述(part1|2) 18年MOCO开始对比学习在CV领域发展历程大概可以分为四个阶段 1.百花齐放 InstDisc(instance discrimination) CPC CMC ...

  5. 机器学习新宠:对比学习论文实现大合集,60多篇分门别类,从未如此全面

    大家好,我是对白. 最近对比学习真的太火了,已然成为各大顶会争相投稿的一个热门领域,而它火的原因也很简单,就是因为它解决了有监督训练标注数据有限这个典型问题(这个问题在工业界非常滴常见).所以对比学习 ...

  6. Parametric Contrastive Learning:长尾问题中的对比学习

    一.监督学习中的损失函数公式 在监督学习中,上面公式是我们最常见的形式,其中,q为query representation,也就是特征,w_y是fc层的权重,相乘得到logits. 二.长尾中重加权的 ...

  7. 【ICML 2020对比学习论文解读】SimCLR: A Simple Framework for Contrastive Learning of Visual Representations

    一.写在前面 对比学习(Contrastive Learning) 对比学习是一种自监督学习方法,在无标签数据集上仍可以学习到较好的表征. 对比学习的主要思想就是相似的样本的向量距离要近,不相似的要远 ...

  8. 知识图谱-生物信息学-医学顶刊论文(Bioinformatics-2022)-SGCL-DTI:用于DTI预测的监督图协同对比学习

    14.(2022.5.21)Bioinformatics-SGCL-DTI:用于DTI预测的监督图协同对比学习 论文标题: Supervised graph co-contrastive learni ...

  9. 对比学习顶会论文系列-3-2

    文章目录 一.特定任务中的对比学习 1.2 摘要生成中的对比学习--SimCLS: A Simple Framework for Contrastive Learning of Abstractive ...

最新文章

  1. C++ - const 与 迭代器(iterator) 使用 详解
  2. ACM MM:一种基于情感脑电信号时-频-空特征的3D密集连接网络
  3. Python之删除字符串中不需要的字符
  4. python人脸对比相似度_python人脸对比
  5. Android绘制(三):Path结合属性动画, 让图标动起来!
  6. GetSystemInfo()
  7. c程序设计语言 练习1-6,C程序设计语言:第一章练习
  8. USB HID学习:一点开发记录
  9. 运用tms320c54x汇编语言编写定点数运算,浮点数运算程序,运用TMS320C54x汇编语言编写定点数运算、浮点数运算程序...
  10. excel表中怎么插入visio_如何插入或 Visio 中粘贴的 Excel 工作表-阿里云开发者社区...
  11. java repl_Java REPL – jshell
  12. LIO-SAM探秘第三章之代码解析(四) --- mapOptmization.cpp (2)
  13. 数据恢复哪家强?四大数据恢复类软件评测
  14. 邱关源电路课后题第二章(第五版)
  15. 2021-2027中国家具拉手市场现状及未来发展趋势
  16. C语言对复数模运算的处理
  17. mysql 增量 命令
  18. 关于java中的setOut()方法
  19. 【tkinter】用不到50行Python代码,写一个扫雷小游戏
  20. docker镜像指定安装源_如何修改docker pull镜像源

热门文章

  1. HashMap底层详讲
  2. 手把手做一个JSP入门程序(九):购物车的基本实现(Servlet)
  3. 【Python】司徒卢威函数
  4. AI语音机器人来袭,改变传统电销模式
  5. 知识蒸馏——pytorch实现
  6. 【深度学习】深度学习基础-Warm_up训练策略
  7. AWTK 在腾讯 TOS 上的移植笔记
  8. 祝CSDN2021牛气冲天祝我也拨云散雾
  9. FileSystemWatcher 基础用法
  10. 矩阵分析之Householder Reduction