Paper Reading: SimCSE

SimCSE: Simple Contrastive Learning of Sentence Embeddings

尚未发表。Github. Paper.

1. 什么是对比学习及度量标准

1.1 概念

无监督学习两种思路:1. 生成式学习。i.e. GAN, VAE 2. 对比式学习

核心是构建正负样本集合,学习同正样本之间的共同特征(拉进二者距离),区分负样本(拉远距离)。

举个栗子:

Loss的负对数和里面是正样本对的softmax值,min Loss ⇔\Leftrightarrow max positive pairs similarity。similarity可以用cos sim。

1.2 度量标准

如何衡量对比学习的性能好坏?对比学习的优化目标:

  • 拉进正样本对表示之间的距离
  • 随机样例表示分布在超球面上

Wang & Isola(ICML2020)从此出发提出了两个指标:alignment和uniformity

image-20210427112500871 image-20210427112520308

  • alignment计算正例对之间的向量距离的期望:

    ℓalign ≜E(x,x+)∼ppos ∥f(x)−f(x+)∥2\ell_{\text {align }} \triangleq \underset{\left(x, x^{+}\right) \sim p_{\text {pos }}}{\mathbb{E}}\left\|f(x)-f\left(x^{+}\right)\right\|^{2}align(x,x+)pposEf(x)f(x+)2

    越相似的样例之间的alignment程度越高。因为alignment使用距离来衡量,所以距离越小表示alignment的程度越高。

  • uniformity评估所有数据的向量均匀分布的程度,越均匀,保留的信息越多。

    ℓuniform ≜log⁡Ex,y∼i.i.d.pdata e−2∥f(x)−f(y)∥2\ell_{\text {uniform }} \triangleq \log \underset{\quad}{\mathbb{E} \atop x, y \stackrel{i . i . d .}{\sim} p_{\text {data }}} e^{-2\|f(x)-f(y)\|^{2}}uniformlogx,yi.i.d.pdataEe2f(x)f(y)2

    从表示空间中采样两个数据x和y, 希望他们的距离比较远。他们的距离越远,证明空间分布越均匀,uniform值也是越低越好。

SimCSE也采用这两个指标来衡量生成的句子向量,并证明了文本的语义空间也满足:alignment值越低且uniformity值越低,向量表示的质量越高,在STS任务上的Spearman相关系数越高。

2 Intuition

  1. 无监督SimCSE: 用dropout替换了传统的数据增强方法,将同一个文本输入到编码器中分别dropout两次作为对比学习的正例。
  2. 有监督SimCSE: 简单地将NLI的数据用于监督对比学习,效果也甚好。

3 无监督SimCSE

3.1 算法

Unsup SimCSE 引入dropout给输入加噪声视为***”数据增广“***,假设加噪后的输入仍与原始输入在语义空间距离相近。其正负例的构造方式如下:

  • 正例:给定输入xix_ixi,用PTM的Encoder函数fθ()f_\theta()fθ()编码xix_ixi两次得到两个正向量hizih_i^{z_i}hizi,hizi′h_i^{z_i^\prime}hizi作为正例对。
  • 负例:in-batch neg instance. 在一个batch中随机采用另一个xjx_jxj作为负例,hizih_i^{z_i}hizi,hj′h_j^\primehj为负例对。

Loss选取为:
ℓi=−log⁡esim⁡(hizi,hizi′)/τ∑j=1Nesim⁡(hizi,hj′)/τ\ell_{i}=-\log \frac{e^{\operatorname{sim}\left(\mathbf{h}_{i}^{z_{i}}, \mathbf{h}_{i}^{z_{i}^{\prime}}\right) / \tau}}{ \left.\sum_{j=1}^{N} e^{\operatorname{sim}\left(\mathbf{h}_{i}^{z_{i}}, \mathbf{h}_{j}^{\prime}\right.}\right) / \tau} i=logj=1Nesim(hizi,hj)/τesim(hizi,hizi)/τ

如何实现两次不同的dropout?——Do Nothing.

https://github.com/princeton-nlp/SimCSE/issues/5

“Your understanding is correct. No extra change is needed over original BERT implementation. Simply forwarding the same sentence two times will give you two embeddings with different (internal) dropout masks.”

——By Tianyu Gao.

确实Simple.

3.2 原理图

以#batch=3为例。

image-20210427135619011

3.3 实验效果

3.3.1从向量表示效果来看

image-20210427135942784

其中crop k%表示随机减掉k%长度的span,word deletion表示随机删除k%的词,delete one word只删除一个词,MLM 15%表示用随机替换掉15%的词。上表中所有dropout的方法的dropout的比例都是0.1。(因为文中对比了不同比例的dropout,p=0.1效果最好。)

3.3.2 从对比学习来看

image-20210427141257966

Fixed0.1的意思是固定了dropout的格式,即两次masking神经元的节点概率完全相同,可以理解为单纯的数据复制的“增广“。

只有Unsup SimCSE是在一致性和均匀性这两点上都变好的。

4 有监督SimCSE

作者在历经尝试了问答系统、CV、和机器翻译的数据后,最后发现用自然语言理解的数据集效果提升最明显。利用NLI的数据集进行带标签的训练。

文本蕴含任务,句子对数据的三种label: entailment,contradiction,neutral。

4.1 算法设计

假设如果两个句子存在蕴含关系,那么它们之间的句子向量距离应该较近;如果两个句子存在矛盾关系,那么它们的距离应该较远。

  • 正例:NLI中entailment关系样例对。
  • 负例:1) in-batch negatives 2) NLI中为contradiction的样例对(不使用neural pairs,contradiction也只用了一个,理论上可以抽很多)。

4.2 原理图

image-20210427142742376

Loss选取为:
−log⁡esim⁡(hi,hi+)/τ∑j=1N(esim⁡(hi,hj+)/τ+esim⁡(hi,hj−)/τ)-\log \frac{e^{\operatorname{sim}\left(\mathbf{h}_{i}, \mathbf{h}_{i}^{+}\right) / \tau}}{\sum_{j=1}^{N}\left(e^{\operatorname{sim}\left(\mathbf{h}_{i}, \mathbf{h}_{j}^{+}\right) / \tau}+e^{\operatorname{sim}\left(\mathbf{h}_{i}, \mathbf{h}_{j}^{-}\right) / \tau}\right)} logj=1N(esim(hi,hj+)/τ+esim(hi,hj)/τ)esim(hi,hi+)/τ

4.3 实验效果

4.3.1 不同有监督数据集的提升

image-20210427143852634

4.3.2 总体实验结果

image-20210427144155748

5 各向异性问题

5.1 理论证明

文本表示的嵌入是文本空间中一狭窄的锥,存在着各向异性的问题,引起奇异值退化(→0\rightarrow00)导致了梯度消失。

常用的做法有:后处理;映射为各向同性分布;加正则项。

而作者证明对比目标可以内在地“平滑”句子嵌入矩阵的奇异值分布。

Proof:

假设f(x)f(x)f(x)已经归一化过,且当负例样本对趋向于无穷大,则对比学习的渐进性优化目标可写为:
−1τE(x,x+)∼ppos [f(x)⊤f(x+)]+Ex∼pdata [log⁡Ex−∼pdata [ef(x)⊤f(x−)/τ]]\begin{array}{l} -\frac{1}{\tau} \underset{\left(x, x^{+}\right) \sim p_{\text {pos }}}{\mathbb{E}}\left[f(x)^{\top} f\left(x^{+}\right)\right] +\underset{x \sim p_{\text {data }}}{\mathbb{E}}\left[\log \underset{x^{-} \sim p_{\text {data }}}{\mathbb{E}}\left[e^{f(x)^{\top} f\left(x^{-}\right) / \tau}\right]\right] \end{array} τ1(x,x+)pposE[f(x)f(x+)]+xpdataE[logxpdataE[ef(x)f(x)/τ]]
经过Encoder编码之后假设hi=f(xi)h_i=f(x_i)hi=f(xi),且根据指数函数的凸性可由詹森不等式,优化目标的后半部分可为:
Ex∼pdata [log⁡Ex−∼pdata [ef(x)⊤f(x−)/τ]]=1m∑i=1mlog⁡(1m∑j=1mehi⊤hj/τ)≥1m∑i=1mlog⁡(1τm∑j=1mehi⊤hj)=1τm2∑i=1m∑j=1mhi⊤hj.\begin{aligned} & \underset{x \sim p_{\text {data }}}{\mathbb{E}}\left[\log \underset{x^{-} \sim p_{\text {data }}}{\mathbb{E}}\left[e^{f(x)^{\top} f\left(x^{-}\right) / \tau}\right]\right] \\ =& \frac{1}{m} \sum_{i=1}^{m} \log \left(\frac{1}{m} \sum_{j=1}^{m} e^{\mathbf{h}_{i}^{\top} \mathbf{h}_{j} / \tau}\right) \\ \geq & \frac{1}{m} \sum_{i=1}^{m} \log \left(\frac{1}{\tau m} \sum_{j=1}^{m} e^{\mathbf{h}_{i}^{\top} \mathbf{h}_{j}}\right) \\ = & \frac{1}{\tau m^{2}} \sum_{i=1}^{m} \sum_{j=1}^{m} \mathbf{h}_{i}^{\top} \mathbf{h}_{j} . \end{aligned} ==xpdataE[logxpdataE[ef(x)f(x)/τ]]m1i=1mlog(m1j=1mehihj/τ)m1i=1mlog(τm1j=1mehihj)τm21i=1mj=1mhihj.
设W为句子表示矩阵。WWW的第iii行即为hih_ihi,所以上式向量内积ΣΣhihj\Sigma\Sigma h_ih_jΣΣhihj也即为矩阵WWTWW^TWWT的元素和。又因为我们对hih_ihi做过标准化,则Σdiag(WWT)=1\Sigma diag(WW^T)=1Σdiag(WWT)=1tr(WWT)tr(WW^T)tr(WWT)是个常数。若其所有元素都是整数,则可证sum(WWT)=supλmax(WWT)sum(WW^T) = sup \lambda_{max}(WW^T)sum(WWT)=supλmax(WWT), 即其元素和为其最大特征值的upper bound.

综上,对比学习的优化目标,可以同时平滑句子表示矩阵的协方差的特征值。

与JL Su等人的后处理方法相比,仅关注公式4各向同性表征,对比学习也通过公式4中的第一项优化对齐正对,这是SimCSE成功的关键。

5.2 数据分布

此外,我们观察到SimCSE的分布通常比BERT或SBERT更分散,但与白化分布相比,在语义相似的句子对上保持了较低的方差

5.3 其他值得注意的点

  1. Loss最终实验选取了L=l+λ⋅lmlmL = l+\lambda\cdot l^{mlm}L=l+λlmlm,加入dropout时masking这个步骤中的的loss,避免灾难性遗忘问题,可视为多任务训练。
  2. 和苏剑林一样,embedding表示取第一层和最后一层的平均值,这比只取最后一层好。
  3. 其他结果:

image-20210427153544115

将训练好的句子向量迁移到其他7个任务上:

在embedding的基础上只接一个逻辑回归的线性分类器。(SentEval中提供了17种任务来进行句子向量表示模型的评测。)

迁移学习上的SimCSE并没有展现出明显的优势。作者的解释是句子级别的训练目标并不能直接有利于迁移学习。为了让迁移学习效果更好,文中还是尝试将MLM损失和对比学习损失一起训练,取得了少量的提升(上表中标有w/MLM的行)。

6. PTM

预训练模型已发布并集成到HuggingFace。

from transformers import AutoModel, AutoTokenizertokenizer = AutoTokenizer.from_pretrained("princeton-nlp/sup-simcse-bert-base-uncased")
model = AutoModel.from_pretrained("princeton-nlp/sup-simcse-bert-base-uncased")

7. 参考资料

对比学习(Contrastive Learning)综述

Understanding Contrastive Learning

Wang, T. & Isola, P. Understanding Contrastive Representation Learning through Alignment and Uniformity on the Hypersphere. in International Conference on Machine Learning 9929–9939 (PMLR, 2020).

中文任务还是SOTA吗?我们对SimCSE做了一些补充实验(JL Su, 04/26)

Paper Reading 《SimCSE》相关推荐

  1. Paper Reading《Fastformer Additive Attention Can Be All You Need 》

    Paper Reading<Fastformer: Additive Attention Can Be All You Need > Paper url:笔者写作时作者Github尚未开源 ...

  2. paper reading——《Improving Person Re-identification by Attribute and Identity Learning》

    ##这篇文章是关于利用行人属性提升行人再识别 论文链接:https://arxiv.org/pdf/1703.07220.pdf ###摘要 行人再识别(reid)和属性识别有着一个共同的目标是描述行 ...

  3. Paper Reading《Taming Pretrained Transformers for Extreme Multi-label Text Classification 》

    @time:2020-11-30 github code arxiv paper SIGKDD 2020 Applied Data Track 1. 主要工作 针对极端多标签文本分类(Extreme ...

  4. Paper:《Disc and Drum Brake Dynamometer Squeal Noise Test Procedure》翻译及其解读

    Paper:<Disc and Drum Brake Dynamometer Squeal Noise Test Procedure>翻译及其解读 目录 Disc and Drum Bra ...

  5. Paper:《Graph Neural Networks: A Review of Methods and Applications—图神经网络:方法与应用综述》翻译与解读

    Paper:<Graph Neural Networks: A Review of Methods and Applications-图神经网络:方法与应用综述>翻译与解读 目录 < ...

  6. Paper:《NÜWA: Visual Synthesis Pre-training for Neural visUal World creAtion,女娲:用于神经视觉世界创造的视觉》翻译与解读

    Paper:<NÜWA: Visual Synthesis Pre-training for Neural visUal World creAtion,女娲:用于神经视觉世界创造的视觉>翻 ...

  7. Paper:《Spatial Transformer Networks》的翻译与解读

    Paper:<Spatial Transformer Networks>的翻译与解读 目录 <Spatial Transformer Networks>的翻译与解读 Abstr ...

  8. Paper:《A Few Useful Things to Know About Machine Learning—关于机器学习的一些有用的知识》翻译与解读

    Paper:<A Few Useful  Things to  Know About  Machine  Learning-关于机器学习的一些有用的知识>翻译与解读 目录 <A Fe ...

  9. Paper:《First Order Motion Model for Image Animation》翻译与解读

    Paper:<First Order Motion Model for Image Animation>翻译与解读 目录 <First Order Motion Model for ...

最新文章

  1. mysql和windows连接不上_问题-jdbc连接不上mysql,windows下开启两个mysql服务
  2. uniapp移动端H5在线预览PDF等文件实现源码及注解
  3. 【Python-ML】聚类的性能评价指标
  4. Java UDP 编程简介.
  5. delphi指针简单入门
  6. boost::python::converter::as_to_python_function相关的测试程序
  7. IE9真的支持CSS3和HTML5?
  8. 关于单片机串口发送和接收的问题
  9. 苹果开发者_苹果优秀开发者实锤 微软VS Code将支持Apple Silicon
  10. 【文智背后的奥秘】系列篇——分布式爬虫之WebKit
  11. dadayi大一c语言累加编程题,c++习题答案中国电力出版社
  12. wince系统usb刷机工具_中兴B860AV1.2-S905L刷机救砖教程,喜欢的分享一下
  13. Docker1.12.6+CentOS7.3 的安装
  14. Powershell-获取Hyper-V复制状态
  15. Android 应用程序获得系统权限
  16. Atitit db access req数据库访问规范jdo jdbc jpa pdo sql 目录 1. 常见特性 1 1.1. 元数据 API 1 1.2. 分布式事务 vs事务中使用 Sav
  17. 第一章 批判性思维概念
  18. 云计算是用来做什么的
  19. 北京工业大学2020计算机考研复试科目,2020北京工业大学计算机考研专业课调整...
  20. 【node】------node连接mongodb操作数据库------【巷子】

热门文章

  1. 复杂度的渐进表示法(时间复杂度)
  2. 学java日志框架,看这一篇就够了!!!
  3. linux多字节错误,在Linux中解压缩时遇到多字节字符的问题
  4. Kafka和Flink双剑合璧,Confluent收购Immerok引起业内广泛讨论
  5. 语音识别基础算法——动态时间规整算法
  6. Python数据分析—Pandas数据规整
  7. linux上部署K8S集群
  8. 2016区域赛前冲刺训练
  9. [Leetcode刷题心得][数组、字符串]242. 有效的字⺟母异位词
  10. 广告投放相关专业名词整理