数学基础
- 线性代数
- 概率论与随机过程
- 数值计算
- 蒙特卡洛方法与 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
- 并发
三十八、DeCLUTR [2020]
一段时间以来,
NLP
中的迁移学习仅限于pretrained word embedding
。最近的工作表明,使用pretrained sentence embedding
有很强的transfer task
性能。这些固定长度的向量(通常被称为"universal" sentence embedding
),通常在大型语料库中学习,然后迁移到各种下游任务中,如聚类(如主题建模)和检索(如语义搜索)。事实上,sentence embedding
已经成为一个重点领域,许多有监督的、半监督的、无监督的方法已经被提出。然而,性能最高的解决方案需要标记数据,限制了它们的实用性。因此,缩小无unsupervised universal sentence embedding
和supervised universal sentence embedding
方法之间的性能差距是一个重要目标。transformer-based
语言模型的预训练已经成为从未标记语料中学习textual representation
的主要方法。这一成功主要是由masked language modelling: MLM
推动的。这种自监督的token-level objective
要求模型从输入序列中预测一些randomly masked token
。除了
MLM
之外,其中一些模型还有机制用于通过自监督来学习sentence-level embedding
。在
BERT
中,一个special classification token
被前置到每个输入序列中,其representation
被用于二分类任务,以预测一个textual segment
是否在训练语料库中跟随另一个textual segment
。该任务被称作Next Sentence Prediction: NSP
。然而,最近的工作对NSP
的有效性提出了质疑。在RoBERTa
中,作者证明了在预训练期间去除NSP
会导致下游sentence-level task
(包括语义文本相似性和自然语言推理)的性能不变甚至略有提高。在
ALBERT
中,作者假设NSP
混淆了主题预测topic prediction
和连贯性预测coherence prediction
,而提出了一个Sentence-Order Prediction: SOP objective
,表明它能更好地建模句子间的连贯性。
在初步评估中,论文
《DeCLUTR: Deep Contrastive Learning for Unsupervised Textual Representations》
发现这两个objective
都不能产生良好的universal sentence embedding
。因此,作者提出了一个简单而有效的自监督的sentence-level objective
,其灵感来自于metric learning
的最新进展。metric learning
是一种representation learning
,旨在学习一个embedding space
,其中相似数据的vector representation
被映射在一起,反之亦然。在计算机视觉中,deep metric learning: DML
已被广泛用于学习visual representation
。一般来说,DML
的方法如下:一个
"pretext"
任务(通常是自监督的)被精心设计,并用于训练深度神经网络以产生有用的feature representation
。这里,"有用的" 是指在训练时未知的、容易适应其他下游任务的representation
。然后,下游任务(如
object recognition
)被用来评估所学到的特征的质量(独立于产生这些特征的模型),通常是通过使用这些特征作为输入,在下游任务上训练一个线性分类器。
迄今为止,最成功的方法是:设计一个
pretext
任务,用一个pair-based contrastive loss
来学习。对于一个给定的anchor data point
,contrastive loss
试图使锚点和一些positive data point
(那些相似的)之间的距离,小于锚点和一些negative data point
(那些不相似的)之间的距离。表现最好的方法是通过随机增强同一图像(例如使用裁剪、翻转、颜色扭曲)来产生anchor-positive pair
;而anchor-negative pair
是随机选择的不同图像的augmented view
。事实上,《A mutual information maximization perspective of language representation learning》
证明MLM objective
和NSP objective
也是对比学习的实例。受这种方法的启发,论文
《DeCLUTR: Deep Contrastive Learning for Unsupervised Textual Representations》
提出了一个自监督的contrastive objective
,可用于预训练sentence encoder
。这个objective
通过训练一个编码器来学习universal sentence embedding
,以最小化从同一文档中的相近位置处的、随机采样的textual segment
的emebdding
之间的距离。作者通过使用该objective
来扩展transformer-based language model
的预训练来证明该objective
的有效性,并在SentEval
上获得SOTA
的结果。这也是对比学习的思路。
论文贡献:
提出了一个自监督的
sentence-level objective
,可以与MLM
一起用于预训练transformer-based language model
,在没有任何标记数据的情况下为sentence-length
和paragraph-length
的文本生成generalized embedding
。进行了广泛的消融实验,从而确定哪些因素对学习高质量的
embedding
是重要的。证明了学到的
embedding
的质量与模型规模和数据规模有关。因此,仅仅通过收集更多的未标记文本或使用更大的编码器,就可以提高性能。开源了解决方案,并提供了在新数据上训练
unseen
文本的详细说明。
相关工作:以前关于
universal sentence embedding
的工作可以大致按照它们是否在预训练步骤中使用标记数据来分组,我们将其分别简称为:监督的、半监督的、以及无监督的。监督的和半监督的:性能最高的
universal sentence encoder
是在人类标记的自然语言推理(natural language inference : NLI
)数据集Stanford NLI: SNLI
和MultiNLI
上预训练的。NLI
的任务是将一对句子(记做"hypothesis"
和"premise"
)分类为三种关系之一:entailment
、contradiction
、neutral
。监督方法
InferSent
证明了NLI
对于训练universal sentence encoder
的有效性。Universal Sentence Encoder: USE
是半监督的,用SNLI
语料库上的监督训练来增强一个无监督的、类似Skip-Thoughts
的任务。最近发表的
SBERT
方法使用标记的NLI
数据集对预训练的、transformer-based language model
(如BERT
)进行微调。
注意,这里的“监督”信号不是来自于
target task
,而是来自于公开可用的数据集。无监督的:
Skip-Thoughts
和FastSent
是流行的无监督技术,通过使用一个句子的encoding
来预测邻近句子中的单词来学习sentence embedding
。然而,除了计算成本高之外,这种generative objective
迫使模型重构句子的表面形式,这可能会捕获到与句子意义无关的信息。QuickThoughts
用一个简单的discriminative objective
来解决这些缺点:给定一个句子及其context
(相邻的句子),它通过训练一个分类器来学习sentence representation
,以区分context sentence
和non-context sentence
。
无监督方法的统一主题是它们利用了
"distributional hypothesis"
,即一个单词(以及延伸到一个句子)的意义是由它出现的单词的上下文来描述的。
我们的整体方法与
SBERT
最为相似:我们扩展了transformer-based language model
的预训练,以产生有用的sentence embedding
。但是,我们提出的objective
是自监督的。移除对标记数据的依赖,使我们能够利用网络上大量的未标记文本,而不局限于标记数据丰富的语言或领域。我们的
objective
与QuickThoughts
最相似,但是一些区别包括:我们将采样放宽到
paragraph length
的文本片段(而不是自然句子)。我们对每个
anchor
采样一个或多个positive segment
(而不是严格意义上的一个positive segment
)。并且我们允许这些
positive segment
相邻、重叠或包含(而不是严格意义上的相邻)。
38.1 模型
自监督对比损失:我们的方法通过最大化来自相同文档中相近位置采样的
textual segments
之间的一致性,从而基于contrastive loss
来学习textual representation
。如下图所示,我们的方法包括以下组件:一个
data loading step
:从每个文档中随机采样paired anchor-positive spans
。 令batch size
为 $ N $ (包含 $ N $ 篇文档),每个文档采样了 $ A $ 个anchor spans
,每个anchor span
采样了 $ P $ 个positive spans
。令 $ i\in \{1,\cdots, AN\} $ 为anchor span
的编号。第 $ i $ 个anchor span
记做 $ \mathbf s_i $ ,它的第 $ p $ 个positive span
记做 $ \mathbf s_{i+pAN} $ 。这个程序的设计是为了最大化采样语义相似的anchor-positive pair
的机会。一个编码器
$ f(\cdot) $ :将input span
中的每个token
映射为一个embedding
。我们的方法对编码器的选择没有限制,但我们选择 $ f(\cdot) $ 是一个transformer-based language model
,因为这代表了文本编码器的SOTA
。一个池化函数
$ g(\cdot) $ :将encoded span
$ f(\mathbf s_i) $ 和 $ \left\{f(\mathbf s_{i+pAN})\right\}_{p=1}^P $ 分别映射为固定尺寸的embedding
$ \mathbf{\vec e}_i = g(f(\mathbf s_i)) $ 、及其相应的mean positive embedding
:类似于
SBERT
,我们发现均值池化作为 $ g(\cdot) $ 时,表现良好。我们将每个anchor embedding
与多个positive embeddings
的平均值配对。这一策略是由《A theoretical analysis of contrastive unsupervised representation learning》
提出的,他们证明了:与为每个anchor
使用单个的positive example
相比,该策略从理论上和经验上都得到改善。contrastive loss function
:用于contrastive prediction
任务。给定一组embedded span
$ \left\{\mathbf{\vec e}_k\right\} $ ,包含一对positive pair
$ \left(\mathbf{\vec e}_i,\mathbf{\vec e}_{i+AN}\right) $ ,那么给定 $ \mathbf{\vec e}_i $ ,contrastive prediction
的目标是从 $ \left\{\mathbf{\vec e}_k\right\}_{k\ne i} $ 中识别出 $ \mathbf{\vec e}_{i+AN} $ :其中:
$ \text{sim}\left(\mathbf{\vec u}, \mathbf{\vec v}\right) $ 为余弦相似度; $ \mathbb I_{i\ne k} $ 为示性函数,当 $ i\ne k $ 时取值为1
否则取值为零; $ \tau\gt0 $ 为温度超参数; $ j=i+AN $ 。
在训练过程中,我们从训练集中随机采样大小为
$ N $ 个文档的mini-batch
,并从这 $ N $ 个文档在anchor-positive pair
$ \left(\mathbf{\vec e}_i,\mathbf{\vec e}_{i+AN}\right) $ 上定义contrastive prediction
任务,得到 $ 2AN $ 个数据点。正如《Improved deep metric learning with multi-class n-pair loss objective》
所建议的,我们将mini-batch
中的其他 $ 2(AN-1) $ 个实例视为负样本。成本函数的形式为:这是以前工作中使用的
InfoNCE loss
,在《A simple framework for contrastive learning of visual representations》
中表示为normalized temperature-scale crossentropy loss: NT-Xent
。为了用训练好的模型来嵌入文本,我们只需将
batch
的tokenized text
通过模型,而不需要采样span
。因此,我们的方法在测试时的计算成本是编码器 $ f(\cdot) $ 的成本,加上池化器 $ g(\cdot) $ 的成本(在使用均值池化时,池化器的成本是可以忽略的)。Span Sampling
:我们首先选择一个minimum span length
和一个maximum span length
。这里我们选择 $ l_\min=32, l_\max =512 $ 。然后我们tokenize
文档 $ d $ ,产生一个长度为 $ n $ 的token
序列 $ \mathbf x^d = (x_1,\cdots,x_n) $ 。为了从 $ \mathbf x^d $ 中采样一个anchor span
$ \mathbf s_i $ ,我们首先从贝塔分布中采样其长度 $ l_\text{anchor} $ ,然后均匀随机地采样其起始位置 $ s_i^\text{start} $ :然后我们采样
$ P $ 个对应的positive span
,其中第 $ p $ 个positive span
为:注意,
positive span
是在anchor span
附近采样到的,因为 $ s_{i+pAN}^\text{start} \sim \{s_i^\text{start} - l_\text{positive},\cdots, s_i^\text{end}\} $ 。其中:
$ p_\text{anchor} = \text{Beta}(\alpha = 4,\beta=2) $ ,它使anchor sampling
向更长的span
倾斜。 $ p_\text{positive}\sim \text{Beta}(\alpha=2,\beta=4) $ ,它使positive sampling
向更短的span
倾斜(如Figure 1(c)
所示)。
在实践中,我们限制对同一文件的
anchor span
的采样,使其至少相隔 $ 2\times l_\max $ 个token
。我们注意到在设计我们的采样程序时有几个经过仔细考虑的决定:
从
$ l_\min = 32 $ 和 $ l_\max = 512 $ 所截断的分布中采样span length
,鼓励该模型对从sentence-length
到paragraph-length
的文本产生良好的embedding
。我们发现,
anchor span
的长度比positive span
的长度更长,可以提高下游任务的性能(我们没有发现性能对具体的 $ \alpha $ 和 $ \beta $ 的选择是敏感的)。有两个理由:首先,它使模型能够学习
global-to-local view prediction
。anchor
更长,对应于global
;positive
更短,对应于local
。其次,当
$ P>1 $ 时,它通过降低重复文本的数量来鼓励positive span
之间的多样性。如果
positive
更长,则positive
重复的概率越大。
在
anchor
附近采样positives
,可以利用分布假设,增加采样到有效的anchor-positive pair
(即语义相似)的机会。通过对每份文档采样多个
anchor
,每个anchor-positive pair
都与很多负样本进行对比:easy negatives
(来自mini-batch
中的其它文档中采样的anchors
和positives
)、hard negatives
(来自同一文件中采样的anchors
和positives
)。
总之,采样程序产生了三种类型的
positives
:与anchor
部分重叠的positives
、与anchor
相邻的positives
、被anchor
覆盖的positives
(Figure 1 (b)
);以及两种类型的negatives
:从与anchor
不同的文档中采样的easy negatives
、从与anchor
相同的文档中采样的hard negatives
。因此,我们随机生成的训练集和contrastive loss
隐式地定义了一族predictive tasks
,可以用来训练一个模型,并且与任何特定的编码器架构无关。下表展示了由我们的采样程序产生的
anchor-positive
和anchor-negative
的例子。我们展示了三种positive
:positives adjacent to
、overlapping with
、subsumed by the anchor
。对于每个anchor-positive pair
,我们展示了hard negative
(来自同一文档)和easy negative
(来自另一文档)的例子。回顾一下,一个mini-batch
是由随机文档组成的,每个anchor-positive pair
对都会与mini-batch
中的所有其他anchor-positive pair
进行对比。因此,我们在这里所描述的hard negative
,只有在对每个文档采样多个anchor
( $ A>1 $ )时才会产生。这是
next sentence prediction
任务的扩展:预测是否是附近位置的句子。Continued MLM pretraining
:我们使用我们的objective
来扩展transformer-based language model
的预训练:这与现有的预训练策略类似,其中
MLM loss
与NSP
或SOP
等sentence-level loss
相加。为了降低计算成本,我们不从头开始训练,而是继续训练一个已经用
MLM objective
预训练好的模型。具体来说,我们在实验中同时使用RoBERTa-base
和DistilRoBERTa
(RoBERTa-base
的蒸馏后的版本)。在本文的其余部分,我们将我们的方法称为DeCLUTR-small
(当扩展DistilRoBERTa pretraining
时)和DeCLUTR-base
(当扩展RoBERTa-base pretraining
时)。
38.2 实验
数据集:
OpenWebText
,这是WebText
语料库的一个子集。我们从中收集所有的最小token
长度为2048
的文档,总共得到497868
个文档。实现:我们在
PyTorch
中使用AllenNLP
实现我们的模型。我们使用了PyTorch Metric Learning library
实现的NT-Xent loss function
、以及Transformers library
中pretrained transformer
的架构和权重。所有模型都是在最多四个NVIDIA Tesla V100 16GB/32GB GPU
上训练的。训练:
除非另有说明,我们使用
AdamW
优化器对497868
个文档训练1
到3
个epoch
,minibatch size = 16
,温度 $ \tau = 5\times 10^{-2} $ ,学习率为 $ 5\times 10^{-5} $ ,权重衰减为0.1
。对于
minibatch
中的每个文档,我们采样两个anchor span
( $ A=2 $ )、每个anchor
采样两个positive span
( $ P=2 $ )。我们使用斜三角学习率
scheduler
,训练步骤的数量等于训练实例的数量,cut
比例为0.1
。底层
pretrained transformer
(即DistilRoBERTa
或RoBERTa-base
)的其余超参数保持默认。在反向传播之前,所有梯度都被缩放为长度为
1.0
的范数(即,单位向量)。超参数是在
SentEval
验证集上调优的。
评估方式:我们在
SentEval benchmark
上评估了所有的方法,这是一个广泛使用的toolkit
,用于评估通用的fixed-length sentence representation
。SentEval
分为18
个下游任务(如情感分析、自然语言推理、转述检测paraphrase
、image-caption
检索)和10
个probing
任务(旨在评估sentence representation
中编码了哪些语言学属性)。我们报告了我们的模型和相关
baseline
在默认参数下使用SentEval toolkit
在下游任务和probing
任务上获得的分数。请注意,我们所比较的所有监督方法都是在SNLI
语料库上训练的,而SNLI
语料库是作为SentEval
的下游任务包括的。为了避免train-test
的污染,我们在Table 2
中比较这些方法时,在计算平均下游分数时不考虑SNLI
。baseline
:InferSent
、USE
、Sentence-Transformer
(即,SBERT
) 。USE
在结构和参数数量上与DeCLUTR-base
最相似。Sentence-Transformer
与DeCLUTR-base
一样,使用RoBERTa_base
架构和预训练好的权重,唯一区别在于不同的预训练策略。我们将
GloVe
词向量均值、fastText
词向量均值的性能作为弱基线。我们尽了最大努力,但我们无法针对完整的
SentEval benchmark
评估pretrained QuickThought
模型,因此我们直接引用了论文中的分数。我们评估了
pretrained transformer
模型在采用我们的contrastive objective
训练之前的表现,用"Transformer-*"
来表示。我们在pretrained transformers token-level output
上使用均值池化来产生sentence embedding
。
下表中列出了可训练的模型参数规模和
sentence embedding
维度。下游任务的性能:
与底层的
pretrained model
DistilRoBERTa
和RoBERTa-base
相比,DeCLUTR-small
和DeCLUTR-base
在下游性能方面获得了很大的提升,分别平均提升+4%
和+6%
。DeCLUTR-base
在除SST5
以外的所有下游任务中都提高了性能,DeCLUTR-small
在除SST2, SST5, TREC
以外的所有下游任务中都提高了性能。与现有的方法相比,
DeCLUTR-base
在不使用任何人工标记的训练数据的情况下与监督/半监督性能相匹配,甚至超过了监督/半监督性能。令人惊讶的是,我们还发现,
DeCLUTR-small
在使用34%
的可训练参数的情况下,表现优于Sentence Transformer
。
Probing
任务性能:除了
InferSent
之外,现有的方法在SentEval
的probing
任务上表现很差。Sentence Transformer
相比它底层的pretrained transformer model
,在probing
任务上的得分低大约10%
。相比之下,
DeCLUTR-small
和DeCLUTR-base
在平均性能方面的表现与底层的pretrained model
相当。
这些结果表明,在
NLI
数据集上微调transformer-based language model
可能会丢弃一些由pretrained model
的权重捕获的语言信息。我们怀疑在我们的training objective
中包含MLM
是DeCLUTR
在probing
任务上相对较高的表现的原因。监督的和无监督的下游任务:
SentEval
的下游评估包括有监督的任务和无监督的任务。在无监督的任务中,要评估的方法的
embedding
不需要任何进一步的训练。有趣的是,我们发现USE
在SentEval
的无监督评估(Table 2
中带*
号的任务)中表现特别好。鉴于USE
的架构与Sentence Transformers
和DeCLUTR
的相似性,以及USE
的supervised NLI training objective
与InferSent
和Sentence Transformer
的相似性,我们怀疑最可能的原因是其一个或多个额外的training objective
。这些目标包括一个conversational response prediction
任务、和一个类似Skip-Thoughts
的任务。采样程序的消融研究:我们评估了每个文档采样的
anchor
数量 $ A $ 、每个anchor
采样的positives
数量 $ P $ 、以及采样positives
的策略对于模型效果的影响。我们注意到,当 $ A=2 $ 时,与 $ A=1 $ 相比,模型是在两倍的span
和两倍的数据量( $ 2AN $ ,其中 $ N $ 是mini-batch
中的文档数量)上进行训练。为了控制这一点,所有 $ A=1 $ 的实验都被训练了两个epoch
( $ A=2 $ 时仅训练一个epoch
)、两倍的mini-batch size
( $ 2N $ )。因此,这两组实验都是在相同数量的span
和相同的effective batch size
( $ 4N $ )上训练的,唯一的区别是每个文档采样的anchor
的数量( $ A $ )。 $ P > 1 $ 时,数据量也增加了,是否也需要训练更多的epoch
?论文并未说明。对每个文档采样多个
anchor
对learned embedding
的质量有很大的积极影响。我们假设这是因为当 $ A>1 $ 时,contrastive objective
的难度增加。回顾一下,
mini-batch
由随机文档组成,从一个文档中采样的每个anchor-positive pair
都要与mini-batch
中的所有其他anchor-positive pair
进行对比。当 $ A>1 $ 时,anchor-positive pair
将与同一文档中的其他anchor-positive pair
进行对比,增加contrastive objective
的难度,从而导致更好的representation
。 $ A $ 大于2
时,效果如何?论文并未说明。允许与
anchor
相邻、或者被anchor
包含的positive sampling
策略,要优于仅支持anchor
相邻,也优于仅支持被anchor
包含的采样策略。这表明这两个视图(即,anchor
相邻、被anchor
包含)所捕获的信息是互补的。对每个
anchor
采样多个positives
( $ P>1 $ )对性能的影响很小。这与(《A theoretical analysis of contrastive unsupervised representation learning》
)相反,他们发现当多个positives
被均值池化,并与一个给定的anchor
配对时,理论上和经验上都有改进。
其它消融研究:为了确定训练目标、训练集大小、 模型容量的重要性,我们用训练集的
10% ~ 100%
(一个完整的epoch
)来训练两种规模的模型。同时用
MLM objective
和contrastive objective
对模型进行预训练,比单独用任何一个objective
预训练提高了性能。对于
MLM objective + contrastive objective
,随着训练集大小的增加,模型性能单调地改善。我们假设引入
MLM loss
作为一种正则化的形式,防止pretrained model
的权重(该模型本身是用MLM loss
训练的)偏离太大(这种现象被称为 "灾难性遗忘catastrophic forgetting
")。
这些结果表明,通过我们的方法所学到的
embedding
的质量可以根据模型的容量和训练集的大小而scale
。因为训练方法是完全自监督的,扩大训练集只需要收集更多的未标记文本。这个数据并未说明模型容量的重要性。在前面的实验中,
DeCLUTR_base
的效果优于DeCLUTR_small
,说明了模型容量的重要性。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论