BERT从零详细解读:BERT整体模型架构

article/2025/9/15 11:52:38

基础结构-TRM的Encoder
在这里插入图片描述
BERT使用多个Encoder堆叠在一起,其中bert base使用的是12层的encoder,bert large使用的是24层的encoder。
在这里插入图片描述
对于transformer来说,输入包括两个部分:
一部分是input enbedding,就是做词的词向量,比如说随机初始化,或者是使用word to vector。
第二个部分是Positional Encoding,是位置编码,使用的是三角函数,也就是正余弦函数去代表它
但是在bert中,我们分为了三个部分,第一个是token emb,第二个是segment emb,第三部分是position emb。这里的position emb区别于trasfomer中的position encoding。

bert输入部分详细解读
我们刚才谈到bert的输入部分由三部分组成:
Input = token emb + segment emb + position emb
在这里插入图片描述
如图所示:
首先我们看Input代表的这个东西:

粉色的这一行,重点关注两个部分
第一部分是正常词汇:my、dog、is、cute、he、likes、play、##ing,这些事bert分词器分词之后的东西,
第二部分是特殊词汇,[CLS]、[SEP]、[SEP]
这三个是两种特殊符号,bert的预训练中有一个是NSP任务,NSP的全称叫做 NEST Sentence Prediction,去判断两个句子之间的关系,它具体的东西我们后面会去讲,在这里大家只要知道NSP任务是处理两个句子之间的关系,因为处理的是两个句子,所以我需要的是一个符号,去告诉模型,在这个符号之前是一个句子,在这个符号之后是另一个句子。这是[sep]的作用,然后呢,我们要做的NSP任务又是一个二分类任务,即句子之间是什么关系的二分类任务,那么怎么去做这个二分类任务,作者在句子的最前面加了一个叫做[CLS]的特殊符号,在训练的时候,将[CLS]的输出向量接一个二分类器,去做一个二分类任务,这是[CLS]的一个作用。很多人对[CLS]会有一个误解,认为[CLS]这个输出向量代表了整个句子或者整两个句子的语义信息。这个说法是正确的吗?我简单说一下我自己的理解,在预训练完之后,[CLS]这个向量的输出向量并不能说代表了整个句子的语义信息,我也没有在原论文中看到过作者相关的说法,当然如果有朋友看到了,可以和我说一下。我自己的理解是[CLS]这个向量用在了NSP任务中,它是一个二分类任务,它和编码整个句子的语义信息相去甚远。所以大家都会发现一个问题,就是你在用[CLS]向量这个输出向量去无监督地做文本相似度的时候,效果会非常的差。

也就是说,CLS向量不能代表整个句子的语义信息。bert pretrain模型直接拿来用作sentence embedding效果甚至不如word embedding,cls的embedding效果最差(也就是你说的pooled output)。把所有普通token embedding做pooling勉强能用(这个也是开源项目bert-as-service的默认做法),但也不会比word embedding更好。
那么现在的问题是,究竟能不能用这个cls向量来做无监督的文本相似度。

接下来的三个部分:

第一个部分叫Token Embeddings. Token Embedings其实很简单,就是对Input中的所有词汇(包括正常词汇和特殊词汇)都去做正常的embeddings,比如说随机初始化。

第二个部分呢,就是Segment Embeddings,这个也是由于我们处理的是两个句子,所以我们需要对两个句子进行区分,那么第一个句子(包括[CLS]到[SEP])这一部分我们全部用0来表示。后面的这个句子,全部用1来表示,代表了两个句子。

第三个部分,是position embeddings,也就是bert的输入部分和tramsfomer的输入部分的一个很大的不同点。在transformer中,它用的是正余弦函数,我们使用的是随机初始化,然后让模型自己去学习出来。比如说第1个位置我给它定为0,第2个位置定为1,第3个位置定为2,…,一直到第512个位置,让它自己去学每个位置的embedding是什么样子的。至于说为什么使用embedding,我还没有看到一个特别好的解释,大家在做实验的时候发现用positon emdeddings效果也可以。


http://chatgpt.dhexx.cn/article/WHvitugr.shtml

相关文章

如何计算Bert模型的参数量

BERT是基于transformer结构的预训练模型。具体bert原理介绍,请参考博客:Bert系列解读及改进_&永恒的星河&的博客-CSDN博客_bert系列 求解Bert模型的参数量是面试常考的问题,也是作为算法工程师必须会的一个点。所谓会用并不代表熟悉…

关于Bert模型参数的分布

参数分布 Bert模型的版本如下: BERT-Base, Uncased: 12-layer, 768-hidden, 12-heads, 110M parameters BERT-Large, Uncased: 24-layer, 1024-hidden, 16-heads, 340M parameters BERT-Base, Cased: 12-layer, 768-hidden, 12-heads , 110M parameters BERT-L…

BERT模型原理的详细介绍

文章目录 参考文章1. BERT模型1.1 模型结构1.2 输入表示1.3 预训练任务1.3.1 Task 1:Masked Language Model1.3.2 Task 2:Next Sentence Prediction 1.4 微调(fine-tuning)基于句子对的分类任务基于单个句子的分类任务问答任务命名实体识别 2. 总结 参考文章 【NLP…

BERT和GPT模型简介

1. 引言 从现在的大趋势来看,使用某种模型预训练一个语言模型看起来是一种比较靠谱的方法。从之前 AI2 的 ELMo,到 OpenAI 的 fine-tune transformer,再到 Google 的 BERT、GPT,全都是对预训练的语言模型的应用。 本文将主要介绍…

BERT模型简介

基础架构-Transformer的Encoder: 由下到上,依次三个部分为输入、注意力机制和前馈神经网络 基础的Bert,六个encoder,六个decoder。 输入部分 input token embedding segment embedding position embedding bert预训练的NSP&am…

BERT 模型详解

BERT 结构 上图是 BERT 的结构图,左侧的图表示了预训练的过程,右边的图是对于具体任务的微调过程 BERT 的输入 BERT 的输入可以包含一个句子对 (句子 A 和句子 B),也可以是单个句子。同时 BERT 增加了一些有特殊作用的标志位: …

如何从零开始训练BERT模型

我的许多文章都专注于 BERT——这个模型出现并主导了自然语言处理 (NLP) 的世界,标志着语言模型的新时代。 对于那些之前可能没有使用过 Transformer 模型(例如 BERT 是什么)的人,这个过程看起来有点像这样: pip 安装…

BERT模型详解

Auto-Regressive & Auto-Encoding 在介绍当下最火热的BERT模型之前,我们先来看两个概念,Auto-Regressive和Auto-Encoding。 Auto-Regressive Auto-Regressive如上图所示,其实很像是一个语言模型,遵循的是链式法则&#xff0…

BERT(预训练Transformer模型)

目录 一、前言 二、随机遮挡,进行预测 三、两句话是否原文相邻 四、两者结合起来 五、总结 六、参考链接 一、前言 Bert在18年提出,19年发表,Bert的目的是为了预训练Transformer模型encoder网络,从而大幅提高准确率 Bert …

详细介绍BERT模型

文章目录 BERT简介BERT, OpenAI GPT, 和ELMo之间的区别相关工作BERT的改进 BERT 的详细实现输入/输出表示预训练BERT微调BERT BERT用在下游任务GLUE(一个自然语言任务集合)SQuAD v1.1(QA数据集)SQuAD v2.0SWAG 消融实验预训练任务的影响模型大小的影响基于特征的BERT方法 结论 …

BERT模型—2.BERT模型预训练与微调

文章目录 引言一、预训练语言模型1.为什么要进行预训练?2. BERT预训练-掩码预测任务3.BERT预训练-下句预测任务 二、BERT的文本处理—subword tokenizer1. 为什么要学习subword tokenizer?2. 词表生成与分词 三、BERT embedding四、BERT微调—句子分类任务五、BERT…

图解BERT模型:从零开始构建BERT

转载:https://cloud.tencent.com/developer/article/1389555 本文首先介绍BERT模型要做什么,即:模型的输入、输出分别是什么,以及模型的预训练任务是什么;然后,分析模型的内部结构,图解如何将模…

BERT模型—1.BERT模型架构

文章目录 引言一、Bert模型总览二、注意力机制1.Seq2seq中的注意力操作2.注意力的一般形式(三步曲)3. transformer中的自注意力机制—Self.Attention4. transformer的多头注意力机制5. scaling6. 模型优化技巧:残差连接 三、BERT其他结构特性…

【科研】BERT模型理论详解

原文:https://cloud.tencent.com/developer/article/1389555 本文首先介绍BERT模型要做什么,即:模型的输入、输出分别是什么,以及模型的预训练任务是什么;然后,分析模型的内部结构,图解如何将模…

BERT模型的详细介绍

1.BERT 的基本原理是什么? BERT 来自 Google 的论文Pre-training of Deep Bidirectional Transformers for Language Understanding,BERT 是“Bidirectional Encoder Representations from Transformers”的首字母缩写,整体是一个自编码语言…

图解BERT模型

1. 模型的输入/输出 BERT模型的全称是:BidirectionalEncoder Representations from Transformer。从名字中可以看出,BERT模型的目标是利用大规模无标注语料训练、获得文本的包含丰富语义信息的Representation,即:文本的语义表示&…

BERT模型

BERT模型 Paper: https://arxiv.org/abs/1810.04805 BERT 全称为Bidirectional Encoder Representation from Transformers(来自Transformers的双向编码表示),谷歌发表的发的论文Pre-traning of Deep Bidirectional Transformers for Langu…

BERT模型的结构,特点和实践

BERT模型介绍,特点,资源 一、背景介绍二、BERT与语言模型1.feature-based2.fine-tuning3.BERT的语言模型 三、BERT整体概览1. BERT框架2. BERT模型结构2.1输入部分2.2 BERT的预训练任务任务1:Masked Language Model(MLM)任务2:Nex…

Bert算法:语言模型-BERT详细介绍

本文的目的是向NLP爱好者们详细解析一个著名的语言模型-BERT。 全文将分4个部分由浅入深的依次讲解。1.Bert简介 BERT是2018年10月由Google AI研究院提出的一种预训练模型。 BERT的全称是Bidirectional Encoder Representation from Transformers。BERT在机器阅读理解顶级水平…

Bert 模型学习

一、Bert 模型 BERT 模型的全称是 BidirectionalEncoder Representations from Transformer,基于 Transformer 的双向编码器表示,是一个预训练的语言表征模型,它强调了不再像以往一样采用传统的单向语言模型或者把两个单向语言模型进行浅层拼…