Bert原理与实战

Part1-Bert原理

1.1 Bert、GPT与ELMo的结构差异

Bert原理与实战_第1张图片

  • 在水平方向上,ELMo中每层的‘Lstm’指的是LSTM层中的一个单元,同理Bert与GPT中的’Trm’指的是同一个Transformer单元;
  • Bert中的Transformer单元,只使用了《Attention is all your need》中Transformer的Encoder部分

1.2 Bert中的输入

Bert原理与实战_第2张图片

  • 序列中每个词的输入包含三部分信息,Token的嵌入、位置编码、所属句子位置编码,这三种嵌入之和为每个词的输入表示;三种嵌入向量都是随机初始化,然后模型自动学习得到的
  • 特殊标识‘CLS’标识classification,经过多层编码后,特殊标识符’CLS’会包含sentence-level的编码信息,该信息可用于分类任务
  • 特殊标识‘SEP’标识两个句子之间的分割,会作为一个特殊标识符进行编码

1.3 Bert预训练的两个任务

Bert的训练的损失是两个任务的损失之和

任务1:使用Masked Language Model做“完型填空”

  • 随机遮掩掉原句子中15%的token
  • 80%被遮掩的部分使用特殊标识token ‘MASKED’代替、10%被遮掩的部分随机使用另一个词代替、剩下10%被遮掩的部分使用原单词
  • 虽然Masked Language Model在编码词时实现了真正意义上的双向,但也有一个明显的缺点,就是引起了pre-training与Fine-tuning的不匹配,因为在下游的Fine-tuning任务中,输入是没有’MASK’标识符的,通过随机替换1.5%比例(15%乘以10%)的被遮掩词,引入噪声,减轻这种Mismatch的不良影响

任务2:给定句对A与B,判断句子B是否是句子B的下一句

  • 50%的概率,标签为ISNEXT,50%的概率标签为NOTNEXT
  • 有点类似Ski-Gram中的负采样思想

1.4 Fine-tuning阶段:下游任务

Bert原理与实战_第3张图片

  • a)、b)是分类任务,比如a)任务处理句对是否具有相近的意思,b)是单句分类任务,比如影评数据,解决下游的分类任务,只需要提取顶层的特殊标识符’CLS’对应的隐向量,将该隐向量接一个全连接层,将隐向量映射到K维,K为类别数,再接Softmax,即可进行分类
  • c)任务:给出一个问题Question,并且给出一个段落Paragraph,然后从段落中标出答案的具体位置。需要学习一个开始向量S,维度和输出隐向量维度相同,然后和所有的隐向量做点积,取值最大的词作为开始位置;另外再学一个结束向量E,做同样的运算,得到结束位置。附加一个条件,结束位置一定要大于开始位置。
  • d)任务:加一层分类网络,对每个输出隐向量都做一次判断。
  • 这些任务,都只需要新增少量的参数,然后在特定数据集上进行训练即可。从实验结果来看,即便是很小的数据集,也能取得不错的效果。
    在Bert论文中指出,预训练模型有两种使用策略,Fine-Tuning & Feature-Based,二者的主要区别在于:在Fine-Tuning策略下,预训练模型的所有参数会根据下游任务进行微调,即预训练模型中的所有参数是trainable,并且根据下游特定任务新增的网络层级中的(相对pre-train过程)的少量参数也是trainable;而在Feature-Based策略中,预训练模型中的所有参数是被冻结的,即non-trainable。
    另外还需要注意,Transfer Learn 与 Fine-Tuning 是有区别的,迁移学习是基于Supervised Data的。

Part2-Bert实战

placeholder

参考资料:

1. BERT和Transformer理解及测试
2. 自然语言处理中的Transformer和BERT
3. Bert系列
4. Fine-Tuning 与 Feature-Based strategy 的区别

你可能感兴趣的:(NLP)