数学基础
- 线性代数
- 概率论与随机过程
- 数值计算
- 蒙特卡洛方法与 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
- 并发
三十七、CERT [2020]
大规模的
pretrained language representation model
(如BERT, GPT, BART
等),在各种自然语言处理任务中取得了卓越的性能,如文本生成、阅读理解、文本分类等任务。这些模型的架构大多基于Transformer
,它使用自注意力来捕获token
之间的长距离依赖关系。Transformer
编码器或解码器通过自监督任务在大规模文本语料库上进行预训练,这些自监督任务包括:预测masked token
(BERT
),生成future token
(GPT
),恢复corrupted token
(BART
)等等。在这些工作中,要预测的target
大多是在word level
。因此,sentence level
的全局语义可能没有被充分捕获。为了解决这个问题,论文
《CERT: Contrastive Self-supervised Learning for Language Understanding》
提出了CERT:Contrastive self-supervised Encoder Representations from Transformers
,它使用contrastive self-supervised learning: CSSL
来学习sentence-level representation
。最近,
CSSL
在以无监督的方式学习visual representation
方面显示出很好的效果。CSSL
的关键思想是:创建原始样本的augmentation
,然后通过预测两个augmentation
是否来自同一个原始数据样本来学习representation
。CERT
使用back-translation
(《Understanding back-translation at scale》
)创建句子的增强augmentation
,然后通过预测两个augmentation
是否来自同一个原始句子来微调pretrained language representation model
(例如BERT, BART
)。现有的预训练方法在token
上定义prediction task
。相反,CERT
在sentence
上定义prediction task
,这可以推测在sentence level
更好地捕获全局语义。CERT
使用back-translation
来对句子执行augmentation
。给定源语言source language
$ \mathcal S $ 的一个句子 $ \mathbf x $ ,CERT
使用 $ \mathcal S\text{-to-}\mathcal T $ 的翻译模型将 $ \mathbf x $ 翻译到目标语言target language
$ \mathcal T $ 的句子 $ \mathbf y $ ,然后再使用 $ \mathcal T\text{-to-}\mathcal S $ 的翻译模型将 $ \mathbf y $ 翻译到源语言 $ \mathcal S $ 的句子 $ \mathbf x^\prime $ 。 $ \mathbf x^\prime $ 被视为 $ \mathbf x $ 的一个augmentation
。不同目标语言的翻译模型被用来创建同一个源句的不同的augmentation
。要求有合适的翻译模型,并且翻译模型的质量会影响
CERT
的效果。给定
augmented sentences
,Momentum Contrast: MoCo
方法(《Momentum contrastfor unsupervised visual representation learning》
)被用来执行CSSL
。MoCo
维护一个关于augmented sentences
(称作keys
)的队列,该队列使用带有动量更新的pretrained text-encoder
(例如BERT
)进行编码。给定一个augmented sentence
(称为query
),通过BERT
(或任何其他pretrained text-encoder
)来计算query encoding
与队列中每个key embedding
之间的相似性分数。如果query
和key
是同一个原始句子的augmentation
,则它们被标记为positive pair
,否则被标记为negative pair
。这些二元标签和相似性分数被用来计算contrastive loss
。pretrained text encoder
的权重是通过最小化contrastive loss
来进一步预训练的。为了在下游任务上应用pretrained CERT model
,CERT
使用下游任务的输入数据和标签对CERT
的权重进行微调。也可以用
in-batch
负样本来代替这里的MoCo
方法。CERT
是一个灵活的模块,可以与任何pretrained language representation model
集成,如BERT, BART, ERNIE 2.0, T5
等。作者在GLUE benchmark
中的11
个自然语言理解任务上评估了CERT
,其中CERT
在7
个任务上优于BERT
,在2
个任务上达到与BERT
相同的性能,而在2
个任务上表现比BERT
差。在11
项任务的平均得分上,CERT
优于BERT
。这些结果表明,通过捕获sentence-level
的语义,针对language representation
的contrastive self-supervised learning
的有效性。论文贡献:
提出了
CERT
,一种基于contrastive self-supervised learning
的新的language representation pretraining
方法。CERT
是在sentence level
定义了predictive task
,因此预计可以更好地捕获sentence-level
的语义。在
GLUE benchmark
的11
个自然语言理解任务上对CERT
进行了评估,CERT
在11
个任务的平均得分上优于BERT
。进行了消融研究,以研究
CERT
的性能如何受到sentence augmentation
方法和预训练语料源的影响。
CERT
是针对sentence embedding
的一系列对比学习方法中的一种。这些对比学习方法的核心在于:如何创建augumentation
、对比学习的负样本。相关工作:
针对
learning language representation
的pretraining
:最近,在大规模文本语料库上进行language representation learning
的预训练已经取得了实质性的成功。GPT
模型是一个基于Transformer
的语言模型(language model: LM
)。Transformer
定义了在给定input sequence
的条件下得到output sequence
的条件概率。与Transformer
不同,GPT
定义了在单个output sequence
上的边际概率。在GPT
中,给定历史序列的条件下,next token
的条件概率是通过Transformer decoder
来定义的。权重参数是通过最大化token
序列的可能性来学习的。GPT-2
是GPT
的扩展,它对GPT
进行了修改,将layer normalization
作用到每个sub-block
的输入,并在final self-attention block
后增加一个additional layer normalization
。Byte pair encoding: BPE
被用来表示token
的输入序列。BERT-GPT
是一个用于sequence-to-sequence modeling
的模型,其中pretrained BERT
被用来编码输入文本,pretrained GPT
被用来生成输出文本。在BERT-GPT
中,BERT encoder
和GPT decoder
的预训练是单独进行的,这可能导致性能下降。Auto-Regressive Transformer BART
具有与BERT-GPT
类似的架构,但对BERT encoder
和GPT decoder
进行联合训练。为了预训练BART
权重,输入文本被随机破坏,如token masking
、token deletion
、文本填充等,然后学习网络以重建原始文本。ALBERT
使用parameter-reduction
方法来减少内存消耗并提高BERT
的训练速度。它还引入了自监督损失用于建模句子间的一致性inter-sentence coherence
。RoBERTa
是一项关于BERT
预训练的复现研究。它表明,通过仔细调优训练过程,BERT
的性能可以得到显著的改善,如:用更多的数据、更大的batch size
、更长的训练时间;移除next sentence prediction objective
;在更长的序列上训练。等等。XLNet
通过对factorization order
的所有排列的expected likelihood
的最大化,从而来学习bi-directional context
,并使用广义自回归预训练机制generalized autoregressive pretraining mechanism
来克服BERT
的pretrain-finetune discrepancy
。T5
比较了各种语言理解任务的预训练目标、架构、未标记数据集、transfer
方法,并提出了一个统一的框架,将这些任务转换为一个text-to-text
的任务。统一的模型在一个大型的Colossal Clean Crawled Corpus: C4
上进行训练,然后被迁移到各种各样的下游任务中。ERNIE 2.0
提出了一个continual pretraining framework
,该框架通过持续的多任务学习来建立和学习incrementally pretraining task
,以捕获训练语料中的词法信息、句法信息、以及语义信息。
Contrastive Self-supervised learning
:Contrastive self-supervised learning
最近引起了很多研究兴趣。《Data-efficient image recognition with contrastive predictive coding》
研究了基于contrastive predictive coding
的data-efficient
的图像识别,它通过使用强大的自回归模型在潜在空间中预测未来。《Curl: Contrastive unsupervised representations for reinforcement learning》
提出了为强化学习来学习contrastive unsupervised representation
。《Supervised contrastive learning》
研究了supervised contrastive learning
,其中属于同一类别的数据点的cluster
在embedding
空间中被拉到一起,而来自不同类别的数据点的cluster
被推开。《Contrastive self-supervised learning for commonsense reasoning》
提出了一种用于常识推理的contrastive self-supervised learning
的方法。《Sample-effcient deep learning for covid-19 diagnosis based on ct scans》
提出了一种Self-Trans
方法,该方法在通过transfer learning
从而在pretrained network
之上应用contrastive self-supervised learning
。
37.1 模型
针对
pretraining language representation
模型的最近的工作中,大多数工作都是基于Transformer
架构。例如,BERT
预训练Transformer encoder
、GPT
预训练Transformer decoder
、BART
联合预训练Transformer encoder
和Transformer decoder
。Transformer
:Transformer
是一个用于序列到序列(sequence-to-sequence: seq2seq
)建模的encode-decoder
架构。基于递归神经网络的
seq2seq
模型(如LSTM
、GRU
)通过递归方式对token
序列进行建模,因此计算效率低。Transformer
不同,它摒弃了递归计算,转而使用自注意力,这不仅可以捕获到token
之间的依赖性,而且还能高效地并行计算。自注意力计算每一对token
之间的相关性,并通过对token embedding
进行加权求和从而使用这些相关性得分来创建"attentive" representation
。BERT
:BERT
的目的是学习一个用于表示文本的Transformer encoder
。BERT
的模型架构是一个多层双向Transformer encoder
。在BERT
中,Transformer
使用双向的自注意力。为了训练编码器,BERT
随机掩码了一定比例的input token
,然后预测这些masked token
。为了将
pretrained BERT
应用于下游任务,如句子分类,可以在BERT
架构的基础上增加一个附加层,并使用目标任务中的标记数据训练这个newly-added layer
。
Contrastive Self-supervised Learning
:自监督学习(Self-supervised learning: SSL
)是一种学习范式,旨在不使用人类提供的标签来捕获输入数据的内在模式和固有属性。自监督学习的基本思想是完全基于输入数据本身构建一些辅助任务(而不使用人类标注的标签),并迫使网络通过很好地执行辅助任务来学习有意义的representation
,如旋转预测rotation prediction
、图像绘画image inpainting
、自动着色automatic colorization
、上下文预测context prediction
等等。自监督学习中的辅助任务可以使用许多不同的机制来构建。最近,一种对比性机制获得了越来越多的关注,并在一些研究中展示了有希望的结果。对比性自监督学习的基本思想是:生成原始数据样本的
augmented
样本,创建一个预测任务,目标是预测两个augmented
样本是否来自同一个原始数据样本,并通过解决这个任务来学习representation network
。人们已经提出了不同的方法来实现对比性自监督学习。在为图像数据设计的
SimCLR
中,给定输入图像,对这些图像应用随机数据增强。如果两张augmented
图像是由相同的原始图像创建的,它们就被标记为相似;否则,它们就被标记为不相似。然后SimCLR
学习一个网络来拟合这些相似/不相似的二元标签。该网络由两个模块组成:一个是特征提取模块
$ f(\cdot) $ ,它提取图像 $ \mathbf x $ 的latent representation
$ \mathbf{\vec h} = f(\mathbf x ) $ 。另一个是多层感知机
$ g(\cdot) $ ,它将 $ \mathbf{\vec h} $ 作为输入并生成另一个latent representation
$ \mathbf{\vec z} = g\left(\mathbf{\vec h}\right) $ ,用于预测两个图像是否相似。
给定一对相似的图像
$ (\mathbf x_i, \mathbf x_j) $ 和 $ K $ 个与 $ \mathbf x_i $ 不相似的图像 $ \left\{\mathbf x_k\right\}_{k=1}^K $ ,对contrastive loss
可以被定义为:其中:
$ \text{sim}(\cdot,\cdot) $ 表示两个向量之间的cosine
相似度; $ \tau $ 为温度超参数。SimCLR
通过最小化这种损失来学习网络权重。训练结束后,特征提取模块 $ f(\cdot) $ 被用于下游任务,模块 $ g(\cdot) $ 被丢弃。这里要求
$ g(\cdot) $ 非常简单,从而迫使 $ f(\cdot) $ 学到有意义的特征。虽然
SimCLR
很容易实现,但它需要一个大的mini-batch size
来产生良好的效果,这在计算上是难以实现的。MoCo
通过使用一个独立于mini-batch size
的队列来解决这个问题。这个队列包含一个动态的、augmented
样本集合(称为keys
)。在每次迭代中,最新的mini-batch
样本被添加到队列中;同时,最旧的mini-batch
样本被从队列中删除。通过这种方式,队列与mini-batch size
是解耦的。如下图所示。keys
是用momentum encoder
编码的。给出当前mini-batch
中的一个augmented
样本(称为query
)、以及队列中的一个key
,如果它们来自同一图像,则被认为是positive pair
,否则就是negative pair
。MoCo
计算query encoding
和每个key encoding
之间的相似性得分。contrastive loss
是在相似度的得分和二元标签上定义的。CERT
:CERT
采用pretrained language representation model
(如BERT
),并在目标任务的输入数据上使用contrastive self-supervised learning
对其进行微调。下图展示了CERT
的工作流程。为了便于演示,我们使用BERT
作为pretrained language representation model
。给定来自源任务的大规模输入文本(没有标签),首先在这些文本上预训练一个
BERT
模型。注意,源任务的大规模输入文本没有使用对比学习,而是用
BERT
的原始优化目标来训练。然后,我们使用
contrastive self-supervised learning
在目标任务的输入文本(无标签)上继续训练这个pretrained BERT model
。我们把这个模型称为pretrained CERT model
。只有目标任务的输入文本才使用对比学习。
然后,我们使用目标任务中的输入文本及其标签对
CERT
模型进行微调,得到执行目标任务的最终模型。目标任务的输入文本被使用两次:一次是无监督的对比学习、一次是有监督的目标任务。
在
contrastive self-supervised learning
训练中,CERT
使用back-translation
对目标任务中的原始句子进行增强:如果两个augmented sentences
是由同一个原始句子创建的,则被认为是positive pair
,否则就是negative pair
。augmented sentences
用BERT
编码,并计算一对句子在BERT encoding
上的相似性得分。contrastive loss
是根据二元标签和相似性得分来确定的。然后,通过最小化contrastive loss
来进一步微调pretrained BERT encoder
。我们使用
MoCo
来实现contrastive self-supervised learning
,以避免使用大型的mini-batch
(大型的mini-batch
导致计算量太大)。数据增强:下图展示了基于
back-translation
的数据增强的工作流程。对于目标任务中的每个输入句子 $ \mathbf x $ ,我们使用back-translation
对其进行增强。在不失一般性的情况下,我们假设目标任务中的语言是英语。我们使用
English-to-German
机器翻译模型将 $ \mathbf x $ 翻译成 $ \mathbf y $ ,然后使用German-to-English
机器翻译模型将 $ \mathbf y $ 翻译成 $ \mathbf x^\prime $ 。然后 $ \mathbf x^\prime $ 被视为 $ \mathbf x $ 的一个augmented sentence
。同样地,我们使用一个
English-to-Chinese
机器翻译模型和一个Chinese-to-English
机器翻译模型来获得另一个augmented sentence
$ \mathbf x^{\prime\prime} $ 。
我们使用
《Massive exploration of neural machine translation architectures》
中开发的机器翻译模型用于back-translation
。仅对目标任务的输入文本进行数据增强。
CSSL Pretraining
:我们使用MoCo
来实现CSSL
。给定两个augmented sentences
,如果它们源自同一个原始句子,它们就被标记为positive pair
;如果它们来自不同的句子,它们就被标记为negative pair
。我们使用一个队列来维护一个augmented sentence
集合 $ \{\mathbf k_i\}_{k=1}^K $ ,称作keys
。给定当前mini-batch
中的一个augmented sentence
$ \mathbf q $ (称作query
),我们将它与队列中的每个key
进行比较。query
用pretrained BERT model
$ f_q(\cdot;\theta_q) $ 进行编码,其中 $ \theta_q $ 为模型权重。key
用pretrained BERT model
$ f_k(\cdot;\theta_k) $ 进行编码,其中 $ \theta_k $ 为模型权重。
key
模型 $ f_k(\cdot;\theta_k) $ 的权重 $ \theta_k $ 通过动量进行更新: $ \theta_k \leftarrow m\theta_k + (1-m)\theta_q $ ,其中 $ m $ 为动量系数。query
模型 $ f_q(\cdot;\theta_q) $ 的权重 $ \theta_q $ 通过随机梯度下降来更新。之所以二者更新方式不同,是因为需要确key
队列的变化比较缓慢。在不失一般性的情况下,我们假设队列中有单个
key
$ k_+ $ 与 $ q $ 形成一个positive pair
。contrastive loss
定义为:其中:
$ \tau $ 为温度超参数。query BERT encoder
的权重是通过最小化该损失来进行微调的。请注意,在这个步骤中,只使用目标任务的输入句子,而不需要这些句子的标签。为了将pretrained CERT model
应用于下游任务,我们进一步在目标任务中的输入句子及其标签上微调模型权重。未来工作:我们计划研究更具挑战性的自监督学习的损失函数。我们有兴趣研究一种
ranking-based loss,
,即每个句子都被增强了ranked list
的句子,这些augmented
句子与原句的差异越来越小。辅助任务是预测给定的augmented
句子的排序。预测排序可能比CSSL
中的二分类更具挑战性,并可能有助于学到更好的representation
。另外,是否考虑对源任务的输入文本也执行对比学习?
37.2 实验
评估任务:
General Language Understanding Evaluation: GLUE
基准,包含11
个任务。我们通过向GLUE
评估服务器提交推理结果来获得测试集的性能。数据集如下表所示。实验配置:
在
MoCo
中,队列的大小被设置为96606
。MoCo
更新key encoder
的动量系数为m = 0.999
。contrastive loss
中的温度超参数为 $ \tau = 0.07 $ 。使用
multi-layer perceptron head
。对于
MoCo training
,使用带动量的随机梯度下降优化器。mini-batch size = 16
。初始学习率为4e-5
,并使用余弦调度器。epoch
数量为100
。权重衰减系数为1e-5
。对于
GLUE
任务上的微调,最大序列长度被设置为128
,mini-batch size = 16
。学习率设置:
CoLA, MNLI, STS-B
为3e-5
、RTE, QNLI, MRPC, SST-2, WNLI
为2e-5
、QQP
为1e-5
。训练
epoch
数量:CoLA
为20
、RTE, WNLI, QQP
为5
、QNLI, MNLI
为3
、MRPC
为15
、SST-2
为4
、STS-B
为10
。
验证集上的评估结果:
GLUE
任务中,验证集效果如下表所示。遵从ALBERT
,我们对微调进行了5
次随机重启,并报告了这5
次运行中的中位数和最佳性能。由于5
次重启的随机性,我们的中位数性能与ALBERT
报告的不一致。但一般来说,它们是接近的。可以看到:就中位数性能而言,我们提出的
CERT
在5
个任务上优于BERT
,包括CoLA, RTE, QNLI, SST-2, QQP
;在其他5
个任务中,CERT
与BERT
持平。这证明了CERT
在通过contrastive self-supervised learning
来学习更好的language representation
方面的有效性。其次,就最佳性能而言,
CERT
在7
个任务上的表现优于BERT
,包括CoLA, RTE, QNLI, STS-B, MNLI-m, MNLI-mm, QQP
。CERT
在MRPC
和WNLI
上与BERT
持平。CERT
在SST-2
上的表现不如BERT
好。这些结果进一步证明了CERT
的有效性。第三,在训练数据较少的任务(如
CoLA
和RTE
)上,CERT
比BERT
的改进更为显著。一个可能的原因是,小规模的训练数据更容易过拟合,这使得CSSL
预训练的必要性更加突出。第四,在
CoLA
和RTE
这样的小规模数据集上,CERT
获得了更大的提升。这表明,在解决训练数据量有限的低资源NLP
任务方面,CERT
很有前途。
为了方便读者,我们还展示了
SOTA
的预训练方法的结果,包括XLNet, RoBERTa, ERNIE 2.0, ALBERT
。CERT
在CoLA
上取得了接近XLNet
的性能,对计算资源的消耗要低得多,而且文本语料库也小得多。XLNet, RoBERTa, ERNIE 2.0, ALBERT
是在数百到数千台GPU
机器上训练数天的,而CERT
是使用单个GPU
训练十几个小时的。此外,这些模型是在几十或几百GB
的文本上训练的,而CERT
只在大约400KB
的文本上训练。CERT
也可以建立在这些pretrained model
之上,这将留待将来研究。测试集上的评估结果:
GLUE
任务中,测试集效果如下表所示。可以看到:在
11
个任务中,CERT
在7
个任务上的表现优于BERT
,包括RTE, QNLI, STS-B, MRPC, MNLI-m, MNLI-mm, QQP
。CERT
在WNLI
和AX
上实现了与BERT
相同的性能,在CoLA
和SST-2
上表现比BERT
更差。CERT
取得了80.7
的平均分,比BERT
好。总的来说,CERT
的表现比BERT
好,这进一步证明了contrastive self-supervised learning
是一种学习更好的language representation
的有效方法。虽然
CERT
在CoLA
的验证集上取得了比BERT
好得多的性能,但在CoLA
的测试集上比BERT
更差。这可能是因为CoLA
的测试集和验证集有很大的domain difference
。
下表还列出了其他
SOTA
方法的性能。下一步,我们计划用XLNet, ERNIE2, T5, RoBERTa, ALBERT
取代CERT
中基于BERT
的sentence encoder
,看看CSSL
预训练是否能提高这些编码器的性能。CERT
在预训练、微调之外,还增加了一个对比学习任务,这使得CERT
比BERT
训练了更多的数据。这其实是一种不太公平的比较。应该让BERT
在目标任务的输入文本(不包含标签)上继续预训练,使得BERT
和CERT
训练的数据量相同。Data Augmentation
的消融研究:CERT
的一个关键要素是创建augmented sentence
。默认情况下,我们使用back-translation
来进行数据增强。研究其他的数据增强方法也是很有趣的。我们将back-translation
与最近提出的文本增强方法Easy Data Augmentation: EDA
(《Eda: Easy data augmentation techniques for boosting performance on text classification tasks》
)进行比较。给定训练集中的一个句子,EDA
随机选择并执行以下操作之一:同义词替换、随机插入、随机互换、随机删除。下表显示了
CERT
在CoLA
和RTE
任务上分别使用back-translation
和EDA
进行增强的结果。可以看到:总的来说,back-translation
取得了比EDA
更好的结果,只是back-translation
在STS-B
上的中位数性能比EDA
低0.1%
。back-translation
效果更好的原因可能是:back-translation
在sentence level
上进行全局地增强(整个句子被来回地翻译),而EDA
在word/phrase level
上进行局部地增强。因此,back-translation
可以更好地捕获句子的全局语义,而EDA
则是捕获局部语义。另一个原因可能是:通过
back-translation
增强的句子与原始句子有更大的差异。相比之下,由EDA
增强的句子与原始句子很接近,因为EDA
对原始句子进行了局部编辑,并保持了句子的大部分内容不受影响。因此,预测两个通过back-translation
增强的句子是否来自同一个原句,要比预测那些通过EDA
增强的句子更难。解决一个更具挑战性的CSSL
任务通常会带来更好的representation
。
CSSL Pretraining Corpora
的消融研究:另一个有趣的研究点是应该使用什么语料来训练CSSL
。在CERT
中,默认情况下,我们使用目标任务的训练数据(不包括标签)用于CSSL
。我们与以下设置进行比较:我们从BERT
的训练语料库中随机抽取 $ x $ 个句子,其中 $ x $ 是目标任务中训练句子的数量。下表显示了在
CoLA
和STS-B
上的表现,CSSL
在不同的语料库上进行了预训练。在
CoLA
任务中,当使用CoLA
的训练数据时,可以获得更好的性能。在
STS-B
任务中,当使用BERT
预训练语料库时,取得了更好的性能。
从这项研究中,我们并没有得出哪种方法更好的明确结论。在实践中,尝试这两种方法并找出哪种方法更有效,可能是有用的。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论