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句

image-20240407001536580

预训练方式

预训练的关键词是无监督,无监督即意味着不需要标注,我的问题肯定是:目标损失函数怎么确定?

文章介绍预训练过程中,引入了两类无监督模型,分别是:

  • 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,假定最后的隐藏层CRHC\in \mathbb{R}^H,再引入一个Softmax层参数WRK×HW\in \mathbb{R}^{K\times H},通过CCWW计算标准分类误差Loss=log(softmax(CWT))Loss=\log{(softmax(CW^T))}

SQuAD评测

The Stanford Question Answering Dataset

SQuAD的评测较为苛刻:

  • 它的输入A是问题,B是包含答案的长文
  • 答案存在于B中,是B的子序列

因此,问题转化为判断B中答案的起始位置s和结束位置e

首先引入两个向量SRHS\in \mathbb{R}^HERHE\in \mathbb{R}^H分别表示开始和结束,用PiP_i表示B中的第ii个token是起始位置的概率,此处softmax的对象是sentence B中的每个tokne。计算结束概率的方式和PiP_i相似。

Pi=eSTijeSTjP_i=\frac{e^{ST_i}}{\sum_j{e^{ST_j}}}

因此,找到STi+STjST_i+ST_j最大值的 i,ji,j对即可,需要保证i<ji<j

写在最后

作者过去阅读英文论文时,常忽略最凝练的标题内容,除了那篇****外

BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding

仅仅从标题,就点明了这篇论文的重点:

  • BERT 强调结构
  • Pre-training 突出预训练特性
  • Bidirectional Transformer

BERT简读
https://www.ydhuyong.online/2025/05/16/NLP_BERT/
作者
Yong
发布于
2025年5月16日
更新于
2024年4月9日
许可协议