参考文章
基本思想:transformer,即句子中每个词都会与其他词一对一学习
原理
输入数据表示
[CLS]位本身没有语义,与文本中已有的其它词相比,这个无明显语义信息的符号会更“公平”地融合文本中各个词的语义信息,从而更好的表示整句话的语义。
语言建模原理
自回归语言建模:单向
自编码语言建模:双向(better)
预训练策略
屏蔽语言建模:相当于英语的完形填空
任务描述:在一个屏蔽语言建模任务中,对于给定的输入序列,我们随机屏蔽15%的单词,然后训练模型去预测这些屏蔽的单词
问题:以这种方式屏蔽标记会在预训练和微调之间产生差异。即,我们训练BERT通过预测[MASK]标记。训练完之后,我们可以为下游任务微调预训练的BERT模型,比如情感分析任务。但在微调期间,我们的输入不会有任何的[MASK]标记(意味着模型没办法依赖这个标记来学习每个单词的位置)。因此,它会导致 BERT 的预训练方式与微调方式不匹配。
解决方法:随即屏蔽的15%单词采用80-10-10%规则
1、采用80%的概率下应用[MASK], 既可以让模型去学着预测这些单词, 又以20%的概率保留了语义信息展示给模型。
2、保留下来的信息如果全部使用原始token, 那么模型在预训练的时候可能会偷懒, 直接照抄当前token信息. 采用10%概率下random token来随机替换当前token, 会让模型不能去死记硬背当前的token, 而去尽力学习单词周边的语义表达和远距离的信息依赖, 尝试建模完整的语言信息.
3、最后再以10%的概率保留原始的token, 意义就是保留语言本来的面貌, 让信息不至于完全被遮掩, 使得模型可以"看清"真实的语言面貌。
下一句预测
任务描述:NSP是二分类任务,在此任务中,我们输入两个句子两个BERT,然后BERT需要判断第二个句子是否为第一个句子的下一句。
数据集:
训练方式: