数学基础
- 线性代数
- 概率论与随机过程
- 数值计算
- 蒙特卡洛方法与 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
- 并发
二十二、MacBERT [2019]
BERT
受到广泛的欢迎,并在最近的自然语言处理研究中被证明是有效的。BERT
利用大规模的无标记训练数据并生成丰富的contextual representation
。在几个流行的机器阅读理解benchmark
上,如SQuAD,CoQA,QuAC,NaturalQuestions,RACE
,我们可以看到大多数表现最好的模型是基于BERT
及其变体,表明预训练的语言模型已经成为自然语言处理领域的新的基础部分。从
BERT
开始,社区成员在优化预训练语言模型pre-trained language model
方面取得了巨大而迅速的进展,如ERNIE, XLNet, RoBERTa, SpanBERT, ALBERT, ELECTRA
等等。然而,针对learning representation
,训练Transformer-based
的预训练语言模型并不像我们用来训练word-embedding
或其他传统神经网络那样容易:- 通常情况下,训练一个强大的
BERT-large
模型(具有24
层Transformer
和3.3
亿个参数)到收敛,需要高内存的计算设备(如TPU
或TPU Pod
),这些设备非常昂贵。 - 另一方面,虽然已经发布了各种预训练的语言模型,但大多数都是基于英语的,在其他语言中建立强大的预训练语言模型的努力很少。
为了尽量减少重复性工作,并为未来的研究建立
baseline
,在论文《Pre-Training with Whole Word Masking for Chinese BERT》
中,作者旨在建立中文预训练语言模型系列model series
,并向公众发布,以促进科研社区,因为中文和英文是世界上最常用的语言之一。论文重新审视了现有的流行的预训练语言模型,并将其调整为中文,从而了解这些模型是否能在英语以外的语言中得到推广并表现良好。此外,论文还提出了一个新的预训练语言模型,称为MacBERT
,它将原来的MLM
任务替换为MLM as correction: Mac
任务。MacBERT
主要是为了缓解原始BERT
中预训练阶段和微调阶段的差异。论文在十个流行的中文NLP
数据集上进行了广泛的实验,范围从sentence-level
任务到document-level
任务,如机器阅读理解、文本分类等。实验结果表明,与其他预训练的语言模型相比,所提出的MacBERT
可以在大多数任务中获得显著的收益。论文还给出了详细的消融实验,以更好地检查哪些因素带来改进。论文的贡献如下:- 为了进一步加快中文
NLP
的未来研究,论文创建了中文预训练语言模型系列并向社区发布。作者进行了广泛的实证研究,通过仔细分析来重新审视这些预训练语言模型在各种任务上的表现。 - 论文提出了一个新的预训练语言模型,叫做
MacBERT
,通过用相似的单词来掩码一个单词,从而缓解了预训练阶段和微调阶段的gap
,这在各种下游任务中被证明是有效的。 - 论文还创建了一系列小型模型,称为
RBT
,从而展示小型模型与常规预训练语言模型相比的表现,这有助于在现实世界中利用这些小模型。
本文创新力不足,更像是一篇工程实现的报告。
- 通常情况下,训练一个强大的
相关工作:这里我们重新审视了最近自然语言处理领域中具有代表性的预训练语言模型的技术。这些模型以及所提出的
MacBERT
的整体比较在下表中描述。BERT
:Bidirectional Encoder Representations from Transformers: BERT
已经在广泛的自然语言处理任务中证明了其有效性。BERT
通过在所有Transformer
层中,同时以左侧上下文和右侧上下文为条件来预训练深度双向representation
。BERT
主要由两个预训练任务组成:Masked Language Model: MLM
、Next Sentence Prediction: NSP
。MLM
:随机掩码输入中的一些token
,目标是仅根据其上下文来预测原始token
。NSP
:预测sentence B
是否是sentence A
的下一句。
后来,他们进一步提出了一种叫做全词掩码(
whole word masking: wwm
)的技术,用于优化MLM
任务中的原始掩码。在这个setting
中,我们不是随机选择WordPiece token
来掩码,而是总是一次性掩码对应于整个单词的所有token
。这明确地迫使模型在MLM
预训练任务中恢复整个单词,而不是仅仅恢复WordPiece token
,而恢复整个单词的挑战性更大。由于全词掩码只影响预训练过程的掩码策略,因此它不会给下游任务带来额外的负担。此外,由于训练预训练语言模型的计算成本很高,他们还公布了所有的预训练模型以及源代码,这大大刺激了社区对预训练语言模型进行研究的极大兴趣。
ERNIE
:Enhanced Representation through kNowledge IntEgration: ERNIE
旨在优化BERT
的掩码过程,其中包括entity-level masking
和phrase-level masking
。与选择输入中的随机单词不同:entity-level masking
是对命名实体的掩蔽,这些实体通常由几个单词组成。phrase-level masking
是掩码连续的词,这与N-gram
掩码策略相似。
XLNet
:《Xlnet: Generalized autoregressive pretraining for language understanding》
认为,现有的基于自编码的预训练语言模型(如BERT
)存在预训练阶段和微调阶段的gap
,因为masking token
(即[MASK]
)从未在微调阶段出现。为了缓解这个问题,他们提出了基于Transformer-XL
的XLNet
。XLNet
主要有两处修改:- 首先是在输入的分解顺序的所有排列上最大化期望的似然
expected likelihood
,在这里他们称之为排列语言模型Permutation Language Model
。为了实现这一目标,他们提出了一种新颖的双流自注意力机制two-stream self-attention mechanism
。 - 其次是将自编码语言模型改为自回归语言模型,这与传统的统计语言模型类似。
- 首先是在输入的分解顺序的所有排列上最大化期望的似然
RoBERTa
:Robustly Optimized BERT Pretraining Approach: RoBERTa
旨在采用原始的BERT
架构,但做了更精细的修改,以充分释放BERT
的力量。他们对BERT
中的各种组件进行了仔细的比较,包括掩码策略、输入格式、训练步数等。经过全面的评估,他们得出了几个有用的结论从而使得BERT
更加强大,主要包括:- 用更大的
batch size
和更长的序列在更多的数据上进行更长时间的训练。 - 取消
next sentence prediction
任务,以及在MLM
任务中使用动态掩码dynamic masking
。
- 用更大的
ALBERT
:A Lite BERT: ALBERT
主要解决了BERT
的内存消耗较大和训练速度慢的问题。ALBERT
介绍了两种减少参数的技术。- 第一个是
factorized embedding parameterization
,它将embedding
矩阵分解为两个小矩阵。 - 第二个是跨层参数共享,即在
ALBERT
的每一层共享Transformer
权重,这大大减少了整体参数。
此外,他们还提出了
sentence order prediction: SOP
任务,取代传统的NSP
预训练任务,从而产生更好的性能。- 第一个是
ELECTRA
:Efficiently Learning an Encoder that Classifiers Token Replacements Accurately: ELECTRA
采用了一个新的generator-discriminator framework
,类似于生成对抗网generative adversarial net: GAN
。- 生成器通常是一个小型的
MLM
,学习预测masked token
的原始token
。 - 判别器被训练来判别
input token
是否被生成器所替换,这被称作Replaced Token Detection: RTD
。
注意,为了实现有效的训练,判别器只需要预测一个二元标签来表示
"replacement"
,而不像MLM
预测准确的masked word
。在预训练阶段之后,我们抛弃了生成器,只用判别器来微调下游的任务。- 生成器通常是一个小型的
22.1 模型
22.1.1 中文预训练模型
虽然
BERT
及其变体在各种英语任务中取得了显著的改进,但我们想知道这些模型和技术是否能在其他语言中得到很好的泛化。在本节中,我们将说明现有的预训练语言模型是如何适用于中文的。我们采用BERT
、RoBERTa
和ELECTRA
以及它们的变体来创建中文预训练模型系列model series
,其有效性在实验部分展示。需要注意的是,由于这些模型都是源于BERT
或ELECTRA
,没有改变输入的性质,在微调阶段无需修改从而适配这些模型,相互替换非常灵活。BERT-wwm & RoBERTa-wwm
:原始的BERT
使用WordPiece tokenizer
将文本拆分成WordPiece tokens
,其中一些单词被拆分成几个小的片段small fragment
。全词掩码whole word masking: wwm
缓解了仅掩码整个单词的一部分的缺点,因为仅掩码整个单词的一部分对模型来说更容易预测。根据单词的一部分
token
来预测另一部分token
相对比较容易,如player
被拆分为play
和##er
两个token
。如果被掩码的token
为##er
,那么已知play
来预测##er
要相对容易。在中文条件下,
WordPiece tokenizer
不再将单词分割成小的片段,因为汉字不是由类似字母的符号组成。我们使用中文分词Chinese Word Segmentation: CWS
工具,将文本分割成若干个词语。通过这种方式,我们可以采用中文的全词掩码,而不是单个汉字的掩码。在实施过程中,我们严格遵循原有的全词掩码代码,不改变其他的组成部分,如word masking
的百分比等。我们使用LTP
进行中文分词来识别单词的边界。需要注意的是,全词掩码只影响到预训练阶段的masking token
的选择。我们仍然使用WordPiece tokenizer
来拆分文本,这与原始的BERT
是相同的。同样地,全词掩码也可以应用于
RoBERTa
,其中没有采用NSP
任务。然而,我们仍然使用paired input
进行预训练,这可能有利于sentence pair
的分类任务和阅读理解任务。SpanBERT
表明,single-sequence training
的效果要好于bi-sequence training
,因为单个句子的训练可以获得更长的上下文。下表中描述了一个全词掩码的例子。
ELECTRA
:除了BERT
和RoBERTa
系列,我们还探索了ELECTRA
模型,它采用了一个新的预训练框架,由生成器和判别器组成。我们严格遵循ELECTRA
原始论文中的原始实现。RBT Series
:尽管上述的预训练语言模型很强大,但它们不是计算高效的,而且很难在实际应用中采用。为了使社区研究人员更容易获得预训练的模型,除了常规的预训练语言模型,我们还预训练了几个小模型,我们称之为RBT
。具体而言,我们使用与训练
RoBERTa
完全相同的训练策略,但我们使用较少的Transformer
层。我们训练3
层、4
层、6
层的RoBERTa-base
,分别表示为RBT3
、RBT4
和RBT6
。我们还训练了一个3
层的RoBERTa-large
,表示为RBTL3
,它的参数规模与RBT6
相似。这样做的目的是在参数规模相当的情况下,比较一个更宽更浅的模型(RBTL3
)和一个更窄更深的模型(RBT6
),这有助于未来预训练语言模型的设计。
22.1.2 MACBERT
在上一节中,我们提出了一系列的中文预训练语言模型。在这一节中,我们充分利用这些模型,并提出了一个叫做
MLM as correction BERT: MacBERT
的新型模型。MacBERT
与BERT
共享相似的预训练任务类型,并做了一些修改。MacBERT
由两个预训练任务组成:MLM as correction
、sentence order prediction
。下图描述了
MacBERT
的整体架构。MLM as correction
:MLM
是BERT
及其变体中最重要的预训练任务,它建模了双向上下文推断bidirectional contextual inference
的能力。然而,如前所述,MLM
存在预训练阶段和微调阶段的不一致性,即预训练阶段的人工标记(如[MASK]
)从未出现在真正的下游微调任务中。为了解决这个问题,我们提出了一个新的预训练任务,称为
MLM as correction: Mac
。在这个预训练任务中,我们不采用任何预定义的token
来进行掩码。相反,我们将原始的MLM
转化为一个文本纠正text correction
任务:模型应该将错误的单词纠正为正确的单词,这比MLM
更自然。具体而言,在Mac
任务中,我们对原始MLM
进行了以下修改:文本纠正任务要比
MLM
任务更简单。文本纠正任务是:给定original word
的similar word
,因此需要预测的original word
一定跟similar word
非常相似。这大大缩小了候选单词的范围。例如:原始句子为
I like play football.
,我们用basketball
代替了football
,变成I like play basketball.
。我们需要根据这个句子来预测最后一个单词为football
。事实上,我们知道这个目标单词和basketball
非常相似,这大大缩小了候选单词的范围。我们使用全词掩码策略以及
N-gram
掩码策略来选择候选token
进行掩码,对于word-level
的unigram, 2-gram, 3-gram, 4-gram
,其掩码比例分别为40%, 30%, 20%, 10%
。我们还注意到,最近的一项工作提出了PMI-masking
(《{PMI}-masking: Principled maskingof correlated spans》
),它优化了掩码策略。在本文中,我们采用的是普通的N-gram
掩码,并将在未来尝试PMI
掩码。在微调阶段,
[MASK] token
从未出现过,我们建议使用similar word
来进行掩码,而不是用[MASK] token
进行掩码。similar word
是通过使用同义词工具包Synonyms toolkit
(https://github.com/huyingxi/Synonyms
)来获得的,它是基于word2vec
的相似性来计算。如果选择了一个N-gram
进行掩码,我们会对每个被掩码的单词寻找similar word
。在极少数情况下,当没有
similar word
时,我们会退化到使用random word
来替换。这种random word
替换被限制在不超过所有待掩码的token
的10%
。similar word
的token
数量与原始单词的token
数量不一致,怎么解决?例如,原始单词为player
,它的token
为[play, #er]
;similar word
为participant
,它的token
为['participant']
。这种纠错的方式可以视为对输入加噪音的一种,可以用于
BART
的预训练任务。遵从以前的工作,我们使用
15%
的输入词进行掩码,其中80%
的token
被替换成similar word
,10%
的token
被替换成random word
,其余10%
的token
保持原词。此外,所有这
15%
的输入词中,对于word-level
的unigram, 2-gram, 3-gram, 4-gram
的掩码比例分别为40%, 30%, 20%, 10%
。
Sentence Order Prediction
:BERT
中最初的next sentence prediction: NSP
任务被认为对模型来说太容易了,人们已经证明它不是那么有效(Roberta
原始论文、ALBERT
原始论文)。在本文中,我们采用了由ALBERT
引入的sentence order prediction: SOP
任务,该任务被证明比NSP
更有效。正样本是通过使用两个连续的文本创建的,而负样本是通过交换它们的原始顺序创建的。我们在实验部分中消融这些修改,以更好地展示每个组成部分的贡献。神经架构
Neural Architecture
:正式地,给定两个序列 $ A=\{A_1,\cdots,A_n\} $ 和 $ B=\{B_1,\cdots,B_n\} $ ,我们首先通过拼接两个序列来构建输入序列
$ X $ 。然后,
MacBERT
通过一个embedding layer
(由word embedding, positional embedding, token type embedding
组成)和 $ L $ 层的transformer
将 $ X $ 转换为contextualized representation
$ \mathbf H^{(L)} \in \mathbb R^{N\times d} $ ,其中 $ N $ 为最大序列长度、 $ d $ 是隐层维度:token type embedding
就是segment embedding
。我们只需要预测被
Mac
任务替代的position
,在得到contextual representation
$ \mathbf H^{(L)} $ 之后,我们收集一个与replaced position
有关的子集,形成replaced representation
$ \tilde {\mathbf H}\in \mathbb R^{k\times d} $ ,其中 $ k $ 是replaced token
的数量。根据Mac
任务的定义, $ k=\lfloor N\times 15\%\rfloor $ 。然后我们将
$ \tilde {\mathbf H} $ 投影到vocabulary space
中,从而预测在整个词表 $ \mathbb V $ 上的概率分布 $ \mathbf p $ 。遵从原始的BERT
实现,我们也使用word embedding
矩阵 $ \mathbf W^e\in \mathbb R^{|\mathbb V|\times d} $ 来进行投影,其中embedding
维度和隐层维度是相同的:其中:
$ \tilde{\mathbf {\vec h}}_i\in \mathbb R^d $ 为 $ \tilde{\mathbf H} $ 中的第 $ i $ 个replaced representation
; $ \mathbf{\vec p}_i $ 为归一化的概率分布; $ \mathbf W^e,\mathbf{\vec b} $ 为待学习的参数。然后我们使用标准的交叉熵损失来优化预训练任务:
其中:
$ \mathbb I(y_i=j) $ 当且仅当 $ y_i=j $ 时为1
,否则为0
。 $ y_i $ 为第 $ i $ 个replaced token
的ground truth
。 $ p_{i,j} $ 为模型预估第 $ i $ 个replaced token
为 $ j $ 的概率。
对于
SOP
任务,我们直接使用[CLS] token
的contextual representation
,也就是 $ \mathbf H^{(L)} $ 的第一行,并将其投影到label prediction layer
:其中:
$ \mathbf{\vec h}_0^{(L)} $ 为 $ \mathbf H^{(L)} $ 的第一行; $ \mathbf W^s\in \mathbb R^{d\times 2},\mathbf{\vec b}^s\in \mathbb R^2 $ 为待学习的参数; $ \mathbf{\vec p} $ 为归一化的概率分布。我们也使用交叉熵损失来优化
SOP
预训练任务。最后,整体训练损失是
Mac
损失和SOP
损失的组合:这里是否需要用超参数
$ \alpha $ 来平衡这两个损失的重要性?
22.2 实验
22.2.1 实验配置
数据处理:我们使用
Wikipedia dump
(截至2019
年3
月25
日),并按照BERT
原始论文的建议用WikiExtractor.py
进行预处理,结果有1307
个extracted files
。我们在这个dump
中同时使用了简体中文和繁体中文,并没有将繁体中文部分转换成简体中文。我们在实验部分展示了在繁体中文任务中的有效性。在清理原始文本(例如去除html tag
)以及分离文件之后,我们得到了大约0.4B
单词。由于
Chinese Wikipedia
的数据相对较少,除了Chinese Wikipedia
,我们还使用扩展的训练数据来训练这些预训练语言模型(模型名称中标有ext
)。内部收集的扩展数据包含百科全书encyclopedia
、新闻、以及问答网络question answering web
,有5.4B
单词,比Chinese Wikipedia
大十倍以上。请注意,对于MacBERT
我们总是使用扩展数据,并省略ext
标记。为了识别全词掩码的中文单词的边界,我们使用
LTP
进行中文分词。我们使用BERT
原始论文提供的create_pretraining_data.py
将原始输入文本转换为预训练样本。预训练语言模型的配置:为了更好地从现有的预训练好的语言模型中获取知识,我们没有从头开始训练我们的
base-level model
,而是从官方的Chinese BERT-base
开始,继承其词表vocabulary
和模型权重。然而,对于large-level model
,我们必须从头开始训练,但仍然使用base-level model
提供的相同词表。base-level model
是一个12
层的transformer
,隐层维度为768
。- 而
large-level model
是一个24
层的transformer
,隐层维度为1024
。
对于训练
BERT series
,我们采用了BERT
所建议的方案:预训练开始时选择最大序列长度为128
个token
,然后选择最大序列长度为512
个token
。然而,我们根据实验发现,这导致对长序列任务(如阅读理解任务)的适应性adaptation
不足。在这种情况下,对于BERT
以外的模型,我们直接在整个预训练过程中使用512
的最大长度,这在Roberta
中被采用。对于较小的
batch size
,我们采用BERT
中原始的、带权重衰减的ADAM
优化器进行优化。对于较大的batch size
,我们采用LAMB
优化器以获得更好的scalability
。预训练是在单个Google Cloud TPU v3-8
(相当于单个TPU
)或TPU Pod v3-32
(相当于4
个TPU
)上进行的,这取决于模型的规模。具体而言,对于MacBERT-large
,我们训练了2M
步,batch size = 512
,初始学习率为1e-4
。训练细节如下表所示。为了简洁,我们没有列出
'ext'
模型,其中'ext'
模型的超参数与没有在扩展数据上训练的模型相同。微调任务的配置:为了彻底测试这些预训练语言模型,我们对各种自然语言处理任务进行了广泛的实验,涵盖了广泛的文本长度,即从
sentence-level
到document-level
。任务细节如下表所示。具体而言,我们选择了如下十个流行的中文数据集:- 机器阅读理解
Machine Reading Comprehension: MRC
:CMRC 2018, DRCD, CJRC
。 - 单句分类
Single Sentence Classification: SSC
:ChnSentiCorp, THUCNews, TNEWS
。 - 句子对分类
Sentence Pair Classification: SPC
:XNLI, LCQMC, BQ Corpus, OCNLI
。
为了进行公平的比较,对于每个数据集,我们保持相同的超参数(如最大序列长度、
warm-up
步数等),只对每个任务的初始学习率调优 (从1e-5
到5e-5
)。请注意,初始学习率是在原始的Chinese BERT
上调优的,通过对每个任务独立地调优学习率,有可能实现另一种增益。我们将相同的实验运行十次,以确保结果的可靠性。最佳的初始学习率是通过选择最佳的平均验证集性能来确定的。我们报告最高分和平均分,从而同时评估峰值性能和平均性能。除了TNEWS
和OCNLI
的测试集没有公开,我们同时报告验证集和测试集的结果。注意,这里是用于微调任务的超参数,与预训练任务的超参数有所差异。
对于除
ELECTRA
以外的所有模型,我们对每个任务使用相同的初始学习率设置,如下表所示。对于ELECTRA
模型,我们按照ELECTRA
原始论文的建议,对base-level model
使用1e-4
的通用初始学习率,对large-level model
使用5e-5
的通用初始学习率。由于现有的各种中文预训练语言模型,如
ERNIE, ERNIE 2.0, NEZHA
的预训练数据有很大的不同,我们只对BERT, BERT-wwm, BERT-wwm-ext, RoBERTa-wwm-ext, RoBERTa-wwm-ext-large, ELECTRA
以及我们的MacBERT
进行比较,从而保证不同模型之间相对公平的比较。其中,除了原始的Chinese BERT
,所有模型都由我们自己训练。我们在TensorFlow
框架下进行了实验,并对BERT
原始论文提供的微调脚本进行了轻微改动,以更好地适配中文任务。- 机器阅读理解
22.2.2 实验结果
机器阅读理解:机器阅读理解是一项有代表性的
document-level
建模任务,要求根据给定的段落回答问题。我们主要在三个数据集上测试这些模型:CMRC 2018, DRCD, CJRC
。CMRC 2018
:一个span-extraction
的机器阅读理解数据集,与SQuAD
类似,为给定的问题抽取一个passage span
。DRCD
:这也是一个span-extraction
的机器阅读理解数据集,但是是繁体中文。CJRC
:类似于CoQA
,它有yes/no question
、没有答案的问题、以及span-extraction question
。该数据收集自中国的法律判决文件。注意,我们只使用small-train-data.json
进行训练。
结果如下表所示。可以看到:
使用额外的预训练数据会带来进一步的改进,如
BERT-wwm
和BERT-wwm-ext
之间的比较所示。这就是为什么我们对RoBERTa
、ELECTRA
和MacBERT
使用扩展数据。注意,
MacBERT
默认就使用了扩展数据。此外,所提出的
MacBERT
在所有阅读理解数据集上都产生了显著的改进。值得一提的是,我们的MacBERT-large
可以在CMRC 2018
的Challenge
集合上实现SOTA
的F1
,即60%
,这需要更深入的文本理解。此外,应该注意的是,虽然
DRCD
是一个繁体中文数据集,但用额外的大规模简体中文进行训练也会有很大的积极作用。由于简体中文和繁体中文有许多相同的字符,使用带有少量繁体中文数据的一个强大的预训练语言模型也可以带来改进,而不需要将繁体中文字符转换为简体字符。关于
CJRC
,其中文本是以关于中国法律的专业方式写成的,BERT-wwm
比BERT
显示出适度的改进,但不是那么突出,表明在非通用领域的微调任务中需要进一步的领域适应domain adaptation
。然而,增加通用的预训练数据会导致改善,这表明当没有足够的领域数据domain data
时,我们也可以使用大规模的通用数据作为补救措施。
这里没有
BERT-large
的数据,因为BERT
官方未提供。根据论文的说明,MacBERT-base
是用预训练好的BERT-base
来初始化的,这相当于MacBERT-base
比BERT-base
训练更长的时间,因此它的效果更好,也就不足为奇。单句分类:对于单句分类任务,我们选择
ChnSentiCorp, THUCNews, TNEWS
数据集:ChnSentiCorp
用于评估情感分类,其中文本应该被划分为正面或负面的label
。THUCNews
是一个包含不同类型的新闻的数据集,其中的文本通常很长。在本文中,我们使用了一个包含10
个领域(均匀分布)的50K
个新闻的版本,包括体育、金融、技术等等领域。TNEWS
是一个由新闻标题和关键词组成的短文本分类任务,要求分类到15
个类别中的一个。
结果如下表所示。可以看到:
MacBERT
可以在ChnSentiCorp
和THUCNews
中比baseline
有适度的改进,即使这些数据集已经达到了很高的准确率。- 在
TNEWS
中,MacBERT
在base-level
和large-level
预训练语言模型中产生了一致的改进。
句子对分类:对于句对分类任务,我们使用了
XNLI
数据(中文部分)、Large-scale Chinese Question Matching Corpus : LCQMC
、BQ Corpus
、以及OCNLI
,这些数据需要输入两个序列并预测它们之间的关系。结果如下表所示。可以看到:在
XNLI
和OCNLI
中,MacBERT
比baseline
产生了相对稳定和显著的改进。然而,MacBERT
在LCQMC
和BQ Corpus
上仅仅显示了适度的改进,平均得分略有提高,但峰值性能不如RoBERTa-wwm-ext-large
。我们怀疑这些任务对输入的细微差别的敏感性不如阅读理解任务。由于
sentence pair classification
只需要生成整个输入的unified representation
,因此导致了适度的改进。机器阅读理解任务的改进比分类任务更大,这可能归因于掩码策略。在机器阅读理解任务中,模型应该识别段落中的
exact answer span
。在MacBERT
中, 每个N-gram
单词都被其同义词或一个随机词所取代,因此每个词都可以很容易地被识别,这迫使模型学习word boundary
。这里的解释比较苍白,原因没有讲清楚。
MacBERT-base
通常比MacBERT-large
产生更大的改进。这可能是由两个原因造成的。- 首先,
MacBERT-base
是由BERT-base
初始化的,它可以从BERT-base
的知识中受益,并避免冷启动的问题。 - 其次,
large-level
预训练语言模型的结果通常高于base-level
预训练语言模型的结果,因此获得更高的分数要比base-level
预训练语言模型困难得多。
- 首先,
小模型的结果:我们还建立了一系列的小模型,即
RBT
,建立在RoBERTa-base
或RoBERTa-large
模型上。实验结果如下表所示。可以看到:- 小模型的表现比一般模型(
base-level, large-level
)更差,因为它们使用的参数较少。 - 分类任务的性能下降比阅读理解任务要小,说明可以牺牲微小的性能来获得更快、更小的模型,这对现实生活中的应用是有益的。
- 通过比较参数大小相似的
RBTL3
和RBT6
,我们可以看到RBT6
的性能大大优于RBTL3
,这表明窄而深的模型通常优于宽而浅的模型。
这些观察结果对未来实际应用中的模型设计是有帮助的。
- 小模型的表现比一般模型(
22.3 讨论
- 根据实验结果,我们可以看到:这些预训练的语言模型在中文任务中也比传统的
BERT
有明显的改进,这表明它们的有效性和通用性。虽然我们的模型在各种中文任务中取得了显著的改进,但我们想知道这些改进的基本组件essential component
来自哪里。为此,我们在MacBERT
上进行了详细的消融研究从而证明其有效性。此外,我们还比较了现有的预训练语言模型在英语中的声明claim
,看看它们的修改在另一种语言中是否仍然成立。
22.3.1 MacBERT 的有效性
我们进行了详细的消融研究,以检查
MacBERT
中每个组件的贡献。结果如下表所示。总的平均分数是通过平均每个任务的测试分数得到的。w/o
表示without
。可以看到:总体而言,删除
MacBERT
中的任何组件都会导致平均性能的下降,这表明所有的修改都有助于整体改进。具体而言,最有效的修改是
N-gram masking
和similar word
替换,这是对masked language model: MLM
任务的修改。当我们比较N-gram masking
和similar word
替换时,我们可以看到明显的优点和缺点,其中:N-gram masking
似乎在文本分类任务中更有效(以ACC
为指标的任务),而阅读理解任务的表现似乎更受益于similar word
替换任务。将这两个任务结合起来可以相互弥补,在两种任务上都有更好的表现。数据不支持这里的结论。
N-gram masking: NM
、similar word
替换、以及SOP
的贡献都相差无几(缺少它们,导致平均准确性都在86.89
附近)。此外,不同组件对于不同任务,也没有看出特别突出的贡献。next sentence prediction: NSP
任务没有显示出像MLM
任务那样的重要性,这表明设计一个更好的MLM
任务来充分释放文本建模的能力更为重要。此外,我们还比较了
next sentence prediction
任务和sentence order prediction
任务,以更好地判断哪一个任务更强大。结果显示,sentence order prediction
任务确实比原来的next sentence prediction
任务表现得更好,尽管它不是那么突出。sentence order prediction
任务要求识别两个句子的正确顺序,而不是使用一个随机的句子,这对机器来说更容易识别。与文本分类任务相比,在阅读理解任务中去掉sentence order prediction
任务会导致性能明显下降,这表明有必要设计一个类似next sentence prediction
的任务来学习两个segment
之间的关系(例如,阅读理解任务中的段落和问题)。
点评:本文创新力不足,感觉更像是一个工程实现的报告而已。
22.3.2 MLM 任务上的调研
如上一节所示,最主要的预训练任务是
masked language model
及其变体。masked language model
任务依赖于两个方面:选择要被掩码的token
、替换被选中的token
。在上一节中,我们已经证明了选择
masking token
的有效性,如全词掩码或N-gram masking
等。现在我们要研究的是:所选中token
的替换对预训练语言模型的性能有何影响。为了研究这个问题,我们绘制了不同预训练步数下
CMRC 2018
和DRCD
的性能。具体而言,我们遵从对输入序列的15%
的原始掩码比例,其中10% masked token
保持不变。对于剩下的90% masked token
,我们将其分为四类:MacBERT
:80% masked token
被替换为它们的similar word
,10% masked token
被替换为随机的单词。Random Replace
:90% masked token
被替换为随机的单词。Partial Mask
:原始的BERT
实现,80% masked token
被替换为[MASK]
,10% masked token
被替换为随机的单词。All Mask
:90% masked token
被替换为[MASK]
。
我们仅绘制了从
1M
步到2M
步的结果,如下表所示。可以看到:主要依靠使用
[MASK]
进行掩码的预训练模型(即partial mask
和all mask
)导致了更差的性能,表明预训练和微调的差异是一个实际问题,该问题影响整体性能。在
partial mask
和all mask
中,我们还注意到,如果不保留10%
的original token
(即恒等映射),也会出现一致的下降。这表明完全使用[MASK] token
的掩码的鲁棒性更差。令我们惊讶的是,完全放弃
[MASK] token
,而是将所有90% masked token
替换成随机的单词,产生了比[MASK]-dependent
的掩码策略更一致的改进。这也强化了这样的说法:依靠[MASK] token
的原始掩码方法导致了更差的性能,因为[MASK] token
在微调任务中从未出现过。另外,使用随机单词而不是人工的
[MASK] token
可以提高预训练模型的降噪能力,这可能也是一个原因。为了使这个问题更加精细,在本文中,我们提出使用
similar word
来进行掩码,而不是一个随机的单词。因为随机的单词不符合上下文,可能会破坏语言模型学习的自然性naturalness
,因为传统的N-gram
语言模型是基于自然的句子,而不是一个被操纵的句子。然而,如果我们使用similar word
来进行掩码,句子的流畅性就比使用随机单词要好得多,整个任务就转化为一个语法纠正任务grammar correction task
,这就更自然了,而且没有预训练阶段和微调阶段的差异。从下图中中我们可以看出,
MacBERT
在四个变体中产生了最好的性能,这验证了我们的假设。如果要追求自然性,那么自回归语言模型要比带噪音的双向语言模型更有利。
22.3.3 中文拼写检查上的分析
MacBERT
引入了'MLM as correction'
任务,这与实际的语法或拼写错误校正任务相似。我们对中文拼写检查Chinese Spell Check
任务进行了额外的实验。我们使用SIGHAN-15
数据集来探索使用不同比例的训练数据时不同预训练语言模型的效果。SIGHAN-15
包括一个训练集(3.1K
实例)和一个测试集 (1.1K
实例)。我们在这个实验中比较了BERT-wwm-ext, RoBERTa-wwm-ext, ELECTRA-base, MacBERT-base
,因为它们共享相同的预训练数据。我们对每个模型进行了五次微调,并绘制了平均F1
(sentence-level
)。我们使用5e-5
的通用学习率,训练5
个epoch
,batch size = 64
。结果如下图所示,其中包括detection-level
分、correction-level
分。可以看到:当使用不同比例的训练数据时,
MacBERT
比其他模型产生了一致的改进,这表明MacBERT
是有效的和scalable
的。我们注意到
ELECTRA
在这项任务上表现不佳。具体而言,ELECTRA
和其他模型的结果,在correction-level
的差距相对于detection-level
的差距更大。ELECTRA
使用replaced token detection: RTD
任务来训练判别器(判别器将用于微调)。然而,RTD
任务只需要识别输入token
是否被改变,而不需要预测original token
,我们认为这很简单。相反,MLM
任务和Mac
任务的目标需要同时identify-and-correction
。通过比较
MLM
和Mac
,我们的MacBERT
缓解了预训练和微调之间差异的问题,这产生了另一个重要的收益。虽然
Mac
任务与拼写检查任务相似,但我们只使用同义词进行替换,这在真正的拼写检查任务中仅占很小的比例。这可以解释为什么当可用的训练数据较少时,我们的模型没有产生比其他模型更大的改进。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论