热门标签 | 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

    在这里插入图片描述


推荐阅读
  • 在1995年,Simon Plouffe 发现了一种特殊的求和方法来表示某些常数。两年后,Bailey 和 Borwein 在他们的论文中发表了这一发现,这种方法被命名为 Bailey-Borwein-Plouffe (BBP) 公式。该问题要求计算圆周率 π 的第 n 个十六进制数字。 ... [详细]
  • CRZ.im:一款极简的网址缩短服务及其安装指南
    本文介绍了一款名为CRZ.im的极简网址缩短服务,该服务采用PHP和SQLite开发,体积小巧,约10KB。本文还提供了详细的安装步骤,包括环境配置、域名解析及Nginx伪静态设置。 ... [详细]
  • 从理想主义者的内心深处萌发的技术信仰,推动了云原生技术在全球范围内的快速发展。本文将带你深入了解阿里巴巴在开源领域的贡献与成就。 ... [详细]
  • 本文详细介绍了如何正确设置Shadowsocks公共代理,包括调整超时设置、检查系统限制、防止滥用及遵守DMCA法规等关键步骤。 ... [详细]
  • 理解浏览器历史记录(2)hashchange、pushState
    阅读目录1.hashchange2.pushState本文也是一篇基础文章。继上文之后,本打算去研究pushState,偶然在一些信息中发现了锚点变 ... [详细]
  • Jupyter Notebook多语言环境搭建指南
    本文详细介绍了如何在Linux环境下为Jupyter Notebook配置Python、Python3、R及Go四种编程语言的环境,包括必要的软件安装和配置步骤。 ... [详细]
  • 机器学习(ML)三之多层感知机
    深度学习主要关注多层模型,现在以多层感知机(multilayerperceptron,MLP)为例,介绍多层神经网络的概念。隐藏层多层感知机在单层神经网络的基础上引入了一到多个隐藏 ... [详细]
  • 在Effective Java第三版中,建议在方法返回类型中优先考虑使用Collection而非Stream,以提高代码的灵活性和兼容性。 ... [详细]
  • 长期从事ABAP开发工作的专业人士,在面对行业新趋势时,往往需要重新审视自己的发展方向。本文探讨了几位资深专家对ABAP未来走向的看法,以及开发者应如何调整技能以适应新的技术环境。 ... [详细]
  • 本题要求计算一组正整数的最小公倍数(LCM)。输入包括多组测试数据,每组数据首先给出一个正整数n,随后是n个正整数。 ... [详细]
  • 本文档详细介绍了购物车系统V0612版中的用户登录机制及购物功能实现方法。 ... [详细]
  • 全选 jquery
    2019独角兽企业重金招聘Python工程师标准$(#checkAllSelectedOrganization).live(click,function(){$(in ... [详细]
  • C# 中创建和执行存储过程的方法
    本文详细介绍了如何使用 C# 创建和调用 SQL Server 存储过程,包括连接数据库、定义命令类型、设置参数等步骤。 ... [详细]
  • 在Java开发中,保护代码安全是一个重要的课题。由于Java字节码容易被反编译,因此使用代码混淆工具如ProGuard变得尤为重要。本文将详细介绍如何使用ProGuard进行代码混淆,以及其基本原理和常见问题。 ... [详细]
  • RTThread线程间通信
    线程中通信在裸机编程中,经常会使用全局变量进行功能间的通信,如某些功能可能由于一些操作而改变全局变量的值,另一个功能对此全局变量进行读取& ... [详细]
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社区 版权所有