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. java arraylist 对象 删除_ArrayList实现删除重复元素(元素不是对象类型的情况)...
  2. oracle可以在liux上装_【Oracle】手把手教你做之Linux上安装Oracle11g
  3. 积累的VC编程小技巧之文件操作
  4. Linux 下配置 Hadoop2.x 高可用 zookeeper Yarn,详细步骤。
  5. (13)Verilog程序结构-基本语法(一)(第3天)
  6. mysql8.0.20安装教程linux_Linux下安装mysql-8.0.20的教程详解
  7. memcached安装和使用
  8. 生命在此定格 路透记者遇难前拍下的最后画面
  9. 2009-2021网络规划设计师论文题汇总
  10. 台式机连接校园网-UPC-lan-login
  11. ctf MISC disordered_zip
  12. 量子笔记:量子计算祛魅
  13. 条件极值例题_条件极值问题、拉格朗日乘数法
  14. PC端js禁止浏览器缩放
  15. python 科学计算三维可视化笔记(第三周 高级进阶)
  16. 柏拉图和他的三个弟子的故事:如何寻找幸福?如何寻找理想伴侣?
  17. eclipse报错:The project description file (.project) for ‘common‘ is missing.
  18. 会议室应用中的“三块屏”
  19. L. Spicy Restaurant(bfs)
  20. java 环形矩阵_java下蛇形回环矩阵的实现

热门文章

  1. 淘宝2011春季校园招聘笔试试题(答案+个人解析版)
  2. 算法——回溯与剪枝(Backtracking and pruning)
  3. Vue 的响应式原理中 Object.defineProperty 有什么缺陷?为什么在 Vue3.0 采用了 Proxy,抛弃了 Object.defineProperty?...
  4. “影子公司” 汇润成功入主深航
  5. android studio查看源码
  6. 浏览器访问百度www.baidu.com过程
  7. 6. 中文命名实体提取
  8. 贝尔机:带你领略编码的魅力
  9. 无缝衔接的人会遭报应吗_伤害这几种人,你的报应会来得快来得狠
  10. 小有成就感了 教会父母玩平板电脑