经典大语言模型解读(1):BERT——基于双向Transformer的预训练语言模型

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

前言

BERT(Bidirectional Encoder Representation from Transformer)是Google于2019年提出的预训练语言模型。与寻常的Transformer架构不同,该模型由双向Transformer编码器组成,双向编码使得BERT能够从左到右和从右到左编码上下文。BERT通过无标签语料数据,在精心设计的预训练任务**掩码语言模型(Masked LM)下一句预测(Next Sentence Prediction, NSP)**的指导下进行预训练,所得到的模型具备出色的泛化能力。在此基础上,仅需为特定的下游任务定制输出层,经过简单的微调,即可获得优异的效果。

下文将重点介绍BERT的模型架构以及相应的预训练及微调过程。

BERT架构

正如前言中所介绍的那样,BERT基于双向Transformer编码器构成,关于Transformer若有不熟悉的可以去阅读一下博主之前的一篇文章《大模型背后的“英雄”——Transformer》。BERT使用的Transformer层使用了双向自注意力机制

L L L表示层数, H H H表示隐藏层维度大小, A A A表示多头自注意力机制的head数,作者提出了两个版本的BERT模型:

  • BERT BASE \textbf{BERT}_{\textbf{BASE}} BERTBASE L = 12 L=12 L=12 H = 768 H=768 H=768 A = 12 A=12 A=12,总参数量 110 M 110\text{M} 110M
  • BERT LARGE \textbf{BERT}_{\textbf{LARGE}} BERTLARGE L = 24 L=24 L=24 H = 1024 H=1024 H=1024 A = 16 A=16 A=16,总参数量 340 M 340\text{M} 340M

输入表示

为了使BERT可以处理各种下游任务,BERT的输入可以是单个句子或句子对(<Question, Answer>)组成的序列(sequence)。

序列通常以[CLS]开头,当序列中包含多个句子时,使用[SEP]作为分隔,并为每个标记中添加一个学习到的嵌入,以指示它属于句子A还是句子B。序列的最终编码还需要加上类似Transformer的位置编码。下图便展示了Transformer的输入表示,该图中 E A E_A EA E B E_B EB便是用来指示是句子A还是句子B的嵌入。

BERT-Input-Representation

BERT的预训练与微调

BERT模型的学习过程可以下图所示的两个过程,预训练与微调。

BERT-Architecture

预训练

BERT定义了两个无监督任务来进行预训练:Masked LMNext Sentence Prediction

Masked LM

深层双向模型严格地比从左到右或从右到左的浅层模型表达能力更强,但双向将会使得每个词间接的看到自己。为此,BERT中采用了随机掩去(mask)输入中一定比例词,然后预测这些被mask的词。该任务也被称之为完形填空(cloze task)

MLM也存在一个缺陷,在预训练的时候被mask的词被[MASK]替代,但是在微调的时候是不存在[MASK]的,即预训练与微调存在不一致性。为此,在mask词的过程中,作者并没有都用[MASK]来替代。具体来说,假定序列中第 i i i个词被选择,那么它有:

  • 80 % 80\% 80%的概率被[MASK]替代。
  • 10 % 10\% 10%的概率被随机的词替代。
  • 10 % 10\% 10%的概率保持不变。

Next Sentence Prediction

在许多下游任务如问答(Question Answering, QA)和自然语言推断(Natural Language Inference, NLI)中,句子之间的关系很重要。为了理解句子之间的关系,BERT预先训练了一个二值化的下一个句子预测任务。具体来说每个训练样本选择A和B时,有 50 % 50\% 50%的概率B是A的下一个句子(标记为IsNext),有 50 % 50\% 50%的概率是语料中随机挑选的句子(标记为NotNext)。

微调

在该过程中,只需将特定于任务的输入和输出插入到BERT中,并对所有参数进行端到端的微调。

整个微调过程的学习代价特别小。

结语

以上便是本文的全部内容,若是觉得不错可以点个攒或关注一下,你们的支持是博主更新的不竭动力。若是有任何问题也敬请批评指正。

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

斯曦巍峨

码文不易,有条件的可以支持一下

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值