【NLP】少样本 - hippowc/hippowc.github.io GitHub Wiki

nlp少样本困境

在很多领域,高质量的标注数据十分稀缺,而且样本标注工作量很大。可以从提升标注效率的角度,也可以从基于当前少量样本的角度,本文主要从基于当前少样本的角度进行

如何评价少样本解决方案的好坏:

  • 少样本场景下,比起同等标注量的无增强监督学习模型,性能有较大幅度的提升;
  • 少样本场景下,能够达到或者逼近充分样本下的监督学习模型性能
  • 在充分样本场景下,性能仍然有一定提升

目前少样本解决方案可做如下归纳:

  • 文本增强
    • 无条件增强
    • 条件增强
  • 半监督学习
  • UDA:google提出的文本增强 + 半监督学习的结合体

文本增强

深度学习视觉领域的增强方法可以很大程度提高模型表现,减少数据依赖,因为图像的一些简单操作,譬如旋转或者灰度,并不会改变图片语义,语义不变的变换是的增强成为计算机视觉研究的一个重要工具。那么NLP领域相关方案也有很多,归纳如下:

无条件增强

既可以对标注数据进行增强(增强后标签不发生变化),又可以针对无标注数据进行增强,不需要强制引入标签信息。

但这种方式可能会造成文本主旨发生发生变化(例如情感分析中,某一时刻将good 替换为了bad),带来的噪音过大从而影响模型性能。

  • 词汇&短语替换

    • 词典
      • 主要从文本中选择词汇或短语进行同义词替换,词典可以采取 WordNet或哈工大词林等。著名的 EDA (Easy Data Augmentation)就采用了这种方法。
    • 词向量
      • 在嵌入空间中找寻相邻词汇进行替换,我们所熟知的TinyBERT就利用这种技术进行了数据增强。
    • Masked LM
      • 借鉴预训练语言模型(如BERT)中的自编码语言模型,可以启发式地Mask词汇并进行预测替换
    • TF-IDF
      • 质上是一种非核心词替换,对那些low TF-IDF scores进行替换,这一方法最早由Google的UDA提出
  • 随机噪音注入

    • 随机插入
      • 随机插入一个词汇、相应的拼写错误、占位符等,UDA则根据Uni-gram词频分布进行了采样
    • 随机交换
      • 随机交换词汇或交换shuffle句子
    • 随机删除
      • 随机删除(drop)词汇或句子
  • 混合&交叉

    • 混合增强
      • 起源于图像领域的Mixup,这是一种表示增强方法,借鉴这种思想,提出了wordMixup和sentMixup将词向量和句向量进行Mixup
    • 交叉增强
      • 类似于“染色体的交叉操作”,文献将相同极性的文本进行交叉
  • 回译

    • 基于机器翻译技术,例如从中文-英文-日文-中文;我们熟知的机器阅读理解模型QANet和UDA都采用了回译技术进行数据增强
  • 句法变换

    • 通过句法树对文本句子进行解析,并利用相关规则进行转换,例如将主动式变成被动式句子
  • 对抗增强

    • 不同于CV领域利用GAN生成对抗进行数据增强,NLP中通常在词向量上添加扰动并进行对抗训练,NLP中的对抗训练方法:FGM, PGD, FreeAT, YOPO, FreeLB

条件增强

所谓条件增强(Conditional Data Augmentation),就是意味着需要强制引入「文本标签」信息到模型中再产生数据。

  • 深度生成模型
    • CVAE
      • 既然条件增强需要引入标签信息进行数据增强,那么我们自然就会联想到Conditional变分自编码模型(CVAE),。想生成一个高质量的增强数据,往往需要充分的标注量,但这却与「少样本困境」这一前提所矛盾。
  • 预训练语言模型:BERT等在NLP领域取得了巨大成功,特别是其利用大量无标注数据进行了语言模型预训练。如果我们能够结合标签信息、充分利用这一系列语言模型去做文本增强,也许能够克服深度生成模型在少样本问题上的矛盾。
    • Contextual Augment
    • CBERT
    • LAMBADA
    • BERT GPT BATR-prepend

半监督学习

监督学习往往需要大量的标注数据,而标注数据的成本比较高,因此如何利用大量的无标注数据来提高监督学习的效果,具有十分重要的意义。这种利用少量标注数据和大量无标注数据进行学习的方式称为半监督学习(Semi-Supervised Learning,SSL) 。

相关的研究主要着力于如何针对未标注数据构建无监督信号,与监督学习联合建模;简单地讲,就是如何在损失函数中添加针对未标注数据相关的正则项,使模型能够充分利用大量的未标注数据不断迭代,最终增强泛化性能

深度学习时代的半监督学习,主要针对未标注数据相关的正则化项进行设置:

  • 熵最小化(Entropy Minimization): 根据半监督学习的Cluster假设,决策边界应该尽可能地通过数据较为稀疏的地方(低密度区),以能够避免把密集的样本数据点分到决策边界的两侧。也就是模型通过对未标记数据预测后要作出低熵预测
  • 一致性正则(Consistency Regularization): 对于未标记数据,希望模型在其输入受到扰动时产生相同的输出分布

UDA Unsupervised Data Augmentation 无监督数据增强

文本增强方法通常针对标注数据(有监督数据增强),其在少样本场景通常会取得稳定的性能提升,但相较于充分样本下的监督学习性能,也许是有限的提升

为克服这一限制,UDA通过一致性训练框架,将有监督的数据增强技术的发展扩展到了有大量未标记数据的半监督学习,尽可能的去利用大量未标记数据

UDA 文本增强方案

  • TF-IDF关键词替换
  • 回译

总结

  • 文本增强提供了原有标注数据缺少的归纳偏差,在少样本场景下通常会取得稳定、但有限的性能提升;更高级、更多样化和更自然的增强方法效果更佳。
  • 融合文本增强+半监督学习技术是一个不错的选择。半监督学习中一致性正则能够充分利用大量未标注数据,同时能够使输入空间的变化更加平滑,从另一个角度来看,降低一致性损失实质上也是将标签信息从标注数据传播到未标注数据的过程。

工具

python nlpaug