当前位置:   article > 正文

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

bert: pre-training of deep bidirectional transformers for language understan

自然语言处理过去几年最重要的文章之一,NLP领域在BERT之前一直没有一个深的神经网络训练好之后应用在其他任务上面,很多时候都是每个人对自己的任务训练一个网络,BERT出现之后,NLP领域可以在一个比较大的数据集上,训练好一个比较深的神经网络,然后应用在很多NLP任务上面,既简化了训练过程,又提升了性能,使得NLP领域得到质的飞跃。
导读:大规模预训练语言模型的启示性工作.

  • (1) BERT最大的贡献是什么,说3点?扩展性的阅读后续工作,并从你的理解说一说它有哪些不足,3点?
  • 贡献
    • 证明深度双向预训练语言模型的重要性,
    • 采用pre-training fine-tuning的结构,预先训练的表示免去了许多工程任务需要针对特定任务修改体系架构的需求。 BERT是第一个基于微调的表示模型,它在大量的句子级和token级任务上实现了最先进的性能,强于许多面向特定任务体系架构的系统。直接带动了pretrain+finetune的预训练模型的时代
    • BERT刷新了许多NLP任务的性能记录。
  • 不足
    • 由于MLM,预训练数据中有[MASK],而微调时没有,导致预训练和微调之间的不匹配
  • 针对预训练和微调数据之间的不统一,XLNET采用AR(autoregressive)模型进行改进,AR模型的主要任务在于评估语料的概率分布
  - 针对中文任务,BERT按汉字分词,训练得到的是单个汉字的向量表示,但在现代汉语中,单个汉字远不足以表达像词语或短语那样丰富的含义,所以BERT在很多中文任务上表现并不好;
  • 1
  •  针对中文任务改进,百度提出了ERNIE,通过对训练数据中的词法结构,语法结构,语义信息进行统一建模,极大地增强了通用语义表示能力,在多项任务中均取得了大幅度超越BERT的效果。
    
    • 1
  - 在预训练NLP时,增加模型大小通常会提高下游任务的性能,但是由于GPU/TPU内存的限制和训练时长,这导致进一步增加模型大小变得很困难
  • 1
  • ALBERT(A Little BERT),一个精简版的BERT模型,增加模型规模但是减少参数量,提出两种参数减少的方式(词向量因式分解和跨层参数共享),以降低内存消耗和提高BERT的速度。虽然ALBERT的参数量少,但由于模型规模变大了,训练时间和推理速度也变慢了,特别是xlarge和xxlarge模型。
    • 学习效率太慢,BERT从一个样本中只能学到15%的token信息
  • 提出ELECTRA
  • (2) Pretrain和Fine-tune的区别在哪里?
    • 预训练 就是指预先训练的一个模型或者指预先训练模型的过程;微调 就是指将预训练过的模型作用于下游任务,也就是用在自己的数据集上,并使参数适应自己数据集的过程。

摘要

:::info
本文提出了BERT,它是基于Transformer的双向编码表示。
:::
它与之前的语言表示模型不一样,主要列举了两篇文章进行对比:

  • ELMO(Embeddings from Language Models,2018)模型,使用双向编码的词向量表征模型,采用的是LSTM架构
  • GPT(Generative Pre-trained Transformer,2018年OPENAI基于transformer提出),是基于transformer的单向语言模型,用左侧的上下文信息预测未来

BERT通过联合调节所有层中的左右上下文信息来预训练未标记文本的深度双向表示。因此,预训练的 BERT 模型可以通过一个额外的输出层进行微调,从而适用于NLP领域中的很多任务,并取得较好的效果,例如问答和语言推理,同时无需对特定任务的架构进行大量修改。
在摘要的第二段,作者说明BERT的想法很简单,但效果很好,在11个NLP任务上获得了sota的效果。(列举了好几个任务,都是先讲bert的绝对精度是多少,然后讲和当时最好的模型相比提升了多少)

1 Introduction

语言预训练模型已经被证明可有效改善NLP任务,这些任务主要可分为两类:

  • sentence-level task,句子级别的任务,如自然语言推理、句子解释等,主要通过整体分析建模这些句子之间的关系;
  • token-level,词元层面的任务,如命名实体识别和问答,这样的任务需要输出一些细腻度的词元层面的输出。

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

  • 基于特征(feature-based),如ELMO,对每一个任务使用特定的架构,把预训练好的表示作为附加特征,和原有的输入一起输入到模型里面(这些预训练好的特征已经有比较好的表示,所以使得模型训练起来比较容易,这是NLP使用预训练模型常用的做法)
  • 基于微调(fine-tuning),如GPT,把预训练好的模型应用到下游任务时,只需要简单地微调所有预训练参数即可对下游任务进行训练。

作者认为当时的技术限制了预训练表征的能力,尤其是微调方法。主要限制是标准语言模型是单向的,这限制了可以在预训练期间使用的体系结构的选择。例如,在 OpenAI GPT 中,作者使用从左到右的架构,其中每个标记只能关注 Transformer 的自我注意层中的先前标记。这样的限制对于sentence-level任务来说是次优的,并且在将基于微调的方法应用于token-level任务(例如问答)时可能非常有害,因为在这些任务中,从两个方向结合上下文是至关重要的。
本文中,作者提出BERT解决了语言模型是单向的这一限制,使用了带掩码的语言模型(Masked-language model,MLM)。masked language model做的事就是 从输入中随机选一些token遮住,目标是仅基于遮住的词汇的上下文预测原始

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/377698
推荐阅读
相关标签
  

闽ICP备14008679号