神经网络之BERT深度剖析

关于BERT

作者:白鹿(花名)

声明:以下介绍均以bert_base为基础进行介绍;

网络结构

神经网络之BERT深度剖析
  • 从上面的架构图中可以看到, 宏观上BERT分三个主要模块.

  • 最底层黄色标记的Embedding模块.

  • 中间层蓝色标记的Transformer模块.

  • 最上层绿色标记的预微调模块.

; Embedding模块:

BERT中的该模块是由三种Embedding共同组成而成, 如下图

神经网络之BERT深度剖析

Token Embeddings 是词嵌入张量, 以[CLS]为起始位标志,[SEP]为结束位标识, 用于之后的分类任务.

Segment Embeddings 是句子分段嵌入张量, 是为了服务后续的两个句子为输入的预训练任务.

Position Embeddings 是位置编码张量, 此处注意和传统的Transformer不同, 不是三角函数计算的固定位置编码, 而是通过学习得出来的.

整个Embedding模块的输出张量就是这3个张量的直接加和结果.

双向Transformer模块:

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

Base:12

Large:24

预微调模块:

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

比如对于sequence-level的分类任务, BERT直接取第一个[CLS] token 的final hidden state, 再加一层全连接层后进行softmax来预测最终的标签.

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

神经网络之BERT深度剖析
从上图中可以发现, 在面对特定任务时, 只需要对预微调层进行微调, 就可以利用Transformer强大的注意力机制来模拟很多下游任务, 并得到SOTA的结果. (句子对关系判断, 单文本主题分类, 问答任务(QA), 单句贴标签(NER))

; BERT的预训练任务介绍

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

  • 任务一: Masked LM (带mask的语言模型训练)

神经网络之BERT深度剖析

关于传统的语言模型训练, 都是采用left-to-right, 或者left-to-right + right-to-left结合的方式, 但这种单向方式或者拼接的方式提取特征的能力有限. 为此BERT提出一个深度双向表达模型(deep bidirectional representation). 即采用MASK任务来训练模型.

1: 在原始训练文本中, 随机的抽取15%的token作为参与MASK任务的对象.

2: 在这些被选中的token中, 数据生成器并不是把它们全部变成[MASK], 而是有下列3种情况.

2.1: 在80%的概率下, 用[MASK]标记替换该token, 比如my dog is hairy -> my dog is [MASK]
2.2: 在10%的概率下, 用一个随机的单词替换token, 比如my dog is hairy -> my dog is apple
2.3: 在10%的概率下, 保持该token不变, 比如my dog is hairy -> my dog is hairy
3: 个人想法: 模型在训练的过程中, 并不知道它将要预测哪些单词? 哪些单词是原始的样子? 哪些单词被遮掩成了[MASK]? 哪些单词被替换成了其他单词? 正是在这样一种高度不确定的情况下, 反倒逼着模型快速学习该token的分布式上下文的语义, 尽最大努力学习原始语言说话的样子. 同时因为原始文本中只有15%的token参与了MASK操作, 并不会破坏原语言的表达能力和语言规则.

  • 任务二: Next Sentence Prediction (下一句话预测任务)

在NLP中有一类重要的问题比如QA(Quention-Answer)需要模型能够很好的理解两个句子之间的关系, 从而需要在模型的训练中引入对应的任务. 在BERT中引入的就是Next Sentence Prediction任务. 采用的方式是输入句子对(A, B), 模型来预测句子B是不是句子A的真实的下一句话.

1: 所有参与任务训练的语句都被选中作为句子A.(此处其实是引入了是随机数来控制正负例的构造比例,样本量足够大的时候基本可以达到正负例样本均衡状态)
1.1: 其中50%的B是原始文本中真实跟随A的下一句话. (标记为IsNext, 代表正样本)
1.2: 其中50%的B是原始文本中随机抽取的一句话. (标记为NotNext, 代表负样本)
2: 在任务二中, BERT模型可以在测试集上取得97%-98%的准确率.

Bert细节概括

关于max_senquence_length, (句子对组合长度

Original: https://blog.csdn.net/qq_41475067/article/details/123086886
Author: 福将~白鹿
Title: 神经网络之BERT深度剖析

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/531005/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球