论文目的

对比学习是自监督学习在NLP中的应用,本文使用对抗方法生成对比学习需要的训练样本对,对比学习提升了对抗训练的泛华能力,对抗训练也增强了对比学习的鲁棒性,提出了两种结构:supervised contrastive adversarial learning (SCAL) 和 unsupervised SCAL (USCAL),即有监督的对比对抗训练和无监督的对比对抗训练(USCAL是不是改为UCAL更合适?)。使用监督任务的loss生成对抗训练的实例,无监督任务带来对比损失。在多个数据集上进行测试,效果良好

相关工作

contrastive learning

对比学习被广泛使用于自监督学习,它学习一个encoder表征训练集合里的图片,好的表征能识别相同的物体并区分不同的物体。cv中使用旋转、颜色变化和裁剪等图像变换方式数据增强生成正对,它们在表征空间中彼此接近。对比学习也可以用在有监督学习中充分利用标签数据。SimCLR(对比不同的数据增强方法、大batch、大epoch)、MoCo(动态队列存储更多的负样本、动量缓慢更新保持一致性)、BYOL(只区分minibatch内的)。
这种学习范式在NLP中也有应用,对比学习的关键是生成正对,而在NLP中生成正对是困难的,通常使用回传、删除词语和片段、还有切割句子。SimCSE仅适用dropout提高句子的表达能力,我们的工作也使用dropout增加句子的不同视角,但对抗性实例也作为正对添加到对比损失中,这样不仅增加的模型训练的难度,也使得模型更鲁棒和富有表现力。

Adversarial Training and Adversarial Attack

对抗训练是指用干净的对抗样本训练网络,使得网络可以抵御攻击并提高鲁棒性,在object detection, segmentation and image classification上都有应用。为了完成训练,必须使用干净的样本和网络产生对抗训练样本,使得网络预测错误的类标签。Word-level substitution and sentence-level rephrasing 是典型的文本对抗性攻击。Fast Gradient Sign Method (FGSM) and Fast Gradient Method (FGM) 是本文中使用的对抗训练的方法。
基于对抗和对比训练的在CV和NLP中都有许多工作,本文侧重于对模型encoder向量级别的对抗攻击,并将对抗性实例用于对比损失。在有监督和无监督的两个任务上都提出了框架,并在数据集上获得了好效果。

本文方法

Adversarial Training And Adversarial Attack Methods

数据集D=(X,Y)D=(X,Y)D=(X,Y)
映射fθ:X→Yf_{\theta}:X \to Yfθ​:X→Y
满足δ∗=arg⁡max⁡δLce(x+δ,y;θ).s.t.∣δ∣p<ε\delta^*=\arg\max_{\delta}L_{ce}(x+\delta,y;\theta).s.t.|\delta|_p<\varepsilonδ∗=argmaxδ​Lce​(x+δ,y;θ).s.t.∣δ∣p​<ε
FGSM:
xadv=x+δ=x+ε∗sign(ΔxLce(x,y;θ)).s.t.∣δ∣p<εx^{adv}=x+\delta=x+\varepsilon*sign(\Delta xL_{ce}(x,y;\theta)).s.t.|\delta|_p<\varepsilonxadv=x+δ=x+ε∗sign(ΔxLce​(x,y;θ)).s.t.∣δ∣p​<ε
FGM:
xadv=x+δ=x+ε∗(ΔxLce(x,y;θ)∣ΔxLce(x,y;θ)∣2).s.t.∣δ∣p<εx^{adv}=x+\delta=x+\varepsilon*(\frac{\Delta xL_{ce}(x,y;\theta)}{|\Delta xL_{ce}(x,y;\theta)|_2}).s.t.|\delta|_p<\varepsilonxadv=x+δ=x+ε∗(∣ΔxLce​(x,y;θ)∣2​ΔxLce​(x,y;θ)​).s.t.∣δ∣p​<ε

Self-supervised Contrastive Learning

自监督训练中,样本是无标签的,同一个样本经过两种数据增强方式得到两个样本,一个优秀的模型应该使得正样本更相近,离其它样本更远。
对比学习的loss是infoNCE
Lct=−log⁡exp⁡(sim(xip,xiq/τ))∑k=1Ksim(xip,xkq/τ))L_{ct}=-\log\frac{\exp(sim(x^p_i,x^q_i/\tau))}{\sum_{k=1}^Ksim(x^p_i,x^q_k/\tau))}Lct​=−log∑k=1K​sim(xip​,xkq​/τ))exp(sim(xip​,xiq​/τ))​
xip,xiqx^p_i,x^q_ixip​,xiq​是一对正样本;xkqx^q_kxkq​是负样本;
本文在有监督和无监督的框架中使用不同的转换方法。在有监督的训练中,使用对抗样本作为原始样本的正样本;而无监督的训练中,利用第一个dropout来生成正对,对抗样本也会被用来作为正对。在infoNCE中,主要的问题是两个数据增强的不同,所以我们使用对抗攻击产生不同的正对,在模型中对抗式的训练。

Supervised Contrastive Adversarial Learning


样本xix_ixi​先经过encoder生成hih_ihi​,利用有监督的训练计算损失Lce=−1N∑i=1N∑c=0Cyi,clog⁡(p(yi,c∣hi))L_{ce}=-\frac{1}{N}\sum_{i=1}^N\sum_{c=0}^Cy_{i,c}\log(p(y_{i,c}|h_i))Lce​=−N1​∑i=1N​∑c=0C​yi,c​log(p(yi,c​∣hi​))
然后生成对抗性扰动并按照FGM批量添加到每个样本中的词向量中(FGSM是类似的)
xiadv=xiemb+δi=xiemb+ε∗(ΔxLce(x,y;θ)∣ΔxLce(x,y;θ)∣2)x^{adv}_i=x^{emb}_i+\delta_i=x^{emb}_i+\varepsilon*(\frac{\Delta xL_{ce}(x,y;\theta)}{|\Delta xL_{ce}(x,y;\theta)|_2})xiadv​=xiemb​+δi​=xiemb​+ε∗(∣ΔxLce​(x,y;θ)∣2​ΔxLce​(x,y;θ)​)
生成的新xiadvx^{adv}_ixiadv​重新经过encoder生成hiadvh^{adv}_ihiadv​,两个hiadvh^{adv}_ihiadv​和hih_ihi​经过pooling层生成ziadvz^{adv}_iziadv​和ziz_izi​计算对比损失
Lct=−log⁡exp⁡(sim(zi,ziadv/τ))∑k=1Ksim(zi,zk/τ))L_{ct}=-\log\frac{\exp(sim(z_i,z^{adv}_i/\tau))}{\sum_{k=1}^Ksim(z_i,z_k/\tau))}Lct​=−log∑k=1K​sim(zi​,zk​/τ))exp(sim(zi​,ziadv​/τ))​
SCAL的总损失是
Ltotal=12(Lce(x,y)+Lce(xadv,y))+αLct(x,xadv)L_{total}=\frac{1}{2}(L_{ce}(x,y)+L_{ce}(x^{adv},y))+\alpha L_{ct}(x,x^{adv})Ltotal​=21​(Lce​(x,y)+Lce​(xadv,y))+αLct​(x,xadv)

Unsupervised Contrastive Adversarial Learning


首先使用simCSE中的dropout生成第一步的正负样本(xemb1xemb2x^{emb1}\ x^{emb2}xemb1 xemb2)
利用第一步的对比损失生成对抗扰动并按照FGM批量添加到每个样本中的词向量中(FGSM是类似的)
xiadv=xiemb1+δi=xiemb1+ε∗(ΔxLcl(xemb1,xemb2;θ)∣ΔxLcl(xemb1,xemb2;θ)∣2)x^{adv}_i=x^{emb1}_i+\delta_i=x^{emb1}_i+\varepsilon*(\frac{\Delta xL_{cl}(x^{emb1},x^{emb2};\theta)}{|\Delta xL_{cl}(x^{emb1},x^{emb2};\theta)|_2})xiadv​=xiemb1​+δi​=xiemb1​+ε∗(∣ΔxLcl​(xemb1,xemb2;θ)∣2​ΔxLcl​(xemb1,xemb2;θ)​)
USCAL的总损失是
Ltotal=Lct(xemb1,xemb2)+αLct(xemb1,xadv)L_{total}=L_{ct}(x^{emb1},x^{emb2})+\alpha L_{ct}(x^{emb1},x^{adv})Ltotal​=Lct​(xemb1,xemb2)+αLct​(xemb1,xadv)

EXPERIMENTS

SCAL和USCAL在大型预训练语言模型下对不同任务测试性能

Training Details

BERT和Roberta中[CLS]上面加pooling层和分类层

datasets

有监督:GLUE、AG’s News and TREC
无监督:SentEval
稳健性:ANLI

models

bert(base和large)、roberta(base和large)
对比模型:SIMCSE、FreeLB、SMART、ALUM、InfoBERT、

Experiment Result on SCAL


消融试验

Experiment Result on USCAL

阅读感官

第一次接触对比+对抗做自监督,第一眼看到结果觉得好惊讶,看完消融试验觉得又是符合预期的,后面要多补充一下对抗做NLP的知识

Simple Contrastive Representation Adversarial Learning for NLP Tasks相关推荐

  1. 文献阅读:SimCSE:Simple Contrastive Learning of Sentence Embeddings

    文献阅读:SimCSE:Simple Contrastive Learning of Sentence Embeddings 1. 文献内容简介 2. 主要方法介绍 3. 主要实验介绍 1. STS ...

  2. Kaiming He论文阅读笔记三——Simple Siamese Representation Learning

    Kaiming He大神在2021年发表的Exploring Simple Siamese Representation Learning,截至目前已经有963的引用,今天我们就一起来阅读一下这篇自监 ...

  3. CS224d: Deep Learning for NLP Lecture1 听课记录

    重点提炼 自然语言处理的一般处理过程/NLP levels 初始输入数据分为语音和文本两大类,对于语音一般进行语音分析转换成文本(语音识别),对于文本一般进行词条化处理.而后两者处理过程类似,即依次进 ...

  4. NLP之路-Deep Learning in NLP (一)词向量和语言模型

     from: http://licstar.net/archives/328 这篇博客是我看了半年的论文后,自己对 Deep Learning 在 NLP 领域中应用的理解和总结,在此分享.其中必 ...

  5. NLP之路-Deep Learning for NLP 文章列举

    From:  http://www.xperseverance.net/blogs/2013/07/2124/ 慢慢补充 大部分文章来自: http://www.socher.org/ http: ...

  6. Deep Learning in NLP (一)词向量和语言模型

    这篇博客是我看了半年的论文后,自己对 Deep Learning 在 NLP 领域中应用的理解和总结,在此分享.其中必然有局限性,欢迎各种交流,随便拍. Deep Learning 算法已经在图像和音 ...

  7. Transfer Learning for NLP with TensorFlow Hub

    文章目录 Transfer Learning for NLP with TensorFlow Hub Overview Project Task 2: Setup your TensorFlow an ...

  8. Deep Learning for NLP 文章列举

    一.大部分文章来自: 原文:http://www.xperseverance.net/blogs/2013/07/2124/ http://www.socher.org/ http://deeplea ...

  9. DivCo: Diverse Conditional Image Synthesis via Contrastive Generative Adversarial Network

    模式崩溃是cGAN较为重要的问题,以往工作大多数都致力于关注latent code和生成图像之间的关系而没有关注通过不同latent code生成的图像之间的关系.MSGAN(mode seeking ...

最新文章

  1. 2012年初二晚越秀公园游灯有感一二
  2. 算法:排序算法的比较
  3. 独家:这也许是最具珍藏价值的Oracle DBA生存宝典!
  4. 应用C语言编辑画图程序
  5. java 7个数排序_7 Java 快速排序
  6. import jpype报错 解决办法
  7. [常用类]Instant类的使用
  8. 如何选择和阅读科技论文
  9. 360浏览器兼容IE模式下打印去掉页眉页脚
  10. C#在word中插入表格(包含从excel中选取表格插入到word中)
  11. 性能测试从入门到高级进阶之路(二):小白教程influxdb+grafana+jmeter性能监控平台
  12. oracle基本命令
  13. 机器学习笔记~HDF5 library version mismatched error与ImportError: 'save_model' requires h5py问题解决
  14. 直接把结果输出到打印机
  15. C++关于函数声明 函数实现
  16. Swift 5.6 特性
  17. hgetall php,HGETALL命令_视频讲解_用法示例-redis编程词典-php中文网
  18. VM2230 asdebug.js:xxx:端口不在以下 request 合法域名列表中
  19. 基于C++的PL0语言编译器及功能扩充
  20. DAO(DBUtils实现)

热门文章

  1. python clicknium 微信发送消息以及获取好友列表
  2. Unity3d:UGUI,UI与特效粒子层级,2018.2以上版本BakeMesh,粒子在两个Image之间且在ScrollView
  3. Mac 运行 JNLP 文件
  4. dva处理_dva 源码解读
  5. 微信与php什么区别,微信小店和微信小程序的区别是什么?
  6. 油菜出现花而不实现象,这是什么原因,该怎样防治?
  7. 学Git?这一篇就够了
  8. html页面布局实验原理,html网页制作实验报告.doc
  9. Windows10商店安装Ubuntu 18.04 LTS
  10. Installations