查看原文
其他

前沿重器[14] | 美团小样本学习技术总结

机智的叉烧 CS的陋室 2022-08-24
 

【前沿重器】


栏目主要给大家分享各种大厂、顶会的论文和分享,从中抽取关键精华的部分和大家分享,和大家一起把握前沿技术。具体介绍:仓颉专项:飞机大炮我都会,利器心法我还有


往期回顾

少样本学习本身不在我的知识体系内,但是最近这篇美团的文章是让受益良多,特此记录一下,也给大家介绍一些这块我的收获和思考。

这篇文章的原文在这里:https://mp.weixin.qq.com/s/mA6pVEllhzRWAdsuriQ1BQ

懒人目录:

  • 小样本学习的背景
  • 数据增强
  • 半监督学习
  • 集成学习+自训练
  • 主动学习
  • 个人想法

小样本学习的背景

算法的发展史某种程度上就是和数据的抗争史,在现实应用场景,我们需要面对的困难不在于什么模型解决这个问题,而在于这些数据可能真的很难让我们训出满意的模型,尤其是数据的稀缺性。数据的稀缺性,可以分为这几种情况:

  • 样本空间稀缺。
  • 样本分布在局部空间。
  • 不同领域之间的样本差异。

这集中的不同可以用3张图分别表示:


而针对这些问题(当然还有主动学习涉及的针对性样本标注问题),小样本学习可以有如下思路:

  • 数据增强。针对embedding和样本进行增强。
  • 半监督学习。
  • 集成学习+自训练。
  • Few-shot Learning/领域迁移。
  • 主动学习。

后面来详细讲讲这些方法和思路吧。

数据增强

样本增强

之前其实简单讲过了数据增强,重复的我就不再多说了:(NLP.TM[32] | 浅谈文本增强技术)。

另外需要补充谈的是,可以结合预训练语言模型来进行一些增强:

  • MLM任务的本质就是填空,因此可以把空给挖了后填上概率最高的词,此时就可以产生新的样本。
  • 用文本生成生成新的样本。

当我们拿到增强的样本的时候,其使用方式也是有讲究的,当然直接混在正确样本里学习可能是一个方法,但由于增强样本的质量不如标注样本,学习起来可能并不是那么好。NAACL2021中有一篇论文给出了更好的方式,如图所示:


整体思路就是,先学习标注数据,然后再使用增强数据进行学习。

  • 两阶段:直接分两个阶段进行学习,先用标注数据进行学习,然后用标注数据+增强样本进行学习。
  • Gradual:标注数据进行学习后,逐步把增强数据混合进去来进行学习。

Embedding增强

Mixup是一种混合两个样本信息的方法。对两个样本,可以进行一些交叉的变换,复杂的有SeqMix、Manifold Mixup,简单的可以是一种线性的变换,例如基于进行变换。

对抗训练的方式在比赛中倒是挺流行的,但是看身边的同事用起来好像不多,比较流行的有FGM、PGD之类的。

对比学习似乎是最近才比较火起来的,不过火的时间好像并不是很长,Doupout最早的出现就是为了减弱过拟合而出现的,那么,我们可以用两次dropout的两个embedding来做相似样本,要求输出的概率一致,这种辅助损失结合原有的交叉熵损失,能进一步提升模型的稳定性,从而让效果提升。(这里感觉还能再来一篇文章讨论)

半监督学习

半监督学习是基于有少量标注数据的基础上,配合大量无标注的数据实现强模型的训练。这块是真的自己完全没有接触过,边看边学感觉收获挺大的。

半监督学习的核心理论基础有3个:

  • 自洽正则化:对未标记的数据进行扩充,这个和数据增强里面的思路类似,这里要求新数据要和原数据的标注一致,所以称为“自洽”。
  • 最小化熵:一般我们都说最大熵,但这里并非如此,我们需要让未分类的数据尽可能得到稳定可靠的预测,所以这里要求最小化熵。
  • 传统正则化,半监督由于本身数据还是少,过拟合还是可能会出现的,因此可以用一些经典的正则化方案来避免这个问题,如L2正则。

由于半监督是需要大量依赖未标注的数据,而要让这些未标注的数据对模型产生正向作用,自洽正则化就成为了研究的重点,核心就看这些数据如何有效应用,文章给了3个思路。

  • 使用历史模型进行集成,利用历史模型的预测或参数构造的一致性进行这种规范化。
  • 在embedding上加入扰动。
  • 利用样本增强的方式保证,当然这就和样本增强的效果有关了。

基于历史模型集成

这里提到了Temporal Ensemble、Mean Teacher、MixTemporal三种方式。

Temporal Ensemble对每个历史模型的预测进行指数滑动平均得到未标注数据的伪标签,辅助进行优化,分别对有标注数据和无标注数据进行不同的处理。

  • 有标注数据进行交叉熵损失。
  • 无标注数据使用多次预测结果的指数滑动平均做MSE损失。

Mean Teacher和上面的类似,但是参考了蒸馏使用了两个模型,Teacher用的是无标签数据构造,有标签的数据构造student模型,而由于预测阶段是通过这两个模型来进行预测,所以参数的更新,尤其是针对无标签数据的更新可以跟着step进行同步完成。

MixTemporal本身是基于历史模型集成的方式,但其实借鉴了MixMatch和MixText,会在后面说的样本增强里面讲到,简单地说就是多预测几次,把几次预测的结果的指数滑动平均作为伪标签,从而实现预测。

Embedding加入扰动

这里好像只提到了VAT这一种模式,这种当时和前面提到的对抗学习非常类似,在模型变化中加入噪声,这里的加入是针对未标注数据的,得到未标注数据的对抗损失,然后结合标注数据的交叉熵算联合损失。

样本增强的半监督

样本增强的半监督手段核心就是使用样本增强手段对未监督数据进行增强,而因为小幅度的变化对未标注数据本身的标签应该变化超级小,因此增强前后的标签变化则就可以成为损失函数实现这种半监督化。

  • MixMatch是针对图像的,利用旋转缩放的方式进行增强;
  • MixText则是针对文本,利用回译的方式增强;
  • UDA对图像用了RandAugment,对文本使用了回译和非核心词替换。

集成学习+自训练

集成学习就是训练多个弱分类器然后集成起来,半监督里面就是可以用多个用有标签训练的模型构造未标注数据的伪标签,然后用置信度较高的样本加上有标签的样本一起训练得到最终的模型。

主动学习

主动学习这东西我之前也研究过,不过近年来新论文倒是不多,其本质就是挖掘模型认为比较困难的样本进行复核,从而让模型进一步学习。而研究的重点,就在于怎么定义这个“困难”。

  • 置信度低。
  • 类边缘样本。(其实和置信度有点像)
  • 熵。

当然还有一些例如让梯度最大、方差较小的样本,不赘述了。

个人想法

小样本学习本身是自己的知识盲区,本次内容的学习也是对自己知识的扩充,也发现里面有一些曾经自己知道的内容,以一个新的形势出现,例如这里的对比学习,近期我是有在关注但是没想到可以用这个方式运用起来,思路一下子打开了,当然,这里面有一些思路和方法后续我会开始尝试吧,划几个重点:

  • Embedding增强。
  • 对抗训练。
  • 一些半监督的手段。

再次把原文放在这里:https://mp.weixin.qq.com/s/mA6pVEllhzRWAdsuriQ1BQ,里面提到的论文都很值得看,记得关注。



您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存