BERT论文精读理解

Devlin J, Chang M W, Lee K, et al. Bert: Pre-training of deep bidirectional transformers for language understanding[J]. arXiv preprint arXiv:1810.04805, 2018.

该篇论文被评选为2019 NAACL的最佳论文,由Google AI团队在2018年10月推出。

一、论文背景。

语言模型(language model)的预训练可以提高NLP任务的性能。无监督预训练的方法主要分为两种,feature-based和fine-tuning。Feature-based方法使用task-specific结构从预训练的表示中提取特征,如ELMo,而fine-tuning方法引入最小task-specific参数,然后微调预训练的task-specific参数以训练后续任务,如OpenAI GPT。

但在之前的相关研究中,预训练阶段均使用了相同的目标函数,并使用单向的语言模型学习一般性的语言表示,这大大地降低了预训练的表示能力,尤其是fine-tuning方法。

因此,本文提出了改善fine-tuning预训练的BERT模型,即基于Transformer的双向编码表示(Bidrectional Encoder Representations from Transformers),通过引入新的预训练目标任务MLM(masked language model),从而预训练双向Transformer,同时引入"next sentence prediction"任务预训练配对文本的表示。

二、BERT实现。

2.1 模型架构

BERT基于原始的Transformer实现了一个多层的双向Transformer编码(非完整的Transformer,只包含编码部分),并衍生出两个不同大小的模型,分别为110M参数的BERT B A S E _{BASE} BASE(与OpenAI GPT的模型大小相同)和340M参数的BERT L A R G E _{LARGE} LARGE。BERT架构如下图所示。

BERT论文精读理解_第1张图片

2.2 输入表示

BERT输入表示:将单一或成对的文本句子(sentence)转换成一个token序列。每一个token由corresponding token、segment embedding和position embedding相加得到(如下图所示)。

BERT论文精读理解_第2张图片
Token生成细节:

  1. 句子(sentence)可以使任意长度的连续文本,并非语言学上的句子。
  2. 基于30000 token单词的WordPiece embeddings得到。
  3. 每个序列的第一个token均为特殊的“分类”表示 [ c l s ] [cls] [cls]
  4. 成对的句子,第一个句子是 E A E_A EA,第二个句子是 E B E_B EB,中间使用 [ s e p ] [sep] [sep]分割。

2.3 预训练任务

2.3.1 MLM

为训练双向表示,BERT引入MLM训练任务:随机地将输入token序列一定百分比(15%)的token隐藏,然后基于其它未隐藏的token预测这些隐藏的token。

2.3.4 Next Sentence Prediction

这一任务广泛应用于QA和自然语言推断等任务中,主要用途是学习句子间的关系。

2.4 预训练和微调实验设置

预训练的batch大小设置为 256 s e q u e n c e s × 512 t o k e n s = 128000 t o k e n s / b a t c h 256 sequences \times 512tokens = 128000 tokens/batch 256sequences×512tokens=128000tokens/batch。使用Adam算法优化和gelu激活函数。BERT B A S E _{BASE} BASE和BERT L A R G E _{LARGE} LARGE分别使用16和64块TPU芯片训练,均耗时4天完成。
微调与预训练的大部分参数相同,对部分参数进行了调整,并在最后一层加入了task-specific的网络架构。

三、实验。

BERT在4个数据集,共计11项任务上进行了微调的实验,均达到了state-of-the-art效果。

  1. GLUE数据集。该数据集是MNLI、QQP等9中不同自然语言理解分类任务的集合。
  2. SQUAD v1.1数据集。该数据集是斯坦福问答数据集。
  3. CONLL 2003 Named Entity Recognition Dataset。在该数据集上进行命名实体识别任务实验。
  4. SWAG数据集。在该数据集上进行“next sentence prediction”实验。

四、模型简化测试。

最后,BERT进行了模型简化测试(Ablation Studies),探讨了分别改变预训练任务数量、模型大小、训练步数大小和将feature-based方法应用于BERT对模型性能的影响。

五、补充介绍Transformer。

Vaswani A , Shazeer N , Parmar N , et al. Attention Is All You Need[J]. 2017.

  1. Transformer仅仅使用注意力机制,完全摒弃RNN和CNN的使用,具有易并行化、计算操作少、训练时间短的特点。下图是Transformer的架构图。
    BERT论文精读理解_第3张图片
  2. Transformer由encoder和decoder两部分组成,分别对应于上图中的左半部分和右半部分。Encoder由六(即图中左N=6)个相同的两个子层组成,第一个子层是Multi-Head Attention,第二个子层是一般性的前馈神经网络。Decoder由六(即图中右N=6)个相同的三个子层组成,第一个子层是Masked Multi-Head Attention,第二个子层是Multi-Head Attention,第三个子层是一般性的前馈神经网络。
  3. Transformer借鉴残差网络,设计Add&Norm层: LayerNorm ( x + Sublayer ( x ) ) \text{LayerNorm}(x+\text{Sublayer}(x)) LayerNorm(x+Sublayer(x))
  4. Transformer为利用输入的次序信息(类似于RNN的部分功能),引入Positional Encoding(基于频度的正弦和余弦函数): PE ( p o s , 2 i ) = sin ⁡ ( pos / 1000 0 2 i / d model ) \text{PE}_{(pos,2i)} = \sin(\text{pos}/10000^{2i/d_{\text{model}}}) PE(pos,2i)=sin(pos/100002i/dmodel) PE ( p o s , 2 i + 1 ) = cos ⁡ ( pos / 1000 0 2 i / d model ) \text{PE}_{(pos,2i+1)} = \cos(\text{pos}/10000^{2i/d_{\text{model}}}) PE(pos,2i+1)=cos(pos/100002i/dmodel)
  5. Transformer使用的注意力机制如下图所示。
    BERT论文精读理解_第4张图片
    其中 Attention ( Q , K , V ) = softmax ( Q K T d k ) V \text{Attention}(Q,K,V) = \text{softmax}(\frac{QK^T}{\sqrt{d_k}})V Attention(Q,K,V)=softmax(dk QKT)V MultiHead ( Q , K , V ) = Concat ( head 1 , ⋯   , head h ) W O \text{MultiHead}(Q,K,V)=\text{Concat}(\text{head}_1,\cdots,\text{head}_h)W^O MultiHead(Q,K,V)=Concat(head1,,headh)WO where  head i = Attention ( Q W i Q , K W i K , V W i V ) \text{where }\text{head}_i = \text{Attention}(QW_i^Q,KW_i^K,VW^V_i) where headi=Attention(QWiQ,KWiK,VWiV)

你可能感兴趣的:(BERT论文精读理解)