Paper Reading 《SimCSE》

16 篇文章 0 订阅
13 篇文章 0 订阅

Paper Reading: SimCSE

SimCSE: Simple Contrastive Learning of Sentence Embeddings

image-20210427094925968

尚未发表。Github. Paper.

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

1.1 概念

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

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

举个栗子:

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

img

1.2 度量标准

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

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

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

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

    ℓ align  ≜ E ( x , x + ) ∼ p pos  ∥ 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+)ppos Ef(x)f(x+)2

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

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

    ℓ uniform  ≜ log ⁡ E x , y ∼ i . i . d . p data  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}} uniform logx,yi.i.d.pdata Ee2f(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给输入加噪声视为***”数据增广“***,假设加噪后的输入仍与原始输入在语义空间距离相近。其正负例的构造方式如下:

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

Loss选取为:
ℓ i = − log ⁡ e sim ⁡ ( h i z i , h i z i ′ ) / τ ∑ j = 1 N e sim ⁡ ( h i z i , h j ′ ) / τ \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 ⁡ e sim ⁡ ( h i , h i + ) / τ ∑ j = 1 N ( e sim ⁡ ( h i , h j + ) / τ + e sim ⁡ ( h i , h j − ) / τ ) -\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 \rightarrow0 0)导致了梯度消失。

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

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

Proof:

假设 f ( x ) f(x) f(x)已经归一化过,且当负例样本对趋向于无穷大,则对比学习的渐进性优化目标可写为:
− 1 τ E ( x , x + ) ∼ p pos  [ f ( x ) ⊤ f ( x + ) ] + E x ∼ p data  [ log ⁡ E x − ∼ p data  [ e f ( 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+)ppos E[f(x)f(x+)]+xpdata E[logxpdata E[ef(x)f(x)/τ]]
经过Encoder编码之后假设 h i = f ( x i ) h_i=f(x_i) hi=f(xi),且根据指数函数的凸性可由詹森不等式,优化目标的后半部分可为:
E x ∼ p data  [ log ⁡ E x − ∼ p data  [ e f ( x ) ⊤ f ( x − ) / τ ] ] = 1 m ∑ i = 1 m log ⁡ ( 1 m ∑ j = 1 m e h i ⊤ h j / τ ) ≥ 1 m ∑ i = 1 m log ⁡ ( 1 τ m ∑ j = 1 m e h i ⊤ h j ) = 1 τ m 2 ∑ i = 1 m ∑ j = 1 m h i ⊤ h j . \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} ==xpdata E[logxpdata E[ef(x)f(x)/τ]]m1i=1mlog(m1j=1mehihj/τ)m1i=1mlog(τm1j=1mehihj)τm21i=1mj=1mhihj.
设W为句子表示矩阵。 W W W的第 i i i行即为 h i h_i hi,所以上式向量内积 Σ Σ h i h j \Sigma\Sigma h_ih_j ΣΣhihj也即为矩阵 W W T WW^T WWT的元素和。又因为我们对 h i h_i hi做过标准化,则 Σ d i a g ( W W T ) = 1 \Sigma diag(WW^T)=1 Σdiag(WWT)=1 t r ( W W T ) tr(WW^T) tr(WWT)是个常数。若其所有元素都是整数,则可证 s u m ( W W T ) = s u p λ m a x ( W W T ) sum(WW^T) = sup \lambda_{max}(WW^T) sum(WWT)=supλmax(WWT), 即其元素和为其最大特征值的upper bound.

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

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

5.2 数据分布

image-20210427152614821

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

5.3 其他值得注意的点

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

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

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

image-20210427153614229

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

6. PTM

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

from transformers import AutoModel, AutoTokenizer

tokenizer = 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)

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值