Bert不完全手册4. 绕开BERT的MASK策略?XLNET & ELECTRA

基于随机token MASK是Bert能实现双向上下文信息编码的核心。但是MASK策略本身存在一些问题

  • MASK的不一致性:MASK只在预训练任务中存在,在微调中不存在,Bert只是通过替换部分的随机MASK来降低不一致性的影响
  • 独立性假设:对MASK的预测是基于独立概率而不是联合概率,模型并不会考虑MASK之间的条件关联
  • MASK训练低效:每次只遮盖15%的token,每个batch的模型更新只基于这15%的input,导致模型训练效率较低

MASK有这么多的问题,那能否绕过MASK策略来捕捉双向上下文信息呢?下面介绍两种方案XLNET,Electra,它们使用两种截然不同的方案实现了在下游迁移的Encoder中完全抛弃MASK来学习双向上下文信息。正在施工中的代码库也接入了这两种预训练模型,同时支持半监督,领域迁移,降噪loss等模型优化项,感兴趣的戳这里>>SimpleClassification;

XLNET

XLNET主要的创新在于通过排列组合的乱序语言模型,在不依赖MASK的情况下捕捉双向上下文信息,从而避免了MASK存在带来的不一致性。

乱序语言模型

常规语言模型的目标是按输入顺序进行因式分解,把文本联合概率拆分成条件概率的乘积

[max_{\theta} log P_{\theta}(X) = \sum_{t=1}^T log P_{\theta} (x_t|x_{\lt t}) ]

而其实对于长度为T的序列,总共有T!种不同的排列组合方式,语言模型只是使用了输入顺序对应的一种分解顺序。而XLNET为了捕捉双向的上下文信息,把目标调整为最大化所有排列组合的以上概率。

Bert不完全手册4. 绕开BERT的MASK策略?XLNET & ELECTRA

以下(Z_T)来指代不同的排列组合,(z \lt t)是指在z的排列组合中t之前的元素

[ max_{\theta} E_{z \sim Z_T} [\sum_{t=1}^T log P_{\theta} (x_{zt}|x_{z \lt t})] ]

为了控制计算量,XLNET并不会计算所有排列组合而是只采样一部分进行计算。因为不同的排列组合共用一套参数,也就隐形实现了双向上下文信息的获取。

这里需要注意的是所谓的乱序,并不是对输入样本进行打乱,输入样本会保持原始顺序,而乱序的计算是通过Attention MASK来实现。例如用’1->3->2’的顺序,生成第3个token会先mask第2个token只使用1个token的信息。这个实现是非常必要,一方面对输入保序,保证了预训练和下游迁移时文本输入是一致的都是正常顺序。另一方面,如果对输入进行直接打乱,会丢失文本的正常顺序,导致模型不知道正常的文本是什么样子的。

从信息传递的角度来看,BERT在还原每个MASK token时都使用了全部的上下文信息,而XLNET的每一种排列组合在预测当前token时只采样了当前排列组合下的部分信息,从这个角度来讲乱序语言模型应该要比MLM更加稳健以及更容易学到更丰富的文本语义

双流机制

但以上的乱序AR存在一个问题,也就是当顺序是’3->2->4’时预测4用到的信息,和’3->2->1’预测1时的信息是一样的。也就是模型无法区分4和1不同位置带来信息差异。为什么只有XLNET会存在这个问题,GPT和BERT就不存在这个问题呢?

在BERT之中是通过MASK来标注哪些位置是需要AE预测的位置,而MASK只修改了对应位置的token embedding,而position embedding是保留了原始位置的信息的,这样在进行self-attention计算时,模型只是不能有效获取MAS
K位置的token信息但是可以获取位置信息。不过其实我对BERT的底层位置信息在经过多层transfromer block之后MASK部分的位置信息是否还能都得到有效的保留,个人感觉是存疑的

而在GPT中因为默认了向前递归,对于所有文本在预训练任务和下游迁移中这个顺序都没有发生改变,所以模型对位置信息的依赖只在x

Original: https://www.cnblogs.com/gogoSandy/p/16065757.html
Author: 风雨中的小七
Title: Bert不完全手册4. 绕开BERT的MASK策略?XLNET & ELECTRA

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/566170/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球