金环建设集团有限公司官方网站,广西建设网是正规网站吗,Wordpress支持分布发布吗,做网站编写1 BERT简介
BERT是2018年10月由Google AI研究院提出的一种预训练模型.
BERT的全称是Bidirectional Encoder Representation from Transformers.BERT在机器阅读理解顶级水平测试SQuAD1.1中表现出惊人的成绩#xff1a;全部两个衡量指标上全面超越人类#xff0c;并且在11种不…1 BERT简介
BERT是2018年10月由Google AI研究院提出的一种预训练模型.
BERT的全称是Bidirectional Encoder Representation from Transformers.BERT在机器阅读理解顶级水平测试SQuAD1.1中表现出惊人的成绩全部两个衡量指标上全面超越人类并且在11种不同NLP测试中创出SOTA表现。包括将GLUE基准推高至80.4% (绝对改进7.6%)MultiNLI准确度达到86.7% (绝对改进5.6%)成为NLP发展史上的里程碑式的模型成就。
2 BERT的架构
总体架构 如下图所示最左边的就是BERT的架构图可以很清楚的看到BERT采用了Transformer Encoder block进行连接因为是一个典型的双向编码模型。 从上面的架构图中可以看到宏观上BERT分三个主要模块
最底层黄色标记的Embedding模块中间层蓝色标记的Transformer模块最上层绿色标记的预微调模块
2.1 Embedding模块
BERT中的该模块是由三种Embedding共同组成而成如下图 Token Embeddings 是词嵌入张量第一个单词是CLS标志可以用于之后的分类任务 Segment Embeddings 是句子分段嵌入张量是为了服务后续的两个句子为输入的预训练任务 Position Embeddings 是位置编码张量此处注意和传统的Transformer不同不是三角函数计算的固定位置编码而是通过学习得出来的 整个Embedding模块的输出张量就是这3个张量的直接加和结果 2.2 双向Transformer模块
BERT中只使用了经典Transformer架构中的Encoder部分完全舍弃了Decoder部分。而两大预训练任务也集中体现在训练Transformer模块中。
2.3 预微调模块
经过中间层Transformer的处理后BERT的最后一层根据任务的不同需求而做不同的调整即可比如对于sequence-level的分类任务BERT直接取第一个[CLS] token 的final hidden state再加一层全连接层后进行softmax来预测最终的标签对于不同的任务微调都集中在预微调模块几种重要的NLP微调任务架构图展示如下 在面对特定任务时只需要对预微调层进行微调就可以利用Transformer强大的注意力机制来模拟很多下游任务并得到SOTA的结果(句子对关系判断单文本主题分类问答任务(QA)单句贴标签(NER))。若干可选的超参数建议如下: Batch size: 16, 32Learning rate (Adam): 5e-5, 3e-5, 2e-5Epochs: 3, 4 3 BERT的预训练任务
BERT包含两个预训练任务
任务一Masked LM (带mask的语言模型训练)任务二Next Sentence Prediction (下一句话预测任务)
3.1 任务一Masked LM
带mask的语言模型训练
关于传统的语言模型训练都是采用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 apple2.3: 在10%的概率下, 保持该token不变, 比如my dog is hairy - my dog is hairy3: 模型在训练的过程中, 并不知道它将要预测哪些单词? 哪些单词是原始的样子? 哪些单词被遮掩成了[MASK]? 哪些单词被替换成了其他单词? 正是在这样一种高度不确定的情况下, 反倒逼着模型快速学习该token的分布式上下文的语义, 尽最大努力学习原始语言说话的样子. 同时因为原始文本中只有15%的token参与了MASK操作, 并不会破坏原语言的表达能力和语言规则.
3.2 任务二: Next Sentence Prediction
下一句话预测任务
在NLP中有一类重要的问题比如QA(Quention-Answer)NLI(Natural Language Inference)需要模型能够很好的理解两个句子之间的关系从而需要在模型的训练中引入对应的任务。在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%的准确率.