本文结合 A Visual Survey of Data Augmentation in NLP 和最新的综述论文 A Survey of Data Augmentation Approaches for NLP,大致总结了目前 NLP 领域的通用数据增强方法和几种针对如 NER 的序列标注模型进行适配的变种方法,关于后者,重点介绍了基于 mixup 改进的 SeqMix 方法。
此外,本文较长,建议结合目录食用。
阅读 Tip:每个增强方法最后的有序列表是提出或使用该方法的论文列表。
在不改变语义的情况下,替换句子中的词。
使用近义词随机替换句子中的某一个词。
BERT、ROBERTA、ALBERT……
有一点需要指出,决定哪个词需要被替换,这是个需要仔细考虑的问题,不然替换后可能会导致语义变化。
该方法的思想是,TF-IDF 得分较低的词是 uninformative 的,所以对他们进行替换无伤大雅。
Steps:
可以使用 TextBlob 来实现 BT,你甚至可以使用 Google Sheets:
正则模式匹配,例如将动词在缩略形式和展开形式之间来回转换。
但是存在一个问题是,It’s 有可能是 It is 也有可能是 It has:
为了解决这个问题,作者提出一个解决方法:有歧义的时候就不转,没歧义的时候转。
在文本中插入噪声,这样也可以增强模型鲁棒性。
随机拼错句子中的词。
模拟人们在键盘输入时因为键位离得近而打错的场景。要用什么字母来替换,基于键盘距离来计算。
根据单词频率分布进行替换。
使用一个 placeholder 来随即替换一个词。论文中使用 _
来作为 placeholder,用此方法来避免过拟合和作为语言模型的平滑机制。此方法帮助他们改善困惑度和 BLEU 分数。
随机打乱句子。
Steps:
随机替换两个词的顺序。
根据一定概率删除词。
由论文 1 提出,灵感来源于遗传学中的染色体交叉互换现象。
Steps:
论文中发现该方法对准确率没有影响,但是提高了 F1,表明对样本较少的类别还是有好处的。
由论文 1 提出,对句法树依据一定规则进行修改,生成新的增强样本。例如将原先是主动语态的句子,改成被动语态。
Mixup 原本是用于 CV 领域的增强方法,由论文 1 提出。原本指在一个 batch 中随机选择两张图片,将他们按照一定比例进行叠加。这被认为是一种正则化手段。
后来论文 2 将这个方法适配到 NLP 中,提出了两种适配方法。
和图片叠加是 pixel 相加类似,对于文本,那就是 embedding 相加。随机选择两个句子,将他们的 word embedding 按照一定比例相加,得到一个新的增强样本的 word embedding,作为一个训练样本。最终计算交叉熵损失时,其 ground truth label 就是按相同比例叠加的 label。
和 wordMixup 不同的是,此方法不是直接将 word embedding 相加,而是通过将原始 word embedding 通过一个 encoder,得到 sentence embedding,再将两个句子的 sentence embedding 按照一定比例相加。计算损失时处理方法同上。
在保有原本类别标签的同时,生成新的训练数据。
由论文 1 提出,论文 2 在多个 transformer-based 预训练模型上验证了此方法。
Steps:
GitHub - ntunlp/daga: Data Augmentation with a Generation Approach for Low-resource Tagging Tasks
Steps:
Steps:
此方法不会导致 label 序列变化。
和 LwTR 相似,只不过不再是从 label-wise token distribution 中选择 token 来替换,而是选择被替换 token 的同义词来替换,该同义词从 WordNet 中获得。
由于某词和其同义词的长度可能不等,所以此方法可能会导致 label 序列变化。
这里说的 mention 就是指的实体(应该不包括 O)。该方法本质上就是 SR 的 label-wise 版本。
Steps:
和 SR 同样存在长度可能不等的问题,所以也会导致 label 序列变化。
这里说的 segment,指的是相同 label 类型的连续序列,一个 segment 仅包含一种实体类型。
Steps:
此方法不会导致 label 序列变化。
该方法实际上也是对 CV 中 mixup 方法的 NLP 适配。
整个方法分成 3 个部分:Pairing、Mixup 和 Scoring/Selecting。
和 CV mixup 同理,此方法中,需要两个句子构成的句子对来进行 mixup。Pairing 就是如何挑选这个句子对的部分。挑选完句子对后,使用一定的 mixup 策略来混合句子对,得到一个或多个增强样本。而这个策略,论文提出了三种不同方法。得到增强样本后,我们需要评估该样本是不是合理,这就用到了 scoring/selecting 部分。该部分会对增强样本进行打分,如果该分值在合理范围内,那么就使用该增强样本。
Pairing
许多序列标注任务中,我们实际感兴趣的 label(即上文说的 mention,论文中称其为 valid labels)是比较少比较稀疏的。例如 NER 任务中,大部分 label 都是 O,我们感兴趣的 PER、LOC 等却比较少。所以,论文设计了一个 pairing 函数,该函数根据 valid label density η 来 pairing,定义如下:
其中,n 是 sub-sequence 中 valid label 的数量,s 是 sub-sequence 的长度。
然后设置一个阈值 η 0 ,只有当 η≥η 0 的时候,才是符合要求的句子。
Mixup
假设 Pairing 后得到序列 1 和序列 2。然后我们有一个 token 表 W,及其响应的 embedding E。
在 wordMixup 和 sentMixup 中,我们是直接将 mixup 后得到的 embedding 作为增强样本的 embedding 送入后续模型,不必得到增强样本的 token 序列。而在此论文中,修改了 mixup 策略,并且还能得到增强样本的 token 序列。
选择 mixed token embedding:
λ 从一个 Beta 分布采样的来。
这样就得到了增强样本的 token 序列,label 序列使用同样的比例进行混合。
根据 token 范围不同和 label 序列是否混合,有以下几种策略变种:
Scoring/Selecting
混合比例 λ 决定了混合强度,0 或者 1 都表示和原来一样,0.5 则表示一半一半,意味着更强的多样性。但是更强的多样性,也就意味着得到的增强样本有更大风险低质量和强噪声。
所以要通过一个打分函数来控制这个多样性。论文中使用的是 GPT-2 来计算增强样本序列的困惑度。然后判断该困惑度是否在合理区间内。
综合来说,该结合 data augmentation 的 active learning 算法整体过程如下:
其中 SeqMix 部分如下:
作者做了一些实验验证 SeqMix 的性能。数据集使用的是 CoNLL-03、ACE05(14k 标注数据)和 Webpage(385 条标注数据),其中为了验证模型在 low-resource 下的有效性,作者从 CoNLL-03 中随机选择了 700 条数据作为最终训练集,替代原来的 CoNLL-03。而剩下两个数据集,由于标注比较稀疏,保持原样不变。
作者按照算法 1 的流程,首先将 SeqMix 与其他 active learning 算法进行对比,SeqMix 部分默认使用 NTE query 策略。结果如图所示:
结果显示:
随后作者使用 Wilcoxon Signed Rank Test 对该结果进行了统计假设检验。结果显示,whole-sequence mixup 在 ACE05 数据集上没有通过检验,其他方法和其他数据集均通过检验。再结合 Fig 2,可能表明该方法在数据量大时效果不明显或不稳定,这可能是由于该方法在序列较长时可能会生成语义不合理的句子。
而 sub-sequence mixup 方法:
为了验证 SeqMix 方法尤其是 sub-sequence 方法对所有的 AL 方法都有提升,作者进一步将 SeqMix 方法与不同的 AL 方法进行比较,结果如 Fig 3 所示,平均来看,sub-sequence + NTE 的提升最大。
此外,作者基于上述实验结果,选用最优组合,即 sub-sequence + NTE,还做了对 discriminator 得分范围、valid label density η 0 、混合比例 λ 的分布参数 α 、augment rate r 的不同参数实验,结论总结如下:
Discriminator 得分范围
第一列的表头 Data Usage 应该是错误的,应为 discriminator score range。
使用的数据集为 CoNLL-03,700 个样本。从 200 个样本开始训练,每次 AL 增加 100 个样本,共进行 5 轮。由表可知,得分范围在
时效果最好。
注意得分实际上是困惑度。所以,得分越低,生成的增强样本语义上越好,也就是越顺,也会得到更好的效果。但是也不能无限降低,太苛刻,这样就得不到足够数量的增强样本了。
Valid label density η 0
前面说过,VLD 是由 sub-sequence 内的合法标签数 n (B-PER 和 I-PER 算两个)和其长度 s 相除得到的。需要注意的是
但是却并存的情况。
由图可知,红色点线代表的 3/5 组合效果最好。
混合比例 λ 的分布参数 α
论文中称之为 Mixing parameter。 α是 Beta 分布 的参数,本来 Beta 分布有两个参数,但是此处将两个参数设为相同,即
。该分布有个特点,值域为
,参数越大,采样值越有可能在 0.5 附近。
分布参数为 [0.5, 1, 2, 4, 8, 16] 时的分布形状
实验结果如 Fig 4(b) 所示:
可见
时性能最好,此时 λ 越有可能在 0.5 附近,意味着为增强样本引入了更多的多样性。但是 α 也不是越大越好,越大意味着 λ 的多样性就会减少,进入导致增强样本多样性减少。
Augment rate r
r 的定义如下:
即增强样本数量与原样本数量
的比例。分母表示使用策略函数
,从 unlabelled dataset
中选出 Top K个样本。值域为
,所以按照论文中说法,每次最多增强
个样本。那么每次增强多少呢?实验比较结果如下:
这论文写的也太不严谨了,发现好几处错误了
可见平均来说,0.2 的 augment rate 更为合适一点,说明模型更偏向“温和”一点的增强。总体来说,不宜超过 0.6。
此外我个人觉得,数据量较少时,可能使用较小的 augment rate 好一点;而数据量较大时,可能偏向较大的 augment rate。
主要参考的是前 3 个,后面几个是找到的但还没来得及看的。