H好菇凉666用万字长文聊一聊 Embedding 技术( 五 )


假设数据集的一个样本为 , 则将输入到预训练好的模型中 , 得到文本的embedding向量 , 最后采用线性层和softmax来预测标签 , 输出和损失分别为:
其中 , 为下游任务的参数 。
为避免在Fine-Tuning时 , 模型陷入过拟合和加速收敛 , 添加了辅助训练目标的方法 , 就是在使用最后一个词的预测结果进行监督学习的同时 , 前面的词继续上一步的无监督训练 。 最终的损失函数为:
其中 , 用于控制无监督目标权重 , 一般取 。
总体来说 , Fine-tuning阶段需要的额外参数是和以隔符token的embedding 。 其他任务迁移的输入格式可参考下张图:
H好菇凉666用万字长文聊一聊 Embedding 技术
本文插图
C) BERT BERT (Bidirectional Encoder Representations from Transformers)是Goole在2018年10月发表的 , 当时刷新了11项NLP任务 , 从此成为NLP领域“最靓的仔” 。 BERT、ELMo和GPT模型结构对比图如下图所示:
H好菇凉666用万字长文聊一聊 Embedding 技术
本文插图
相较于ELMo , BERT采用句子级负采样来得到句子表示/句对关系 , 使用Transformer模型代替LSTM , 提升模型表达能力 , Masked LM解决“自己看到自己”的问题 。 相较于GPT , BERT采用了双向的Transformer , 使得模型能够挖掘左右两侧的语境 。 此外 , BERT进一步增强了词向的型泛化能力 , 充分描述字符级、词级、句子级甚至句间的关系特征 。
BERT的输入的编码向量(长度为512)是3种Embedding特征element-wise和 , 如下图所示:
这三种Embedding特征分别是:

  • Token Embedding (WordPiece):将单词划分成一组有限的公共词单元 , 能在单词的有效性和字符的灵活性之间取得一个折中的平衡 。 如图中的“playing”被拆分成了“play”和“ing”;
  • Segment Embedding:用于区分两个句子 , 如B是否是A的下文(对话场景 , 问答场景等) 。 对于句子对 , 第一个句子的特征值是0 , 第二个句子的特征值是1;
  • Position Embedding:将单词的位置信息编码成特征向量 , Position embedding能有效将单词的位置关系引入到模型中 , 提升模型对句子理解能力;
最后 , 表示该特征用于分类模型 , 对非分类模型 , 该符合可以省去 。 表示分句符号 , 用于断开输入语料中的两个句子 。
在模型预训练阶段 , BERT采用两个自监督任务采用来实现模型的多任务训练:1)Masked Language Model;2)Next Sentence Prediction
MLM的核心思想早在1953年就被Wilson Taylor提出 , 是指在训练时随机从输入语料中mask掉一些单 , 然后通过该词上下文来预测它(非常像让模型来做完形填空) , 如下图所以:
H好菇凉666用万字长文聊一聊 Embedding 技术
本文插图
在论文实验中 , 只有15%的Token会被随机Mask掉 。 在训练模型时 , 一个句子会被多次输入模型中用于参数调优 , 对于某个要被Mask的Token并不是每次都一定会被Mask掉:
  • 80%概率直接替换为 , 如my dog is hairy -> my dog is
  • 10%概率替换为其他任意Token , 如my dog is hairy -> my dog is apple
  • 10%概率保留为原始Token , 如my dog is hairy -> my dog is hairy
这样做的好处主要有: