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(与OpenAI GPT的模型大小相同)和340M参数的BERT。BERT架构如下图所示。
2.2 输入表示
BERT输入表示:将单一或成对的文本句子(sentence)转换成一个token序列。每一个token由corresponding token、segment embedding和position embedding相加得到(如下图所示)。
Token生成细节:
- 句子(sentence)可以使任意长度的连续文本,并非语言学上的句子。
- 基于30000 token单词的WordPiece embeddings得到。
- 每个序列的第一个token均为特殊的“分类”表示。
- 成对的句子,第一个句子是,第二个句子是,中间使用分割。
2.3 预训练任务
2.3.1 MLM
为训练双向表示,BERT引入MLM训练任务:随机地将输入token序列一定百分比(15%)的token隐藏,然后基于其它未隐藏的token预测这些隐藏的token。
2.3.4 Next Sentence Prediction
这一任务广泛应用于QA和自然语言推断等任务中,主要用途是学习句子间的关系。
2.4 预训练和微调实验设置
预训练的batch大小设置为。使用Adam算法优化和gelu**函数。BERT和BERT分别使用16和64块TPU芯片训练,均耗时4天完成。
微调与预训练的大部分参数相同,对部分参数进行了调整,并在最后一层加入了task-specific的网络架构。
三、实验。
BERT在4个数据集,共计11项任务上进行了微调的实验,均达到了state-of-the-art效果。
- GLUE数据集。该数据集是MNLI、QQP等9中不同自然语言理解分类任务的集合。
- SQUAD v1.1数据集。该数据集是斯坦福问答数据集。
- CONLL 2003 Named Entity Recognition Dataset。在该数据集上进行命名实体识别任务实验。
- 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.
- Transformer仅仅使用注意力机制,完全摒弃RNN和CNN的使用,具有易并行化、计算操作少、训练时间短的特点。下图是Transformer的架构图。
- Transformer由encoder和decoder两部分组成,分别对应于上图中的左半部分和右半部分。Encoder由六(即图中左N=6)个相同的两个子层组成,第一个子层是Multi-Head Attention,第二个子层是一般性的前馈神经网络。Decoder由六(即图中右N=6)个相同的三个子层组成,第一个子层是Masked Multi-Head Attention,第二个子层是Multi-Head Attention,第三个子层是一般性的前馈神经网络。
- Transformer借鉴残差网络,设计Add&Norm层:
- Transformer为利用输入的次序信息(类似于RNN的部分功能),引入Positional Encoding(基于频度的正弦和余弦函数):
- Transformer使用的注意力机制如下图所示。
其中