赞
踩
Tips: 摘要的写法:
1. 摘要的第一段写出这篇工作与哪些工作相关。 2. 本篇工作的优点。 3. 讲自己工作时,需要讲到绝对精度以及和其他工作的有点。
摘要部分主要介绍了BERT是基于ELMo和GPT这两个工作的改进。BERT使用了一种双向的表征方式,来使得模型可以学到当前词与左边和右边的关系。
语言模型的预训练在自然语言处理任务上是很有效的。自然语言处理有两大任务:
语言模型预处理有两种主要的策略:
在BERT出现之前的预训练模型存在一个问题。模型是单向的,因此每一个token只能与之前的token进行attention计算。这种限制对于sentence-level tasks来说是次优的,而对于token-level tasks,可能会非常有害,比如问题回答等任务,因为在这些任务中,从两个方向纳入上下文是至关重要的。
BERT是基于Transformer的双向编码表征,它采用了掩码语言模型 (MLM: masked language model)作为预训练目标。
MLM: Masked language model 的目的是基于上下文来预测当前位置的原始词的id。
MLM模型可以让特征能够融合当前词左边以及右边的内容。同时,BERT还使用了 next sentence prediction
作为另一个预训练任务。
NSP: Next sentence prediction 的目的是用来判断两个句子是否是承接关系。
本文的主要贡献:
本文的主要工作分为两步: 1. pre-training. 2. fine-tuning.
pre-training: 在这个过程中,模型将使用unlabled data来对BERT两个预训练任务 (Masked LM and NSP) 进行训练。
fine-tuning: BERT模型将用预训练模型初始化所有参数,这些参数将针对于下游任务,如,问答任务等,使用labeled data进行训练。不同的下游任务可以训练出不同的模型,但是它们都是用同一个预训练模型进行初始化的。
下图表示了本文的两个主要工作,pre-training and fine-tuning. BERT的主要特征是,对于不同的任务都有一个统一的模型结构。
Source:BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding
BERT的结构是一种多层的双向Transformer编码器 (Transformer的讲解)。文中主要介绍了两种BERT,使用了WordPiece embeddings (30,000 token size)。
L: Numbers of layers; H: Hidden size; A: numbers of heads
BERT参数计算:
*** 对于transformer中Q,K,V的维度。 ***
经过实验测试,Q,K,V的维度保持在64时效果最佳。
如果Hidden size = 768, 要保持多头Q,K,V的维度为64,那么head size 需要等于12.
*** BERT BASE 参数估计 ***
vocab --> Hidden state: 30K * 768
Hidden state --> Q, K, V 的投影映射 768 * 768 * 3
self attention之后的一次映射: 768 * 768
MLP: 2层MLP,输入输出的维度为: H --> 4H --> H, 参数量为H * 4H + 4H * H = H^2 * 8
Sum: 30K * H + layer num * H ^ 2 * (3 + 1 + 8)
BERT预训练的输入统一成为 input sequence。为了能够让BERT解决更多的下游任务,input sequence由单个句子或者句子对组成 (<Question, Answer>)。如下图表示一个input sequence 例子。
Source:BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding
几种特殊的token:
[CLS]
: [CLS]的最后一个hidden state用来表述句子的整体特征,可以应用于下游分类任务。
[SEP]
: 用来区分两个不同的句子。
Embedding: 一共有3种:
随机掩盖掉一个句子中15%的token。有3中掩盖的方法:
[MASK]
来掩盖。此任务是通过BERT来预测掩盖掉的词token。Mask token相关的最后一层hidden state将通过softmax来进行预测。
常见的下游任务比如Question Answering (QA),这些任务是要判断两个句子的关系。BERT预训练NSP任务是训练一个二分类的下一个句子预测任务 (Binarized next sentence prediction task)。此任务的数据集的生成方式为:
[CLS]
token通过BERT生成最后一个hidden state [C]
,用来做NSP任务。
到此为止,BERT的预训练任务,如何生成训练数据,以及优势都已经介绍完了。接下来会做BERT相关的代码阅读,以及fine-tune下游任务的尝试。
待补充内容:
上游工作:
分词工作:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。