BERT: Bidirectional Encoder Representations from Transformers双向Transformer用于语言模型 NAACL 2018

BERT: Bidirectional Encoder Representations from Transformers双向Transformer用于语言模型 NAACL 2018_第1张图片
论文链接:https://arxiv.org/abs/1810.04805
tensorflow版本代码链接:https://github.com/google-research/bert
pytorch版本代码链接:https://github.com/codertimo/BERT-pytorch

导读

这篇论文由谷歌团队发表于2018年的NAACL上《BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding》,目前引用量超 3800 次。Bert 取名来自 Bidirectional Encoder Representations from Transformers,大致可以了解到他采用的是双向的 Transformer 的 Encoder 结构。

因此,阅读论文时我们可以关注下 Bert 模型的两个点:

1.利用 Encoder 完成预训练后如何配合下游任务?
2.预训练过程的双向是类似 ELMo 的双向吗?如果不是的话,怎么去防止数据泄漏?

1、引言

通过预训练语言模型可以显著提高 NLP 下游任务,包括 NER、QA、知识推理等。目前的预训练有两种策略:feature-based 和 fine-tuning,对应着我们之前介绍过两个预训练模型:ELMo 和 GPT。基于 feature-based 的 ELMo 是针对指定任务进行预训练;而基于 fine-tuning 的 GPT 设计的是一个通用架构,并针对下游任务进行微调,两方法都是使用单向的语言模型来学习一般的语言表示。

但是谷歌的同学认为,预训练的潜力远远不应该只有这些,特别是对于 fine-tuning 来说。限制模型潜力的主要原因在于现有模型使用的都是单向的语言模型,无法充分了解到单词所在的上下文结构(试想:我们想了解一个单词的含义,其实是会结合上下文来判断,而不是只结合单词的上文)。

针对这一痛点:谷歌的同学提出了新的预训练方法 BERT。BERT 受完形填空(cloze task)的启发,通过使用 “Masked Language Model” 的预训练目标来缓解单向语言模型的约束。

首先 “Masked Language Model” 会随机屏蔽(masked)一些单词,然后让模型根据上下文来预测被遮挡的单词。与 ELMo 不同的是,BERT 是真正的结合上下文进行训练,而 ELMo 只是左向和右向分别训练。

除了 “Masked Language Model” 外,谷歌的同学还提出了 “next sentence prediction” 的任务预训练文本对。将 token-level 提升到 sentence-level,以应用不同种类的下游任务。

2、BERT模型

BERT 和之前的模型类似都采用两阶段的步骤:pre-training 和 fine-tuning。pre-training 阶段,BERT 在未标记的数据上进行无监督学习;而 fine-tuning 阶段,BERT 首先利用预训练得到的参数初始化模型,然后利用下游任务标记好的数据进行有监督学习,并对所有参数进行微调。所有下游任务都有单独的 fine-tuning 模型,即使是使用同样的预训练参数。下图是对 BERT 的一个概览:
BERT: Bidirectional Encoder Representations from Transformers双向Transformer用于语言模型 NAACL 2018_第2张图片

2.1、模型架构

BERT 是由

你可能感兴趣的:(论文阅读笔记)