分类目录:《深入理解深度学习》总目录
相关文章:
· BERT(Bidirectional Encoder Representations from Transformers):基础知识
· BERT(Bidirectional Encoder Representations from Transformers):BERT的结构
· BERT(Bidirectional Encoder Representations from Transformers):MLM(Masked Language Model)
· BERT(Bidirectional Encoder Representations from Transformers):NSP(Next Sentence Prediction)任务
· BERT(Bidirectional Encoder Representations from Transformers):输入表示
· BERT(Bidirectional Encoder Representations from Transformers):微调训练-[句对分类]
· BERT(Bidirectional Encoder Representations from Transformers):微调训练-[单句分类]
· BERT(Bidirectional Encoder Representations from Transformers):微调训练-[文本问答]
· BERT(Bidirectional Encoder Representations from Transformers):微调训练-[单句标注]
· BERT(Bidirectional Encoder Representations from Transformers):模型总结与注意事项
BERT是由堆叠的Transformer Encoder层组成核心网络,辅以词编码和位置编码而成的。BERT的网络形态与GPT非常相似。简化版本的ELMo、GPT和BERT的网络结构如下图所示。图中的“Trm”表示Transformer Block,即基于Transformer的特征提取器。
- ELMo使用自左向右编码和自右向左编码的两个LSTM网络,分别以 P ( w i ∣ w 1 , w 2 , ⋯ , w i − 1 ) P(w_i|w_1, w_2, \cdots, w_{i-1}) P(wi∣w1,w2,⋯,wi−1)和 P ( w i ∣ w i + 1 , w i + 2 , ⋯ , w n ) P(w_i|w_{i+1}, w_{i+2}, \cdots, w_n) P(wi∣wi+1,wi+2,⋯,wn)为目标函数独立训练,将训练得到的特征向量以拼接的形式实现双向编码。
- GPT使用Transformer Decoder作为Transformer Block,以 P ( w i ∣ w 1 , w 2 , ⋯ , w i − 1 ) P(w_i|w_1, w_2, \cdots, w_{i-1}) P(wi∣w1,w2,⋯,wi−1)为目标函数进行训练,用Transformer Block取代LSTM作为特征提取器,实现了单向编码,是一个标准的预训练语言模型。
- BERT与ELMo的区别在于使用Transformer Block作为特征提取器,加强了语义特征提取的能力;与GPT的区别在于使用Transformer Encoder作为Transformer Block,将GPT的单向编码改为双向编码。BERT舍弃了文本生成能力,换来了更强的语义理解能力。
将GPT结构中的Masked Multi-Head Attention层(参考文章《深入理解深度学习——注意力机制(Attention Mechanism):带掩码的多头注意力(Masked Multi-head Attention)》)替换成Multi-Head Attention层,即可得到BERT的模型结构,如下图所示。
在模型参数选择上,有两套大小不一致的模型。
L
L
L代表Transformer Block的层数,
H
H
H代表特征向量的维数(此处默认Feed Forward层中的中间隐层的维数为
4
H
4H
4H),
A
A
A表示Self-Attention的头数,参数的具体含义可以参考《深入理解深度学习——Transformer》系列文章,使用这三个核心参数基本可以定义BERT的量级:
- BERT BASE : L = 12 , H = 768 , A = 12 \text{BERT}_{\text{BASE}}: L=12, H=768, A=12 BERTBASE:L=12,H=768,A=12:总参数量为1.1亿
- BERT LARGE : L = 24 , H = 1024 , A = 16 \text{BERT}_{\text{LARGE}}: L=24, H=1024, A=16 BERTLARGE:L=24,H=1024,A=16:总参数量为3.4亿
BERT
BASE
\text{BERT}_{\text{BASE}}
BERTBASE是为了与第一代GPT做对比而专门设计的,其参数量与GPT相当,此举的目的在于通过对比
BERT
BASE
\text{BERT}_{\text{BASE}}
BERTBASE与第一代GPT在各项任务上的性能,证明双向编码比单向编码在语义理解方面更有优势,即量化BERT与GPT的核心差异所带来的影响。下图是BERT在GLUE测试任务中的测试结果,横向对比了ELMo与GPT的最优结果。
可以看出,与ELMo相比,GPT在所有任务上的效果都有显著提升,这是使用Transformer Block取代LSTM作为特征提取器的结果。值得关注的是,相比GPT,
BERT
BASE
\text{BERT}_{\text{BASE}}
BERTBASE在所有任务上的效果都有显著提升(准确率平均提升了4.5%~7.0%),证明了与单向编码相比,双向编码在语义理解上具有极大的优势。不仅如此,与
BERT
BASE
\text{BERT}_{\text{BASE}}
BERTBASE相比,
BERT
LARGE
\text{BERT}_{\text{LARGE}}
BERTLARGE在所有任务上的效果还有明显提升,在训练集资源受限的任务上尤为明显。有关模型大小与模型能力的对比,BERT的作者在三个任务上测试了不同参数量设置情况下BERT的性能表现,下图所示为不同规模的BERT在不同任务上的性能表现,随着BERT参数量的增大,模型在所有任务上的表现都有明显进步。
近年来,受限于可用于监督训练的带标签数据的规模,部分学者认为采用更大的模型无法得到更高的收益,而BERT的出现证明了预训练语言模型采用无监督训练和特定数据集微调训练的模式可以突破这一限制,即更大规模的预训练语言模型总是可以通过模型参数随机初始化和领域数据微调获得更好的性能。这也符合近年来预训练语言模型的参数规模爆发式增长的趋势,文章《深入理解深度学习——GPT(Generative Pre-Trained Transformer):GPT-3与Few-shot Learning》提到的具有1750亿参数的GPT-3便在这条路上走到了当时的极致,也确实取得了出乎意料的效果。而BERT是否能在未来以更大规模的模型颠覆自己创造的记录,也未可知。
参考文献:
[1] Lecun Y, Bengio Y, Hinton G. Deep learning[J]. Nature, 2015
[2] Aston Zhang, Zack C. Lipton, Mu Li, Alex J. Smola. Dive Into Deep Learning[J]. arXiv preprint arXiv:2106.11342, 2021.
[3] 车万翔, 崔一鸣, 郭江. 自然语言处理:基于预训练模型的方法[M]. 电子工业出版社, 2021.
[4] 邵浩, 刘一烽. 预训练语言模型[M]. 电子工业出版社, 2021.
[5] 何晗. 自然语言处理入门[M]. 人民邮电出版社, 2019
[6] Sudharsan Ravichandiran. BERT基础教程:Transformer大模型实战[M]. 人民邮电出版社, 2023
[7] 吴茂贵, 王红星. 深入浅出Embedding:原理解析与应用实战[M]. 机械工业出版社, 2021.