数学基础
- 线性代数
- 概率论与随机过程
- 数值计算
- 蒙特卡洛方法与 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
- 并发
十三、ERNIE 3.0 [2021]
预训练的语言模型(如
ELMo
、GPT
、BERT
和ERNIE
),已被证明能有效提高各种自然语言处理任务的性能,包括情感分类、自然语言推理、文本摘要、命名实体识别等。一般而言,预训练的语言模型是以自监督的方式在大量的文本数据上学习的,然后在下游任务上进行微调,或者通过zero-shot/few-shot learning
直接部署而无需针对具体任务进行微调。这种预训练语言模型已经成为自然语言处理任务的新范式。在过去的一两年中,预训练语言模型的一个重要趋势是它们的模型规模越来越大,这导致了预训练中更低的
perplexity
,以及在下游任务中表现更好。- 人们提出了具有
10
亿个参数的Megatron-LM
用于语言理解,Megatron-LM
使用简单但高效的层内模型并行intra-layer model parallel
的方法,在几个数据集上取得了SOTA
的结果。 100
亿个参数的T5
探索了预训练模型的极限,但很快这个记录就被拥有1750
亿个参数的GPT-3
模型所打破。GPT-3
模型在few-shot
甚至zero-shot
的setting
下具有良好的性能。- 不久之后,
Switch-Transformer
作为世界上第一个万亿参数的预训练语言模型被提出。
然而,这些拥有数千亿参数的大型预训练语言模型是在纯文本上训练的。例如,
1750
亿参数的GPT-3
是在具有570GB
过滤后的文本(这些文本来自Common Crawl
)的语料库中训练的。这样的原始文本缺乏对语言知识linguistic knowledge
和世界知识world knowledge
等知识的explicit representation
。此外,大多数大型模型是以自回归的方式进行训练的,但BERT
原始论文显示,这类模型在适配下游语言理解任务时表现出较差的微调性能。在论文
《ERNIE 3.0: LARGE-SCALE KNOWLEDGE ENHANCED PRE-TRAINING FOR LANGUAGE UNDERSTANDING AND GENERATION》
中,为了解决单一的自回归框架带来的问题,并探索知识增强knowledge enhanced
的大型预训练模型的性能,作者提出了一个名为ERNIE 3.0
的统一框架。ERNIE 3.0
融合自回归网络auto-regressive network
和自编码网络auto-encoding network
,在一个由纯文本和大型知识图谱组成的4TB
语料库上训练大型的知识增强模型。ERNIE 3.0
可以通过zero-shot learning
、few-shot learning
或fine-tuning
来同时处理自然语言理解任务和自然语言生成任务。此外,ERNIE 3.0
支持在任何时候引入各种定制化的任务。这些定制化的任务共享相同的编码网络,并通过多任务学习进行训练。这种方法使词法信息、句法信息和语义信息的encoding
跨不同任务成为可能。此外,当给定一个新的任务时,ERNIE 3.0
框架可以根据它所掌握的先前的训练参数来增量地训练distributed representation
。总而言之,论文贡献如下:
- 作者提出了一个统一的框架
ERNIE 3.0
,它结合了自回归网络和自编码网络,这样训练出来的模型就可以通过zero-shot learning
、few-shot learning
或fine-tuning
来同时处理自然语言理解任务和自然语言生成任务。 - 作者用
100
亿个参数对大型知识增强模型进行预训练,并在自然语言理解和自然语言生成任务上进行了一系列的实验评估。实验结果表明,ERNIE 3.0
在54
项benchmark
中始终以较大的优势胜过SOTA
的模型,并在SuperGLUE benchmark
中取得了第一名的成绩。
相比较于
ERNIE1.0
和ERNIE2.0
,ERNIE3.0
使用了更大的模型、更大的预训练数据集、以及更多样化的预训练任务。此外,ERNIE 3.0
使用了渐进式学习,并且修改了模型架构:不同的task
具有task-specific network
并共享相同的backbone network
。- 人们提出了具有
相关工作:
大型预训练模型:自从
BERT
被提出后,预训练的语言模型引起了越来越多的关注。研究趋势之一是增加模型规模从而导致更低的perplexity
和更好的下游任务性能。因此,在过去的两年中,许多大型预训练模型被提出。T5
模型有110
亿个参数。T5
模型通过一个统一的框架将所有基于文本的语言任务转换为text-to-text
的格式,并充分探讨了预训练目标、架构、无标记数据集、迁移方法、以及其他因素的有效性。GPT-3
在T5
模型之后被提出,其中包括1750
亿个参数,在few-shot/zero-shot setting
下在各种任务上取得了惊人的表现。具体而言,GPT-3
是一个自回归的语言模型,比其前身GPT-2
的规模大10
倍。然而,GPT-3
在测试中显示出缺乏常识,存在偏见bias
和隐私问题。《Switch transformers: Scaling to trillion parameter models with simple and efficient sparsity》
提出了一个名为Switch Transformer
的1
万亿参数模型,采用简化的MoE
路由算法,以较少的通信和计算成本改进模型。该论文还提出了一个大规模的分布式训练方案来解决训练复杂性、通信成本和训练不稳定性的问题。
除了上面提到的模型,最近还提出了更多的非英语的大型模型。
《Cpm: A large-scale generative chinese pre-trained language model》
发布了一个26
亿参数的中文预训练语言模型Chinese Pre-trained Language Model: CPM
。CPM
在大规模中文训练数据上进行了生成式预训练,模型结构受到了GPT-3
的启发。《Cpm-2: Large-scale cost-effective pre-trained language models》
发布了110
亿参数的模型CPM-2
。《M6: A chinese multimodal pretrainer》
提出了一种名为M6
(Multi-Modality to Multi-Modality Multitask Mega-Transformer
)的跨模态预训练方法,包括1000
亿个参数用于多模态数据的统一预训练。《Pangu-alpha: Large-scale autoregressive pretrained chinese language models with auto-parallel computation》
提出了一个名为PangGu-α
的2000
亿参数自回归语言模型。该模型在一个由2048
个Ascend 910
人工智能处理器组成的集群上进行训练,其分布式训练技术包括数据并行、op-level
模型并行、pipeline
模型并行、优化器模型并行和re-materialization
。- 除了这些中文的大规模模型,人们还提出了一个名为
HyperCLOVA
的韩语2040
亿参数语言模型,其韩语的机器学习数据量是GPT-3
的6500
倍。
从上面讨论的内容来看,现在的观察表明,大规模预训练模型已经吸引了工业界和学术界越来越多的关注。
知识增强的模型:预训练的语言模型从大规模语料库中获取句法知识
syntactical knowledge
和语义知识semantic knowledge
,但缺乏世界知识world knowledge
。最近,一些工作试图将世界知识纳入预训练的语言模型中。- 世界知识的典型形式是一个知识图谱
knowledge graph
。许多工作将知识图谱中的entity embedding
和relation embedding
集成到预训练的语言模型中。 WKLM
(《Pretrained encyclopedia: Weakly supervised knowledge-pretrained language model》
)用同类型的其他实体的名称替换原始文档中提到的实体,并训练模型将正确的实体与随机选择的实体区分开来。KEPLER
(《Kepler: Aunified model for knowledge embedding and pre-trained language representation》
)通过knowledge embedding
和掩码语言模型目标来优化模型,将世界知识和language representation
统一到同一语义空间。CoLAKE
(《Colake: Contextualized language and knowledge embedding》
)将语言上下文和知识上下文集成在一个word-knowledge graph
中,并通过扩展的掩码语言模型目标共同为语言和知识来学习contextualized representation
。
另一种现有的世界知识形式是大规模数据的额外标注。
ERNIE 1.0
引入了phrase masking
和named entity masking
,并预测了whole masked phrase
和whole masked named entity
,以帮助模型学习局部上下文和全局上下文中的依赖信息。CALM
(《Pretraining text-to-text transformers for concept-centric common sense》
)通过两种自监督的预训练任务,教导模型检测和校正incorrect ordering of concept
的、被破坏的句子,并将ground-truth
句子与虚假的句子区分开来。K-Adapter
(《K-adapter: Infusing knowledge into pre-trained models with adapters》
)利用适配器adapter
来区分知识来自哪里,其中适配器在具有额外标注信息的不同知识源上被训练得到。
- 世界知识的典型形式是一个知识图谱
13.1 模型
- 为了探索知识增强的大型预训练模型的有效性,我们提出了
ERNIE 3.0
框架,对包括纯文本和知识图谱在内的大规模无监督语料进行预训练模型。此外,我们采用各种类型的预训练任务,使模型能够更有效地学习由词汇信息、句法信息和语义信息组成的不同level
的知识,其中预训练任务分布在三个任务范式中,即自然语言理解、自然语言生成、和知识提取。因此,ERNIE 3.0
创新性地设计了一个Continual Multi-Paradigms Unified Pre-training Framework
,以实现多任务范式间的协同预训练collaborative pre-training
。
13.1.1 总体框架
ERNIE 3.0
的框架如下图所示,它可以广泛用于pre-training
、fine-tuning
和zero-shot/few-shot learning
。流行的
unified pre-training strategy
针对不同的well-designed cloze task
共享一个Transformer network
,然后应用specific self-attention mask
来控制以何种上下文为条件来得到prediction
。与普遍的统一预训练策略不同,ERNIE 3.0
设计了一个新的Continual Multi-Paradigms Unified Pre-training Framework
。我们认为:自然语言处理的不同任务范式对相同的底层抽象特征的依赖是一致的,如词汇信息和句法信息;但对
top-level
具体特征的要求是不一致的,其中自然语言理解任务有学习语义连贯性semantic coherence
的要求,而自然语言生成任务则期望进一步的上下文信息。因此,受多任务学习的经典模型架构的启发,即下层是所有任务共享的,而上层是特定任务的,我们提出了ERNIE 3.0
,使不同的任务范式能够共享在一个shared network
中学到的底层抽象特征,并分别利用在task-specific network
中学到的、top-level
的具体特征。此外,为了帮助模型有效地学习
lexical representation
、syntactic representation
和semantic representation
,ERNIE 3.0
利用了ERNIE 2.0
中引入的continual multi-task learning framework
。对不同类型的下游任务,我们首先用预训练好的shared network
和相应的task-specific network
的参数组合来初始化ERNIE 3.0
,然后利用具体任务的数据执行相应的后续程序。ERNIE 1.0
没有多任务结构。ERNIE 2.0
虽然采用了多任务,但是这些任务共享相同的底层结构和top-level
结构,并依次训练每个任务。最终只有一个task-specific network
,该network
学习到所有任务的信息。ERNIE 3.0
也采用了多任务,但是不同的任务共享相同的底层结构、以及不同的top-level
结构。最终有多个task-specific network
,不同network
学到不同任务的信息。在
ERNIE 3.0
中,我们把backbone shared network
称作Universal Representation Module
、把task-specific network
称作Task-specific Representation Module
。具体而言,
universal representation network
扮演着通用语义特征提取器的角色,其中的参数在各种任务范式中都是共享的,包括自然语言理解、自然语言生成等等。而task-specific representation network
承担着提取task-specific
语义特征的功能,其中的参数是由task-specific
目标学到的。ERNIE 3.0
不仅使模型能够区分不同任务范式的task-specific
语义信息,而且缓解了大型预训练模型在有限的时间和硬件资源下难以实现的困境,其中ERNIE 3.0
允许模型只在微调阶段更新task-specific representation network
的参数。具体而言,
ERNIE 3.0
采用了一个Universal Representation Module
和两个Task-specific Representation Module
的协同架构。这两个Task-specific Representation Module
为:natural language understanding specific representation module
和natural language generation specific representation module
。Universal Representation Module
:ERNIE 3.0
使用多层Transformer-XL
作为backbone network
。显然,Transformer
模型的规模越大,其捕获和存储各种不同level
的语义信息的能力就越强。因此,ERNIE 3.0
设置了规模较大的universal representation module
。而需要特别注意的是,memory module
只对自然语言生成任务有效,同时控制attention mask
矩阵。memory module
对自然语言理解任务也有好处,为什么仅在自然语言生成任务中考虑memory module
?作者未解释。ERNIE 3.0
使用Transformer-XL
作为backbone network
,相比较而言,ERNIE 1.0
和ERNIE 2.0
使用BERT_BASE
。Task-specific Representation Module
:task-specific representation module
也是一个多层Transformer-XL
。ERNIE 3.0
将task-specific representation module
设置为manageable size
,相比shared network
的规模更小(根据论文的实现,仅占shared network
参数规模的不到1%
)。ERNIE 3.0
构建了两个task-specific representation module
,即NLU-specific representation module
和NLG-specific representation module
,其中前者是一个双向建模网络(自然语言理解),而后者是一个单向建模网络(自然语言生成)。
13.1.2 预训练任务
我们为各种任务范式构建了几个任务从而捕捉训练语料中不同方面的信息,并使预训练的模型具有理解、生成和推理的能力。
word-aware
预训练任务:Knowledge Masked Language Modeling
:ERNIE 1.0
提出了一个有效的策略,通过knowledge integration
来增强representation
,即Knowledge Integrated Masked Language Modeling
任务。它引入了phrase masking
和named entity masking
,预测whole masked phrase
和whole masked named entity
,帮助模型学习局部上下文和全局上下文中的依赖信息。Document Language Modeling
:生成式预训练模型通常利用传统的语言模型(如GPT
、GPT-2
)或sequence-to-sequence
的语言模型(如BART
、T5
、ERNIE-GEN
)作为预训练任务。ERNIE 3.0
选择了传统的语言模型作为预训练任务,以降低网络的复杂性,提高unified pre-training
的效果。此外,为了使ERNIE 3.0
的NLG network
能够对较长的文本进行建模,我们引入了ERNIE-Doc
中提出的Enhanced Recurrence Memory Mechanism
,该机制通过将shifting-one-layer-downwards recurrence
改为同层递归,可以对比传统recurrence Transformer
建模更大的有效上下文长度。ERNIE-Doc
的更新公式, $ l $ 表示第 $ l $ 层:和传统
recurrence Transformer
的区别在于:传统recurrence Transformer
使用 $ \tilde{\mathbf{\vec h}}_{t+1}^{(l-1)} = \left[\text{SG}\left(\mathbf{\vec h}_t^{(l-1)}\right)\circ \mathbf{\vec h}_{t+1}^{(l-1)}\right] $ ,注意上标都是 $ (l-1) $ 。其中 $ \circ $ 表示向量拼接,SG(.)
表示stop-gradient
操作。但是,这种同层依赖(类似于
LSTM
)打破了Transformer
的并行性,可能不利于训练。
structure-aware
预训练任务:Sentence Reordering
:遵从ERNIE2.0
,我们增加了一个sentence reordering
任务来学习句子之间的关系。在这个任务的预训练过程中,一个给定的段落被随机拆分成 $ 1 $ 到 $ m $ 个segment
,然后这些segment
被随机混洗。我们让预训练模型来重新排序这些被打乱的segment
(作为一个 $ m! $ 的分类任务)。Sentence Distance
:遵从ERNIE2.0
,该任务被建模为一个三类分类问题:0
代表两个句子在同一个文档中是相邻的、1
代表两个句子在同一个文档中但是不相邻、2
代表两个句子来自两个不同的文档。
knowledge-aware
预训练任务:Universal Knowledge-Text Prediction: UKTP
:UKTP
任务是knowledge masked language modeling
的扩展。knowledge masked language modeling
只需要非结构化文本,而UKTP
任务则同时需要非结构化文本和知识图谱。UKTP
任务如下图所示。 给出知识图谱中的三元组和百科全书中的相应句子,我们随机掩码三元组中的关系relation
或句子中的单词。为了预测三元组中的关系,模型需要检测
head entity
和tail entity
,并确定它们在相应句子中的语义关系。这个过程的本质与关系抽取任务中的
distant supervision algorithm
相似(《Distant supervision for relation extraction without labeled data》
)。distant supervision algorithm
认为:如果两个实体参与了某种关系,任何包含这两个实体的句子都可能表达这种关系。为了预测相应句子中的单词,模型不仅考虑了句子中的依赖信息,还考虑了三元组中的逻辑关系。
具体来说,获得一个三元组和这个对应句子的程序如下:给定百科全书中的一篇文档,我们首先从知识图谱中找到
head entity
或tail entity
是文档标题的候选三元组,然后从候选三元组中head entity
和tail entity
同时在该文档的同一句子中被提及的三元组。注意,这里只需要
head entity
和tail entity
同时位于同一个句子即可,不需要relation
也位于该句子中。注意,
input
将知识图谱三元组和对应的文档句子拼接起来,这里把三元组也视为一个句子。注意,如果文档中的一个句子对应多个三元组怎么处理?作者未说明,读者猜测把每个三元组视为一个句子,然后与文档句子拼接起来。
13.1.3 预训练过程
预训练算法:渐进式训练
progressive training
最初是为了提高稳定性而提出的,它从一个高效的小模型开始并逐渐增加模型容量。最近的研究利用这一范式来加速模型训练。随着大型预训练的不断推进,其巨大的计算消耗成为进一步开发更强大模型的主要负担。渐进式训练的初步应用已经在transformer
预训练中得到了体现。BERT
设计了一个两阶段的训练,在前90%
的更新中减少序列长度。GPT-2
也线性地逐渐增加batch size
,从一个小的值到full value
。Efficientnet-v2
也注意到,阶段性地改变regularization factor
可以加快训练网络的速度。
为了进一步提高训练过程的收敛速度,我们建议通过逐步同时增加包括输入序列长度、
batch size
、学习率、dropout rate
在内的training factor
,从而来更全面、更平稳的方式调整training regularization factor
。事实上,Transformer
模型采用learning rate warm-up
策略来提高训练稳定性是很常见的,我们改进的渐进式学习策略与现有策略是兼容的。预训练数据:我们构建了一个大规模、多种类、高质量的中文文本语料库,存储量达
4TB
,分11
个不同的类别。据我们所知,与CLUECorpus2020
(100GB
)、中文多模态预训练数据(300GB
)、CPM-2
使用的WuDaoCorpus2.0
(2.3TB
中文数据和300GB
英文数据)和PanGu Corpus
(1.1TB
)相比,这是目前最大的中文预训练语料。具体而言,我们为
ERNIE 3.0
建立的语料库来自ERNIE 2.0
(包括百度百科、维基百科、feed
等等)、百度搜索(包括百家号、知乎、百度贴吧、百度经验)、Web text
、QA-long
、QA-short
、Poetry 2&Couplet
,以及来自医疗、法律和金融等领域的特定数据,以及拥有超过5000
万条事实的百度知识图谱。为了提高数据质量,我们采取了以下预处理策略:
数据去重:数据去重是在不同的粒度上进行的,包括字符级、段落级和文档级。
- 在字符级,我们用单个字符替换连续的相同字符(即空格、制表符、感叹号、问号等)。
- 在段落级,我们用单个段落替换两个相同的连续段落,其中每个段落的句子长度为
$ N, 1\lt N\lt 100 $ 。 - 在文档级,我们采用
Message Digest Algorithm5: MD5
,通过比较每个文档中最长的前三个句子的MD5
之和来过滤重复的文档。
字符级和段落级去重对于
ERNIE 3.0
生成不重复的内容至关重要。少于
10
个单词的句子被过滤掉,因为它们可能是有问题的或不完整的句子,包含的语义信息有限,无法用于模型预训练。我们进一步使用正则表达式进行句子分割,并基于百度的分词工具进行分词。这有助于
ERNIE 3.0
在预训练中学习更好的句子边界和命名实体知识。
然后,每个数据集都乘以一个用户定义的乘数
user-defined multiplier number
,从而为NLU-network
预训练来增加数据的多样性。这个乘数代表了数据集的重要性,即:更高质量的数据集被更多地使用、更低质量的数据集被更少地使用。
百度分词工具、百度知识图谱、以及这个数据集都是私有的,没有这些工具和数据我们难以复现论文结果。
预训练
setting
:ERNIE 3.0
的universal representation module
和task-specific representation module
都使用Transformer-XL
架构作为backbone
。universal representation module
具有48
层、4096
个隐单元、64
个头,task-specific representation module
具有12
层、768
个隐单元、12
个头。universal representation module
和task-specific representation module
的总参数规模为100
亿。可以看到,
task-specific representation module
的规模远小于universal representation module
。激活函数是
GeLU
。上下文的最大序列长度为512
,语言生成的memory
长度为128
。所有预训练任务的total batch size
为6144
。我们使用Adam
优化器,学习率为1e-4
, $ \beta_1=0.9,\beta_2=0.999 $ ,L2
权重衰减为0.01
,学习率在前一万步中进行预热,学习率线性衰减。在前一万步中,我们也使用渐进式学习来加速预训练初始阶段的收敛。模型用
384
块NVDIA v100 GPU
卡上训练了总共3750
亿个token
,并在PaddlePaddle
框架上实现。凭借在《Zero: Memory optimizations toward training trillion parameter models》
和《Zero-shot text-to-image generation》
中使用的参数分片,我们设法减少了我们模型的内存占用,并解决了模型的总参数超过单个GPU
卡的内存的问题。
13.2 实验
我们将
ERNIE 3.0
与SOTA
预训练模型,通过微调,在自然语言理解任务、自然语言生成任务、以及zero-shot learning
上进行比较。评估任务:共
54
个NLP
任务:自然语言理解任务
Natural Language Understanding Task
:14
种自然语言理解任务,覆盖45
个数据集。- 情感分析
Sentiment Analysis
:NLPCC2014-SC, SE-ABSA16_PHNS, SE-ABSA16_CAME, BDCI2019
。 - 观点抽取
Opinion extraction
:COTE-BD, COTE-DP, COTE-MFW
。 - 自然语言推理
Natural Language Inference
:XNLI, OCNLI, CMNLI
。 Winograd Schema Challenge
:CLUEWSC2020
。- 关系抽取
Relation Extraction
:FinRE, SanWen
。 - 事件抽
Event Extraction
:CCKS2020
。 - 语义相似度
Semantic Similarity
:AFQMC, LCQMC, CSL, PAWS-X, BQ Corpus
。 - 中文新闻分类
Chinese News Classification
:TNEWS, IFLYTEK, THUCNEWS, CNSE, CNSS
。 - 闭卷问答
Closed-Book Question Answering
:NLPCC-DBQA, CHIP2019, cMedQA, cMedQA2, CKBQA, WebQA
。 - 命名实体识别
Named Entity Recognition
:CLUENER, Weibo, OntoNotes, CCKS2019
。 - 机器阅读理解
Machine Reading Comprehension
:CMRC 2018, CMRC2019, DRCD, DuReader, Dureader_robust, Dureader_checklist, Dureader_yesno, C^3, CHID
。 - 法律文件分析
Legal Documents Analysis
:CAIL2018-Task1, CAIL2018-Task2
。 Cant Understanding
:DogWhistle Insider, DogWhistle Outsider
。- 文档检索
Document Retrieval
:Sogou-log
。
- 情感分析
自然语言生成任务
Natural Language Generation Task
:7
种自然语言理解任务,覆盖9
个数据集。- 文本摘要
Text Summarization
:LCSTS
。 - 问题生成
Question Generation
:KBQG, DuReader-QG, DuReader_robust-QG
。 - 数学
Math
:Math23K
。 - 对抗生成
Advertisement Generation
:AdGen
。 - 翻译
Translation
:WMT20-enzh
。 - 对话生成
Dialogue Generation
:KdConv
。
- 文本摘要
自然语言理解任务上的微调结果:
自然语言生成任务上的微调结果:
LUGE benchmark
:我们在Language Understanding and Generation Evaluation: LUGE
上的六个代表性任务上评估了ERNIE 3.0
和其它方法。ERNIE 3.0
比ERNIE 2.0
和RoBERTa
等领先的预训练模型平均提高5.36%
。Zero-shot Learning
评估:我们已经证明,ERNIE 3.0
在pretraining-then-finetuning
的范式下,在NLU
和NLG
任务上都优于以前的SOTA
方法。这里我们评估ERNIE 3.0
在zero-shot setting
下的性能,此时模型没有执行任何梯度更新或微调。结果表明:与最近提出的大型语言模型如CPM-1
(2.6B
)、PanGu-α-2.6B
和PanGu-α-13B
相比,ERNIE 3.0
在大多数下游任务上取得了强大的性能。 并且ERNIE 3.0
可以产生更连贯、更自然和更准确的response
(这是在我们人工收集的、跨越13
个不同任务的450
个案例中评定的)。评估方法:
Perplexity-based Method
:在从多选答案中选择一个正确答案的任务中(如CHID
和CMRC2017
),我们比较了将每个答案填入上下文空白处时的per-token perplexity
分,得分最低的那个将被预测为正确答案。在需要二分类或多分类的任务中,我们给每个
label
分配一个更有语义的名字,并使用一个prompt
将上下文和label
形式化为人类可读的文本。然后,这类任务可以被视为多选任务。我们使用的prompt
与CPM-1
和PanGu-α
中的prompt
相似。Generation-based Method
:在自由形式补全free-form completion
的任务上(如闭卷问答),我们使用beam search
,其中beam width
为8
并且没有长度惩罚。completion
的最大生成长度由预定义数字来限制,这个数字基于数据集上答案长度的95%
百分点来获得。我们使用exact match: EM
、F1
、Rouge-1
等指标。ROUGE-N
(其中N
可以为1/2/...
)为N-gram
召回率:exact match
为预测结果与ground-truth
完全相同的测试样本占比。在
restrained completion
的任务上(如抽取式机器阅读理解),我们使用restrained beam search
,参数与自由形式补全任务相同。为每个样本构建一个Trie-Tree
,以有效地限制生成空间,所生成的completion
仅出现在给定的文本中。
结果:
案例研究:我们人工收集了
450
个案例,以评估当前大型预训练模型在5
种不同类型的13
个任务上的zero-shot generation
能力,包括问答Question Answering
、解释Interpretation
、对话Dialogue
、文本生成Text Generation
和摘要Summarization
。在人类评估中,标注者被要求对生成质量进行评分,评分标准为[0, 1, 2]
。我们在Table 6
中报告了连贯性coherence,
、流畅性fluency
和准确性accuracy
的平均得分。并在Table 7
中展示了ERNIE 3.0
的一些zero-shot
生成。与CPM-1
、PLUG
、PanGu-α
相比,ERNIE 3.0
平均能生成最连贯、最流畅和最准确的文本。三个评分指标的介绍如下,评分细节如Table 8
所示。- 连贯性
coherence
:衡量生成的内容是否与上下文相关并一致。 - 流畅性
fluency
:评价生成的文本是否自然或可读。一个流畅的文本应该在生成的文本中没有语义上的矛盾。 - 准确性:评价生成的文本是否与
ground truth
相同。
- 连贯性
SuperGLUE
上的实验:SuperGLUE
是一个针对自然语言理解的多任务benchmark
。分析:
Task-specific Representation Module
的有效性:为了验证task-specific network
的有效性,我们将我们提出的结构与那些在各种预训练任务下共享参数的网络进行比较。对于消融测试,我们选择自然语言理解和自然语言生成作为两种不同的训练范式,并利用前面提到的相应任务。
unified network
遵循base model setting
(12
层,768
维,12
个注意力头),每个任务范式的task-specific network
被设置为3
层、256
维、4
个注意力头。在对比模型,task-specific network
在不同的任务范式中是共享的。下图说明了预训练过程中自然语言生成任务的perplexity
变化。可以看到:- 在不同任务拥有自己的
task-specific network
的模型达到了较高的收敛速度。 - 随着训练的进行,与具有
shared task-specific network
的模型相比,性能优势变得更大。
实验结果显示了所提出的
task-specific network
的有效性,并证明了区分不同任务的必要性。- 在不同任务拥有自己的
Universal Knowledge-Text Prediction
:为了universal knowledge-text prediction
任务的性能,我们进行了一组消融实验。关系抽取任务是一个典型的
knowledge-driven
任务,旨在预测给定句子中提到的两个实体之间的关系。具体来说,我们增加了四个special token
,[HD], [/HD], [TL], [/TL]
,分别用来识别提到的头部实体和尾部实体,然后根据上述四个special token
的final representation
之和进行关系分类。我们在SanWen
和FinRE
数据集上构建了实验,如下表所示,knowledge enhancement
策略在关系抽取任务上取得了卓越的经验性能。输入为
"[HD]实体A[\HD] .... [TL]实体B[\HD]...."
。这里的前提是,一个句子中只有两个实体。此外,在
CKBQA
上进行的zero-shot generation
实验也证实了universal knowledge-text prediction
任务的有效性。具体来说,基于知识的问答任务需要一个模型基于知识图谱来搜索和推理出正确答案。用KBQA
任务来衡量预训练语言模型的知识学习能力是合适的。我们使用"QUESTION: $QUESTION? ANSWER:"
作为zero-shot learning
的prompt
,然后在CKBQA
数据集上比较我们提出的模型和几个SOTA
的预训练语言模型的性能。如Table 5
所示,ERNIE 3.0
在CKBQA
数据集中的表现明显优于PanGu-α
和CPM-1
,这表明ERNIE 3.0
具有记忆和学习更多知识的能力。Progressive Learning to Speed up Convergence
:我们记录了两种架构配置的训练收敛速度,包括ERNIE_Base
和ERNIE_1.5B
。其中,ERNIE_Base
的架构设置遵循《Ernie: Enhanced representation through knowledge integration》
,ERNIE_1.5B
模型的配置为48
层、1536
维、24
个注意力头。如下表所示,我们记录了模型的
loss
值收敛到与ERNIE3.0
相同的训练时间。对于
ERNIE_Base
模型,渐进式学习的收敛时间减少了65.21%
,从11
小时减少到4
小时。在渐进式预热阶段,对于
ERNIE_Base
,我们将batch size
从8
增加到2048
,序列长度从128
增加到512
,学习率从0
线性增加到1e-4
,dropout rate
保持0
。对于
ERNIE_1.5B
模型,渐进式学习的收敛时间减少了48%
。在渐进式预热阶段,对于
ERNIE_1.5B
,我们将batch size
从8
增加到8192
,学习率从0
线性增加到6e-4
,dropout rate
保持0
。
对于这两种配置,我们在
8
个NVIDIA Tesla V100 GPU
上进行了预训练。其余实验设置与《Ernie: Enhanced representation through knowledge integration》
相同。对于ERNIE_1.5B
,为了在GPU
内存的约束下达到峰值batch size
,在预训练中使用梯度累积策略。梯度累积策略相当于增大
batch size
。假设有 $ m $ 个batch
$ \{\mathcal B_i\} $ ,每个batch
的梯度更新为:其中
$ \mathbf{\vec g}_j $ 为样本 $ j $ 的梯度, $ \eta $ 为学习率。梯度累积策略对于这
$ m $ 个batch
执行一次梯度更新,而不是 $ m $ 次梯度更新。即,先累加 $ m $ 个batch
的梯度,然后一次性更新。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论