zoukankan      html  css  js  c++  java
  • Google BERT摘要

    1.BERT模型

    BERT的全称是Bidirectional Encoder Representation from Transformers,即双向Transformer的Encoder,因为decoder是不能获要预测的信息的。模型的主要创新点都在pre-train方法上,即用了Masked LM和Next Sentence Prediction两种方法分别捕捉词语和句子级别的representation。

    1.1 模型结构

    由于模型的构成元素Transformer已经解析过,就不多说了,BERT模型的结构如下图最左:

    对比OpenAI GPT(Generative pre-trained transformer),BERT是双向的Transformer block连接;就像单向rnn和双向rnn的区别,直觉上来讲效果会好一些。

    对比ELMo,虽然都是“双向”,但目标函数其实是不同的。ELMo是分别以[公式] 和 [公式] 作为目标函数,独立训练处两个representation然后拼接,而BERT则是以 [公式] 作为目标函数训练LM。

    1.2 Embedding

    这里的Embedding由三种Embedding求和而成:

    其中:

    • Token Embeddings是词向量,第一个单词是CLS标志,可以用于之后的分类任务
    • Segment Embeddings用来区别两种句子,因为预训练不光做LM还要做以两个句子为输入的分类任务
    • Position Embeddings和之前文章中的Transformer不一样,不是三角函数而是学习出来的

    总结:

    1. BERT的特征提取,是在捕捉词的(前后)位置关系。bidirectional决定了能获得前后的关系,position embedding决定了能学到更长的顺序关系。

    2.训练,分为pre-train和fine-tune。pre-train中用到了MLM, Masked LM.

    3. trick: MLM. 在训练过程中作者随机mask 15%的token,而不是把像cbow一样把每个词都预测一遍。最终的损失函数只计算被mask掉那个token。

    4. 缺点: (1)[MASK]标记在实际预测中不会出现,训练时用过多[MASK]影响模型表现

                 (2)每个batch只有15%的token被预测,所以BERT收敛得比left-to-right模型要慢(它们会预测每个token)

    https://zhuanlan.zhihu.com/p/46652512

    https://arxiv.org/pdf/1810.04805.pdf

    https://jalammar.github.io/illustrated-transformer/

  • 相关阅读:
    SQList基础+ListView基本使用
    Git本地上传口令
    记住用户名和登录密码+虚拟机没有root权限解决办法
    API+gir上传错误解决办法
    界面跳转+信息传递+AS中如何将ADV转移到其他盘中
    界面跳转
    Android学习——ListView
    开课第一周周总结
    体温上报APP——班级统计
    体温上报APP——打印
  • 原文地址:https://www.cnblogs.com/eniac1946/p/11167711.html
Copyright © 2011-2022 走看看