BERT深入浅出

发布时间:2026/11/4 2:26:15
BERT深入浅出 BERT深入浅出简介架构Bert EncoderMLMMasked Language ModelNSPNext Sentence Prediction训练过程微调简介2019 年 Google AI 发布论文 BERTPre-training of Deep Bidirectional Transformers for Language Understanding。BERT分为预训练Pre-training与微调Fine-tune。预训练简单来说就是通过两个联合训练任务得到Bert模型。而微调便是在预训练得到Bert模型基础上进行各种各样的的 NLP 任务。而他的双向是针对解码器来说的解码器预测下一个词从左到右Bert采用Encoder结构能获取mask词的上下文信息。论文复现可以见项目BERT架构Bert Encoder其就是 Transformer Encoder 的部分做了修改MLMMasked Language ModelMLM是指在训练的时候随即从输入语料上mask掉一些单词然后通过的上下文预测该单词该任务非常像我们在中学时期经常做的完形填空。正如传统的语言模型算法和RNN匹配那样MLM的这个性质和Transformer的结构是非常匹配的。在BERT的实验中15%的WordPiece Token会被随机Mask掉。在训练模型时一个句子会被多次喂到模型中用于参数学习但是Google并没有在每次都mask掉这些单词而是在确定要Mask掉的单词之后做以下处理。80%的时候会直接替换为[Mask]将句子 “my dog is cute” 转换为句子 “my dog is [Mask]”。10%的时候将其替换为其它任意单词将单词 “cute” 替换成另一个随机词例如 “apple”。将句子 “my dog is cute” 转换为句子 “my dog is apple”。10%的时候会保留原始Token例如保持句子为 “my dog is cute” 不变。MLM叫做掩码语言模型这是无监督目标函数分为两种ARautoregressive自回归模型只能考虑单侧的信息典型的就是GPT。P(我爱吃饭)P(我)P(爱|我)P(吃|我爱)P(饭|我爱吃)AEautoencoding自编码模型从损坏的输入数据中预测重建原始数据。可以使用上下文的信息。mask之后【我爱mask饭】。P(我爱吃饭|我爱mask饭)P(mask吃|我爱饭)也就是mask接近文本的词汇。而Bert就是使用的AENSPNext Sentence PredictionNext Sentence PredictionNSP的任务是判断句子B是否是句子A的下文。如果是的话输出’IsNext‘否则输出’NotNext‘。训练数据的生成方式是从平行语料中随机抽取的连续两句话其中50%保留抽取的两句话它们符合IsNext关系另外50%的第二句话是随机从预料中提取的它们的关系是NotNext的。这个关系保存在[CLS]符号中。NSP样本如下从训练语料库中取出两个连续的段落作为正样本从不同的文档中随机创建一对段落作为负样本缺点主题预测和连贯性预测合并为一个单项任务训练过程微调微调分为四类句子对的分类任务单个句子的分类任务问答任务序列标注任务在海量的语料上训练完BERT之后便可以将其应用到NLP的各个任务中了。 微调(Fine-Tuning)的任务包括基于句子对的分类任务基于单个句子的分类任务问答任务命名实体识别等。基于句子对的分类任务MNLI给定一个前提 (Premise) 根据这个前提去推断假设 (Hypothesis) 与前提的关系。该任务的关系分为三种蕴含关系 (Entailment)、矛盾关系 (Contradiction) 以及中立关系 (Neutral)。所以这个问题本质上是一个分类问题我们需要做的是去发掘前提和假设这两个句子对之间的交互信息。QQP基于Quora判断 Quora 上的两个问题句是否表示的是一样的意思。QNLI用于判断文本是否包含问题的答案类似于我们做阅读理解定位问题所在的段落。STS-B预测两个句子的相似性包括5个级别。MRPC也是判断两个句子是否是等价的。RTE类似于MNLI但是只是对蕴含关系的二分类判断而且数据集更小。SWAG从四个句子中选择为可能为前句下文的那个。基于单个句子的分类任务SST-2电影评价的情感分析。CoLA句子语义判断是否是可接受的Acceptable。问答任务SQuAD v1.1给定一个句子通常是一个问题和一段描述文本输出这个问题的答案类似于做阅读理解的简答题。命名实体识别CoNLL-2003 NER判断一个句子中的单词是不是PersonOrganizationLocationMiscellaneous或者other无命名实体。​