BERT 是 Bidirectional Encoder Representations from Transformers(基于Transformer的双向编码器表示) 的缩写,是由谷歌研究人员开发、于2018年10月推出的语言模型和文本表示系统。它使用Transformer架构的编码器,从无标注文本中学习,并同时依据前文和后文生成表示。随后,BERT可以通过微调适配自然语言处理任务,通常只需添加一个小型的任务专用输出层。原始论文于2019年6月发表于NAACL会议。(arxiv.org)
背景与设计
BERT属于迁移学习中的“预训练后适配”方法:模型先从大规模文本集合中学习可复用的表示,再利用带标注的样例学习特定任务。其核心贡献是将深层双向Transformer表示与一套适用于不同任务、相对统一的适配流程结合起来。(aclanthology.org)
此前的方法包括静态词嵌入,以及ELMo上下文词表示等上下文表示系统。静态词嵌入为一个词分配固定的向量,不随其上下文变化。相比之下,BERT生成的表示依赖上下文:例如,“bank”一词的表示会随着所在句子的变化而改变。不同于从左到右的语言模型,BERT的编码器在每一层都能整合词元两侧的信息。这一区别涉及的是处理上下文的方式,并不意味着模型具有人类意义上的语言理解能力。(github.com)
架构与输入表示
BERT由堆叠的Transformer编码器模块组成。每个模块先使用多头注意力,具体而言是自注意力,再接一个逐位置前馈网络,并配有残差连接和层归一化。其前馈层使用高斯误差线性单元作为激活函数。最初的主要配置包括BERT-Base和BERT-Large:前者有12层、768维隐藏表示、12个注意力头,参数量约为1.1亿;后者有24层、1,024维表示、16个注意力头,参数量约为3.4亿。(aclanthology.org)
输入的分词与词元化采用WordPiece词元化方法,可将单词拆分为子词单元。每个输入位置的表示由三部分相加得到:词元嵌入、用于标明该位置属于两个输入片段中哪一个的片段嵌入,以及学习得到的位置编码。特殊词元[CLS]位于序列开头,[SEP]则用于分隔片段或标记片段结尾。在分类任务中,通常将[CLS]位置的最终表示送入输出层。原始模型支持的序列长度上限为512个词元,其中包括特殊词元。(aclanthology.org)
预训练目标
BERT最初的预训练结合了两个自动从文本中构造的目标,因此属于自监督学习。
掩码语言建模训练模型还原选定的输入词元。在原始流程中,先选取15%的词元位置;在这些被选中的位置中,80%替换为[MASK],10%替换为随机词元,另外10%保持不变。预测结果仅在被选中的位置上评估。这种扰动流程既能防止模型直接复制输入,又能降低模型对特殊词元的依赖,因为常规下游输入中并不存在这种特殊词元。(aclanthology.org)
下一句预测训练一个二元分类器,区分连续的文本片段对,以及第二个片段由随机抽样得到的片段对。训练样本对中,正例和负例各占一半。尽管名称如此,这一目标并不生成下一句话。最初的英语训练数据包括BooksCorpus,据论文报告含8亿词;以及英语维基百科,据论文报告含25亿词。(aclanthology.org)
这些目标使用交叉熵损失。预训练使用Adam优化器优化组合后的损失函数,并采用先预热、后衰减的学习率调度策略。BERT通过这些预测任务学习表示,而不是依靠人工赋予的语言学标注。(aclanthology.org)
适配与评估
在下游监督学习中,通常会同时更新BERT的预训练参数和新增输出层的参数。序列分类使用序列级表示;序列标注根据各词元的表示给出预测;抽取式问答则预测答案片段在给定段落中的起始和结束位置。这些任务共享编码器,但输出形式和训练损失不同。(github.com)
原始论文报告称,BERT在11项任务上取得了当时最先进的结果。其中包括GLUE得分80.5、MultiNLI准确率86.7%,以及SQuAD 1.1测试集上的F值(F1)93.2。这些是在论文所采用的评估流程下得到的历史基准结果,而不是所有BERT模型或应用都具备的固定性能指标。(aclanthology.org)
变体与局限
谷歌发布了区分大小写和不区分大小写的英语模型检查点、一个中文模型,以及多语言模型检查点。其中,区分大小写的多语言模型在104种语言的维基百科文本上进行了预训练。研究展示了跨语言迁移能力:模型使用一种语言的标注数据进行微调后,可以在另一种语言上接受评估,但这并不意味着它在各语言上的表现相同。(github.com)
2019年推出的RoBERTa研究了BERT的训练方案,并通过延长训练时间、增加数据、采用动态掩码、移除下一句预测等改动提升了结果。DistilBERT在预训练期间使用知识蒸馏,得到规模更小、速度更快的编码器。这些模型表明,架构、训练目标和计算预算是影响性能的不同因素。(arxiv.org)
BERT最初的上下文长度限制了它直接处理长文档的能力,而随着序列变长,稠密自注意力的计算成本也会增加。其掩码词元预测目标也不同于生成式预训练变换器(GPT)模型通常采用的下一词元预测目标。未经修改的BERT主要是用于表示学习和预测任务的编码器,而不是从左到右生成文本的模型。RoBERTa的复现研究进一步表明,预训练模型之间的比较在很大程度上取决于训练数据、训练时长和超参数选择。(github.com)