前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >BERT - 用于语言理解的深度双向预训练转换器

BERT - 用于语言理解的深度双向预训练转换器

作者头像
caoqi95
发布2019-03-28 11:18:45
1.2K0
发布2019-03-28 11:18:45
举报

最近被 Google 的 BERT (Bidirectional Encoder Representations from Transfoemers)模型给刷屏了。该模型破了 NLP 界的 11 项纪录,所以这两周特意挑选这篇论文来满足好奇心。第一作者还在 Reddit 上进行了解答,具体可以戳:这里。为了方便学习,我翻译了这篇解读(只包含正文):BERT 论文 - 第一作者的 Reddit 解读说明翻译

前几天,谷歌公开了关于 BERT 模型的代码,感兴趣的可以在 Colab 上使用免费 TPU 微调 BERT,具体可以戳:这里。也可以看看谷歌官方项目地址

BERT 和以往的语言表示模型不太一样,其是通过在所有层左右文本内容联合调节来预训练深层双向表征的模型。在结果上看来, BERT 模型只通过添加一个额外的输出层来进行微调,就能够创建出 state-of-the-art 模型用于各种不同的任务。BERT 简单又强大,在 11 项 NLP 任务上创造了新的记录。本篇论文的核心创新部分是预训练部分。

BERT 的贡献

  • 证明了双向预训练对于语言表征的重要性。BERT 使用 Masked(掩面) 语言模型(也称为 “完形填空” 任务)来实现预训练好的深度双向表征。这也与 Peters 等人(发于2018年, ELMo 模型)形成了鲜明对比,Peters 等人使用了一种由左到右和从右到左的独立训练语言模型的浅层连接。
  • 展示了预训练的语言表征消除了许多经过大量工程设计的特定于任务的结构的需求。BERT 是第一个基于微调的表征模型,它在大量的语句级和 token 级任务中实现了最先进的性能,优于许多具有特定任务结构的系统。
  • 提升了 11 项 NLP 任务的最高水准。

NLP 中最流行的几个方法

  • Feature-based Approaches: 预训练的 word embedding 被认为是现代 NLP 系统中不可或缺的一部分,与从头学习的 embedding 相比提供了显着的改进。基于 word embedding 这些方法,已经推广出了 sentence embedding,paragraph embedding 等多种方法。这些学习特征通常作为特征被用于下游模型。Peters 等人提出的 ELMo 模型将传统的 word embedding 推广至另一个维度。他们提出了从语言模型中提取文本敏感(context-sensitive)的特征。
  • Fine-tuning Approaches: 语言模型(LMs)迁移学习的最新趋势是在 LM 目标上预先训练一些模型架构,然后对监督下游任务的相同模型进行微调。该方法的优点是只需要从头学习一些少量的参数。
  • Transfer Learning from Supervised Data: 在计算机视觉领域已经验证了从一个大型的预训练模型中迁移学习的重要性。最近也有研究表明在一个基于大型数据集的监督任务中迁移学习的有效性。比如在自然语言推断和机器翻译上。

现有模型的限制

语言模型预训练的优点是高效性,其提高了很多 NLP 任务的水准。有两种现有的策略可以将预先训练好的语言表征应用到下游(downstream)任务中:feature-based 和 fine-tuning。feature-base 方法,如 ELMo,使用特定任务的体系结构,其中包括将预先训练的表征作为附加特性。fine-tuning 方法,例如 Generative Pre-trained Transformer(OpenAI),引入极小的任务特定的参数,并对其进行训练通过简单地微调方法预训练参数来完成下游任务(如:问题回答,自然语言推断,情感分析等)。在前人的工作中,这两种方法在预训练前都有相同的目标函数,他们使用单向的语言模型来学习一般的语言表示。

作者认为现有的技术严重的限制了预训练表示的能力,对于 fine-tuning 方法来说,尤为如此。主要的限制就是现有的模型都是单向的,这限制了可以被用于预训练的结构选择。例如,在OpenAI 的 GPT 模型中,作者使用了从左到右的结构,其中每个 token 只能在转换器的 self-attention 层中处理之前的 token。这种限制对于语句级别的任务来说是次优的,并且当将基于微调的方法应用到 token 级别的任务(如 SQuAD 问题回答)时,可能会造成破坏性的影响。因为在这些任务中,从两个方向结合上下文是至关重要的。

BERT 模型细节

BERT 的模型结构是一个基于 Vaswani 等人描述的原始模型而构建的多层双向转换编码器,该原始模型已经在 tensor2tensor 库中发布。因为 Transformer 的使用最近变得无处不在,并且 BERT 的实现与原始实现完全相同,所以作者将省略对模型结构的详细描述,并将 Vaswani 等人的论文推荐给读者。 还有 “The Annotated Transformer” 这个优秀的指南也值得一读。

1. BERT 结构的不同之处

OpenAI 的 GPT 使用了一个从左到右的模型。ELMo 使用了经过独立训练的从左到右和从右到左 LSTM 的连接来为下游任务生成特性。从图中也可以看出是两个相互独立的结构。而 BERT 使用的是一个双向的结构,从图中可以看出是在所有的网络层中都受到左右文本的共同作用。

与 BERT 最具可比性的现有预训练方法是 OpenAI 的 GPT 模型,它在大型文本语料库中训练从左到右的 Transformer LM。实际上,BERT 中的许多设计决策都被有意地选择为尽可能接近 GPT,以便可以最小化地比较这两种方法。这项工作的核心论点是论文 3.3 节中提出的两个新的预训练任务占了大多数经验改进,但可以注意到BERT 和 GPT 在如何训练上还存在其他一些差异:

  • GPT 在 BooksCorpus(800M字)数据集上预训练;而 BERT 在 BooksCorpus(800M字)和维基百科(2,500M字)数据集上预训练。
  • GPT 仅在微调时使用句子分隔 token(SEP)和分类 token(CLS);BERT 在预训练期间学习 SEP ,CLS 和句子 A / B 嵌入。
  • GPT 经过1M steps 的训练,batch 大小为32,000字;BERT 经过 1M steps 的训练,batch 大小为128,000字。
  • 对于所有微调实验,GPT 使用相同的 5e-5 学习率; BERT 选择特定于任务的微调学习速率,该速率在开发集上表现最佳。
2. 模型的输入表示

BERT 的输入由 token embedding,segmentation embedding 和 position embedding 共同构成。

  • CLS:每个序列的第一个 token 始终是特殊分类嵌入(special classification embedding),即 CLS。对应于该 token 的最终隐藏状态(即,Transformer的输出)被用于分类任务的聚合序列表示。如果没有分类任务的话,这个向量是被忽略的。
  • SEP:用于分隔一对句子的特殊符号。有两种方法用于分隔句子:第一种是使用特殊符号 SEP;第二种是添加学习句子 A 嵌入到第一个句子的每个 token 中,句子 B 嵌入到第二个句子的每个 token 中。如果是单个输入的话,就只使用句子 A 。
3. 预训练任务

这一块内容是 BERT 论文的核心创新部分。作者使用两个新的无监督预测任务对 BERT 进行预训练。第一个任务是 Masked LM,第二个是 Next Sentence Prediction。

3.1 任务 #1 Masked LM

为了训练深度双向表征,作者采用了一个直接的方法,即随机的掩盖一定比例的输入 token ,然后只预测这些被掩盖的 token。作者将这个过程作为 Masked LM,也被称为 “完形填空”。在这个任务中,被掩盖的 token 的最终隐藏向量将被输入到词汇表中的输出 softmax 层,就像标准的语言模型一样。虽然这个方法确实可以获得双向预训练模型,但这种方法有两个缺点。第一个缺点是创建了预训练和微调之间的不匹配内容,因为在微调期间从未看到 MASK token。为了缓解这个问题,作者并不总是用实际的 MASK token 替换被掩盖的单词。相反,训练一个数据生成器来随机选择 15% 的 token。 比如:my dog is hairy 这个句子中选择 hairy。然后执行以下过程:

  • 80% 的时间:用 Mask token 掩盖之前选择的单词。例如:my dog is hairymy dog is [Mask].
  • 10% 的时间:用随机单词掩盖这个单词。例如:my dog is hairymy dog is apple.
  • 10% 的时间:保持单词不被掩盖。例如:my dog is hairymy dog is hairy. (这样做的目的是将表征偏向于实际观察到的单词)

这个转换编码器并不知道哪个单词将被预测,或者哪个单词被随机单词取代。所以,它被迫保持每个输入 token 的分布式的上下文表征。另外,因为随机取代对于所有 token 来说,发生的概率只有 1.5% (15% 中的 10%),所以并不会损害模型的理解能力。

另一个缺点是,由于在每个 batch 中,只有 15% 的 token 需要被预测,这表明模型可能需要更多的预训练步骤才能收敛。在论文 5.3 节中,作者也证明 Masked LM (MLM)的收敛速度略慢于从左到右的模型(预测每个标记),但 MLM 模型的实证改进远远超过增加的训练成本。

3.2 任务 #2 Next Sentence Prediciton

很多重要的下游任务,像问题回答(QA),自然语言推断(NLI)等都是基于理解两个句子之间的关系。这种句子之间的关系不能够被语言模型直接捕获。为了训练理解句子关系的模型,作者预先训练二进制化的下一句子预测任务,该任务可以从任何单词语料库中简单的生成。具体来说,当为每个预训练样本选择句子 A 和 B 时,50% 的时间 B 是跟随 A 的实际下一个句子,50% 的时间是来自语料库的随机句子。如下所示:

  • Input = [CLS] the man went to [MASK] store [SEP] he bought a gallon [MASK] milk [SEP]
  • Label = IsNext
  • Input = [CLS] the man [MASK] to the store [SEP] penguin [MASK] are flight ##less birds [SEP]
  • Label = NotNext

作者完全随机选择NotNext语句,最终预训练模型在此任务中达到 97%-98% 的准确率。尽管它很简单,但之后在 5.1 节中证明,预训练这项任务对 QA 和 NLI 都非常有帮助。

推荐阅读

  1. 谷歌终于开源BERT代码:3 亿参数量,机器之心全面解读
  2. 从Word Embedding到Bert模型—自然语言处理中的预训练技术发展史
  3. 天空之城:拉马努金式思维训练法
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.10.29 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • BERT 的贡献
  • NLP 中最流行的几个方法
  • 现有模型的限制
  • BERT 模型细节
    • 1. BERT 结构的不同之处
      • 2. 模型的输入表示
        • 3. 预训练任务
          • 3.1 任务 #1 Masked LM
            • 3.2 任务 #2 Next Sentence Prediciton
            • 推荐阅读
            相关产品与服务
            NLP 服务
            NLP 服务(Natural Language Process,NLP)深度整合了腾讯内部的 NLP 技术,提供多项智能文本处理和文本生成能力,包括词法分析、相似词召回、词相似度、句子相似度、文本润色、句子纠错、文本补全、句子生成等。满足各行业的文本智能需求。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档