首页 > 其他分享 >深度学习经典模型之BERT(下)

深度学习经典模型之BERT(下)

时间:2024-09-23 15:48:04浏览次数:3  
标签:BERT 词元 AI 模型 经典 深度 序列 输入

深度学习经典模型之BERT(上)

在"深度学习经典模型之BERT(上)"我们描述了BERT基本信息、意义、与GPT和Transformer的区别、预训练、自监督等相关信息后,本章节将介绍BERT的输入、Encoder、微调及两个主流变种。

BERT inputs

切词方法


BERT的切词方法用的是WordPiece embeddings,其思想是如果一个词在整个里面出现的概率不大的话,就应该把它切开,看他的一个子序列,如果它的一个子序列(比如它的词根)出现的概率很大,那么只保留这个子序列就好了,这样可以把一个相对长的词切成一段又一段的片段,这些片段还是经常出现的,就可以用相对较小的30k的词典就能表示一个比较的文本。这样可以避免按照空格切词时一个词作一个token会让数量大进而导致词典变大,让可学习的参数都集中在了嵌套层里的问题。

序列的第一个词永远是一个特殊词元[CLS]代表序列开始(全称:classification), 在每个句子后面放一个特殊词[SEP]表示separate或end,全称separator。如上图所示。

image.png

输入嵌入


Bert输入嵌入包含三部分的内容:token embeddings,position embeddings,和Segment Embeddings(token所属段落编码的embeddings),示意如上图所示。 即对于每一个token(词元)在BERT的向量表示这个token本身的embedding加上它在哪个句子的embedding再加上位置的embedding.

在Transfomer里面位置信息是手动构造出的矩阵,但是在BERT里面不管你是属于哪个句子还是位置在哪,它对应的向量的表示都是通过学习而来的。

  • Token Embeddings:采用look up的方式,将每个token转换成768维的向量。
  • Segment Embeddings:BERT支持双句输入,Segment(0,1)用于区分a、b句。
  • Position Embeddings:采用训练式位置编码,通过look up获取位置编码。

transformer的输入是由 word embedding + position embedding组合而成的向量x.

BERT Encoder

基础架构


image.png

BERT的Encoder包含三个部分的内容:输入、多头注意力与前馈神经网络。对应的是Transformer的Encooder部分, 其中输入部件的组成比Transormer多了一层,具体见Bert input章节。

Bert与Transformer不同的是,BERT仅采用Transfomer的Encoder,分为BERT bae与BERT large,其层数等参数都有所不同。

BERT Base信息

BERT-base采用12层的Transformer Encoder堆叠,上一层的输出作为下一层的输入,基本信息与架构图如下:

基本信息架构示意图
encoder层数(layers) :12层 模型最大输长度(max_len): 512 维度(dim): 768 头数(Head,简称h):12 参数: 110M GPU:7G+image.png

BERT large信息

BERT-large采用24层的Transformer Encoder堆叠,上一层的输出作为下一层的输入,基本信息与架构图如下:

基本信息架构示意图
encoder层数(layers):24层 模型最大输长度(max_len): 1024 维度(dim): 768 头数(Head,简称h):16 参数: 340M GPU:32G+image.png

BERT Fintune - 微调

预微调模块


BERT本质是通过在海量的语料的基础上运行自监督学习方法为单词学习一个好的特征表示。通过大量的数据预训练得到的通用模型,后续基于通用模型再进行微调。

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

image.png

微调任务


句对分类任务

判断两句子之间的关系,如句子语义相似度、句子连贯性判定等,其本质是文本分类。

  • 输入: 两句子,[CLS]sentence1[SEP]sentence2[SEP]
  • 输出: 句子关系标签。
  • 做法: 和单句分类操作一样,只不过是二分类。

单句分类任务

单句分类任务是判断句子属于哪个类别,如新闻分类、问题领域分类等。

  • 输入: 一个句子,形如 [CLS]sentence[SEP];
  • 输出: 输出句子类别标签。
  • 做法: 选择bert模型输出的第一个位置的token,也就是[CLS]的向量作为下游任务的输入。

QA任务

给定问答和一段文本,从文本中抽取出问题的答案,如机器阅读理解等。其本质是序列标注。

  • 输入: 一个问题,一段文本,形如[CLS]question[SEP]content[SEP]
  • 输出: 答案在文本中的索引(标出答案的位置)。

NER任务

NER(Named Entity Recognition 命名实体识别)的过程,就是根据输入的句子,预测出其序列标注的过程。

  • 输入: 念熹在清华大学的体育场看了中国男篮的一场比赛
  • 输出: B-PER,E-PER,O, B-ORG,I-ORG,I-ORG,E-ORG,O,B-LOC,E-LOC,O,O,B-ORG,I-ORG,I-ORG,E-ORG,O,O,O,O

其中,“念熹”以PER,“清华大学”以ORG,“体育场”以LOC,“中国男篮”以ORG为实体类别分别挑了出来。

BIOES标注方式中含义

B,即Begin,表示开始
I,即Intermediate,表示中间
E,即End,表示结尾
S,即Single,表示单个字符
O,即Other,表示其他,用于标记无关字符

BERT变种

RoBERTa - 主流


特点

  • 舍弃NSP任务,并使用更长的序列长度
  • 使用更多的预训练数据 (由16GB 升-> 160GB)
  • 更大的batch size (batch size 256 -> batch size 8K)
  • 使用更大的词表 (30K -> 50K)

括号中的数据代表传统bert到ROBERTa时配置变化

动态掩码

原本的BERT采用的是static mask的方式,就是在create pretraining data中,先对数据进行提前的mask。

为了避免在每个epoch中使用相同的mask数据,充分利用数据,定义了dupe factor,这样可以将训练数据复制dupe factor份,然后同一条数据可以有不同的mask,注意这些数据不是全部都喂给同一个epoch,是不同的epoch,例如dupe factor=10,epoch=40则每种mask的方式在训练中会被使用4次。

动态掩码的方式在模型训练阶段实时计算掩码的位置和方法,能够最大限度的保证同一段文本在不同epoch下使用不同的掩码模式,提高了数据的复用效率

ALBERT


  • 词向量因式分解。BERT中 embedding 维度E与Transformer 隐层维度 H一致ALBERT 引入词向量因式分解方法解耦E和H,先将词向量编码到低维空间E,然后通过个全连接层将E映射到H,计算复杂度从 (VH) 降低到 (VE + EH)
  • Transformer 跨层参数共享。ALBERT中每一层Transformer的参数都是一样的,类似于一个循环结构,每次都经过相同的Transformer层
  • 引入sop (Sentence Order Prediction) 任务代替NSP任务

附:Bert中的特殊词元表示

在BERT中,和是特殊的词元(token),用于在输入序列中标记特定的位置和边界。

[CLS]


[CLS]它是表示序列开头的特殊词元,全称为"classification"。在BERT中,输入序列的第一个位置被标记为[CLS],用于表示整个序列的概括信息。在训练过程中,BERT模型学习使用位置的表示来进行各种分类任务,例如文本分类、情感分析等。在编码后的表示中,[CLS]位置的向量通常用作整个序列的汇总表示。

[SEP]


[sep]它是表示序列分割的特殊词元,全称为"separator"。在BERT中,输入的文本序列可以由多个片段(segments)组成,例如两个句子或一个问题和一个回答。为了将这些片段分隔开,[sep]词元用于标记不同片段的边界。它出现在片段之间和序列的末尾,用于告知BERT模型输入序列的结构。

[PAD]


[PAD]它表示填充(padding)的词元,在输入序列中用于填充长度不足的片段或序列。填充是为了使所有输入序列具有相同的长度,以便进行批量处理。

[MASK]


[MASK]它表示掩蔽(mask)的词元,在预训练阶段用于生成掩蔽语言模型(Masked Language Model,MLM)任务。在训练过程中,输入序列中的一部分词元会被随机选择并替换为[MASK]词元,模型需要预测被掩蔽的词元。

[UNK]


[UNK]它表示未知(unknown)的词元,用于表示在预训练期间未见过的词汇。当输入序列中出现未登录词(out-of-vocabulary)时,这些词元将被替换为[UNK]词元。

这些特殊的词元表示方式使BERT模型能够处理不同类型的输入和执行不同的任务,例如分类、回归、命名实体识别等。它们提供了对输入序列的结构和语义的信息,并且在预训练和微调阶段起到关键的作用。

除了[CLS],[SEP],[MASK],[UNK]之外,BERT还可以使用其他自定义的特殊词元表示方式,具体取决于具体的应用场景和任务需求。比如 领域特定词元、标签词元、实体词元等。


如果您也对AI大模型感兴趣想学习却苦于没有方向

标签:BERT,词元,AI,模型,经典,深度,序列,输入
From: https://blog.csdn.net/aidashuju/article/details/142460429

相关文章

  • 关于深度学习量化的操作
    0.简介深度学习中做量化提升运行速度是最常用的方法,尤其是大模型这类非常吃GPU显存的方法。一般是高精度浮点数表示的网络权值以及激活值用低精度(例如8比特定点)来近似表示达到模型轻量化,加速深度学习模型推理,目前8比特推理已经比较成熟。比如int8量化,就是让原来32bit存储的数字映......
  • Android经典实战之组件化原理、优缺点、实现方法?
    本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点组件化的原理组件化是一种软件架构设计方法,它将复杂的应用程序分解为更小、更易于管理的模块或组件。在Android开发中,组件化允许开发者将应用分割成独立的、可复用的模块,每个......
  • 深度解析APS系统异常预警处理:从识别到解决的全流程策略
    订单发生变更当企业接收到产品加工订单发生变更的通知时,立即启动快速响应机制。包括指派专人负责跟进此事,并确保该信息能够迅速传递到所有相关部门和人员。同时,直接访问APS(高级计划与排程)系统,准备对受影响的订单进行详细审查。1.确认变更在APS系统中,详细检查发生变更的订单信......
  • 《深度学习》卷积神经网络CNN 原理及其流程解析
    目录一、CNN图像原理1、了解图像的原理2、举例二、CNN图像识别1、画面不变性2、主要表现    1)平移不变性    2)尺度不变性    3)旋转不变性3、传统神经网络识别    1)数据预处理    2)特征提取    3)搭建神经网络模型......
  • 深度学习速通系列:在命名实体识别中有哪些标注方法?
    命名实体识别(NER)是自然语言处理(NLP)中的一项关键任务,它涉及到从文本中识别出具有特定意义的实体,如人名、地名、机构名等。为了实现NER,有多种序列标注方法可以应用,以下是几种常见的方法:BIO标注法:这是最基本的序列标注方法,使用三个标签:B(Begin)表示实体的开始,I(Inside)表示实体内......
  • 深度学习速通系列:什么是文本数据标注
    文本数据标注是机器学习和人工智能领域中的一个重要环节,它涉及将文本中的信息进行分类、识别和标记,以便机器学习模型能够更好地理解和处理这些数据。文本数据标注的类型包括但不限于命名实体标注、情感标注、关系标注、意图标注和语义标注等。标注类型:命名实体标注(NamedE......
  • BERT的代码实现
    目录1.BERT的理论2.代码实现  2.1构建输入数据格式 2.2定义BERT编码器的类 2.3BERT的两个任务2.3.1任务一:MaskedLanguageModelingMLM掩蔽语言模型任务 2.3.2 任务二:nextsentenceprediction3.整合代码  4.知识点个人理解 1.BERT的理论BERT全称叫做......
  • 故障诊断│GWO-DBN灰狼算法优化深度置信网络故障诊断
    1.引言随着人工智能技术的快速发展,深度学习已经成为解决复杂问题的热门方法之一。深度置信网络(DBN)作为深度学习中应用比较广泛的一种算法,被广泛应用于分类和回归预测等问题中。然而,DBN的训练过程通常需要大量的时间和计算资源,因此如何提高DBN的训练效率成为一个重要的研究方向......
  • 深度学习:(六)激活函数的选择与介绍
    激活函数之前使用的a=σ(z)......
  • 深度解析SAP业务技术云平台的优势
    在当今数字化快速发展的时代,企业对于高效、灵活且安全的业务解决方案的需求日益增长。SAP业务技术云平台应运而生,它为企业带来了诸多显著的优势。 一、集成性优势1.全面的业务功能集成   SAP业务技术云平台集成了众多关键的业务功能,如财务、客户关系管理、项目管理、人员......