zoukankan      html  css  js  c++  java
  • BERT:Pre-training of Deep Bidirectional Transformers for Language Understanding

    BERT简介

    特点

    1、Transformers

      BERT代表来Transformers的双向编码器表示。BERT旨在通过对所有层的左、右上下文进行联合调节,从未标记的文本中预先训练深层双向表示。

    2、可并行化设计

      对上一层的网络的依赖较小,易设计成并行化。

    一、相关网络结构图

    二、BERT的网络结构介绍

    1、输入

      经过Embedding处理的词向量模型,它包括Token Embeddings、Segmentation Embeddings、Position Embeddings。

    2、输出

      

    3、中间层

      中间层为transformer Encoder模型的组合。对于transformer模型的介绍请参考以下链接:https://www.cnblogs.com/wisteria68/p/13640422.html

    4、框架训练步骤:预训练-->微调

      框架训练有两个步骤:预训练和微调。在预训练过程中,用无标记数据进行模型不同预训练任务的训练。对于微调,首先用预先训练的参数初始化BERT模型,并使用来自下游任务的标记数据对所有参数进行微调。尽管它们是用相同的预先训练的参数初始化的,但每个下游任务都有单独的微调模型。

      BERT的总体预训练和微调程序。除了输出层,在预训练和微调中都使用相同的体系结构。相同的预训练模型参数 用于初始化不同下游任务的模型。微调期间,所有参数均进行微调。[CLS]是在每个输入示例前面添加的一个特殊符号,[SEP]是一个分隔符(例如。 将问题/答案分开)。

    4-1 Task #1: Masked LM

      不幸的是,标准条件语言模型只能从左到右或从右到左进行训练,因为双向条件反射将允许每个单词间接地“看到自己”和模式 我可以在多层上下文中简单地预测目标词。
      为了训练一个深度的双向表示,我们只需按百分比随机地屏蔽一些输入的单词,然后预测那些被屏蔽了的单词。我们把这个过程称为“masked LM”(MLM)。在我们所有的实验中,我们随机地屏蔽了每个序列中15%的单词。
      虽然获得了双向预训练模型,但缺点是在预训练和微调之间产生了不匹配,因为[MASK]在此期间没有出现微调。为了减轻这一点,不总是用实际的[MASK]替换“MASK”单词。训练数据生成器随机选择15%的单词进行预测。随机mask的时候10%的单词会被替代成其他单词,10%的单词不替换,剩下80%才被替换为[MASK]。

    4-2 Task #2: Next Sentence Prediction (NSP)

      许多重要的下游任务,如问答(QA)和自然语言推理(NLI),都是基于理解两个句子之间的关系,而不是通过语言建模直接捕捉到。为了训练能一个理解句子关系的模型,预先训练一个二元化的下一个句子预测任务,它可以从任何单语中简单地生成语料库。具体来说,当为每个预训练示例选择句子A和B时,50%的B是A之后的实际下一个句子(标记为ISNext),50%的是来自语料库的句子(标记为NotNext)。

    三、OpenAI GPT的网络结构介绍

    1、输入、输出

      输入、输出同BERT。

    2、中间层

      中间层为transformer Decoder模型的组合。对于transformer模型的介绍请参考以下链接:
    https://www.cnblogs.com/wisteria68/p/13640422.html

    四、ELMo的网络结构介绍

    1、输入、输出

      输入、输出同BERT。

    2、中间层

      中间层为包含LSTM的循环神经网络。对于循环神经网络模型的介绍请参考以下链接:
    https://www.cnblogs.com/wisteria68/p/13488819.html
    https://www.cnblogs.com/wisteria68/p/13491170.html

  • 相关阅读:
    suse12安装详解
    Centos7上部署openstack mitaka配置详解(将疑难点都进行划分)
    菜鸟帮你跳过openstack配置过程中的坑[文末新添加福利]
    openstack中dashboard页面RuntimeError: Unable to create a new session key. It is likely that the cache is unavailable.
    Multiple network matches found for name 'selfservice', use an ID to be more specific.报错
    查看 SELinux状态及关闭SELinux
    SELinux深入理解
    IP地址、子网掩码、网络号、主机号、网络地址、主机地址
    Oracle job procedure 存储过程定时任务
    POI文件导出至EXCEL,并弹出下载框
  • 原文地址:https://www.cnblogs.com/wisteria68/p/13647917.html
Copyright © 2011-2022 走看看