BERT模型
定义
BERT(Bidirectional Encoder Representations from Transformers)是2018年由谷歌AI团队提出的预训练语言模型,它基于Transformer编码器架构,采用双向掩码语言模型(Masked Language Model, MLM)预训练任务,能够学习到更深层次的双向语言表示,在几乎所有自然语言处理任务上都取得了当时的最好成绩,是预训练语言模型发展史上的里程碑,开启了NLP的”预训练+微调”新时代。
提出背景
在BERT提出之前,预训练语言模型主要有两类:
- 基于特征的方法:如Word2Vec、GloVe等词嵌入方法,学习的是静态词表示,无法处理一词多义问题。
- 微调类方法:如ELMo、GPT-1等,ELMo使用双向LSTM但拼接的方式并非真正的双向,GPT使用Transformer解码器架构但只能进行单向的从左到右的语言建模。
这些模型都无法充分利用双向上下文信息,而BERT的提出彻底解决了这个问题。
核心创新
BERT的核心创新主要体现在以下几个方面:
1. 双向掩码语言模型(Masked Language Model, MLM)预训练任务
BERT在预训练时随机将输入句子中的部分词替换为特殊标记[MASK],然后让模型预测被掩码的词。这样模型在训练时可以同时利用左右两边的上下文信息,学习到真正的双向语言表示。这是BERT最重要的创新,也是它性能优异的主要原因。
2. 下一句预测(Next Sentence Prediction, NSP)任务
除了MLM任务,BERT还加入了下一句预测任务,给模型输入两个句子,让它预测第二个句子是否是第一个句子的下一句。这个任务帮助模型理解句子之间的关系,提高在问答、自然语言推理等需要句子对理解的任务上的性能。
3. 统一的微调框架
BERT设计了非常灵活的输入表示,可以适配各种NLP任务,只需在预训练模型基础上添加少量输出层就可以针对不同任务进行微调,不需要针对特定任务设计特殊的模型架构,大大降低了NLP应用的门槛。
模型架构
BERT完全基于Transformer编码器架构,原始论文中发布了两个版本的模型:
- BERT-base:12层Transformer编码器,12个注意力头,隐藏层维度768,总参数量约1.1亿。
- BERT-large:24层Transformer编码器,16个注意力头,隐藏层维度1024,总参数量约3.4亿。
BERT的输入是特殊的[CLS]标记开头,句子之间用[SEP]标记分隔,每个输入Token的表示由Token嵌入、段嵌入和位置嵌入三者相加得到,这样可以同时表示Token内容、所属句子和位置信息。
性能表现
BERT一经提出,就在11个NLP任务上取得了当时的最好成绩,包括:
- GLUE基准测试:比之前最好的结果提升了7.6%,达到了80.5%的得分。
- SQuAD v1.1问答任务:F1得分达到93.2%,超过了人类水平的91.2%。
- SQuAD v2.0问答任务:F1得分达到83.1%,比之前最好的结果提升了5.1%。
- MNLI自然语言推理任务:准确率达到86.7%,比之前最好的结果提升了4.6%。
BERT的性能远超之前所有的模型,证明了大规模预训练和双向语言表示的强大能力。
工作流程
BERT采用典型的”预训练+微调”两阶段工作流程:
- 预训练阶段:在大规模无标注文本语料上(维基百科+书籍语料,共16GB文本)进行预训练,学习通用的语言表示。这个阶段计算量很大,需要大量的GPU资源,但只需要进行一次。
- 微调阶段:针对具体的下游任务(如文本分类、问答、命名实体识别等),在预训练好的BERT模型基础上添加少量任务相关的输出层,使用任务标注数据进行微调。这个阶段计算量小,通常只需要几块GPU训练几个小时就能得到很好的效果。
主要优势
- 真正的双向表示:通过掩码语言模型任务,BERT能够学习到同时包含左右上下文的双向语言表示,比之前的单向模型理解能力更强。
- 通用能力强:预训练好的BERT模型可以适配几乎所有NLP任务,只需要简单微调就能取得很好的效果,大大降低了NLP应用的门槛。
- 迁移学习效果好:预训练阶段学习到的通用语言知识可以很好地迁移到各种下游任务中,即使下游任务的标注数据很少也能取得不错的效果。
- 效果显著:在几乎所有NLP基准测试中都取得了当时的最好成绩,很多任务上的提升是跨越式的。
生态与变种
BERT提出后,催生了大量的变种和改进版本,形成了繁荣的BERT生态:
- RoBERTa:改进了BERT的预训练方法,去掉了NSP任务,使用更大的batch size和更多的训练数据,性能进一步提升。
- ALBERT:通过参数共享和嵌入层因式分解大幅减少了模型参数量,提高了训练效率。
- DistilBERT:知识蒸馏得到的轻量化BERT模型,参数量只有原来的40%,速度快60%,性能保留97%。
- MobileBERT:针对移动端优化的轻量化BERT模型,可以在手机等端侧设备上运行。
- 中文BERT:针对中文语言特点优化的BERT模型,如BERT-wwm、ERNIE等,在中文NLP任务上表现更好。
- 多模态BERT:扩展到多模态领域,如ViLBERT、CLIP等,能够同时处理文本和图像信息。
影响与意义
- NLP范式革命:BERT彻底改变了自然语言处理的研究和应用范式,从”针对特定任务设计模型”转变为”预训练+微调”的通用范式,大幅提升了NLP任务的性能上限,降低了应用门槛。
- 普及预训练技术:让预训练语言模型成为NLP领域的标准配置,推动了预训练技术的快速发展,后来的GPT、T5、LLaMA等大语言模型都延续了”预训练+微调”的范式。
- 推动NLP落地:BERT大幅提升了各种NLP任务的性能,让很多之前无法落地的NLP应用成为可能,推动了NLP技术在各行各业的大规模应用。
- 启发跨领域应用:BERT的成功不仅影响了NLP领域,还启发了计算机视觉、语音识别、生物信息学等其他领域的预训练研究,推动了整个AI领域的技术进步。
历史地位
BERT是自然语言处理发展史上的里程碑式模型,它的出现标志着NLP正式进入了预训练语言模型时代。虽然现在更大的大语言模型已经在很多任务上超过了BERT,但BERT提出的双向预训练思想、”预训练+微调”范式仍然是当代大语言模型的核心基础,它对整个AI领域的影响是深远和持久的。