热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

我所了解的bert模型整理!!

文章目录BERT是什么语言模型Mask机制BERTBertvsTransformerBertModelInputBertModelOutputBertMaskedLanguageM


文章目录

  • BERT是什么
  • 语言模型
  • Mask机制
  • BERT
    • Bert vs Transformer
    • Bert Model Input
    • Bert Model Output
    • Bert Masked Language Model
    • Bert Next Sentence Prediction
    • Bert with Feature Extraction
  • Bert应用场景
  • Bert-GPT-ELMo
    • ELMo
      • EMLo的俩种方式
    • GPT
  • vanilla transformer
  • Transfomer-XL(2019-01)
  • XLNet(2019-06)
  • ALBERT


BERT是什么


  • BERT是Transformer的双向编码器表示的缩写。它是由Google在2018年末开发和发布的一种新型语言模型。像BERT这样的预训练语言模型在许多自然语言处理任务中发挥着重要作用,
    • 例如问答,命名实体识别,自然语言推理,文本分类等等

语言模型


  • 语言模型(Language Modeling)会根据前面单词来预测下一个单词 /NLP中最基础的模型结构(可以应用到各个NLP的应用场景中)。常 用的语言模型有:N-gram、Word2Vec、ELMo、OpenAI GPT、Bert、 XLNet、ALBert;

Mask机制


  • Mask:遮挡掩盖的意思,比如:把需要预测的词给挡住。主要出 现出现在OpenAI GPT和Bert中。

BERT


  • bert主要的问题就是计算量非常的大,参数量非常的多,所以在使用的时候一定要有好的设备。并且bert是一个与训练好的模型,经常应用于数据的预处理阶段。
  • bert中的新特征
    • Bidirectional Transformers (Transformer)

    • Pre-training

      • Masked Language Model(掩蔽语言模型)
      • Next Sentence Predictio(下一个句子预测)

      在这里插入图片描述

  • Bert一共有俩个,一个为小的Bert共12层,大的Bert24层效果更好,相对参数也多。在这里插入图片描述

Bert vs Transformer


  • Bert中Encoder Layers是12/24层,而Transformer则是6层;
  • Bert中E前馈神经网络单元是768/1024维度的,而Transformer则是512;
  • Bert中 Multi Headed Attention是12/16个,而Transformer则是8;
  • Bert Encoder中有Mask 机制,而Transformer中没有Mask 机制;
  • Bert词嵌入是单词+位置信息+segment,而Transformer单词+位置信息;
  • Bert的网络输入存在占位符[CLS], Transformer没有;

Bert Model Input

在这里插入图片描述


Bert Model Output

在这里插入图片描述Bert和CNN中的VGG类似,都是提取高阶特征,如下图:
在这里插入图片描述


Bert Masked Language Model

在这里插入图片描述


Bert Next Sentence Prediction

第一个预测值是与众不同的他是来提取整个序列的信息的。
在这里插入图片描述


Bert with Feature Extraction

Bert有12层,每一层的输出都是高阶向量,都可以自由使用。
在这里插入图片描述

下面用“hello”做了一个实验,用于命名实体识别任务CoNLL-2003 NER,效果如下图:在这里插入图片描述


Bert应用场景

在这里插入图片描述


Bert-GPT-ELMo

EMLo采用的是第一种方法。
在这里插入图片描述


ELMo

在这里插入图片描述


EMLo的俩种方式

EMLo采用的是第一种,下图红色框。第二中会带来信息泄露。
在这里插入图片描述


GPT


  • GPT在BooksCorpus(800M单词)训练;BERT在BooksCorpus(800M单词)和维基百科(2,500M单词)训 练。
  • GPT使用一种句子分隔符([SEP])和分类符词块([CLS]),它们仅在微调时引入;BERT在预训练期间 学习[SEP],[CLS]和句子A/B嵌入。
  • GPT用一个批量32,000单词训练1M步;BERT用一个批量128,000单词训练1M步。
  • GPT对所有微调实验使用的5e-5相同学习率;BERT选择特定于任务的微调学习率,在开发集表现 最佳。
  • GPT是12层,Bert是24层。
  • GTP使用的是Transformer的类似Decoder结构(单向的Transformer,里面没有Encoder-Decoder Attention,只有Mask Self-Attention和FFNN),Bert使用的是Encoder结构(双向Transformer)

在这里插入图片描述


vanilla transformer


  • 属于一种语言模型的训练方式,来根据之前的字符预测片段中的下一个字符;论 文中采用64层模型,并仅限于处理512个字符的输入,因此如果序列太长会进行分 段,然后每段进行学习训练。
  • 论文:https://arxiv.org/pdf/1808.04444.pdf
  • 缺陷:
    • 上下文长度受限:字符之间的最大依赖距离受输入长度的限制,模型看不到出现在几个句 子之前的单词。
    • 上下文碎片:对于长度超过512个字符的文本,都是从头开始单独训练的。段与段之间没有 上下文依赖性,会让训练效率低下,也会影响模型的性能。
    • 推理速度慢:在测试阶段,每次预测下一个单词,都需要重新构建一遍上下文,并从头开 始计算,这样的计算速度非常慢。

在这里插入图片描述


Transfomer-XL(2019-01)


  • RNN和Transformer都可以学习序列之间的依赖关系,但是对于长时依赖 上都存在一定的局限性,在vanilla Transformer的基础上,Transfomer-XL语言模型引入两点创新:
    • 循环机制(Recurrence Mechanism)
    • 相对位置编码(Relative Positional Encoding)
  • 论文:https://arxiv.org/pdf/1901.02860.pdf
  • 代码:https://arxiv.org/pdf/1901.02860.pdf .
  • 解析:https://www.lyrn.ai/2019/01/16/transformer-xl-sota-languagemodel.
    在这里插入图片描述

XLNet(2019-06)


  • XLNet:Generalized Autoregressive Pretraining for Language Understanding
  • 论文: https://arxiv.org/pdf/1906.08237.pdf
  • 解决BERT的问题 (解决,Bert中Transformer是双向的,即考虑前面也要考虑后面,所以只能做编码结构不能做解码结构的问题):
    • 训练数据和测试数据的不一致,训练数据中使用了Mask,测试数据/预测数据中没 有使用Mask,这个问题叫做:pretrain-finetune discrepancy (预训练微调存在差异性,训练的时候做Mask,而迁移学习是时候不加Mask)
    • BERT模型不能用来生成数据。
  • 参考:https://blog.csdn.net/weixin_37947156/article/details/93035607k

ALBERT


  • ALBERT:A Lite BERT for Self-supervised Learning of Language Representations

  • 论文https://arxiv.org/pdf/1909.11942.pdf

  • 解决Bert和XLNet的问题:

    • 模型参数变的更少(因式分解,在Embedding之后的全连接做);
    • 模型使用更少的内存(参数共享);
    • 提升模型效果(损失函数做了一个更新);
  • 参考: https://github.com/brightmart/albert_zh

    在这里插入图片描述


推荐阅读
author-avatar
man_2_瞳皆哥仔
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有