数学基础
- 线性代数
- 概率论与随机过程
- 数值计算
- 蒙特卡洛方法与 MCMC 采样
- 机器学习方法概论
统计学习
深度学习
- 深度学习简介
- 深度前馈网络
- 反向传播算法
- 正则化
- 深度学习中的最优化问题
- 卷积神经网络
- CNN:图像分类
- 循环神经网络 RNN
- Transformer
- 一、Transformer [2017]
- 二、Universal Transformer [2018]
- 三、Transformer-XL [2019]
- 四、GPT1 [2018]
- 五、GPT2 [2019]
- 六、GPT3 [2020]
- 七、OPT [2022]
- 八、BERT [2018]
- 九、XLNet [2019]
- 十、RoBERTa [2019]
- 十一、ERNIE 1.0 [2019]
- 十二、ERNIE 2.0 [2019]
- 十三、ERNIE 3.0 [2021]
- 十四、ERNIE-Huawei [2019]
- 十五、MT-DNN [2019]
- 十六、BART [2019]
- 十七、mBART [2020]
- 十八、SpanBERT [2019]
- 十九、ALBERT [2019]
- 二十、UniLM [2019]
- 二十一、MASS [2019]
- 二十二、MacBERT [2019]
- 二十三、Fine-Tuning Language Models from Human Preferences [2019]
- 二十四 Learning to summarize from human feedback [2020]
- 二十五、InstructGPT [2022]
- 二十六、T5 [2020]
- 二十七、mT5 [2020]
- 二十八、ExT5 [2021]
- 二十九、Muppet [2021]
- 三十、Self-Attention with Relative Position Representations [2018]
- 三十一、USE [2018]
- 三十二、Sentence-BERT [2019]
- 三十三、SimCSE [2021]
- 三十四、BERT-Flow [2020]
- 三十五、BERT-Whitening [2021]
- 三十六、Comparing the Geometry of BERT, ELMo, and GPT-2 Embeddings [2019]
- 三十七、CERT [2020]
- 三十八、DeCLUTR [2020]
- 三十九、CLEAR [2020]
- 四十、ConSERT [2021]
- 四十一、Sentence-T5 [2021]
- 四十二、ULMFiT [2018]
- 四十三、Scaling Laws for Neural Language Models [2020]
- 四十四、Chinchilla [2022]
- 四十七、GLM-130B [2022]
- 四十八、GPT-NeoX-20B [2022]
- 四十九、Bloom [2022]
- 五十、PaLM [2022] (粗读)
- 五十一、PaLM2 [2023](粗读)
- 五十二、Self-Instruct [2022]
- 句子向量
- 词向量
- 传统CTR 预估模型
- CTR 预估模型
- 一、DSSM [2013]
- 二、FNN [2016]
- 三、PNN [2016]
- 四、DeepCrossing [2016]
- 五、Wide 和 Deep [2016]
- 六、DCN [2017]
- 七、DeepFM [2017]
- 八、NFM [2017]
- 九、AFM [2017]
- 十、xDeepFM [2018]
- 十一、ESMM [2018]
- 十二、DIN [2017]
- 十三、DIEN [2019]
- 十四、DSIN [2019]
- 十五、DICM [2017]
- 十六、DeepMCP [2019]
- 十七、MIMN [2019]
- 十八、DMR [2020]
- 十九、MiNet [2020]
- 二十、DSTN [2019]
- 二十一、BST [2019]
- 二十二、SIM [2020]
- 二十三、ESM2 [2019]
- 二十四、MV-DNN [2015]
- 二十五、CAN [2020]
- 二十六、AutoInt [2018]
- 二十七、Fi-GNN [2019]
- 二十八、FwFM [2018]
- 二十九、FM2 [2021]
- 三十、FiBiNET [2019]
- 三十一、AutoFIS [2020]
- 三十三、AFN [2020]
- 三十四、FGCNN [2019]
- 三十五、AutoCross [2019]
- 三十六、InterHAt [2020]
- 三十七、xDeepInt [2023]
- 三十九、AutoDis [2021]
- 四十、MDE [2020]
- 四十一、NIS [2020]
- 四十二、AutoEmb [2020]
- 四十三、AutoDim [2021]
- 四十四、PEP [2021]
- 四十五、DeepLight [2021]
- 图的表达
- 一、DeepWalk [2014]
- 二、LINE [2015]
- 三、GraRep [2015]
- 四、TADW [2015]
- 五、DNGR [2016]
- 六、Node2Vec [2016]
- 七、WALKLETS [2016]
- 八、SDNE [2016]
- 九、CANE [2017]
- 十、EOE [2017]
- 十一、metapath2vec [2017]
- 十二、GraphGAN [2018]
- 十三、struc2vec [2017]
- 十四、GraphWave [2018]
- 十五、NetMF [2017]
- 十六、NetSMF [2019]
- 十七、PTE [2015]
- 十八、HNE [2015]
- 十九、AANE [2017]
- 二十、LANE [2017]
- 二十一、MVE [2017]
- 二十二、PMNE [2017]
- 二十三、ANRL [2018]
- 二十四、DANE [2018]
- 二十五、HERec [2018]
- 二十六、GATNE [2019]
- 二十七、MNE [2018]
- 二十八、MVN2VEC [2018]
- 二十九、SNE [2018]
- 三十、ProNE [2019]
- Graph Embedding 综述
- 图神经网络
- 一、GNN [2009]
- 二、Spectral Networks 和 Deep Locally Connected Networks [2013]
- 三、Fast Localized Spectral Filtering On Graph [2016]
- 四、GCN [2016]
- 五、神经图指纹 [2015]
- 六、GGS-NN [2016]
- 七、PATCHY-SAN [2016]
- 八、GraphSAGE [2017]
- 九、GAT [2017]
- 十、R-GCN [2017]
- 十一、 AGCN [2018]
- 十二、FastGCN [2018]
- 十三、PinSage [2018]
- 十四、GCMC [2017]
- 十五、JK-Net [2018]
- 十六、PPNP [2018]
- 十七、VRGCN [2017]
- 十八、ClusterGCN [2019]
- 十九、LDS-GNN [2019]
- 二十、DIAL-GNN [2019]
- 二十一、HAN [2019]
- 二十二、HetGNN [2019]
- 二十三、HGT [2020]
- 二十四、GPT-GNN [2020]
- 二十五、Geom-GCN [2020]
- 二十六、Graph Network [2018]
- 二十七、GIN [2019]
- 二十八、MPNN [2017]
- 二十九、UniMP [2020]
- 三十、Correct and Smooth [2020]
- 三十一、LGCN [2018]
- 三十二、DGCNN [2018]
- 三十三、AS-GCN
- 三十四、DGI [2018]
- 三十五、DIFFPOLL [2018]
- 三十六、DCNN [2016]
- 三十七、IN [2016]
- 图神经网络 2
- 图神经网络 3
- 推荐算法(传统方法)
- 一、Tapestry [1992]
- 二、GroupLens [1994]
- 三、ItemBased CF [2001]
- 四、Amazon I-2-I CF [2003]
- 五、Slope One Rating-Based CF [2005]
- 六、Bipartite Network Projection [2007]
- 七、Implicit Feedback CF [2008]
- 八、PMF [2008]
- 九、SVD++ [2008]
- 十、MMMF 扩展 [2008]
- 十一、OCCF [2008]
- 十二、BPR [2009]
- 十三、MF for RS [2009]
- 十四、 Netflix BellKor Solution [2009]
- 推荐算法(神经网络方法 1)
- 一、MIND [2019](用于召回)
- 二、DNN For YouTube [2016]
- 三、Recommending What Video to Watch Next [2019]
- 四、ESAM [2020]
- 五、Facebook Embedding Based Retrieval [2020](用于检索)
- 六、Airbnb Search Ranking [2018]
- 七、MOBIUS [2019](用于召回)
- 八、TDM [2018](用于检索)
- 九、DR [2020](用于检索)
- 十、JTM [2019](用于检索)
- 十一、Pinterest Recommender System [2017]
- 十二、DLRM [2019]
- 十三、Applying Deep Learning To Airbnb Search [2018]
- 十四、Improving Deep Learning For Airbnb Search [2020]
- 十五、HOP-Rec [2018]
- 十六、NCF [2017]
- 十七、NGCF [2019]
- 十八、LightGCN [2020]
- 十九、Sampling-Bias-Corrected Neural Modeling [2019](检索)
- 二十、EGES [2018](Matching 阶段)
- 二十一、SDM [2019](Matching 阶段)
- 二十二、COLD [2020 ] (Pre-Ranking 模型)
- 二十三、ComiRec [2020](https://www.wenjiangs.com/doc/0b4e1736-ac78)
- 二十四、EdgeRec [2020]
- 二十五、DPSR [2020](检索)
- 二十六、PDN [2021](mathcing)
- 二十七、时空周期兴趣学习网络ST-PIL [2021]
- 推荐算法之序列推荐
- 一、FPMC [2010]
- 二、GRU4Rec [2015]
- 三、HRM [2015]
- 四、DREAM [2016]
- 五、Improved GRU4Rec [2016]
- 六、NARM [2017]
- 七、HRNN [2017]
- 八、RRN [2017]
- 九、Caser [2018]
- 十、p-RNN [2016]
- 十一、GRU4Rec Top-k Gains [2018]
- 十二、SASRec [2018]
- 十三、RUM [2018]
- 十四、SHAN [2018]
- 十五、Phased LSTM [2016]
- 十六、Time-LSTM [2017]
- 十七、STAMP [2018]
- 十八、Latent Cross [2018]
- 十九、CSRM [2019]
- 二十、SR-GNN [2019]
- 二十一、GC-SAN [2019]
- 二十二、BERT4Rec [2019]
- 二十三、MCPRN [2019]
- 二十四、RepeatNet [2019]
- 二十五、LINet(2019)
- 二十六、NextItNet [2019]
- 二十七、GCE-GNN [2020]
- 二十八、LESSR [2020]
- 二十九、HyperRec [2020]
- 三十、DHCN [2021]
- 三十一、TiSASRec [2020]
- 推荐算法(综述)
- 多任务学习
- 系统架构
- 实践方法论
- 深度强化学习 1
- 自动代码生成
工具
- CRF
- lightgbm
- xgboost
- scikit-learn
- spark
- numpy
- matplotlib
- pandas
- huggingface_transformer
- 一、Tokenizer
- 二、Datasets
- 三、Model
- 四、Trainer
- 五、Evaluator
- 六、Pipeline
- 七、Accelerate
- 八、Autoclass
- 九、应用
- 十、Gradio
Scala
- 环境搭建
- 基础知识
- 函数
- 类
- 样例类和模式匹配
- 测试和注解
- 集合 collection(一)
- 集合collection(二)
- 集成 Java
- 并发
三十三、SimCSE [2021]
学习通用的
sentence embedding
是自然语言处理中的一个基本问题,在文献中得到了广泛的研究。在论文《SimCSE: Simple Contrastive Learning of Sentence Embeddings》
中,作者推进了SOTA
的sentence embedding
方法,并证明了contrastive objective
在与预训练的语言模型(如BERT
或RoBERTa
)相结合时可以非常有效。论文提出了SimCSE
,一个简单的contrastive sentence embedding framework
,它可以从未标记数据或标记数据中产生卓越的sentence embedding
。unsupervised SimCSE
简单地预测了input sentence
本身,其中只有dropout
被用作噪音(下图(a)
所示)。换句话说,将同一个句子传递给pre-trained encoder
两次:通过两次应用标准的dropout
,可以得到两个不同的embedding
作为"positive pair"
。然后,SimCSE
把同一mini-batch
中的其他句子作为"negatives"
,模型在这些negatives
之间预测出正样本。虽然看起来非常简单,但这种方法比预测
next sentence
、以及离散的数据增强(如单词删除、单词替换)等训练目标要好很多,甚至与之前的监督方法相匹敌。通过仔细分析,作者发现dropout
作为hidden representation
的最小"data augmentation"
,而去除dropout
则会导致representation collapse
。supervised SimCSE
建立在最近使用natural language inference: NLI
数据集进行sentence embedding
的成功基础上,并将标注的sentence pair
纳入对比学习contrastive learning
中(下图(b)
所示)。与之前的工作不同的是,作者将其作为一个3-way classification
任务(蕴含entailment
、中性neutral
、以及矛盾contradiction
),并利用entailment pair
可以自然地作为正样本的事实。作者还发现,增加相应的contradiction pair
作为hard negatives
,可以进一步提高性能。与之前使用相同数据集的方法相比,这种对NLI
数据集的简单使用实现了性能的大幅提高。作者还比较了其它的标注的sentence-pair
数据集,发现NLI
数据集对于学习sentence embedding
特别有效。
为了更好地理解
SimCSE
的强大性能,作者借用了《Understanding contrastive representation learning through alignment and uniformity on the hypersphere》
的分析工具,该工具以语义相关的positive pairs
和整个representation space
的均匀性uniformity
之间的alignment
来衡量学到的embedding
的质量。通过实验分析,作者发现无监督SimCSE
本质上提高了均匀性,同时通过dropout noise
避免了degenerated alignment
,从而提高了representation
的表达能力。同样的分析表明,NLI
训练信号可以进一步改善positive pairs
之间的alignment
,并产生更好的sentence embedding
。作者还与最近发现的pre-trained word embeddings
遭受各向异性的现象相联系,并证明(通过谱域的角度)contrastive learning objective
"平坦化" 了sentence embedding space
的奇异值分布,从而提高了uniformity
。作者在七个标准语义文本相似性
semantic textual similarity: STS
任务和七个迁移任务上对SimCSE
进行了综合评估。在STS
任务上,无监督SimCSE
和监督SimCSE
使用BERT-base
分别实现了76.3%
和81.6%
的平均Spearman’s correlation
,与之前的最佳结果相比,分别有4.2%
和2.2%
的提高。SimCSE
在迁移任务上也取得了有竞争力的表现。相关工作:
sentence embedding
的早期工作是通过预测给定句子的周围句子surrounding sentence
从而基于分布式假说distributional hypothesis
之上来建立的。《Unsupervised learning of sentence embeddings using compositional n-gram features》
表明:简单地用n-gram embedding
来增强word2vec
的想法会得到强大的结果。最近的几个(同时进行的)方法通过对同一句子或文档的不同视图(来自数据增强、或模型的不同副本)从而引入
contrastive objective
。与这些工作相比,
SimCSE
采用了最简单的思想,从标准的dropout
中获取同一句子的不同输出,在STS
任务中表现最好。
与无监督的方法相比,监督的
sentence embedding
具有更强的性能。InferSent
提出在NLI
数据集上微调一个Siamese
模型,并进一步扩展到其他encoder
或pre-trained model
。此外,
《ParaNMT-50M: Pushing the limits of paraphrastic sentence embeddings with millions of machine translations》
证明:双语的语料和back-translation
语料为学习语义相似性提供了有用的监督。
另一个工作重点是
regularizing embedding
,以缓解representation degeneration
问题,并在预训练的语言模型上获得显著的改进。
33.1 模型
33.1.1 Contrastive Learning 的背景
对比学习
contrastive learning
的目的是通过把语义相近的邻居拉到一起、把非邻居推开,从而学习有效的representation
。它假设一组paired examples
$ \mathcal D = \left\{\left(\mathbf{\vec x}_i ,\mathbf{\vec x}_i^+\right)\right\}_{i=1}^m $ ,其中 $ \mathbf{\vec x}_i $ 和 $ \mathbf{\vec x}_i^+ $ 在语义上相关。我们遵从《 A simple framework for contrastive learning of visual representations》
的对比学习框架,采用具有in-batch negatives
的cross-entropy objective
:令 $ \mathbf{\vec h}_i $ 和 $ \mathbf{\vec h}_i^+ $ 分别表示 $ \mathbf{\vec x}_i $ 和 $ \mathbf{\vec x}_i^+ $ 的representation
,那么针对 $ \left(\mathbf{\vec x}_i ,\mathbf{\vec x}_i^+\right) $ 的、包含 $ N $ 个pair
的mini-batch
的training objective
为:其中:
$ \tau $ 是一个温度超参数, $ \text{sim}\left(\mathbf{\vec h}_1, \mathbf{\vec h}_2\right) = \frac{\mathbf{\vec h}_1\cdot \mathbf{\vec h}_2}{\|\mathbf{\vec h}_1\|\times \|\mathbf{\vec h}_2\|} $ 为余弦相似度。在这项工作中,我们使用预训练的语言模型(如
BERT
或RoBERTa
)对输入句子进行编码: $ \mathbf{\vec h} = f_\theta\left(\mathbf{\vec x}\right) $ ,然后使用contrastive learning objective
对所有参数进行微调。正样本:对比学习的一个关键问题是如何构建
$ \left(\mathbf{\vec x}_i ,\mathbf{\vec x}_i^+\right) $pair
。在visual representation
中,一个有效的解决方案是将同一张图像的两个随机变换(如裁剪、翻转、变形、旋转)分别作为 $ \mathbf{\vec x}_i $ 和 $ \mathbf{\vec x}_i^+ $ 。最近在language representation
中也采用了类似的方法,其中采用了删除单词、打乱顺序、以及单词替换等数据增强技术。然而,由于其离散的特性,NLP
中的数据增强本身就很困难。正如我们将在后面介绍的那样,简单地在intermediate representation
上使用标准的dropout
,就超越了这些离散的操作。在
NLP
中,类似的contrastive learning objective
已经在不同的背景下进行了探索。在这些情况下, $ \left(\mathbf{\vec x}_i ,\mathbf{\vec x}_i^+\right) $ 是从监督的数据集中收集的,如question-passage pair
。由于 $ \mathbf{\vec x}_i $ 和 $ \mathbf{\vec x}_i^+ $ 的不同性质,这些方法总是使用dual-encoder framework
,即对 $ \mathbf{\vec x}_i $ 和 $ \mathbf{\vec x}_i^+ $ 使用两个独立的编码器 $ f_1 $ 和 $ f_2 $ 。对于sentence embedding
,《An efficient framework for learning sentence representations》
也使用了具有dual-encoder
的对比学习,将当前句子和下一个句子构成为 $ \left(\mathbf{\vec x}_i ,\mathbf{\vec x}_i^+\right) $ 。alignment and uniformity
:最近,《Understanding contrastive representation learning through alignment and uniformity on the hypersphere》
确定了与对比学习相关的两个关键属性(即,对齐性alignment
和均匀性uniformity
),并提议用它们来衡量representation
的质量。给定一个
positive pair
$ p_\text{pos} $ ,alignment
计算paired instances
的embedding
之间的期望距离(假设representation
已经被归一化):另一方面,
uniformity
衡量embedding
的均匀分布程度:其中
$ p_\text{data} $ 表示数据分布。
这两个指标与对比学习的目标很一致:正样本应该保持接近,而随机样本的
embedding
应该在超球上散开。在下面的章节中,我们还将使用这两个指标来证明我们方法的内部原理。
33.1.2 Unsupervised SimCSE
无监督
SimCSE
的想法非常简单:取句子集合 $ \left\{\mathbf{\vec x}_i\right\}_{i=1}^m $ ,然后使用 $ \mathbf{\vec x}_i^+ = \mathbf{\vec x}_i $ 。该方法起作用的关键因素是:对 $ \mathbf{\vec x}_i $ 和 $ \mathbf{\vec x}_i^+ $ 使用独立采样的dropout mask
。在
Transformer
的标准训练中,在全连接层和attention probabilities
上有dropout mask
(默认 $ p=0.1 $ )。我们令 $ \mathbf{\vec h}_i^z = f_\theta(\mathbf{\vec x}_i, z) $ ,其中 $ z $ 是用于dropout
的random mask
。我们只需将相同的input
馈入编码器两次,就可以得到两个具有不同dropout mask
(即, $ z $ 和 $ z^\prime $ )的embedding
,然后SimCSE
的训练目标变为:其中:
$ N $ 为mini-batch
包含的样本数量。注意:
$ z $ 只是Transformer
中的标准dropout mask
,我们不添加任何额外的dropout
。dropout noise
作为数据增强: 我们把它看作是一种最小形式的数据增强,即,positive pair
采取完全相同的句子,它们的embedding
只在dropout mask
上有所不同。我们将这种方法与其他training objective
在STS-B
验证集上进行比较。下表将我们的方法与常见的数据增强技术进行了比较,如裁剪、单词删除、以及单词替换,可以看作是
$ \mathbf{\vec h} = f_\theta(g(\mathbf{\vec x}),z) $ , $ g(\cdot) $ 是 $ \mathbf{\vec x} $ 上的一个(随机的)离散操作。我们注意到:即使删除一个词也会损害性能,而且没有一个离散的数据增强能超越dropout noise
。这里的
w/o dropout
表示没有dropout
,这个时候 $ z = z^\prime = 0 $ ,因此 $ \mathbf{\vec h}_i = \mathbf{\vec h}_i^+ $ 。这时候的训练目标是:将不同的句子推开(并没有将相似的句子拉近)。我们还将这个
self-prediction training objective
与next-sentence objective
进行比较,采取一个编码器或两个独立的编码器。如下表所示,我们发现:SimCSE
的表现比next-sentence objective
要好得多(在STSB
上为82.5 vs 67.4
)。使用一个编码器而不是两个编码器,最终效果有很大的差异。
为什么能成功:为了进一步了解
dropout noise
在无监督SimCSE
中的作用,我们在下表中尝试了不同的dropout rate
,并观察到:所有的变体都低于
Transformer
中默认的dropout rate
$ p=0.1 $ 的效果。两个极端情况特别有趣,即
$ p=0 $ (no dropout
)、fixed 0.1
(使用默认的dropout rate
$ p = 0.1 $ ,但pair
使用相同的dropout mask
)。在这两种情况下,pair
的resulting embedding
是完全相同的,这导致了急剧的性能下降。为什么
fixed 0.1
的性能下降得远远超过no dropout
?论文并未讲原因。
我们在训练过程中每隔
10
个step
获取模型的checkpoint
,并在下图中直观地显示了对齐性alignment
和均匀性uniformity
指标。除了SimCSE
之外,下图还包含一个简单的数据增强模型"delete one word"
。我们从预训练模型作为初始化。如下图所示:随着训练的推进(从
pretrained checkpoint
开始),所有的模型都大大改善了均匀性。 $ \mathcal l_\text{uniform} $ 越小,则均匀性越好。然而,两个特殊变体的对齐性也急剧下降,而我们的无监督
SimCSE
保持了稳定的对齐性,这要归功于dropout noise
的使用。这也证明了从
pretrained checkpoint
开始是至关重要的,因为它提供了良好的initial alignment
。 $ l_\text{align} $ 越小,则对齐性越好。最后,
"delete one word"
提高了对齐性,但在均匀性指标上取得的收益较小,最终表现不如无监督SimCSE
。
33.1.3 Supervised SimCSE
我们已经证明,添加
dropout noise
能够使positive pair
$ \left(\mathbf{\vec x}_i ,\mathbf{\vec x}_i^+\right)\sim p_\text{pos} $ 保持良好的对齐。这里我们研究是否可以利用监督数据集来提供更好的训练信号,从而提高alignment
。已有工作证明(InferSent
、SBERT
),通过预测两个句子之间的关系是蕴含entailment
、中性neutral
、还是矛盾contradiction
,监督的自然语言推理natural language inference: NLI
数据集对于学习sentence embedding
是有效的。在我们的对比学习框架中,我们直接从监督的数据集中提取 $ \left(\mathbf{\vec x}_i ,\mathbf{\vec x}_i^+\right) $pair
,并使用它们来优化 $ \mathcal L_i $ 。标记数据的选择:我们首先探索哪些监督数据集特别适合构建
positive pair
$ \left(\mathbf{\vec x}_i ,\mathbf{\vec x}_i^+\right) $ 。我们用一些有sentence-pair
样本的数据集进行实验,包括:QQP
:Quora question pairs
。Flickr30k
:每张图片都有5
个人类写的captions
,我们认为同一图片的任何两个captions
都是positive pair
。ParaNMT
:一个大规模的back-translation paraphrase
数据集。NLI
:SNLI
和MNLI
数据集。
我们用不同的数据集训练对比学习模型(即,
$ \mathcal L_i $ ),并在下表中比较结果。为了公平比较,我们也使用相同数量的training pairs
进行了实验(sample
这一列)。整个数据集的实验结果参考full
这一列。可以看到:在所有的选项中,使用来自NLI
(SNLI+MNLI
)数据集的entailment pair
的表现最好。我们认为这是合理的,因为
NLI
数据集包括高质量的、来自人类标注的pairs
。另外,人类标注员要根据premises
手动写出hypotheses
,而且两个句子的lexical overlap
往往较低。例如,我们发现(SNLI + MNLI
)中的entailment pair
的lexical overlap
(两个bags of words
之间F1
来衡量)为39%
,而QQP
和ParaNMT
数据集的lexical overlap
为60%
和55%
。Contradiction
作为hard negatives
:最后,我们进一步利用NLI
数据集的优势,将其contradiction pairs
作为hard negatives
。在NLI
数据集中,给定一个premise
,标注员需要手动写出一个绝对真实的句子(entailment
),一个可能是真实的句子(neutral
),以及一个绝对错误的句子(contradiction
)。因此,对于每个premise
和它的entailment hypothesis
,都有一个伴随的contradiction hypothesis
(见Figure 1
的例子)。正式地,我们将
$ \left(\mathbf{\vec x}_i ,\mathbf{\vec x}_i^+\right) $ 扩展为 $ \left(\mathbf{\vec x}_i ,\mathbf{\vec x}_i^+,\mathbf{\vec x}_i^-\right) $ ,其中 $ \mathbf{\vec x}_i $ 是premise,
, $ \mathbf{\vec x}_i^+ $ 和 $ \mathbf{\vec x}_i^- $ 是entailment hypothesis
和contradiction hypothesis
。然后,训练目标 $ \mathcal L_i $ 被定义为( $ N $ 是mini-batch
的大小):如
Table 4
(上表)所示,添加hard negatives
可以进一步提高性能(84.9 -> 86.2
),这就是我们的final supervised SimCSE
。我们还试图加入
ANLI
数据集、或将其与我们的无监督SimCSE
方法相结合,但没有发现有意义的改进。我们还考虑在监督的SimCSE
中采用双编码器框架,但它损害了性能(86.2 -> 84.2
)。
33.1.4 与各向异性的联系
最近的工作发现了
language representations
中的各向异性问题anisotropy problem
(《How contextual are contextualized word representations? comparing the geometry of BERT, ELMo, and GPT-2 embeddings》
、BERT-Flow
),即学到的embedding
在向量空间中占据一个狭窄的锥体,这严重限制了它们的表达能力。《Representation degeneration problem in training natural language generation models》
阐述了具有tied input/output embeddings
所训练的语言模型会导致各向异性的word embedding
。《How contextual are contextualized word representations? comparing the geometry of BERT, ELMo, and GPT-2 embeddings》
在pre-trained contextual representation
中进一步观察到这一点。《Improving neural language generation with spectrum control》
表明,语言模型中word embedding matrix
的奇异值会急剧衰减:除了几个主导性的奇异值,其他的都接近于零。
缓解这个问题的一个简单方法是后处理:要么消除主导的主成分
principal component
、要么将embedding
映射到一个各向同性的分布。另一个常见的解决方案是在训练期间添加正则化。在这项工作中,我们表明,无论是理论上还是经验上,contrastive objective
也能缓解各向异性问题。各向异性问题与均匀性有天然的联系,两者都强调了
embedding
应该均匀地分布在空间中。直观而言,优化contrastive learning objective
可以改善均匀性(或缓解各向异性问题),因为该目标将negative instances
推开。在这里,我们从奇异谱singular spectrum
的角度出发(这是分析word embedding
的常见做法),并表明contrastive objective
可以"flatten"
sentence embedding
的奇异值分布,使representations
各向同性。遵从
《Understandingcontrastive representation learning through alignment and uniformity on the hypersphere 》
的观点,当negative instances
的数量接近无穷大时,contrastive learning objective
的渐进可以用以下公式表示(假设 $ f(\mathbf{\vec x}) $ 是归一化的):其中:第一项保持
positive instances
的相似性,第二项将negative pairs
推开。当
$ p_\text{data} $ 在有限样本 $ \left\{\mathbf{\vec x}_i\right\}_{i=1}^m $ 上是均匀的,并且令 $ \mathbf{\vec h}_i = f(\mathbf{\vec x}_i) $ ,则我们可以从第二项与Jensen
不等式中得出以下公式:令
$ \mathbf W\in \mathbb R^{m\times d} $ 是对应于 $ \left\{\mathbf{\vec x}_i\right\}_{i=1}^m $ 的sentence embedding matrix
,即 $ \mathbf W $ 的第 $ i $ 行为 $ \mathbf{\vec h}_i $ 。则优化上式中的第二项实质上是最小化 $ \mathbf W \mathbf W^\top $ 中所有元素的和的上界,即 $ \text{Sum}\left(\mathbf W\mathbf W^\top\right)=\sum_{i=1}^m\sum_{j=1}^m \mathbf{\vec h}_i^\top \mathbf{\vec h}_j $ 。由于我们将
$ \mathbf{\vec h}_i $ 归一化,所以 $ \mathbf W \mathbf W^\top $ 对角线上的所有元素都是1
,那么 $ \text{tr}\left(\mathbf W\mathbf W^\top\right) $ (所有特征值之和)就是一个常数。根据《On the trace and the sum of elements of a matrix》
,如果 $ \mathbf W \mathbf W^\top $ 中的所有元素都是正数,如下图所示,大多数时候都是这种情况,那么 $ \text{Sum}\left(\mathbf W\mathbf W^\top\right) $ 是 $ \mathbf W \mathbf W^\top $ 最大特征值的上界。当最小化上式中的第二项时,我们减少了 $ \mathbf W \mathbf W^\top $ 的top eigenvalue
,并内在地"flatten"
了embedding
空间的奇异谱singular spectrum
。因此,对比学习有望缓解representation degeneration
问题,提高sentence embedding
的均匀性。下图为在不同的
human ratings
分组上,STS-B pairs
的余弦相似度分布(都是正数)。余弦相似性就是
$ \mathbf{\vec h}_i ^\top \mathbf{\vec h}_j $ ,就是 $ \left(\mathbf W\mathbf W^\top\right) $ 的第 $ i $ 行第 $ j $ 列的元素。human
评分越低,则预期余弦相似性也是更低的(否则说明sentence emebdding
不好)。
33.2 实验
我们对
7
个语义文本相似性semantic textual similarity: STS
任务进行了实验。请注意,我们所有的STS
实验都是完全无监督的,没有使用STS
训练集。即使是监督的SimCSE
,我们也仅仅是遵从InferSent
,采取额外的标记数据集进行训练。我们还评估了7
个迁移学习任务。我们与SBERT
有类似的看法,即sentence embedding
的主要目标是聚集语义相似的句子,因此将STS
作为主要结果。
33.2.1 STS 任务
7
个STS
任务:STS 2012–2016
(这里包含五个, 每一年内一个)、STS Benchmark
、SICK-Relatedness
。在与以前的工作进行比较时,我们在已发表的论文中找出了无效的比较模式,包括:是否使用额外的回归器、
Spearman’s vs Pearson’s correlation
、结果的汇总方式。额外的回归器:
默认的
SentEval
实现在STS-B
和SICKR
的frozen sentence embedding
的基础上应用线性回归器,并在这两个任务的训练集上训练回归器。而大多数
sentence representation
论文采用raw embedding
并以无监督的方式评估。
在我们的实验中,我们没有应用任何额外的回归器,而是直接对所有的
STS
任务采取余弦相似度。报告的指标:文献中使用了
Pearson
相关系数和Spearman
相关系数。《Task-oriented intrinsic evaluation of semantic textual similarity》
认为,Spearman
相关系数衡量的是排名而不是实际分数,它更适合评估sentence embedding
的需要。对于我们所有的实验,我们报告了Spearman’s rank correlation
。聚合方法:鉴于每年的
STS
挑战赛都包含几个子集,从这些子集中收集结果有不同的选择:一种方法是将所有的主题串联起来,并报告整体的
Spearman
相关系数,记做"all"
。另一种方法是分别计算不同子集的结果并取其平均值。如果是简单的平均值,则记做
"mean"
;如果按子集大小加权,表示为"wmean"
。
然而,大多数论文并没有说明他们所采取的方法,这使得公平比较具有挑战性。我们以一些最新的工作为例:
SBERT
、BERT-flow
、BERT-whitening
。在下表中,我们将我们的复现结果与SBERT
和BERT-whitening
的报告结果进行了比较,发现:SBERT
采取了"all"
设置,但BERT-flow
和BERT-whitening
采取了"wmean"
设置,尽管BERT-flow
声称他们采取的设置与SBERT
相同。由于"all"
设置将不同主题的数据融合在一起,使得评价更接近真实世界的场景,除非特别说明,否则我们采取"all"
设置。最终,我们的评估中遵循
SBERT
的设置(没有额外的回归器、采用Spearman
相关系数,以及"all"
汇总)。我们在下表中列出了以前一些工作的评估设置。有些设置是由论文报告的,有些是通过比较结果和检查其代码推断出来的。我们可以看到:在不同的论文中,评估协议是非常不一致的。我们呼吁在评估
sentence embedding
时统一设置,以利于未来的研究。我们还将发布我们的评估代码,以提高可复现性。训练细节:我们从
BERT
或RoBERTa
的pre-trained checkpoint
开始,将[CLS] representation
作为sentence embedding
(不同池化方法的比较参考消融实验部分)。我们在英语维基百科的 $ 10^6 $ 个随机采样的句子上训练无监督的SimCSE
,并在MNLI
和SNLI
数据集的组合(314k
个样本)上训练有监督的SimCSE
。这里的 ”有监督/无监督“ 指的是预训练阶段是否用监督数据来预训练,而不是说
target task
是否用监督数据。我们用
transformers package
实现SimCSE
。对于有监督的
SimCSE
,我们训练我们的模型3
个epochs
,在STS-B
的验证集上每250
个训练步来评估模型,并保留最佳checkpoint
用于在测试集上进行最终的评估。对于无监督的
SimCSE
,我们做了同样的工作,只是我们对模型训练了一个epoch
。
注意:在整个过程中,模型没有使用
STS-B
的训练集。我们在
STS-B
验证集上进行了网格搜索,其中batch size
搜索范围{64, 128, 256, 512}
、学习率搜索范围{1e-5, 3e-5, 5e-5}
,并采用下表中的超参数设置。我们发现:只要相应地调优学习率,SimCSE
对batch size
并不敏感,这与对比学习需要大batch size
的结论相矛盾(《A simple framework for contrastive learning of visual representations》
)。这可能是由于所有的SimCSE
模型都是从预训练好的checkpoint
开始的,这已经为我们提供了一套良好的初始参数。对于无监督的
SimCSE
和有监督的SimCSE
,我们采用[CLS] representation
,并且有一个MLP layer
在其上方,其中这个MLP layer
的输出作为sentence representation
。此外,对于无监督的SimCSE
,我们在训练期间包含MLP layer
但是在测试期间抛弃这个MLP layer
,因为我们发现它能带来更好的性能(参考消融研究的部分)。注意:这里不是直接用
[CLS] representation
作为sentence embedding
,而是将[CLS] representation
经过了一个MLP layer
映射之后再作为sentence embedding
。最后,我们再引入一个可选的变体,即在
$ \mathcal L_i $ 中增加一个masked language modeling: MLM objective
作为辅助损失: $ \mathcal L_1 + \lambda\times \mathcal L_\text{mlm} $ ,其中 $ \lambda $ 为超参数。这有助于SimCSE
避免对token-level knowledge
的灾难性遗忘。正如后面实验部分所示,我们发现增加这个MLM objective
可以帮助提高迁移任务的性能(而不是sentence-level STS
任务)。Baseline
方法:我们将无监督的SimCSE
和有监督的SimCSE
与在STS
任务上之前SOTA
的sentence embedding
方法进行比较。无监督
baseline
包括average GloVe embedding
、average BERT/RoBERTa embedding
,以及后处理方法(如BERT-flow
和BERT-whitening
)。我们还与最近几个使用
contrastive objective
的方法进行了比较,包括:IS-BERT
:它使全局特征和局部特征之间的agreement
最大化。DeCLUTR
:它将同一文件的不同spans
作为positive pair
。CT
:它将来自两个不同编码器的同一句子的embedding
进行对齐。
其他监督方法包括
InferSent
、Universal Sentence Encoder
和SBERT/RoBERTa
,它们采用后处理方法(如BERT-flow
、whitening
、 以及CT
)。
其中:
对于
average GloVe embedding
、InferSent
、Universal Sentence Encoder
,我们直接报告SBERT
的结果,因为我们的评估设置与他们相同。对于
BERT
和RoBERTa
,我们从HuggingFace
下载预训练的模型权重,并用我们自己的脚本评估模型。对于
SBERT
和SRoBERTa
,我们重新使用原始论文的结果。对于原始论文没有报告的结果,例如SRoBERTa
在迁移任务上的表现,我们从SentenceTransformers
下载模型权重并进行评估。对于
DeCLUTR
和contrastive tension
,我们在我们的环境中重新评估他们的checkpoint
。对于
BERT-flow
,由于他们的原始数字采取了不同的设置,我们使用他们的代码重新训练他们的模型,并使用我们自己的脚本评估模型。对于
BERT-whitening
,我们按照原始论文中相同的池化方法,即first-last average pooling
,实现了我们自己版本的whitening
脚本。我们的实现可以复现原始论文的结果(见Tabele B.2
)。对于
BERT-flow
和BERT-whitening
,它们都有两种后处理的变体:一种是采用NLI
数据("NLI"
)、另一种是直接学习目标数据集上的embedding
分布("target"
)。我们发现,在我们的评估环境中,"target"
通常比"NLI"
差(如下表所示 ),所以我们在主要结果中只报告了"NLI"
变体。
下表显示了
7
项STS
任务的评估结果。可以看到:无论是否有额外的NLI
监督,SimCSE
都能在所有的数据集上大幅提高结果,大大超过了以前的SOTA
模型。具体来说:我们的无监督
SimCSE-BERT_base
将以前的最佳平均Spearman
相关系数从72.05%
提高到76.25%
,甚至可以与有监督的baseline
相媲美。当使用
NLI
数据集时,SimCSE-BERT_base
进一步将SOTA
的结果推到81.57%
。在RoBERTa
编码器上的收益更加明显,我们的监督SimCSE
在RoBERTa_large
上达到了83.76%
。
由于以前的工作使用了与我们不同的评估协议,我们在这些设置中进一步评估了我们的模型,以便与公布的数字进行直接比较。我们用
"wmean"
和Spearman's correlation
来评估SimCSE
,以直接与BERT-flow
和BERT-whitening
进行比较,如下表所示。
33.2.2 迁移任务
我们在以下迁移任务中评估我们的模型:
MR
、CR
、SUBJ
、MPQA
、SST-2
、TREC
、MRPC
。在不同方法产生的(frozen
的)sentence embedding
的基础上训练一个逻辑回归分类器。我们遵循SentEval
的默认配置。迁移任务的评估结果如下表所示,可以看到:有监督的
SimCSE
的表现与以前的方法相当或更好,尽管无监督模型的趋势仍不清楚。增加
MLM
目标一致地提高迁移任务的性能,证实了我们的直觉,即sentence-level objective
可能不会直接有利于迁移任务。与基础模型相比,后处理方法(
BERTflow/whitening
)都伤害了性能,表明representation
的良好的均匀性并不能为迁移学习带来更好的embedding
。下表中没有
BERTflow/whitening
的内容,所以结论没有数据支撑?
正如我们前面所论证的,我们认为迁移任务不是
sentence embedding
的主要目标,因此我们把STS
的结果作为主要比较对象。
33.2.3 消融研究
我们研究了不同的池化方法、
hard negatives
、归一化、温度、MLM objective
的影响。本节中所有报告的结果都是基于STS-B
验证集。池化方法:
SBERT
、BERT-Flow
表明,采用预训练模型的average embeddings
(特别是来自第一层的embedding
和最后一层的embedding
)导致了比[CLS] representation
更好的性能。下表显示了在无监督的SimCSE
和有监督的SimCSE
中不同池化方法的比较。对于[CLS] representation
,原始的BERT
实现在其之上采取了一个额外的MLP
层。这里,我们考虑对[CLS]
的三种不同设置:具有MLP
层、没有MLP
层、在训练期间保留MLP
层但是在测试时将其删除(即w/MLP(train)
)。我们发现:对于无监督的
SimCSE
来说,在训练期间保留MLP
层但是在测试时将其删除,这种方法的效果最好。对于有监督的
SimCSE
来说,不同的池化方法并不重要。
默认情况下,对于无监督的
SimCSE
,我们采用[CLS] with MLP (train)
;对于有监督的SimCSE
,采用[CLS] with MLP
。hard negatives
:直观而言,将hard negatives
(contradiction
样本)与其他in-batch negatives
区分开来可能是有益的。因此,我们扩展了监督SimCSE
的training objective
,以纳入不同negatives
的权重:其中:
$ \mathbb I^{j}_i\in \{0,1\} $ 为一个示性函数,当且仅当 $ i = j $ 时等于1
,否则等于0
; $ \alpha $ 为超参数。我们用不同的
$ \alpha $ 值训练SimCSE
,并在STS-B
的验证集上评估训练好的模型。我们还考虑将neutral
样本作为hard negatives
(权重固定为1.0
)。如下表所示, $ \alpha = 1 $ 的表现最好,neutral
样本不会带来进一步的收益。这里有两种
hard
负样本:contradiction
样本、neutral
样本。归一化和温度:我们分别使用点积和余弦相似性在不同的温度下训练
SimCSE
,并在STS-B
验证集上评估它们。如下表所示:在精心调整的温度 $ \tau = 0.05 $ 的情况下,余弦相似性比点积更好。NA
表示点击相似性;其它列表示余弦相似性。MLM
辅助任务:最后,我们研究不同 $ \lambda $ 的MLM
辅助目标的影响。如下表所示,token-level MLM objective
对迁移任务的平均性能带来适度的改善,但它在STS-B
任务中带来了持续的下降。
33.2.4 原理洞察
这里我们进行进一步分析,以了解
SimCSE
的内部工作。uniformity and alignment
:下图显示了不同sentence embedding
模型的均匀性和对齐性以及它们的平均STS
结果。一般来说,具有较好对齐性和均匀性的模型能取得较好的性能,证实了《Understanding contrastive representation learning through alignment and uniformity on the hypersphere》
的发现。我们还观察到:虽然预训练的
embedding
具有良好的对齐性,但其均匀性较差(即embedding
是高度各向异性的)。像
BERT-flow
和BERT-whitening
这样的后处理方法极大地改善了均匀性,但也遭受了对齐性的退化。无监督的
SimCSE
有效地改善了预训练的embedding
的均匀性,同时保持了良好的对齐性。在
SimCSE
中加入监督数据,进一步改善了对齐性。
定性比较:我们使用
SBERT_base
和SimCSE-BERT_base
进行了一个小规模的检索实验。我们使用Flickr30k
数据集中的150k
个caption
,并采取任何随机的句子作为query
来检索相似的句子(基于余弦相似度)。如下表中的几个例子所示,与SBERT
检索到的句子相比,SimCSE
检索到的句子质量更高。
奇异值的分布:下图显示了
SimCSE
与其他baseline
的奇异值分布(sentence embedding
矩阵)。对于无监督的情况,奇异值下降最快的是普通的
BERT embedding
;对于有监督的情况,奇异值下降最快的是SBERT embedding
。而SimCSE
有助于平坦化频谱分布。基于后处理的方法,如
BERT-flow
或BERT-whitening
使曲线更加平坦,因为它们直接旨在将embedding
映射到各向同性分布。
为了直接显示我们的方法在
STS
任务上的优势,我们在下图中说明了具有不同human ratings
组的STS-B
的pair
的余弦相似度分布。可以看到:与所有的
baseline
模型相比,无监督SimCSE
和有监督SimCSE
都能更好地区分具有不同程度相似性的sentence pair
,从而在STS
任务上有更好的表现。此外,
SimCSE
通常显示出比BERT
或SBERT
更分散的分布,但与whitened distribution
相比,也在语义相似的sentence pair
上保留了较低的方差。这一观察结果进一步验证了SimCSE
可以实现更好的alignment-uniformity balance
。即,
SimCSE
的分布既不像BERT_base-whitening
一样过于分散、也不像BERT_base
一样过于集中。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论