数学基础
- 线性代数
- 概率论与随机过程
- 数值计算
- 蒙特卡洛方法与 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
- 并发
十九、ALBERT [2019]
全网络预训练
full network pre-training
已经导致了language representation learning
的一系列突破。许多困难的NLP
任务,包括那些训练数据有限的任务,都大大受益于这些预训练的模型。这些突破之中最引人注目的标志之一是机器在RACE test
上(为中国初中和高中英语考试设计的阅读理解任务)的性能演进:- 最初描述该任务并提出
modeling challenge
的论文报告了当时SOTA
的机器准确率为44.1%
。 - 最新发表的结果(即
RoBERTa
)报告了他们的模型性能为83.2%
。 - 论文
《A Lite BERT for Self-supervised Learning of Language Representations》
提出的ALBERT
将其推高到89.4%
,达到一个惊人的45.3%
的改进,这主要归功于我们目前建立高性能预训练的language representation
的能力。
这些改进的证据显示,大型网络对于实现
SOTA
的性能至关重要。预训练大型模型并将其蒸馏成较小的模型,这种做法已成为实际应用的普遍做法。鉴于模型规模的重要性,我们问:拥有更好的NLP
模型和拥有更大的模型一样容易吗?回答这个问题的一个障碍是现有硬件的内存限制。鉴于目前
SOTA
的模型往往有数亿甚至数十亿的参数,当我们试图扩大我们的模型规模时,很容易就会遇到这些限制。在分布式训练中,训练速度也会受到很大影响,因为通信开销与模型中的参数规模成正比。上述问题的现有解决方案包括模型并行
model parallelization
、以及巧妙的内存管理。这些解决方案解决了内存限制问题,但没有解决通信开销问题。在论文《A Lite BERT for Self-supervised Learning of Language Representations》
中,作者通过设计A Lite BERT: ALBERT
架构来解决上述所有问题,该架构的参数明显少于传统的BERT
架构。ALBERT
采用了两种参数缩减parameter reduction
技术,解除了scale
预训练模型的主要障碍:- 第一个技术是因子分解的
embedding parameterization
。通过将大型词表的embedding matrix
分解成两个小矩阵,论文将隐层的维度与vocabulary embedding
的维度分离。这种分离使得在不显著增加vocabulary embedding
的参数规模的情况下,更容易增长隐层的维度。 - 第二种技术是跨层参数共享
cross-layer parameter sharing
。这种技术可以防止参数随着网络的深度而增长。
这两种技术都大大减少了
BERT
的参数数量而不严重损害性能,从而提高了参数效率。配置类似于BERT-large
的ALBERT
的参数数量减少了18
倍,训练速度可以提高约1.7
倍。参数缩减技术也作为一种正则化的形式,稳定了训练并有助于泛化。为了进一步提高
ALBERT
的性能,作者引入了一个自监督的损失用于sentence-order prediction: SOP
。SOP
主要关注句子间的连贯性,旨在解决original BERT
中提出的next sentence prediction: NSP
损失的无效性。由于这些设计决策,论文能够扩展到更大的
ALBERT
配置,这些配置的参数仍然比BERT-large
更少,但是性能更好。论文在著名的GLUE
、SQuAD
和RACE
等自然语言理解benchmark
上建立了新的SOTA
结果。具体而言,ALBERT
将RACE
的准确率提高到89.4%
、将GLUE benchmark
提高到89.4%
、将SQuAD 2.0
的F1
得分提高到92.2
。虽然准确率更高,但是训练时间要长三倍。
- 最初描述该任务并提出
相关工作:
为自然语言
scale up representation learning
:学习自然语言的representation
已被证明对广泛的NLP
任务有用,并被广泛采纳。过去两年中最重要的变化之一是,从预训练word embedding
(无论是标准的、还是上下文contextualized
的),都转变为全网络预训练full-network pre-training
,然后再紧跟着进行task-specific
的微调。在这个工作方向,通常显示较大的模型规模可以提高性能。例如,BERT
原始论文表明:在三个自然语言理解任务中,使用更大的隐层维度、更多的隐层和更多的注意力头总是能带来更好的性能。然而,他们止步于1024
的隐层维度,可能是因为模型规模和计算成本的问题。即,
BERT_LARGE
的性能比BERT_BASE
的性能更好。由于计算上的限制,特别是
GPU/TPU
内存的限制,很难对大型模型进行实验。鉴于目前SOTA
的模型往往有数亿甚至数十亿的参数,我们很容易遇到内存限制。为了解决这个问题:《Training deep nets with sublinear memory cost》
提出了一种叫做gradient checkpointing
的方法,以额外的前向传播为代价,将内存需求降低到亚线性sublinear
。《The reversible residual network: Backpropagation without storing activations》
提出了一种从next layer
重构每一层的activation
的方法,这样就不需要存储intermediate activation
。- 这两种方法都以速度为代价降低了内存消耗。
《Exploring the limits of transfer learning with a unified text-to-text transformer》
提出使用模型并行来训练一个巨型模型。
相比之下,我们的参数缩减技术减少了内存消耗,提高了训练速度。
跨层参数共享:跨层共享参数的思想之前已经用
Transformer
架构进行了探索,但这之前的工作主要是针对标准的encoder-decoder
任务的训练,而不是pretraining/finetuning setting
。与我们的观察不同,
《Universal transformers》
表明,具有跨层参数共享的网络(Universal Transformer: UT
)在语言建模任务和主谓一致subject-verb agreement
任务上得到了比标准transformer
更好的性能。ALBERT
的论文实验表明:跨层参数共享会损害模型性能。此外,
UT
是encoder-decoder
架构,它分别在encoder
和decoder
上进行参数共享。而ALBERT
只有encoder
,因此只有encoder
的参数共享。最近,
《Deep equilibrium models》
针对transformer
网络提出了Deep Equilibrium Model: DQE
,并表明DQE
可以达到一个平衡点,即某一层的input embedding
和output embedding
保持一致(即,到达不动点)。我们的观察表明,我们的
embedding
是振荡的,而不是收敛的。《Modeling recurrence for transformer》
将参数共享的transformer
与标准的transformer
相结合,这进一步增加了标准transformer
的参数数量。
Sentence Ordering Objectives
:ALBERT
使用了一个预训练损失,该损失基于预测两个连续的文本片段text segment
的顺序。一些研究者已经尝试了与篇章连贯性discourse coherence
类似的预训练目标。篇章中的连贯性coherence
和凝聚力cohesion
已被广泛研究,许多现象已被确定为连接相邻的文本片段。在实践中发现的大多数有效目标都很简单。Skipthought
和FastSent
的sentence embedding
是通过使用一个句子的编码来预测相邻句子中的单词来学习的。sentence embedding learning
的其他目标包括:预测未来的句子(而不是仅仅预测邻居),以及预测显式的篇章标记discourse marker
。我们的损失与
《Discourse-based objectives for fast unsupervised sentence representation learning》
的sentence ordering objective
最为相似。该方法学习sentence embedding
从而确定两个连续句子的顺序。然而,与上述大多数工作不同的是,我们的损失是在文本片段上而不是句子上定义的。BERT
使用的损失是基于next sentence prediction
。我们在实验中与这种损失进行了比较,发现sentence ordering
是一项更具挑战性的预训练任务,对某些下游任务更有用。与我们的工作同时,
《StructBERT: Incorporating language structures into pre-training for deep language understanding》
也试图预测两个连续的文本片段的顺序,但他们把它与原来的next sentence prediction
结合起来从而得到一个三分类任务,而不是二分类任务(比较两个连续的文本片段的顺序)。
19.1 模型
19.1.1 模型架构选择
ALBERT
架构的backbone
与BERT
类似,它使用了一个具有GELU
非线性激活函数的transformer encoder
。我们遵从BERT
的惯例,将vocabulary embedding size
记做 $ E $ ,将encoder layer
数量记做 $ L $ ,将hidden size
记做 $ H $ ,将feed-forward/filter size
设定为 $ 4H $ ,将注意力头的数量设定为 $ H/64 $ 。与
BERT
的设计选择相比,ALBERT
有三个主要贡献:因子分解的embedding
参数化factorized embedding parameterization
、跨层参数共享cross-layer parameter sharing
、句子间的一致性损失Inter-sentence coherence loss
。Factorized embedding parameterization
:在BERT
,以及XLNet
和RoBERTa
等后续建模改进中,WordPiece embedding size
$ E $ 与隐层维度 $ H $ 绑定,即 $ E=H $ 。这个决定无论从建模的角度还是从实践的角度来看,都是不理想的,原因如下:- 从建模的角度来看,
WordPiece embedding
是为了学习context-independent representation
,而hidden-layer embedding
则是为了学习context-dependent representation
。正如关于上下文长度的实验所示(见RoBERTa
原始论文),BERT-like representation
的力量来自于上下文的使用,从而提供用于学习这种context-dependent representation
的信号。因此,将WordPiece embedding size
$ E $ 与hidden layer size
$ H $ 解绑,使我们能够更有效地利用总的模型参数,即 $ H \gg E $ 。 - 从实践的角度来看,自然语言处理通常需要很大的词表大小
$ V $ 。如果 $ E = H $ ,那么增加 $ H $ 就会增加embedding matrix
的大小,其中embedding matrix
的大小为 $ V\times E $ 。这很容易导致一个具有数十亿个参数的模型,其中大部分在训练期间只被非常少地地更新。
因此,对于
ALBERT
,我们使用embedding
参数的因子分解,将它们分解成两个较小的矩阵。我们不是直接将one-hot
向量投影到维度为 $ H $ 的隐空间,而是先将它们投影到维度为 $ E $ 的低维embedding
空间,然后再投影到隐空间。通过使用这种分解,我们将embedding
参数的规模从 $ O(V\times H) $ 降低到 $ O(V\times E + E\times H) $ 。当 $ H \gg E $ 时,这种参数的减少是显著的。我们选择对所有的
word piece
使用相同的 $ E $ ,因为与whole-word
相比,word piece
在文档中的分布更加均匀。在whole-word embedding
中,对不同的词有不同的embedding size
是很重要的。- 从建模的角度来看,
Cross-layer parameter sharing
:跨层参数共享是提高参数效率的另一种方式。有多种共享参数的方式,例如,仅共享跨层的feed-forward network: FFN
参数、或者仅共享注意力参数。ALBERT
的默认决定是跨层共享所有参数。除非另有说明,我们所有的实验都使用这个默认决定。我们在实验中把这个设计决定与其他共享参数策略进行了比较。虽然参数共享降低了参数规模,但是并没有降低计算量。
Universal Transformer: UT
和Deep Equilibrium Models: DQE
对Transformer
网络也进行了类似的探索。- 与我们的观察不同,
《Universal Transformer》
表明:UT
优于普通的Transformer
。 《Deep equilibrium models》
表明,他们的DQE
达到了一个平衡点,对于这个平衡点,某一层的input embedding
和output embedding
保持不变。我们对L2
距离和余弦相似度的测量表明,我们的embedding
是振荡的而不是收敛的。
下图显示了每一层的
input embedding
和output embedding
的L2
距离和余弦相似度,使用BERT-large
和ALBERT-large
配置(如下表所示)。我们观察到:ALBERT
的层与层之间的转移transition
比BERT
的平滑得多。这些结果表明,权重共享对稳定网络参数有一定的影响。尽管与
BERT
相比,两个指标(即,L2
距离和余弦相似度)都有下降,但即使在24
层之后,它们也没有收敛到0
。这表明:ALBERT
参数的解空间与DQE
所发现的解空间非常不同。- 与我们的观察不同,
Inter-sentence coherence loss
:除了masked language modeling: MLM
损失,BERT
还使用了一个额外的损失,称为next-sentence prediction: NSP
。NSP
是一种二元分类损失,用于预测两个segment
是否在原始文本中连续出现,具体如下:通过从训练语料库中抽取连续的segment
来创建正样本,通过将不同文档中的segment
配对来创建负样本,正样本和负样本是以相同的概率进行采样。NSP
的目的是为了提高下游任务(如自然语言推理)的性能,这些任务需要推理sentence pair
之间的关系。然而,随后的研究(XLNet
、RoBERTa
)发现NSP
的影响不可靠,并决定取消NSP
。我们猜想,
NSP
的无效性背后的主要原因是:与MLM
相比,NSP
任务缺乏难度。正如该任务的表述,NSP
将话题预测topic prediction
和连贯性预测coherence prediction
混合在一个任务中。 然而,与连贯性预测相比,话题预测更容易学习,而且也与MLM
损失所学到的内容有很多重叠。SpanBERT
认为NSP
的无效性背后的主要原因是:- 在双序列上下文中,模型无法从较长的
full-length
上下文中获益。 - 在双序列上下文中,以另一个文档中的、通常不相关的上下文为条件,会给
MLM
增加噪音。
我们坚持认为句子间建模
inter-sentence modeling
是语言理解的一个重要方面,但我们提出了一个主要基于连贯性的损失。也就是说,对于ALBERT
,我们使用了一个sentence-order prediction: SOP
损失,它避免了主题预测,而是专注于建模句子间的连贯性。SOP
损失使用与BERT
相同的技术(来自同一文件的两个连续segment
)作为样本,并使用相同的两个连续segment
但是调换顺序之后作为负样本。这就迫使模型学习关于篇章级discourse-level
连贯性的更精细的区分。正如我们在实验部分所显示的,事实证明:
NSP
根本不能解决SOP
的任务(也就是说,它最终学习了更容易的话题预测信号,并在SOP
任务中表现为随机水平)。- 而
SOP
可以在一定程度上解决NSP
的任务,大概是基于分析misaligned coherence cue
。
因此,
ALBERT
模型为multi-sentence encoding
任务一致性地改善了的下游任务表现。- 在双序列上下文中,模型无法从较长的
19.1.2 模型配置
我们在下表中列出了
BERT
模型和ALBERT
模型在可比的超参数设置下的差异。由于上面讨论的设计选择,ALBERT
模型与相应的BERT
模型相比,其参数规模要小得多。例如:
与
BERT-large
相比,ALBERT-large
的参数少了大约18
倍,即18M
对334M
。参数少了
18
倍,但是模型的效果也有所降低。H=2048
的ALBERT-xlarge
只有60M
的参数,H=4096
的ALBERT-xxlarge
只有235M
的参数(约为BERT-large
参数规模的70%
)。
请注意,对于
ALBERT-xxlarge
,我们主要报告12
层网络的结果,因为24
层网络(具有相同的配置)获得了类似的结果,但计算成本更高。这种参数效率的提高是
ALBERT
的设计选择的最重要的优势。
19.2 实验
为了使对比尽可能的有意义,我们遵从
BERT
的设置,使用BOOKCORPUS
和English Wikipedia
用于预训练baseline
模型。这两个语料库包括大约16GB
的未压缩文本。我们将输入格式化为
$ \text{[CLS]} X_1\text{[SEP]}X_2 \text{[SEP]} $ ,其中 $ X_1=x_{1,1},x_{1,2},\cdots $ 以及 $ X_2=x_{2,1},x_{2,2},\cdots $ 是两个segment
。我们总是将最大输入长度(即,拼接之后的序列的最大长度)限制为512
个token
,并以10%
的概率随机生成短于512
的输入序列。与
BERT
一样,我们使用大小为30K
的词表vocabulary
,使用SentencePiece
进行tokenization
(如同XLNet
)。我们使用
n-gram masking
为MLM
目标生成masked input
(如同SpanBERT
),每个n-gram masking
的长度 $ n $ 是随机选择的,由如下的概率给出( $ N $ 为n-gram masking
的最大长度):这个概率倾向于更短的
n-gram masking
。例如,当 $ N=10 $ 时, $ n=1,2,\cdots,10 $ 的概率分别为:0.341, 0.171, 0.114, 0.085, 0.068, 0.057, 0.049, 0.043, 0.038, 0.034
。我们设定
n-gram masking
的最大长度为3
,即MLM
目标可以由最多3
个完整的单词组成,如"White House correspondents"
。所有的模型更新都使用了
batch size = 4096
、以及学习率为0.00176
的LAMB
优化器。除非另有说明,我们对所有模型进行了125K
个step
的训练。训练是在Cloud TPU V3
上进行的。用于训练的TPU
数量从64
到512
不等,取决于模型大小。LAMB
优化器是针对大batch size
的训练。首先我们看下Adam
优化器:其中:
$ \mathbf{\vec m}_t $ 为动量, $ \mathbf{\vec v}_t $ 为速度, $ \mathbf{\vec g}_t $ 为梯度, $ \mathbf{\vec g}_t^2 $ 为梯度的逐元素平方, $ \eta $ 为学习率, $ \epsilon $ 为一个很小的正数用于防止除零的错误, $ \beta_1,\beta_2 $ 为超参数, $ \theta_t $ 为待优化的参数。AdamW
是为了适配weight decay
(权重衰减相当于参数的L2
正则化),在Adam
的基础上进行修改:其中:
$ \lambda $ 为权重衰减系数,通常设置为0.005/0.01
。LAMB
在AdamW
的基础上继续修改:其中:
$ \phi(\cdot) $ 为一个映射函数,可以选择为 $ \phi(z) = z $ 、或者 $ \phi(z) = \min(\max(z,\gamma_l),\gamma_u) $ , $ \gamma_l,\gamma_u $ 为预定义的超参数分别代表 $ z $ 的下界和上界。除非另有说明,本节中描述的实验设置用于我们自己的所有版本的
BERT
以及ALBERT
模型。评估
benchmark
:固有评估
Intrinsic Evaluation
:为了监控训练进度,我们使用前面相同的程序和配置,在SQuAD
和RACE
的验证集基础上创建了一个验证集。我们同时报告了MLM
和句子分类任务的准确率。注意,我们只用这个创建的验证集来检查模型是如何收敛的,它的使用方式不会影响任何下游评估的性能(例如,该验证集不是用于模型选择)。
下游评估
Downstream Evaluation
:遵从XLNet
和RoBERTa
,我们在三个流行的benchmark
上评估我们的模型:General Language Understanding Evaluation: GLUE
基准、两个版本的Stanford Question Answering Dataset: SQuAD
、以及ReAding Comprehension from Examinations: RACE
数据集。与RoBERTa
一样,我们对验证集进行了早停early stopping
,在此基础上我们报告了所有的比较,除了基于任务排行榜的最终比较(在最终比较,我们也报告了测试集的结果)。对于在验证集上有较大方差的GLUE
数据集,我们报告了5
次运行的中位数。GLUE
:GLUE
由9
个任务组成,即 :xxxxxxxxxx
Corpus of Linguistic Acceptability: CoLA Stanford Sentiment Treebank: SST Microsoft Research Paraphrase Corpus: MRPC Semantic Textual Similarity Benchmark: STS Quora Question Pairs: QQP Multi-Genre NLI: MNLI Question NLI: QNLI Recognizing Textual Entailment: RTE Winograd NLI: WNLIGLUE
聚焦于评估模型的自然语言理解能力。当报告MNLI
结果时,我们只报告"match"
条件(即,MNLI-m
)。我们遵循先前工作中的微调程序(BERT
、RoBERTa
、XLNet
),并报告GLUE sbumission
的held-out test set
性能。对于测试集的submission
,我们遵从RoBERTa
和XLNet
的描述,对WNLI
和QLNLI
进行了task-specific
修改。SQuAD
:SQuAD
是一个从Wikipedia
建立的提取式问答数据集extractive question answering dataset
。答案是来自上下文段落的segment
,任务是预测answer span
。我们在两个版本的SQuAD
上评估我们的模型:v1.1
和v2.0
。SQuAD v1.1
有100K
个人类标注的question/answer pair
,SQuAD v2.0
还额外引入 了50K
个无法回答的问题。对于
SQuAD v1.1
,我们使用与BERT
相同的训练程序;而对于SQuAD v2.0
,模型是用span extraction loss
和额外的predicting answerability
分类器联合训练的(RoBERTa
、XLNet
)。我们同时报告了验证集和测试集的性能。RACE
:RACE
是一个大规模的多选阅读理解数据集,收集自中国的英语考试,有近100K
个问题。RACE
中的每个实例有4
个候选答案。遵从之前的工作(RoBERTa
、XLNet
),我们使用段落、问题、以及每个候选答案的拼接作为模型的输入。然后,我们使用来自"[CLS]" token
的representation
来预测每个答案的概率。该数据集包括两个
domain
:初中和高中。我们同时在这两个domain
上训练我们的模型,并同时报告验证集和测试集的准确率。
下游任务的超参数配置如下表所示。
19.2.1 BERT 和 ALBERT 的整体比较
我们现在准备量化
ALBERT
模型架构设计选择的影响,特别是围绕参数效率parameter efficiency
的选择。如下表所示,参数效率的提高展示了ALBERT
设计选择的最重要的优势:ALBERT-xxlarge
只用了BERT-large
的70%
左右的参数,就比BERT-large
取得了显著的改进,这可以通过几个有代表性的下游任务的验证集分数的差异来衡量:SQuAD v1.1
(+1.9%
)、SQuAD v2.0
(+3.1%
)、MNLI
(+1.4%
)、SST-2
(+2.2%
)、以及RACE
(+8.4%
) 。另一个有趣的观察是在相同的训练配置(相同数量的
TPU
)下,训练期间的数据吞吐速度。由于较少的通信和较少的计算,ALBERT
模型与它们相应的BERT
模型相比,具有更高的数据吞吐量。如果我们使用BERT-large
作为baseline
,我们观察到ALBERT-large
在训练期间大约快1.7
倍,而ALBERT-xxlarge
由于结构较大,大约慢3
倍。这种比较的意义不大:
- 虽然
ALBERT-xxlarge
的平均准确率更高(+3.5%
),但是它要慢3
倍。 - 虽然
ALBERT-large
更快(快1.7
倍),但是它的平均准确率更低(-2.8%
)。 ALBERT-xlarge
的效果与BERT
几乎差不多(略高+0.3%
),但是要慢1.5
倍。
这表明
ALBERT
虽然降低了参数数量,但是没有降低总的计算量。但是,接下来作者比较了在相同训练时间情况下,ALBERT-xxlarge
仍然要超过BERT-large
,这才证明了ALBERT
的价值。接下来,我们进行消融实验,从而量化
ALBERT
的每个设计选择的单独贡献。- 虽然
19.2.2 因子分解的 Embedding Parameterization
下表显示了使用
ALBERT-base
配置(见Table 1
)时改变vocabulary embedding
维度 $ E $ 的效果,其中使用相同的一组代表性的下游任务。可以看到:- 在
not-shared
条件下(BERT-style
),较大的embedding
维度会带来更好的性能,但幅度不大。 - 在
all-shared
条件下(ALBERT-style
,即ALBERT base
对应的结果),128
维的embedding
似乎是最好的。
这样看起来,
embedding size
超过了64
之后,似乎模型性能差距不大?这是否说明此时模型容量已经足够强大,而瓶颈在于训练数据?可以通过在embedding size
小于64
上进行验证,如embedding size
为{1, 4, 8, 16, 32}
。基于这些结果,我们在未来的所有设置中使用
embedding
维度 $ E = 128 $ ,作为进一步scaling
的必要步骤。下表还说明:相同
embedding size
下,ALBERT
比BERT
的效果更差。- 在
19.2.3 跨层参数共享
下表 列出了各种跨层参数共享策略的实验,其中使用
ALBERT-base
配置(见Table 1
)和两种embedding
维度( $ E=768 $ 和 $ E=128 $ )。我们比较了all-shared
策略(ALBERT-style
)、not-shared
策略(BERT-style
)、以及中间策略(只有注意力参数被共享、或只有FFN
参数被共享)。可以看到:相比较于
not-shared
,all-shared
在两种embedding
维度下都会损害性能,但与 $ E=768 $ (平均准确率-2.5%
)相比, $ E=128 $ (平均准确率-1.5%
)的情况稍微好一点。这和
《Universal Transformer》
的实验结论相反。此外,相比较于
not-shared
,大部分的性能下降似乎来自于共享FFN
参数,而共享注意力参数在 $ E=128 $ 时没有下降(平均准确率+0.1%
)、在 $ E=768 $ 时有轻微下降(平均准确率-0.7%
)。还有其他跨层共享参数的策略。例如,我们可以把
$ L $ 层分成 $ N $ 个大小为 $ M $ 层的组,每个组(包含 $ M $ 层)共享参数。总的来说,我们的实验结果表明,组的大小 $ M $ 越小,我们得到的性能就越好。然而,减少组的大小 $ M $ 也会极大地增加整体参数的数量。我们选择all-shared
作为我们的默认选择。
19.2.4 Sentence Order Prediction
我们使用
ALBERT-base
配置,对额外的句间损失inter-sentence loss
进行了三个实验:none
(XLNet-style
和RoBERTa-style
)、NSP
(BERT-style
)、以及SOP
(ALBERT-style
)。结果如下表所示,包括固有任务(MLM
、NSP
、以及SOP
任务的准确率)和下游任务。可以看到:固有任务的结果显示:
NSP loss
没有给SOP
任务带来判别能力(52.0%
的准确率,类似于None
条件下的随机猜测性能)。这使我们可以得出结论:NSP
最终仅建模话题漂移topic shift
。- 相比之下,
SOP loss
确实能比较好地解决NSP
任务(准确率78.9%
),解决SOP
任务甚至更好(准确率86.5%
)。
这三种方式对
MLM
任务都没有帮助。更重要的是,相比
None
,SOP loss
似乎一致地改善下游multi-sentence encoding
任务的表现(SQuAD1.1
约提升+1%
、SQuAD 2.0
约提升+2%
、RACE
约提升+1.7%
),平均得分提高了约+1%
。
19.2.5 相同训练时间
Table 2
中的加速结果表明,与ALBERT-xxlarge
相比,BERT-large
的数据吞吐量高出约3.17
倍。由于更长的训练时间通常会导致更好的性能,我们进行了一个比较,其中,我们不控制数据吞吐量(即,训练步数),而是控制实际训练时间(即,让不同的模型训练相同的小时数)。在下表中,我们比较了一个BERT-large
模型在400K
个训练step
(经过34
小时的训练)后的性能,大致相当于训练一个ALBERT-xxlarge
模型所需的125K
个训练step
(32
小时的训练)的时间。在训练了大致相同的时间后,
ALBERT-xxlarge
显著优于BERT-large
:平均值提高了+1.5%
,在RACE
上的性能提升高达+5.2%
。
19.2.6 额外的训练数据和 Dropout 效果
到目前为止所做的实验只使用了
Wikipedia
和BOOKCORPUS
数据集,就如BERT
所使用的。在本节中,我们报告了XLNet
和RoBERTa
所使用的额外数据的影响。下图(a)
显示了在没有额外数据、以及有额外数据两种条件下的验证集MLM
准确率,可以看到有额外数据条件下有显著的提升。从下表中我们还观察到,除了SQuAD benchmark
(Wikipedia-based
,因此受到out-of-domain
训练数据的负面影响)之外,下游任务的性能也有所提高。BERT-large
模型训练了400K
步,因此ALBERT-base
也用Wikipedia + BOOKCORPUS
训练了400K
步。然后在此之后使用了额外的数据。因此下图(a)
中,前面400K
步,二者的曲线是重合的。我们还注意到,即使在训练了
1M
步之后,我们最大的模型仍然没有过拟合训练数据。因此,我们决定移除dropout
从而进一步提高我们的模型容量。如下图(b)
所示,移除dropout
显著提高了MLM
的准确率。对ALBERT-xxlarge
在大约1M
步训练的中间评估(如下表所示)也证实:移除dropout
有助于下游任务。有经验(《Inception-v4, inception-resnet and the impact of residual connections on learning》
)和理论(《Understanding the disharmony between dropout and batch normalization by variance shift》
)证据表明:卷积神经网络中的batch normalization
和dropout
组合可能会产生有害的结果。据我们所知,我们是第一个表明dropout
会损害大型Transformer-based
模型的性能。然而,ALBERT
的底层网络结构是transformer
的一个特例,需要进一步的实验来观察这种现象是否出现在其他transformer-based
的架构中。注意,下图
(b)
是从1M
步之后再移除dropout
的,而不是一开始就移除dropout
。所以前面1M
步,二者的曲线是重合的。另外,论文的结论有点问题。这里仅仅说明,前
2/3
的时间使用dropout
然后剩余时间移除dropout
,要比全部时间使用dropout
的效果更好。而无法说明移除dropout
比带dropout
更好。另外,论文的
Table 8
仅仅说是在大约1M
步时的评估结果,但是没有说具体在什么时候。是110
万步?还是120
万步?
19.2.7 NLU 任务上的当前 SOTA
我们在本节报告的结果利用了
BERT
使用的训练数据,以及RoBERTa
和XLNet
使用的额外数据。我们报告了两种setting
下的微调的SOTA
结果:单模型single-model
和集成ensemble
。在这两种setting
中,我们只做单任务微调。遵从RoBERTa
的做法,在验证集上,我们报告了五次运行的中位数。单模型的
ALBERT
配置包含了所讨论的最佳性能的setting
:ALBERT-xxlarge
配置(参考Table 1
),组合MLM loss
和SOP loss
,以及no dropout
。ensemble
的ALBERT
是从多个checkpoint
来获取的,这些checkpoint
根据验证集的性能来选择,被选中的checkpoint
的数量从6
到19
不等。对于
GLUE
(Table 9
)和RACE
(Table 10
),我们对集成模型ensemble models
的预测值取平均,其中候选模型是微调了不同的预训练模型(这些预训练模型使用12
架构层和24
层架构,并预训练了不同的步数)。对于
SQuAD
(Table 10
),我们对那些有多个概率的span
的预测分数进行了平均。我们还对"unanswerable"
的决定的分数进行了平均。
单模型结果和集成模型结果都表明:
ALBERT
在所有三个benchmark
上都大大改善了SOTA
的水平,实现了89.4
的GLUE
得分、92.2
的SQuAD 2.0
测试F1
得分、以及89.4
的RACE
测试准确率。这些都是集成模型的效果。
RACE
上似乎是一个特别强大的改进:我们的集成模型比
BERT
的绝对分值跃升+17.4%
、比XLNet
提升+7.6%
、比RoBERTa
提升+6.2%
、比DCMI+
提升5.3%
。这里只有
DCMI+
是集成模型的效果,其它的BERT/XLNET/RoBERTa
都是单模型的效果(不公平的比较)。我们的单模型达到了
86.5%
的测试准确率,比SOTA
的集成模型仍好2.4%
。
19.2.8 附录:网络的深度和宽度
在本节中,我们检查了网络深度(层数)和宽度(隐层维度)对
ALBERT
的性能的影响。下表显示了使用不同层数的
ALBERT-large
配置(见Table 1
)的性能。具有3
层或更多层的网络是通过使用之前深度的网络参数进行微调来训练的(例如,12
层的网络参数是从6
层网络参数的checkpoint
进行微调的)。《Efficient training of bert by progressively stacking》
也使用了类似的技术。>=3
层的网络都不是从头开始训练的,而是利用更浅网络的参数来微调的。对于
ALBERT-large
,可以看到:对比
3
网络与1
层网络,虽然它们的参数数量相同,但性能显著提高。所有不同层的网络,它们的参数数量都相同,因为是参数共享。
然而,当继续增加层数时,会出现收益递减:
12
层网络的结果与24
层网络的结果相对接近,而48
层网络的性能似乎有所下降。
网络宽度也出现了类似的现象,如下表所示(针对不同宽度的
ALBERT-large
配置)。可以看到:- 当增加隐层维度时,模型性能增加,但会出现收益递减。
- 在隐层维度为
6144
时,模型性能似乎明显下降。
我们注意到,这些模型似乎都没有过拟合训练数据,而且与表现最好的
ALBERT
配置相比,它们的训练损失和验证损失都比较高。
是否更宽的模型需要更深?在前面我们表明:对于隐层维度
$ H=1024 $ 的ALBERT-large
,12
层和24
层模型 之间的差异很小。对于更宽的ALBERT
,如ALBERT-xxlarge
( $ H=4096 $ ),这一结果是否仍然成立?答案如下表所示。
12
层和24
层的ALBERT-xxlarge
配置在下游任务准确率方面的差异可以忽略不计,Avg
得分相同。我们的结论是:当共享所有跨层参数(ALBERT-style
)时,没有必要建立比12
层更深的模型。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论