数学基础
- 线性代数
- 概率论与随机过程
- 数值计算
- 蒙特卡洛方法与 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
- 并发
四十、ConSERT [2021]
最近,基于
BERT
的pre-trained language model
在许多带监督信息的下游任务上取得了很高的性能。 然而,从BERT
派生的native sentence representation
被证明是低质量的(《SBERT: Sentence embeddings using siamese bert networks》
、《On the sentence embeddings from pre-trained language models》
)。如下图(a)
所示,当直接采用BERT-based sentence representation
进行语义文本相似性(semantic textual similarity: STS
)任务时,几乎所有的sentence pair
都达到了0.6
到1.0
之间的相似性分数,即使有些sentence pair
被人类标注员视为完全不相关。换句话说,BERT
派生的native sentence representation
在某种程度上是坍塌collapsed
的(《Exploring simple siamese representation learning》
),这意味着几乎所有的句子都被映射到一个小区域,因此产生高的相似度。这样的现象也在之前的一些工作中观察到(
《Representation degeneration problem in training natural language generation models》
、《Improving neural language generation with spectrum control》
、《On the sentence embeddings from pre-trained language models》
)。他们发现BERT
的word representation space
是各向异性的,高频词聚集在一起并靠近原点,而低频词则稀疏地分散开。当averaging token embeddings
时,那些高频词在sentence representation
中占主导地位,诱发了对其真实语义的bias
。因此,直接将BERT
的native sentence representation
用于语义匹配或文本检索是不合适的。传统的方法通常通过额外的监督信息来微调BERT
。然而,人类标注的成本很高,而且在现实世界的场景中人类标注往往不可用。为了缓解
BERT
的坍塌问题,以及减少对标记数据的要求,论文《ConSERT: A Contrastive Framework for Self-Supervised Sentence Representation Transfer》
提出了一个基于对比学习的新颖的sentence-level training objective
。通过鼓励来自同一句子的两个augmented views
更接近、同时保持来自其他句子的views
远离,论文重塑了BERT-derived sentence representation space
,并成功地解决了collapse
问题(如Figure 1(b)
所示)。此外,作者提出了多种用于对比学习的数据增强策略,包括对抗性攻击adversarial attack
、token shuffling
、cutoff
、以及dropout
,有效地将sentence representation
迁移到下游任务中。作者将他们的方法命名为ConSERT
,即Contrastive Framework for SEntence Representation Transfer
。与以前的方法相比,
ConSERT
有几个优点:首先,它在推理过程中没有引入额外的结构或
specialized implementation
。ConSERT
的参数大小与BERT
保持一致,使其易于使用。其次,与预训练方法相比,
ConSERT
的效率更高。只需从target distribution
中抽取1,000
个未标记的文本(这在现实世界的应用中很容易收集),ConSERT
就能比BERT
获得35%
的相对性能增益,而且训练阶段在单个V100 GPU
上只需要几分钟(1-2k
步)。最后,
ConSERT
包括几个有效的、方便的数据增强方法,对语义影响最小。它们的效果在消融研究中得到了验证和分析。
论文贡献:
论文提出了一个简单而有效的基于对比学习的
sentence-level training objective
。它缓解了BERT-derived representation
的collapse
,并将BERT-derived representation
迁移到下游任务中。论文探索了各种有效的文本增强策略,以产生用于对比学习的视图,并分析了这些增强策略对无监督的
sentence representation transfer
的影响。只需在无监督的目标数据集上进行微调,论文的方法就能在
STS
任务上取得重大改进。当进一步与NLI
监督相结合时,论文的方法取得了新的SOTA
的性能。论文还展示了论文的方法在数据稀疏情况下的鲁棒性,以及对transferred representation
的直观分析。
论文价值不大,没什么新颖性。
相关工作:
Sentence Representation Learning
:监督方法:一些工作使用监督数据集进行
sentence representation learning
。InferSent
发现有监督的自然语言推理(Natural Language Inference: NLI
)任务对训练good sentence representation
很有用。他们使用一个基于BiLSTM
的编码器,并在两个NLG
数据集上进行训练,即Stanford NLI: SNLI
、Multi-Genre NLI: MNLI
。Universal Sentence Encoder
采用了基于Transformer
的架构,并使用SNLI
数据集来增强无监督训练。SBERT
(《SBERT: Sentence embeddings using siamese bert networks》
)提出了一个带有共享的BERT encoder
的siamese
架构,也在SNLI
和MNLI
数据集上进行训练。
用于预训练的自监督目标:
BERT
提出了一个bidirectional Transformer encoder
用于语言模型预训练。它包括一个sentence-level training objective
,即next sentence prediction: NSP
,这个训练目标预测两个句子是否相邻。然而,NSP
被证明是很弱的,对最终性能的贡献很小(《Roberta: A robustly optimized bert pretraining approach》
)。之后,人们提出了各种自监督的目标来预训练
BERT-like sentence encoder
:Cross-Thought
(《Cross-thought for sentence encoder pre-training》
) 和CMLM
(《Universal sentence representation learning with conditional masked language model》
)是两个类似的目标,它们在给定contextual sentence
的representation
的条件下,恢复一个句子中的masked tokens
。SLM
提出了一个目标,即给定shuffled sentence
为输入,重建正确的句子排序。
然而,所有这些目标都需要
document-level
的语料,因此不适用于只有短文的下游任务。无监督方法:
BERT-flow
提出了一种flow-based
的方法,将BERT embedding
映射到标准的Gaussian latent space
,其中embedding
更适合进行比较。然而,这种方法引入了额外的模型结构,需要specialized implementation
,这可能会限制它的应用。
对比学习:
用于
Visual Representation Learning
的对比学习:最近,对比学习已经成为无监督visual representation learning
中非常流行的一种技术,其性能非常solid
。对比学习的方法认为,good representation
应该能够识别同一object
,同时将其与其他object
区分开来。基于这种直觉,对比学习的方法应用图像变换(如cropping
、旋转、cutout
等),为每张图像随机生成两个增强的版本,并使它们在representation space
中接近。这种方法可以被视为对输入样本的不变性建模invariance modeling
。《A simple frameworkfor contrastive learning of visual representations 》
提出了SimCLR
,一个简单的对比学习框架。他们使用normalized temperature-scaled cross-entropy loss: NT-Xent
作为训练损失,这在以前的文献中也被称为InfoNCE
(《Learning deep representations by mutual information estimation and maximization》
)。用于
Textual Representation Learning
的对比学习:最近,对比学习被广泛地应用于NLP
任务中。许多工作将其用于语言模型的预训练。IS-BERT
(《An unsupervised sentence embedding method by mutual information maximization》
)提出在BERT
的基础上增加1-D CNN
层,并通过最大化global sentence embedding
和其相应的local contexts embedding
之间的互信息(mutual information: MI
)来训练CNN
。CERT
(《Cert: Contrastive self-supervised learning for language understanding》
)采用了与MoCo
类似的结构,并使用back-translation
进行数据增强。然而,momentum encoder
需要额外的内存,而且back-translation
可能会产生false positives
。BERT-CT
(《Semantic re-tuning with contrastive tension》
)使用两个单独的编码器进行对比学习,这也需要额外的内存。此外,他们只采样7
个负样本,导致训练效率低。De-CLUTR
采用了SimCLR
的架构,用contrastive objective
和masked language model objective
共同训练模型。然而,他们针对对比学习仅使用span
,在语义上是fragmented
的。CLEAR
(《Clear: Contrastive learning for sentence representation》
)使用与DeCLUTR
相同的架构和目标。它们都是用来预训练语言模型的,这需要大量的语料库,以及大量的资源。
40.1 模型
给定一个
BERT-like pretrained language model
$ M $ 和一个从target distribution
中提取的无监督数据集 $ \mathcal D $ ,我们的目标是在 $ \mathcal D $ 上对 $ M $ 进行微调,使sentence representation
与任务更相关,并适用于下游任务。ConSERT
不是从头开始训练的。通用框架:我们的方法主要受到
SimCLR
的启发。如下图所示,我们的框架有三个主要部分:一个数据增强模块,在
token embedding layer
为输入样本生成不同的视图。一个共享的
BERT encoder
,为每个输入文本计算sentence representation
。在训练过程中,我们使用最后一层的token embeddings
的均值池化来获得sentence representations
。在
BERT encoder
的顶部有一个contrastive loss layer
。它最大限度地提高一个representation
和其相应的版本(从同一个句子中增强而来)之间的一致性、同时保持与相同batch
中其他sentence representations
的距离。
对于每个输入文本
$ \mathbf x $ ,我们首先将其传递给数据增强模块data augmentation module
,该模块应用两个变换 $ T_1 $ 和 $ T_2 $ 来生成两个版本的token embeddings
: $ \mathbf e_i = T_1(\mathbf x), \mathbf e_j = T_2(\mathbf x) $ ,其中 $ \mathbf e_i,\mathbf e_j\in \mathbb R^{L\times d} $ , $ L $ 是序列长度、 $ d $ 是embedding
维度。之后, $ \mathbf e_i $ 和 $ \mathbf e_j $ 都将由BERT
中的multi-layer transformer block
来编码,并通过均值池化产生sentence representations
$ \mathbf{\vec r}_i $ 和 $ \mathbf{\vec r}_j $ 。遵从
《A simple framework for contrastive learning of visual representations》
的做法,我们采用normalized temperature-scaled cross-entropy loss: NTXent
作为contrastive objective
。在每个training step
中,我们从 $ \mathcal D $ 中随机采样 $ N $ 个文本来构建一个mini-batch
,从而得到 $ 2N $ 个representation
。每个data point
被训练从而在in-batch
负样本中找出其对应的正样本:其中:
sim()
表示余弦相似度函数, $ \tau $ 为温度超参数, $ \mathbb I $ 为示性函数(当 $ k\ne i $ 时取值为1
,否则取值为零)。最后,我们对所有
$ 2N $ 个in-batch classification losse
进行平均,得到最终的对比损失 $ \mathcal L_\text{con} $ 。数据增强策略:我们探索了四种不同的数据增强策略来为对比学习生成视图,包括:对抗攻击
adversarial attack
、token shuffling
、cutoff
、dropout
,如下图所示。Adversarial Attack
:对抗性训练一般用于提高模型的鲁棒性。我们通过向输入样本添加worst-case
扰动来产生对抗性样本。我们用Fast Gradient Value: FGV
(《Adversarial diversity and hard positive generation》
)实现这一策略,它直接使用梯度来计算扰动,因此比two-step
方法更快。注意,这种策略只适用于与监督学习联合训练的情况,因为它依赖于监督损失来计算对抗性扰动。这个方法在实验部分完全没有用上,因此也不知道有没有效,不知道作者为什么要列在这里。
Token Shuffling
:在这个策略中,我们旨在随机混洗输入序列中的tokens
。由于transformer
架构中的bag-of-words
性质,position encoding
是关于序列信息的唯一因素。因此,与《Slm: Learning a discourse language representation with sentence un-shuffling》
类似,我们通过将混洗后的position ids
传递给embedding layer
,同时保持token ids
的顺序不变从而实现这一策略。Cutoff
:《A simple but tough-to-beat data augmentation approach for natural language understanding and generation》
提出了一个简单而有效的数据增强策略,称为cutoff
。他们在 $ L\times d $ 的特征矩阵中随机擦除一些token
(用于token cutoff
)、特征维度(用于feature cutoff
)或token span
(用于span cutoff
)。在我们的实验中,我们只使用token cutoff
和feature cutoff
,并应用它们到token embeddings
上从而生成视图。Dropout
:Dropout
是一种广泛使用的正则化方法,可以避免过拟合。然而,在我们的实验中,我们也展示了它作为对比学习的增强策略的有效性。在这种情况下,我们以特定的概率随机地丢弃token embedding layer
中的元素,并将它们的值置零。请注意,这种策略与Cutoff
不同,因为这里的每个元素都是单独考虑的。SimCSE
仅仅使用Dropout
来生成augmented view
,就取得了很好的效果。
融合监督信号:除了无监督的
transfer
,我们的方法也可以与监督学习相结合。我们以NLI
监督为例。这是一个sentence pair
分类任务,模型被训练用来区分两个句子之间关系:矛盾contradiction
、蕴含entailment
、中性neutral
。classification objective
可以表示为:其中:
$ \mathbf{\vec r}_1 $ 和 $ \mathbf{\vec r}_2 $ 为两个sentence representation
; $ \mathbf W,\mathbf{\vec b} $ 为待学习的参数。我们提出了三种纳入额外的监督信号的方法:
联合训练(
joint
) :我们在NLI
数据集上联合训练具有supervised objective
和unsupervised objective
的模型:其中
$ \alpha $ 是一个平衡两个objective
的超参数。注意,这里的无监督训练也是在
NLI
数据集上。先监督训练然后无监督
transfer
(sup-unsup
):首先在NLI
数据集上用 $ \mathcal L_\text{ce} $ 训练模型,然后用 $ \mathcal L_\text{con} $ 在target
数据集上进行微调。先联合训练然后无监督
transfer
(joint-unsup
):首先在NLI
数据集上用 $ \mathcal L_\text{joint} $ 训练模型,然后用 $ \mathcal L_\text{con} $ 在target
数据集上对其进行微调。
40.2 实验
为了验证我们提出的方法的有效性,我们在无监督
setting
和有监督setting
下对Semantic Textual Similarity: STS
任务进行了实验。数据集: 遵从以前的工作,我们在多个
STS
数据集上评估我们的方法,包括STS tasks 2012 - 2016 (STS12 - STS16)
、STS benchmark (STSb)
、SICKRelatedness (SICK-R)
。这些数据集中的每个样本都包含一对句子、以及0~5
之间的ground-truth score
,以表示它们之间的语义相似度。在我们的无监督实验中,我们混合了这些数据集的未标记文本,以微调我们的模型。我们通过
SentEval
工具包获得所有7
个数据集。统计数据如下表所示。对于监督实验,我们使用
SNLI
(570k
样本)和MNLI
(430k
样本)的组合来训练我们的模型。在联合训练的setting
中,NLI
文本也被用于contrastive objective
。
baseline
:无监督
baseline
:BERT-flow
、GloVe embeddings average
、BERT-derived native embeddings average
、CLEAR
(在BookCorpus
和English Wikipedia
语料库上训练)、ISBERT
(NLI
数据集的未标记文本上训练)、BERT-CT
(在English Wikipedia
语料库上训练)。监督
baseline
:InferSent
、Universal Sentence Encoder
、SBERT
、BERT-CT
。它们都是在NLI
监督下训练的。
评估方法:在评估训练好的模型时,我们首先通过平均最后两层的
token embeddings
来获得sentence representation
(如BERT-flow
所示,最后两层的平均要比最后一层的平均,效果更好),然后我们报告sentence representation
的余弦相似度分数和人类标注的ground-truth
分数之间的spearman
相关系数。在计算spearman
相关系数时,我们将所有的句子合并在一起(即使有些STS
数据集有多个splits
),只计算一次spearman
相关系数。实现细节:
我们的实现是基于
SBERT
。我们在实验中同时使用BERT-base
和BERT-large
。最大序列长度被设置为64
。考虑到我们框架中使用的
cutoff
和dropout
数据增强策略,我们删除了BERT
架构中的默认dropout layer
。根据《A simple but tough-to-beat data augmentation approach for natural language understanding and generation》
的建议,token cutoff
和feature cutoff
的比例分别设置为0.15
和0.2
。dropout rate
设为0.2
。NT-Xent loss
的温度 $ \tau $ 设为0.1
,joint training setting
的 $ \alpha $ 设为0.15
。我们采用
Adam
优化器,将学习率设置为5e-7
。我们在总的10%
训练步数中使用线性的learning rate warm-up
。在我们的大部分实验中,
batch size
被设置为96
。我们使用
STSb
的验证集来调优超参数(包括增强策略),并在训练期间每200
步评估一次模型。STSb
的验证集上的best checkpoint
被保存下来用于测试。
我们在随后的章节中进一步讨论
batch size
和温度的影响。无监督学习的结果:对于无监督的评估,我们加载
pretrained BERT
来初始化我们框架中的BERT encoder
。然后,我们随机混合7
个STS
数据集的未标记文本,用它们来微调我们的模型。 结果如下表所示,可以看到:BERT-flow
和ConSERT
都可以改善representation space
,并优于GloVe
和BERT
基线。然而,
ConSERT_large
在6
个STS
数据集中取得了最好的性能,大大超过了BERT_large-flow
,平均有8%
的相对性能增益(从70.76
到76.45
)。此外,值得注意的是,
ConSERT_large
甚至超过了几个监督的基线(如Table 3
所示),如InferSent (65.01)
和Universal Sentence Encoder (71.72)
,并保持与强大的监督方法SBERT_large-NLI (76.55)
相当的性能。对于
BERT_base
架构,我们的方法ConSERT_base
也超过了BERT_base-flow
,绝对数值提高了3.17
(从69.57
到72.74
)。
这里是不公平的比较,这些模型的预训练语料库都不相同,因此很难判断是算法的优势、还是语料库的优势。
监督学习的结果:对于监督评估,我们考虑
joint, sup-unsup, joint-unsup
三种设置。 请注意,在joint
设置中,只有NLI
文本被用于对比学习,使其与SBERT-NLI
可比。我们使用在joint
设置下训练的模型作为joint-unsup
设置中的initial checkpoint
。我们还重新实现了SBERT-NLI
,并将其作为sup-unsup
设置中的初始initial checkpoint
。 结果如下表所示,可以看到:对于用
NLI
监督训练的模型,我们发现ConSERT joint
的表现一直比SBERT
好,揭示了我们提出的contrastive objective
以及数据增强策略的有效性。平均而言,ConSERT_base joint
比重新实现的SBERT_base-NLI
达到了2.88
的性能增益,而ConSERT_large joint
达到了2.70
的性能增益。当进一步用
STS
未标记的文本进行representation transfer
时,我们的方法取得了更好的性能。平均而言,ConSERT_large joint-unsup
以1.84
的性能增益优于initial checkpoint ConSERT_large
,并以2.92
的性能增益优于之前SOTA
的BERT_large-flow
。这些结果表明,即使是在监督信息下训练的模型,无监督的
representation transfer
仍有巨大的改进潜力。
这里也是不公平的比较,因为
ConSERT
用了好的初始化点。BERT Embedding Space
分析:我们进行了实验从而证明假设:collapse
问题主要是由于各向异性空间,该空间对token
频率敏感。我们在应用均值池化计算sentence representation
时,移除了几个most frequent tokens
的embedding
。下图显示了被移除的top-k frequent tokens
的数量与平均spearman
相关系数之间的关系。可以看到:对于
BERT
,当删除几个最高频的tokens
时,BERT
在STS
任务上的性能会有很大的改善。当删除34
个最高频的tokens
时,BERT
取得了最好的性能(61.66
),比原来的性能(53.86
)提升了7.8
。对于
ConSERT
,我们发现去除几个最高频的tokens
只带来了不到0.3
的小改进。结果表明,我们的方法重塑了BERT
的原始embedding space
,减少了common tokens
对sentence representation
的影响。
数据增强策略的影响:这里我们研究了数据增强策略对
contrastive learning
的影响。我们为每个transformation
考虑了5
个选项,包括:None
(即什么都不做)、Shuffle
、Token Cutoff
、Feature Cutoff
、Dropout
,结果是5 x 5
的组合。注意,这里没有考虑Adversarial Attack
策略,因为它需要额外的监督信息来产生对抗性样本。所有这些实验都遵循无监督的设置,并使用BERT_base
架构。 实验结果如下图所示,可以看到:首先,
Shuffle
和Token Cutoff
是两个最有效的策略(其中Shuffle
略好于Token Cutoff
),显著优于Feature Cutoff
和Dropout
。这可能是因为Shuffle
和Token Cutoff
与下游的STS
任务更相关,因为它们直接在token-level
上进行操作,并改变了句子的结构以产生hard examples
。其次,与
None-None
基线相比,Feature Cutoff
和Dropout
也提高了大约4
分的性能。此外,我们发现它们作为一种补充策略时,效果很好。例如,与另一种策略如
Shuffle
相结合,可能会进一步提高性能。当把Shuffle
和Feature Cutoff
结合起来时,我们取得了最好的结果。我们认为Feature Cutoff
和Dropout
有助于为sentence encoder
建模内部噪声的不变性invariance
,从而提高模型的鲁棒性。最后,我们还观察到,即使没有任何数据增强(
None-None
组合),我们的对比框架也能提高BERT
在STS
任务中的表现(从53.86
到63.84
)。这种None-None
组合对最大化视图之间的agreement
没有影响,因为augmented views
的representations
是完全相同的。相反,它通过将每个representation
从其他representation
中推开,从而调优了representation space
。我们认为,这种改进主要是由于BERT
的native representation space
的collapse
现象。在某种程度上,这也解释了为什么我们的方法是有效的。
Few-shot Setting
的性能:为了验证ConSERT
在数据稀疏情况下的可靠性和鲁棒性,我们进行了few-shot
实验。我们将未标记文本的数量分别限制为1/10/100/1000/10000
,并将其性能与完整的数据集进行比较。结果如下图所示,可以看到:在无监督和有监督的情况下,我们的方法只需要
100
个样本就可以比baseline
有很大的改善。当训练样本增加到
1000
个时,我们的方法基本上可以达到与完整数据集上训练的模型相当的结果。
这些结果揭示了我们的方法在数据稀疏的情况下的鲁棒性和有效性,这在现实中是很常见的。只需从
target
数据分布中提取少量的未标记文本,我们的方法也可以调优representation space
,并有利于下游任务。温度的影响:
NT-Xent loss
中的温度 $ \tau $ 用于控制由softmax
操作归一化的分布的平滑度,从而影响反向传播时的梯度。大的温度使分布更加平滑,而小的温度则使分布更加尖锐。在我们的实验中,我们探索了温度 $ \tau $ 的影响,如下图所示。可以看到,性能对温度极为敏感:过小或过大的温度都会使我们的模型表现不佳。而最佳温度是在一个很小的范围内得到的(大约从0.08
到0.12
之间)。这一现象再次证明了
BERT embedding
的collapse
问题,因为大多数句子是相互接近的,大的温度可能会使这一任务太难学习。我们在大多数实验中选择 $ \tau = 0.1 $ 。Batch Size
的影响:在以前的一些contrastive learning
的工作中,据报道,大batch size
有利于最终的性能,并加速模型的收敛,因为它为对比学习提供了更多的in-batch
负样本(《A simple framework for contrastive learning of visual representations》
)。这些in-batch
负样本提高了训练效率。我们分析了batch size
对无监督的sentence representation transfer
的影响,结果如下表所示。我们同时显示了spearman
相关系数、以及相应的training steps
。可以看到:较大的
batch size
确实能实现更好的性能。然而,这种改善并不显著。同时,较大的
batch size
确实加快了训练过程,但它同时也需要更多的GPU
内存。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论