- 主要结构仍是 Transformer
- Input:
a. WordPiece embeddings
b. learned positional embeddings, up to 512 tokens。
c. 增加了一个特殊的 token: [CLS], 用于分类任务。这个token的deep feature用于分类任务。
d. Sentence pairs, 两个句子合成一句,并用一个特殊的 token: [SEP]隔开。同时增加两个可训练的sentence embedding A 和 B,分别与第一句和第二局的每个tokens embedding concate在一起。
e. 对于单句,sentence embedding A 也会使用,与所有token embedding concate。 - 预训练的方式,最大的区别
a. 不是简单的left-to-right或者right-to-left的语言模型训练方式。而是mask部分tiokens,然后预测这部分的tokens,因此可以利用全句信息。其实也可以认为是学习句子的context representation,比起LM这种预训练更好。
具体:15%随机mask。 同时其中80%替换为一个特殊的 token: [MASK], 10%替换为随机的tokens,10%不变。因为训练时只会预测15%的tokens,相比于LM训练速度下降。
b. 句子预测,Sentence pairs,判断这两个句子是不是相关的。 - 预训练细节:
sentence可能是部分文本,不仅仅是一句。因为positional embeddings限制,input长度小于512。
激活函数用的是gelu。
base model, 4 cloud tpus 训练4天。large model, 16 cloud tpus 训练4天。
利用Masked LM和Next Sentence Prediction,相比于LM,直观上可以学习更好的句子的context representation。利用大规模数据,选择合适的非监督任务进行预训练,才能更好的进行transfer。