你有 MASK 吗

NLP 方向的同学们对 mask 一定不会陌生,不管是 BERT 前时代我们在做 attention 时对 PAD 符号的 mask,还是 BERT 时代出现的 MLM 任务中对 MASK 符号位置的 token 预测。本文旨在梳理一下 BERT 时代层出不穷的 mask 手法。

本文将 MASK 分为两类进行总结:第一类,主要目的是提升 MLM 任务的表现,可看作是 BERT 中原始 mask 做法的增强版,主要有 dynamic masking、entity-level masking、phrase-level masking、whole word masking、ngram masking、 similar word masking。第二类,希望 mask 在完成 MLM 任务的同时还能方便地改进 MLM 或者构造其他任务,比如:XLNet、SpanBERT、MASS、UNILM 等模型的做法。

1. 增强版 MASK

1. BERT 中的 MASK

还是先讲讲开山之作 BERT 中的 mask。BERT 并不希望像 GPT 一样沿用传统语言模型中单向的做法,希望能够充分利用上下文的信息,于是便有了 MLM (masked language model)任务,具体做法是随机地 mask 掉原始句子中的一些词,再经过多个 Transformer Block 编码后去预测这些被 mask 掉的词是什么。

对于 mask 掉词占句子的比例,BERT 使用了 15%,然而实际的做法并不是 15% 的词都被随机地使用 MASK 符号代替,这就引出了 BERT 存在的一个问题:MASK 只是为了预训练而不得已使用的一个虚拟符号,我们要完成的下游任务并不存在这个符号,这就意味着我们预训练的模型和微调的模型所针对的数据在 MASK 这个符号上分布完全不一样,不过还好,我们并不是拿到预训练模型就直接使用而是在任务数据上进行微调,这就意味着还有调整的余地。但是如果能把这个问题的影响降到最低不是更好吗?所以 BERT 中采取了一定的措施缓解这个问题:对15%被选中的词,其中 80% 被真正地使用 MASK 符号代替,剩余的 10% 被随机词代替,最后剩下的 10% 保持不变。这其中的 80% 用于维持 MLM 任务,20% 用于缓解预训练-微调两阶段不一致的问题,那为什么还要 10% 被随机替换呢?如果剩下 20% 保持不变,对于模型来说预测一个输入中已经存在的答案可能就过于简单了,所以这里加入 10% 的噪音,模型就无法简单地从输入中获取答案了,而不得不去对上下文建模。(实际上这个两阶段的不一致问题,笔者并没有找到一个详细的分析解答,大多数都是描述为下游任务不存在 MASK 符号而导致不一致,总觉得这个解释过于表面,不过也可能是笔者的水平太低,无法理解这个浅显的问题)

上述对 mask 分类的第一类中的 dynamic masking,严格来说并不是一种新的 mask 方式,是 mask 的时机。BERT 的做法是提前保存好已经被 mask 的句子,每个句子被随机 mask 10次,这样不仅可以提高数据的利用率,还可以适当地提高 MLM 任务的难度,试想一下,如果一个句子只有一种 mask pattern,那经过几十个 epoch 后,模型恐怕已经记住了这个模式,预测就变得异常简单了。尽管 BERT 对同一个句子 mask 多次,但仍然是一个静态的 mask,这方面是否有继续挖掘的潜力呢?RoBERTa 中就对比了 static masking 和 dynamic masking 的表现,dynamic masking 通常会稍胜一筹。

2. ERNIE 中的 MASK

这里的 ERNIE 指的是百度的工作并非清华的那个 ERNIE。ERNIE 除了原始的 masking,还使用了 phrase-level masking、entity-level masking。phrase-level 和 entity-leval 的粒度应该差不多,只是它们在句子中的成分不太一样。句子中的短语和实体是需要结合一些外部知识和先验信息来获取的,所以叫做“知识整合的增强表示”。短语中蕴涵着的句法以及实体专有词都能较好地被模型学习到,对下游任务微调时模型便不太可能将本应作为一个整体的句子片段分开解读,从而获得更好的表现。(下图来自 ERNIE 原论文)

3. Whole Word Masking

WWM 也是 BERT 原作者提出的,在 arxiv 上的日期稍晚于 ERNIE。个人感觉 WWM 和 phrase-level、entity-level 的粒度差不多。WWM 的思想主要是一个完整的词被整体 mask 掉要比 mask 掉词中的一部分进行预测更有挑战性一些,因此,模型需要更好地学习上下文语义才能正确地预测被 mask 的词。最终也就获得了表示更佳的预训练模型。例如:

“挥剑的瞬间心却在哭泣”

原始 masking:“挥剑的瞬[MASK]心却在哭[MASK]”

WWM:“挥剑的[MASK] [MASK]心却在哭泣”

原始 masking 中,模型获取只根据“瞬”、“哭”就可以正确预测出“间”和“泣”,而 WWM 要预测出“瞬间”就难得多了,“刹那”貌似也符合语境。

下图来自中文 BERT-WWM 原论文:

4. NGram Masking

最早使用 ngram masking 的应该是 SpanBERT,但是其论文中称为 Span Masking,最大长度取到 10;而 ALBERT 中称为 ngram masking,最长取到 3。还有个区别是它们取到各个长度的 ngram 的概率分布是不一样的,SpanBERT 采用的是 p = 0.2 p=0.2 p=0.2 的几何分布如下式1,具体的推导细节可以参考知乎这篇文章 。而 ALBERT 的做法是利用 n n n 的倒数然后归一化作为 ngram 的长度采样概率。(式 1 是几何分布的分布表达式,真正使用的时候,还要对 10 个概率进行归一化。式 2 已经包含了归一化的步骤)
P ( x = n ) = ( 1 − p ) n − 1 p P ( x = n ) = 1 / n ∑ k = 1 N 1 / k P(x=n)=(1-p)^{n-1}p \\ P(x=n)=\frac{1/n}{\sum_{k=1}^N1/k} P(x=n)=(1p)n1pP(x=n)=k=1N1/k1/n
ngram masking 在 SpanBERT 中最大取到了 10,这个长度还是蛮大的,比较少见,不过整体长度平均下来也只有 3.8,倒也还好。个人认为取得稍微长一点是为了配合 SpanBERT 中提出的 SBO (Span Boundary Objective) 任务,如果 mask 的长度过短,SBO 应该会变得比较简单,那么模型也难以从中获益。

ngram masking 不像 WWM 以及 ERNIE 中额外使用的两种 masking 机制,完全没有注入外部信息,但同样取得了不错的效果,甚至在大部分任务上优于 WWM 以及 phrase-level masking 和 entity-leval masking。ngram masking 其实可以看作另外三种的一种更广义的做法吧,因为它是随机的,所以是有可能

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值