BERT 论文精读与理解

这篇具有很好参考价值的文章主要介绍了BERT 论文精读与理解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.论文题目

BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding

2.论文摘要

本文引入了一种名为 BERT 的新语言表示模型,它代表 Transformers 的双向编码器表示。与最近的语言表示模型(Peters et al., 2018a;Radford et al., 2018)不同,BERT 旨在通过联合调节所有层中的左右上下文来预训练未标记文本的深度双向表示。因此,只需一个额外的输出层即可对预训练的 BERT 模型进行微调,从而为问答和语言推理等各种任务创建最先进的模型,而无需对特定于任务的架构进行大量修改。

BERT 概念简单,经验强大。它在 11 项自然语言处理任务上获得了最新的结果,包括将 GLUE 分数提高到 80.5%(绝对提高 7.7%)、MultiNLI 准确率提高到 86.7%(绝对提高 4.6%)、SQuAD v1.1问答测试 F1 达到 93.2(绝对提高 1.5 分),SQuAD v2.0 测试 F1 达到 83.1(绝对提高 5.1 分)。

3. 整体介绍与研究动机

两种将预训练的语言表示用于下游任务的策略:

  1. 基于特征(feature-based):例如 ELMo 模型,将包含预训练表示作为附加特征的特定任务架构。
  2. 微调(fine-tuning):例如 GPT 模型,引入了最少的特定于任务的参数,并通过简单地微调所有预训练参数来对下游任务进行训练。

这两种方法在预训练期间共享相同的目标函数,使用单向语言模型来学习通用语言表示。

作者认为,当前的技术限制了预训练表示的能力,特别是对于微调方法。主要限制是标准语言模型是单向的,这限制了在预训练期间使用的架构的选择。例如,在 OpenAI GPT 中,作者使用从左到右的架构,其中每个标记只能关注 Transformer 的自注意力层中的先前标记。这种限制对于句子级(sentence-level)任务来说是次优的,并且在将基于微调的方法应用于标记级(token-level)任务时可能非常有害,在这些任务中,从两个方向合并上下文至关重要。

在本文中,作者通过提出 BERT:Transformers 的双向编码器表示来改进基于微调的方法。 BERT 通过使用受 完形填空任务 (Taylor, 1953) 启发的 掩码语言模型 (Masked Language Model,MLM) 预训练目标来缓解前面提到的单向约束。掩码语言模型从输入中随机掩蔽一些标记,目标是仅根据其上下文来预测被掩蔽词的原始词汇表 id。与从左到右的语言模型预训练不同,MLM 目标使表示能够融合左右上下文,这使我们能够预训练一个深度双向 Transformer。除了掩码语言模型之外,我们还使用了 下一句预测任务,该任务联合预训练文本对表示。论文的贡献如下:

  1. 作者证明了双向预训练对语言表示的重要性。BERT 使用掩码语言模型来实现预训练的深度双向表示。
  2. 作者证明了预训练的表示减少了对许多精心设计的任务特定架构的需求。 BERT 是第一个基于微调的表示模型,它在大量句子级和标记级任务上实现了最先进的性能,优于许多特定于任务的架构。
  3. 源码和预训练模型下载: https://github.com/google-research/bert
4. 研究背景
4.1 Unsupervised Feature-based Approaches

ELMo 及其前身 (Peters et al., 2017, 2018a) 将传统的词嵌入研究沿不同的维度进行了推广。他们从从左到右和从右到左的语言模型中提取上下文相关的特征。每个标记(token)的上下文表示是从左到右和从右到左表示的连接(concatenation)。

在将上下文词嵌入与现有的特定任务架构集成时,ELMo 提升了几个主要 NLP 基准的最新技术水平,包括问答,情感分析和命名实体识别 。有研究提出通过使用 LSTM 从左右上下文预测单个单词的任务来学习上下文表示。与 ELMo 类似,他们的模型是基于特征的,而不是深度双向的。有研究表明完形填空任务可用于提高文本生成模型的鲁棒性。

4.2 Unsupervised Fine-tuning Approaches

最近,产生上下文标记表示的句子或文档编码器已经从未标记的文本中进行了预训练,并针对有监督的下游任务进行了微调。这些方法的优点是只需要从头开始学习很少的参数。至少部分由于这一优势,OpenAI GPT 在 GLUE 基准的许多句子级任务上取得了先前最先进的结果。

BERT 论文精读与理解,bert,深度学习,自然语言处理,人工智能

4.3 Transfer Learning from Supervised Data

这方面的研究有很多,比较著名的是计算机视觉领域,其证明了从大型预训练模型进行迁移学习的重要性,其中一个有效的方法是微调使用 ImageNet 预训练的模型。

5.解决思路

BERT模型的框架有两个步骤:

预训练(pre-training):BERT 模型通过不同的预训练任务在未标记数据上进行训练。

微调(fine-tuning):BERT 模型首先使用预训练的参数进行初始化,然后所有参数都使用来自下游任务的标记数据进行微调。

每个下游任务都有单独的微调模型,即使它们使用相同的预训练参数进行初始化。

BERT 的一个显着特点是其跨不同任务的统一架构。预训练架构和最终的下游架构之间相差无几。

BERT 的模型架构是基于原始实现的多层双向 Transformer 编码器。其实现几乎与原始版本的 Transformers 相同,具体可以参考Transformer论文和代码实现。

符号标记:

  1. L:层数(即 Transformer blocks)
  2. H:隐藏大小
  3. A:自注意力头的数量

模型架构有两种:

BERT(BASE): L= 12,H=768,A=12,总参数=110M

BERT(LARGE) :L=24,H=1024,A=16,总参数=340M

为方便比较,BERTBASE 与 OpenAI GPT 有相同的模型大小。重要的区别是,BERT Transformer 使用双向自注意力,而 GPT Transformer 使用受限自注意力,其中每个标记只能关注其左侧的上下文。

为了使 BERT 处理各种下游任务,输入表示能够在一个标记序列中明确表示单个句子和一对句子(例如问题 h、答案 i)。在整个工作中,“句子”可以是连续文本的任意跨度,而不是实际的语言句子。一个 “序列”是指输入到 BERT 的标记序列,它可能是一个句子,也可能是两个打包在一起的句子。

作者使用 WordPiece Embedding 和 30,000 个标记词汇。每个序列的第一个标记始终是一个特殊的分类标记 ([CLS])。与该标记对应的最终隐藏状态用作分类任务的聚合序列表示。句子对被打包成一个单一的序列。作者以两种方式区分句子。首先,用一个特殊的标记([SEP])将它们分开。其次,向每个标记添加一个学习嵌入,指示它属于句子 A 还是句子 B。如图 1 所示,将输入嵌入表示为 E ,特殊 [CLS] 标记的最终隐藏向量表示为 C 。对于给定的标记,其输入表示是通过对相应的标记、段和位置嵌入求和来构造的。这种结构的可视化可以在图 2 中看到。

BERT 论文精读与理解,bert,深度学习,自然语言处理,人工智能

5.1 Pre-training BERT

Task #1: Masked LM

为了训练深度双向表示,我们简单地随机屏蔽一定百分比的输入标记,然后预测那些被屏蔽的标记。我们将此过程称为“Masked LM”(MLM),它在文献中通常被称为完形填空任务(Taylor,1953)。所有的实验中,我们随机屏蔽了每个序列中所有 WordPiece 标记的 15%。

尽管这使我们能够获得双向预训练模型,但缺点是我们在预训练和微调之间造成了不匹配,因为在微调期间不会出现 [MASK] 标记。为了缓解这种情况,我们并不总是用实际的 [MASK] 标记替换“masked”单词。训练数据生成器随机选择 15% 的标记位置进行预测。如果选择第 i 个标记,我们通过三种方式将第 i 个标记进行替换替换: 1) 80% 的时间用 [MASK] 标记 ;2) 10% 的时间用一个随机标记 ;3) 10% 的时间标记不变。然后,最终的隐藏向量 Ti ,通过softmax激活函数,预测原始标记。具体地:

  1. 80% 的时间将单词替换为 [MASK] 标记,例如,my dog is hairy → my dog is [MASK]
  2. 10% 的时间将单词替换为随机单词,例如,my dog is hairy → my dog is apple
  3. 10% 的时间保持单词不变,例如,my dog is hairy → my dog is hairy。这样做的目的是使表示偏向于实际观察到的单词。

Task #2: Next Sentence Prediction (NSP)

许多重要的下游任务,例如问答 (Question Answering,QA) 和自然语言推理 (Natural Language Inference,NLI),都是基于对两个句子之间关系的理解,而语言建模无法直接捕捉到这一点。为了训练一个理解句子关系的模型,我们预先训练一个二值化的下一个句子预测任务(binarized next sentence prediction task),该任务可以从任何单语语料库(monolingual corpus)中轻松生成。具体来说,在为每个预训练示例选择句子 A 和 B 时,50% 的时间 B 是 A 之后的实际下一个句子(标记为 IsNext),50% 的时间是语料库中的随机句子(标记为作为NotNext)。如图 1 所示,C 用于下一个句子预测 (NSP)。尽管它很简单,但我们在第 5.1 节中证明了针对此任务的预训练对 QA 和 NLI 都非常有益。

在之前的工作中,只有句子嵌入被转移到下游任务,但 BERT 转移所有参数来初始化最终任务模型参数。

对于预训练语料库,BERT 使用 BooksCorpus(8 亿单词)和英语维基百科(25 亿单词)进行预训练。

5.2 Fine-tuning BERT

微调很简单,因为 Transformer 中的自注意力机制允许 BERT 通过交换适当的输入和输出来对许多下游任务(无论它们涉及单个文本还是文本对)进行建模。对于涉及文本对的应用程序,一种常见的模式是在应用双向交叉注意之前独立编码文本对。但 BERT 使用自注意力机制来统一这两个阶段,因为使用自注意力对连接的文本对进行编码有效地包括了两个句子之间的双向交叉注意力。

6.实验过程和结果

本节展示了 11 个 NLP 任务的 BERT 微调结果。

6.1 GLUE

通用语言理解评估(General Language Understanding Evaluation ,GLUE)基准是各种自然语言理解任务的集合。

对于 BERTLARGE,作者发现微调有时在小型数据集上不稳定,因此我们运行了几次随机重启并在开发集上选择了最佳模型。通过随机重启,我们使用相同的预训练检查点,但执行不同的微调数据打乱(shuffle)和分类器层初始化。

6.2 SQuAD v1.1

斯坦福问答数据集 (Stanford Question Answering Dataset ,SQuAD v1.1) 是 10 万个众包问答对的集合。给出一个问题和一段来自维基百科的回答,任务是预测文章中的答案文本跨度。

6.3 SQuAD v2.0

SQuAD 2.0 任务扩展了 SQuAD 1.1 的问题定义,允许在提供的段落中不存在简短答案的可能性,使问题更加现实。

6.4 SWAG

Situations With Adversarial Generations (SWAG) 数据集包含 113k 句对完成示例,用于评估基于常识的推理。给定一个句子,任务是在四个选项中选择最合理的延续。

7.结论

由于语言模型的迁移学习而取得的实证改进表明,丰富的、无监督的预训练是许多语言理解系统不可或缺的一部分。特别是,这些结果甚至使低资源任务也能从深度单向架构中受益。本文的主要贡献是将这些发现进一步推广到深层双向架构,从而使相同的预训练模型能够成功处理广泛的 NLP 任务。

8.对 BERT 的总结与理解文章来源地址https://www.toymoban.com/news/detail-547159.html

  • BERT 本质上是 Transformer 的 Encoder 端,Bert 在预训练时最基本的任务是:
  1. 判断输入的两个句子是否真的相邻
  2. 预测被 [MASK] 掉的单词
  • 通过这两种任务的约束,可以让 Bert 真正学到:
  1. 上下句子之间的语义关系的关联关系,
  2. 一个句子中不同单词之间的上下文关系
  • 所以通过 BERT 在大量文本中有针对的学习之后,BERT 可以真正做到对给定的句子进行语义层面的编码,所以他才能被广泛用于下游任务。
  • BERT 是不需要大量人工标注数据的,这也是为什么他可以大规模训练预训练模型。
  1. 对于第一种训练任务,我们只需要在给定的段落中随机挑选两句相邻的句子就可以组成正样本,而随机挑选两个不相邻的句子就可以组成负样本。
  2. 对于第二种训练任务,只需要对于给定的句子语料,对其中的单词按照一定比例的 mask 操作即可,因为 mask 的部分只是模型不知道其存在,但是我们还是知道 mask 的部分的真实标签的,所以还是可以做监督学习的任务,而且还是自监督。

到了这里,关于BERT 论文精读与理解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 97. BERT微调、自然语言推理数据集以及代码实现

    即使下游任务各有不同,使用BERT微调时只需要增加输出层 但根据任务的不同,输入的表示,和使用的BERT特征也会不一样 斯坦福自然语言推断语料库(Stanford Natural Language Inference,SNLI)]是由500000多个带标签的英语句子对组成的集合 。我们在路径 ../data/snli_1.0 中下载并存储提

    2024年02月09日
    浏览(42)
  • 【论文精读】BERT

           以往的预训练语言表示应用于下游任务时的策略有基于特征和微调两种。其中基于特征的方法如ELMo使用基于上下文的预训练词嵌入拼接特定于任务的架构;基于微调的方法如GPT使用未标记的文本进行预训练,并针对有监督的下游任务进行微调。        但上述两种策

    2024年02月19日
    浏览(35)
  • 论文精读之BERT

    目录 1.摘要(Abstract) 2.引言(Introduction): 3.结论(Conlusion): 4.BERT模型算法: 5.总结 与别的文章的区别是什么:BERT是用来设计去训练深的 双向的 表示,使用没有标号的数据,再联合左右的上下文信息。(改进在什么地方) 效果有多好:在11个NLP任务上取得了很好的效果。需要

    2024年02月15日
    浏览(33)
  • Transformer、BERT和GPT 自然语言处理领域的重要模型

    Transformer、BERT和GPT都是自然语言处理领域的重要模型,它们之间有一些区别和联系。 区别: 架构:Transformer是一种基于自注意力机制的神经网络架构,用于编码输入序列和解码输出序列。BERT(Bidirectional Encoder Representations from Transformers)是基于Transformer架构的双向编码模型,

    2024年03月09日
    浏览(57)
  • 自然语言处理(七):来自Transformers的双向编码器表示(BERT)

    BERT(Bidirectional Encoder Representations from Transformers)是一种预训练的自然语言处理模型,由Google于2018年提出。它是基于Transformer模型架构的深度双向(双向指同时考虑上下文信息)表示学习模型。 BERT的目标是通过在大规模文本语料上进行自监督学习来学习通用的语言表示。在预

    2024年02月09日
    浏览(45)
  • 深入理解深度学习——BERT派生模型:ALBERT(A Lite BERT)

    分类目录:《深入理解深度学习》总目录 预训练语言模型的一个趋势是使用更大的模型配合更多的数据,以达到“大力出奇迹”的效果。随着模型规模的持续增大,单块GPU已经无法容纳整个预训练语言模型。为了解决这个问题,谷歌提出了ALBERT,该模型与BERT几乎没有区别,

    2024年02月10日
    浏览(53)
  • 深入理解深度学习——BERT(Bidirectional Encoder Representations from Transformers):BERT的结构

    分类目录:《深入理解深度学习》总目录 相关文章: · BERT(Bidirectional Encoder Representations from Transformers):基础知识 · BERT(Bidirectional Encoder Representations from Transformers):BERT的结构 · BERT(Bidirectional Encoder Representations from Transformers):MLM(Masked Language Model) · BERT(Bidirect

    2024年02月11日
    浏览(52)
  • 深入理解深度学习——BERT派生模型:RoBERTa(A Robustly Optimized BERT Pretraining Approach)

    分类目录:《深入理解深度学习》总目录 现阶段,预训练语言模型总是可以通过更大的模型和更多的数据获得更好的性能,GPT系列模型就是此类优化方向的典范。RoBERTa(模型名源自论文名A Robustly Optimized BERT Pretraining Approach)是脸书公司提出的在BERT基础上增加训练数据,充分

    2024年02月10日
    浏览(77)
  • 自然语言处理实战项目25-T5模型和BERT模型的应用场景以及对比研究、问题解答

    大家好,我是微学AI,今天给大家介绍一下自然语言处理实战项目25-T5模型和BERT模型的应用场景以及对比研究、问题解答。T5模型和BERT模型是两种常用的自然语言处理模型。T5是一种序列到序列模型,可以处理各种NLP任务,而BERT主要用于预训练语言表示。T5使用了类似于BERT的

    2024年01月17日
    浏览(64)
  • 自然语言基础 IMDB下的 MLM (掩码模型) & Bert Fine-tuning (模型微调)

    本文是Hugging Face 上 NLP的一篇代码教程,通过imdb数据集, Fine-tuning微调 Bert预训练模型。 涉及包括: MLM, Bert, Fine-tuning, IMDB, Huggingface Repo 微调的方式是通过调整训练模型的学习率来重新训练模型,这个来自 早期 ACL 2018的一篇paper: 《Universal Language Model Fine-tuning for Text

    2024年02月15日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包