2017年,谷歌发表了一篇题为《Attention is all your need》的论文,该论文提出了一种基于注意力的结构来处理机器翻译相关序列模型相关的问题。传统的神经机器翻译大多采用循环神经网络(RNN)或卷积神经网络(CNN)作为编解码器的元模型。然而,谷歌基于注意力的Transformer编解码模型跳出了传统的RNN和CNN范式。该模型具有非常高的并行性,在提高翻译性能的同时,训练速度也挺快。
BERT的架构是基于Transformer的。它是一个深层的、双向的神经网络。BERT的技术创新就在于把双层Transformer结构应用到语言模型上。它与之前那种自左向右或自右向左进行顺序训练学习文本序列的尝试完全不同。它采用了一种新颖的遮蔽语言模型(Masked Language Modeling),这实现了之前不可能的双向训练机制。在Transformer原生模型里,它分成了两个部分,编码器读取文本输入,解码器进行预测。BERT的目标是去生成一个语言模型,因此只需要Transformer 的编码器。
BERT的预训练阶段有两个无监督预测任务:遮蔽语言模型(Masked Language Modeling)和下一句预测(Next Sentence Predictiom)。
掩蔽语言模型(Masked Language Modeling)-由于BERT使用双向Tramsformer和多层自注意力机制,为了训练出深度的双向表示学习模型,BERT会对输入标记的某些百分比(论文中为15%)进行随机掩蔽,然后对这些遮蔽的标记进行预测。如同标准的语言模型所操作的,与遮蔽的掩码标记所对应的最终隐层向量被输入到词汇表上的输出的softmax函数中。与从左到右进行训练语言模型不同,对目标函数进行最大似然估计的模型允许表示融合上下文,这使得对深层的、双向的Transformer进行预训练成为可能。这允许获得双向预训练模型,但缺点是预训练和微调之间存在不匹配,这是因为掩码遮蔽(masked)的令牌(token)在微调过程中不会出现。为了缓解这一弊病作者并不总是用实际的[MASK]标记替换“掩码”字。训练中,可以随机划分出15%的数据,对其令牌位置进行预测。如果某一位置的令牌(token)被选中了,(1)80%的情况下被替换为[MASK]令牌(token);(2)10%的情况下替换为随机令牌(token);(3)剩下10%情况保持不变。BERT损失函数主要考虑对被遮蔽(Masked)掉的词预测,忽略了对非非遮蔽词预测。因此,模型的收敛速度会比定向模型慢,但这一缺憾,相比增强的上下文感知能力,是微不足道的。