BERT(Bidirectional Encoder Representations from Transformers)是Google在2018年提出的一种预训练语言模型,它在自然语言处理(NLP)领域引起了广泛的关注和应用。BERT的核心思想是通过双向Transformer编码器(双向的编码器部分
)来捕捉文本中的上下文信息,从而生成更丰富的语言表示。
BERT基于Transformer架构,特别是Transformer的编码器部分。BERT使用了多层Transformer编码器堆叠在一起,每一层都包含多头自注意力机制和前馈神经网络。

BERT使用双向Transformer,OpenAI GPT使用从左到右的Transformer,而ELMo则使用独立训练的从左到右和从右到左的LSTM的拼接来为下游任务生成特征。在这三种模型中,只有BERT的表示在所有层中都同时依赖于左右上下文。
宏观上BERT分三个主要模块:
BERT中的该模块是由三种Embedding共同组成

BERT 的输入表示是通过将上述三种 Embedding 相加得到的:

BERT中只使用了经典Transformer架构中的Encoder部分, 完全舍弃了Decoder部分. 而两大预训练任务也集中体现在训练Transformer模块中。
经过中间层Transformer的处理后, BERT的最后一层根据任务的不同需求而做不同的调整
通常取最后一层输出的第一个位置(即[CLS]标记的表示),然后通过一个全连接层(Dense Layer)进行分类。
对于不同的任务, 微调都集中在预微调模块, 几种重要的NLP微调任务架构图:

BERT包含两个预训练任务,帮助模型学习到丰富的语言表示:
带 Mask 的语言模型训练(Masked Language Model, MLM)是 BERT 的核心预训练任务之一。它的主要目的是通过遮蔽输入序列中的某些词,让模型根据上下文预测这些被遮蔽的词。MLM 的设计使得 BERT 能够学习到双向的上下文信息。
在原始训练文本中, 随机的抽取15%的token作为参与MASK任务的对象,在这些被选中的token中, 数据生成器并不是把它们全部变成[MASK], 而是有下列3种情况:
在NLP中有一类重要的问题比如QA(Quention-Answer), NLI(Natural Language Inference), 需要模型能够很好的理解两个句子之间的关系, 从而需要在模型的训练中引入对应的任务. 在BERT中引入的就是Next Sentence Prediction任务. 采用的方式是输入句子对(A, B), 模型来预测句子B是不是句子A的真实的下一句话
所有参与任务训练的语句都被选中作为句子A,其中50%的B是原始文本中真实跟随A的下一句话. (标记为IsNext, 代表正样本)
,其中50%的B是原始文本中随机抽取的一句话. (标记为NotNext, 代表负样本)。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。