BERT简读
写于大语言模型繁荣的2024年
BERT,Bidirectional Encoder Representation Transformer
该论文延续下的一些思想,已成为当下大语言模型应用的共识,也是笔者构建自身LLM技术栈时不可不读的经典。
今天谈论的pre-training、fine-tuning,并非凭空产生
介于BERT已逐渐淡出NLP工业届,本博文将淡化Bidirectional的内容
论文提升
We show that pre-trained representations reduce the need for many heavily-engineered taskspecific architectures. BERT is the first finetuning based representation model that achieves state-of-the-art performance on a large suite of sentence-level and token-level tasks, outperforming many task-specific architectures.
我主要关注的是paper introduction的第二点优势,即引入微调后,减少了对设计神经网络结构的需求。
近两年的NLP方向,已经不再关注模型架构本身的调整了,以至于模型的架构可以是黑盒,极大了降低了使用门槛。
输入处理
BERT的训练语料可以是单个句子,或者句子对。
BERT的词袋模型选择的是WordPiece。在此token vocabulary的基础上,额外引入了几个特殊的token:
- [CLS]:标记训练语料的开始,[CLS]应该是classify的缩写
- [SEP]:如果语料是句子对,插在两个句子中间,用于区分,[SEP]是separation的缩写
- [MASK]:后文介绍,无监督预训练时的插入token
相较于最初Transformer的编码方式,BERT额外引入了Segment Embedding,针对的是句子对的形式,标记该句子是A句还是B句,如图[SEP]也被归为A句
预训练方式
预训练的关键词是无监督,无监督即意味着不需要标注,我的问题肯定是:目标损失函数怎么确定?
文章介绍预训练过程中,引入了两类无监督模型,分别是:
- Masked LM
- Next Sentence Prediction
Masked LM
原始文本经过tokenizer之后,每个样本随机选择15%的词修改为[Mask],将各[MASK]token对应BERT最后的隐藏层输出,作为Softmax的输入,用于预测该[token]对应的原始词,并以此确定损失函数
在此基础上,作者认为在后续引入有监督down-task全量微调的时,不会出现[Mask]token,这样不好。所以作者修改了随机化的方式,在执行token mask时:
- 80%的几率修改为[MASK]
- 10%的几率修改为任意token
- 10%的几率维持不变
Next Sentence Prediction
原文提到一句话:
The final hidden state corresponding to this token is used as the aggregate sequence representation for classification tasks.
在NSP任务中,将[CLS]最后隐藏层的输出,作为二分类器的输入(最简单的Softmax),用于判断输入语料是否符合NSP
模型微调
微调均是采用全量微调的方式,所有参数均参与梯度下降,为了实现down-task,在最后的隐藏层引入简单的全连接层即可。以GLUE和为例
GLUE任务
General Language Understanding Evaluation,本质就是一个文本多分类任务
[CLS]在经过self-attention之后,可以作为sentence的aggregate representaion,假定最后的隐藏层,再引入一个Softmax层参数,通过和计算标准分类误差

SQuAD评测
The Stanford Question Answering Dataset
SQuAD的评测较为苛刻:
- 它的输入A是问题,B是包含答案的长文
- 答案存在于B中,是B的子序列
因此,问题转化为判断B中答案的起始位置s和结束位置e
首先引入两个向量和分别表示开始和结束,用表示B中的第个token是起始位置的概率,此处softmax的对象是sentence B中的每个tokne。计算结束概率的方式和相似。
因此,找到最大值的 对即可,需要保证
写在最后
作者过去阅读英文论文时,常忽略最凝练的标题内容,除了那篇**
BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding
仅仅从标题,就点明了这篇论文的重点:
- BERT 强调结构
- Pre-training 突出预训练特性
- Bidirectional Transformer