BERT模型入门(2)BERT的工作原理

文章目录


如名称所示,BERT(来自Transformer的双向编码器表示)是基于Transformer模型。我们可以将BERT视为只有编码器部分的Transformer。

在上一个主题《Transformer入门》中,我们了解到将句子作为输入喂给Transformer的编码器,它会返回句子中每个单词的表示作为输出。这正是BERT的本质------来自Transformer的编码器表示(Encoder

Representation from Transformer)。那么,"双向"这个词又是什么意思呢?

在 "Bidirectional Encoder Representation from Transformers" (BERT) 中的 "Bidirectional" 这个词,指的是模型在处理文本数据时能够同时考虑文本中的前后上下文信息。

以下是对 "Bidirectional" 的具体解释:

(1)传统单向语言模型:在 BERT 之前,常见的语言模型如 LSTM 或 GRU,通常是单向的。这意味着它们要么从左到右(正向)读取文本信息,要么从右到左(反向)读取。这样,每个词的表示只包含了它在一个方向上的上下文信息。

(2)双向性:而 "Bidirectional" 意味着模型在处理一个词时,能够同时考虑这个词左边和右边的上下文。这样,每个词的表示都能融合来自两个方向的信息,从而更加全面地理解词义和上下文。

在 BERT 模型中,"Bidirectional" 的实现方式如下:

(1)**Masked Language Model (MLM) **:在训练过程中,随机地遮盖(mask)输入序列中的一些词,然后要求模型预测这些被遮盖的词。由于模型不知道哪些词会被遮盖,因此它必须考虑所有词在两个方向上的上下文。

(2)**Next Sentence Prediction (NSP) **:在训练时,模型还会接收成对的句子作为输入,并学习预测第二个句子是否是第一个句子的后续。这进一步增强了模型对上下文的理解。

通过这种方式,BERT 成为了一个真正意义上的双向模型,它能够捕获文本中的复杂依赖关系,并在各种自然语言处理任务中取得了显著的性能提升。

Transformer的编码器本质上是双向的,因为它可以双向读取句子。因此,BERT基本上是从Transformer获得的双向编码器表示(the Bidirectional Encoder Representation obtained from the Transformer)。

让我们通过一个例子来理解BERT是如何作为Transformer的双向编码器表示的。让我们使用上一节中看到的同一个句子。

假设我们有句子A:He got bit by Python。现在,我们将这个句子作为输入喂给Transformer的编码器,并得到句子中每个单词的上下文表示(embedding,嵌入)作为输出。一旦我们将句子作为输入喂给编码器,编码器就会使用多头注意力机制(将句子中的每个单词与句子中的所有单词关联起来,以学习单词之间的关系和上下文意义)理解句子中每个单词的上下文,并返回句子中每个单词的上下文表示作为输出。

如下图所示,我们将句子作为输入喂给Transformer的编码器,并得到句子中每个单词的表示(representation)作为输出。我们可以堆叠N个编码器,如下图所示。我们只展开了编码器1,以减少混乱。在下面的图中,R_He是单词"He"的表示,R_got是单词"got"的表示,以此类推。每个标记的表示大小将是编码器层的大小。假设编码器层的大小是768,那么每个标记的表示大小将是768:

图2.3 -- BERT生成句子中每个单词的表示

同样,如果我们把句子B,"Python is a popular programming language.",喂给Transformer的编码器,我们得到句子中每个单词的上下文表示作为输出,如下图所示:

图2.4 -- BERT生成句子中每个单词的表示

因此,使用BERT模型,对于给定的句子,我们得到句子中每个单词的上下文表示(embedding,嵌入)作为输出。

现在我们了解了BERT是如何生成上下文表示的,接下来我们将查看BERT的不同配置。


感谢您的阅读,欢迎关注!


相关推荐
Liaiyang666 分钟前
空圈容错视角下的无人机全链路审计:从理论框架到耦合式检验
人工智能·pytorch·python·深度学习·系统架构·自动驾驶·无人机
liuchangng6 分钟前
Jev 模型研究:从生成式大模型到决策式模型——System One、RLCD 校准与采用边界
java·javascript·人工智能·python·深度学习
GPU实战笔记7 分钟前
本地跑不动 llama.cpp,临时租云 GPU 怎么搭?从启动服务到环境复用
java·服务器·网络·人工智能·深度学习·llama
Seoyoneh11 分钟前
智能客服意图识别实战:深度学习与规则引擎融合架构与落地实践
人工智能·信息与通信·通信
珠海西格电力12 分钟前
零碳园区管理系统“智慧大脑”功能对园区运营成本的影响有哪些?
大数据·人工智能·安全·系统架构·能源
江畔柳前堤19 分钟前
字节跳动·大模型应用知识手册
前端·人工智能·深度学习·opencv·目标检测·重构·transformer
程序员z728 分钟前
RAG 系统评测实战:从指标设计到落地闭环
人工智能
CCC:CarCrazeCurator30 分钟前
从算子到智能系统:理解 MLP、CNN、Transformer、JEPA、VLA 与世界模型
人工智能·深度学习
程序员z737 分钟前
Agent 评测体系怎么搭:从指标设计到工程闭环
人工智能
NeoGressAI外贸数字化38 分钟前
外贸独立站多语言缓存命中率低?5 个成因与排查脚本
人工智能