首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >BERT模型介绍

BERT模型介绍

原创
作者头像
@小森
发布2024-12-25 11:18:25
发布2024-12-25 11:18:25
9.2K0
举报

BERT(Bidirectional Encoder Representations from Transformers)是Google在2018年提出的一种预训练语言模型,它在自然语言处理(NLP)领域引起了广泛的关注和应用。BERT的核心思想是通过双向Transformer编码器(双向的编码器部分

)来捕捉文本中的上下文信息,从而生成更丰富的语言表示。

BERT的架构

BERT基于Transformer架构,特别是Transformer的编码器部分。BERT使用了多层Transformer编码器堆叠在一起,每一层都包含多头自注意力机制和前馈神经网络。

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

宏观上BERT分三个主要模块:

  • 最底层黄色标记的Embedding模块.
  • 中间层蓝色标记的Transformer模块.
  • 最上层绿色标记的预微调模块.

Embedding模块

BERT中的该模块是由三种Embedding共同组成

  • Token Embeddings 是词嵌入张量, 第一个单词是CLS标志, 可以用于之后的分类任务
  • Segment Embeddings 是句子分段嵌入张量, Segment Embedding 帮助模型区分句子之间的关系
  • Position Embeddings 是位置编码张量, 和传统的Transformer不同, 不是三角函数计算的固定位置编码, 而是通过学习得出来的

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

双向Transformer模块

BERT中只使用了经典Transformer架构中的Encoder部分, 完全舍弃了Decoder部分. 而两大预训练任务也集中体现在训练Transformer模块中。

预微调模块

经过中间层Transformer的处理后, BERT的最后一层根据任务的不同需求而做不同的调整

通常取最后一层输出的第一个位置(即[CLS]标记的表示),然后通过一个全连接层(Dense Layer)进行分类。

对于不同的任务, 微调都集中在预微调模块, 几种重要的NLP微调任务架构图:

  • 句子对分类任务(Sentence Pair Classification Tasks)
  • 单句子分类任务(Single Sentence Classification Tasks)
  • 问答任务(Question Answering Tasks)
  • 单句子标注任务(Single Sentence Tagging Tasks)

BERT包含两个预训练任务,帮助模型学习到丰富的语言表示:

  • 任务一: Masked LM (带mask的语言模型训练)
  • 任务二: Next Sentence Prediction (下一句话预测任务)

任务一: Masked LM

带 Mask 的语言模型训练(Masked Language Model, MLM)是 BERT 的核心预训练任务之一。它的主要目的是通过遮蔽输入序列中的某些词,让模型根据上下文预测这些被遮蔽的词。MLM 的设计使得 BERT 能够学习到双向的上下文信息。

在原始训练文本中, 随机的抽取15%的token作为参与MASK任务的对象,在这些被选中的token中, 数据生成器并不是把它们全部变成[MASK], 而是有下列3种情况:

  1. 在80%的概率下, 用[MASK]标记替换该token, 比如my dog is hairy -> my dog is [MASK]
  2. 在10%的概率下, 用一个随机的单词替换token, 比如my dog is hairy -> my dog is apple
  3. 在10%的概率下, 保持该token不变, 比如my dog is hairy -> my dog is hairy

任务二: Next Sentence Prediction

在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 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • BERT的架构
    • Embedding模块
    • 双向Transformer模块
    • 预微调模块
    • 任务一: Masked LM
    • 任务二: Next Sentence Prediction
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档