自动化数据增强:实践、理论和新方向

选自Stanford AI Lab Blog

作者:Sharon Y. Li

机器之心编译

参与:Panda

对当今需要大量数据的机器学习模型而言,数据增强是一种具有显著价值的技术——既可用于缓解数据量不足的问题,也可用于提升模型的稳健性。常规的数据增强技术往往依赖相关领域的专家,耗时耗力成本高昂,因此研究者开始探索自动化数据增强技术。近日,斯坦福大学 AI 实验室(SAIL)发表了一篇题为《自动化数据增强:实践、理论和新方向》的博客文章,介绍了这一领域及近期的相关研究进展。


在图像分类和文本分类等应用中,当今使用的几乎所有表现最好的机器学习模型几乎都会用到数据增强技术。启发式的数据增强方案往往需要依靠具有丰富领域知识的人类专家进行人工调整,但这可能导致所得到的增强方案是次优的。本文将概述性地介绍数据增强研究领域近期的研究成果,包括用于自动化搜索变换函数的过程的新算法、帮助我们理解实践中常用的多种增强技术的理论见解、一种利用数据增强修补有缺陷模型并提升其在数据的关键子集上的表现的新框架。

为什么要使用数据增强?

深度神经网络等现代机器学习模型的参数量可能多达数十亿,并且还需要大量有标注的训练数据——但这些数据往往难以获取。针对数据稀缺的问题,人们正越来越多地使用数据增强技术,即人为扩展有标注训练数据集的技术。现如今,几乎所有最先进的图像分类模型都会使用数据增强,而且这类技术在自然语言理解等其它研究方向也正得到愈加广泛的应用。本文的目的是概括性地介绍这一激动人心的研究领域的近期研究成果。

图 1:启发式数据增强会应用一个明确确定的变换函数序列,而这些函数和序列是由人类专家设计调整的。数据经过增强后,可用于训练下游模型。

启发式数据增强方案往往需要组合使用一组简单的变换函数(TF),比如旋转和翻转(见图 1)。由人类专家精心选取的数据增强方案可以为模型的表现带来提升。但在实践中,这样的启发式策略可能导致最终模型的表现差异巨大,由此可能无法为当前最佳的模型提供所需的增强。

数据增强领域有待解决的难题

常规数据增强方法的局限性表明这一领域还存在很大的研究进步空间。下面总结了数据增强领域一些具有挑战性的难题:

  • 从人工设计到自动搜索算法:不同于执行次优的人工搜索,我们要如何设计可学习的算法来寻找优于人类设计的启发式方法的增强策略?

  • 从实践到理论理解:尽管在实际应用中增强技术的设计研发进展速度很快,但由于缺乏分析工具,我们仍然难以理解这类技术的好处。该如何从理论上理解实践中使用的各种数据增强技术?

  • 从粗粒度到细粒度的模型质量保证:尽管现有的大多数数据增强方法的关注重点都是提升模型的整体性能,但通常还需在更细的粒度上关注数据的关键子集。当模型在数据的重要子集上的预测结果不一致时,我们该如何利用数据增强来缩减在相关指标上的表现差距?


本文将介绍为了克服上述难题而提出的新思想和近期研究成果。

实际应用的可学习数据增强方法

可学习数据增强很有发展潜力——让我们可以搜索更强大的参数化方法和变换函数的组成成分。在使用自动化数据增强方面,最大的难题也许是如何在变换空间上执行搜索。由于这个搜索空间中变换函数及相关参数的数量非常庞大,因此根本无法实现完全搜索。为了有效且高效地探索变换函数空间以及寻找表现优于人类设计的启发式方法的增强策略,我们该如何设计可学习的算法?针对这一难题,近期出现了下列一些方法。

TANDA:用于数据增强的变换对抗网络

为了解决这一难题,Ratner et al. 在 2017 年提出了 TANDA,这个用于学习增强策略的框架采用的方法是将数据增强过程建模为用户所提供的变换函数(TF)序列。举个例子,这些变换函数可能包括「旋转 5°」或「平移 2 个像素」。

究其核心,该框架由两个组件构成:(1)学习一个用于产生有用的增强数据点的变换函数序列生成器;(2)使用该序列生成器增强用于下游模型的训练集。尤其需要说明的是,该变换函数生成器基于 GAN 框架(Goodfellow et al. 2014),其训练目标是让生成的图像看起来足够真实,使之能骗过一个判别器网络。这里的基本假设是:这些变换要么会得到看起来像真的一样的图像,要么就会得到看起来不同于真实图像但判别器却无法区分的垃圾图像。如图 2 所示,生成器的目标是产生一个变换函数序列,并使得增强得到的数据点能够骗过判别器;而判别器的目标则是让原始训练集中的数据点得到接近 1 的值,让增强得到的数据点得到接近 0 的值。

图 2:使用 TANDA 实现自动化数据增强(Ratner et al.2017)。这里采用了对抗式方法训练变换函数序列生成器,以得到与训练数据相比足够真实的增强数据。

AutoAugment 与进一步改进

谷歌的 Cubuk et al. 于 2018 年开发了一种自动增强技术 AutoAugment,它也使用了相似的框架,并且学习到的增强策略达到了当前最佳表现。在这项研究中,变换函数序列生成器的学习目标是直接优化最终模型的验证准确度。为了降低 AutoAugment 的计算成本,之后又有研究者提出了一些新改进,包括 RandAugment(Cubuk et al. 2019)和 Adversarial AutoAugment(Zhang et al. 2019),它们在图像分类基准上创造了新的当前最佳(SOTA)。

对数据增强的理论理解

尽管在实际应用中数据增强技术的设计研发进展速度很快,但我们还是难以精准理解这类技术的好处。即使是更简单的模型,我们也不能很好地理解在增强数据上训练会如何影响学习过程、参数和决策表面。不仅如此,由于现代机器学习流程中执行数据增强的方式多种多样,而且还涉及不同的任务和领域,因此理解这一过程的问题的实际难度还要更上一层楼,也就更难获得普适的变换模型了。为了从理论上描述和理解实践中使用的各种数据增强技术,我们应该怎么做?为了解决这一难题,斯坦福大学的 SAIL 实验室从核(kernel)角度并在简化的线性设置下对数据增强进行了理论研究。

作为核(kernel)的数据增强

Dao et al. 2019 开发了一种理论框架,该框架将数据增强建模为了马尔可夫链(Markov Chain),通过一个变换函数的随机序列来执行增强,这类似于实际应用的数据增强执行方式。研究表明,在训练数据集上应用马尔可夫链(结合使用一个 k - 最近邻分类器)的效果类似于使用核分类器(kernel classifier),其中核是基础变换的一个函数。

基于核理论和数据增强之间的联系,Dao et al. 2019 表明在增强数据上的核分类器可近似地分解为两个组件:(1)经过变换的特征的一个平均化版本;(2)一个数据依赖型的方差正则化项。这暗含了一个对数据增强的更细致的解释——即可通过同时引入不变性和降低模型复杂度来提升泛化能力。Dao et al. 2019 通过实验验证了这种近似方法的质量,并给出了其与其它提升泛化能力的技术的关系,包括在不变学习方面的研究(van der Wilk et al. 2018)以及在稳健优化方面的进展(robust optimization)。

在简化的线性设置下的数据增强

以上研究有一个局限,即难以确定在所得到的核上的特定变换的效果。此外,我们还不清楚如何在核方法上有效地应用数据增强以得到与神经网络相当的性能。斯坦福大学 SAIL 在更近期的一项研究中考虑了一种更简单的线性设置,其可以建模图像增强领域常用的各种各样的线性变换,如图 3 所示。

理论见解。通过思考一种过参数化的线性模型(其中训练数据处于一个低维空间中),SAIL 得到了一些理论见解。研究表明,标签不变的变换可以为训练数据添加新的信息,而通过添加位于训练数据范围外的新数据点,可以降低岭估计器的估计误差。此外,他们还发现混合(Zhang et al., 2017)可通过在训练数据上缩减训练数据相对于 L2 正则化项的权重来发挥正则化的作用。

图 3:数据增强中常用的线性变换示意图

理论启发带来了新的当前最佳。SAIL 的理论研究得到的一大见解是:不同的变换(及变换的组合)会得到非常不同的最终性能表现。基于这一观察,可知道某些特定的变换事实上要优于另一些。在此基础上,SAIL 提出一种基于不确定性的随机采样方案,即在变换之后的数据点中,选取那些损失最高的数据点,即那些「能提供最多信息的数据点」(见图 4)。相比于 RandAugment,通过在三个不同的 CNN 架构上研究发现,这种采样方案可通过寻找更有用的变换来实现更高的准确度,这也帮助对应的模型达到了常用基准的当前最佳水平。比如,使用 Wide-ResNet-28-10 时,新方法在 CIFAR-10 上比 RandAugment 优 0.59%,在 CIFAR-100 上比 RandAugment 优 1.24%。这项研究的论文:http://stanford.edu/~senwu/publications/data_augmentation_draft.pdf 。相关代码也将会发布。

图 4:用于数据增强的基于不确定性的随机采样方案。每个变换函数都是从一个预先指定的操作集合中随机采样得到的。这里选取变换后损失最高的数据点来进行最终的模型训练。

新方向:用于模型修补的数据增强

当前大多数机器学习研究都仍然是为了解决固定的任务。但是,在现实世界中,部署中的机器学习模型可能会因数据分布中出现意料之外的变化而发生故障。这会导致一个令人担忧的问题,即该怎样合适地实现从模型构建到模型维护的过渡?SAIL 在他们最新的一项研究中提出了模型修补(model patching)——这是首个利用数据增强来缓解部署中有缺陷模型的性能问题的框架。

模型修补的一个医疗用例

下面提供一个具体的案例。在皮肤癌检测任务上,研究已经表明标准分类器在皮肤癌数据的两个子分组上的表现差异极大,这是由于分类器会将彩色绷带与良性图像关联起来(见图 5 左图)。SAIL 的另一项研究(Oakden-Rayner et al., 2019)已经研究过这种性能差异,并指出原因是分类器依赖于子分组中特定的特征,比如彩色绷带。

图 5:在一个皮肤癌数据集上训练的一个标准模型在有或无彩色绷带的恶性肿瘤图像上表现出了子分组性能差异。GradCAM 说明基础模型会将彩色斑点与良性皮肤病变错误地关联起来。使用了模型修补之后,两个子分组的恶性病变都能被正确地预测出来。

为了修补已部署模型中的这种缺陷,领域专家必须通过人工数据清理来消除子分组之间的差异,比如使用 Photoshop 移除皮肤癌数据上的标记(Winkler et al. 2019),然后使用修改后的数据重新训练模型。这做起来超级累人!我们能通过某种方法以规定的方式借助样本增强来实现各子分组数据量的平衡吗?SAIL 提出的模型修补新框架就是通过这种方法来解决这一问题的。

CLAMP:用于模型修补的类条件学习增强

模型修补的概念框架由两个阶段构成(如图 6 所示):

  • 学习不同子分组之间的子分组间变换。这些变换是保留了类别的映射,允许从语义上改变数据点的子分组身份(比如,添加或移除彩色绷带)。

  • 重新训练以使用增强后的数据修补模型,促进分类器稳健地应对数据的变化。


图 6:使用数据增强的模型修补框架。突出标示的框包含的样本中某个类别的子分组 A 和子分组 B 的表现不一样。条件生成模型在经过训练之后可将一个子分组的数据转换到另一个子分组(A→B 或 B→A)。

SAIL 提出的 CLAMP 是其提出的首个端到端模型修补框架的一种实例。其中组合使用了一种全新的一致性正则化器与一个稳健型训练目标;这个训练目标的灵感来自近期的分组分布的稳健型优化(GDRO,Sagawa et al. 2019)。SAIL 将 GDRO 扩展成了一种类别条件式的训练目标,其可联合优化每个类别中最差的子分组的性能。CLAMP 可以平衡每个类别中子分组的性能表现,可将性能差距降低至原来的 1/24。在皮肤癌检测数据集 ISIC 上,相比于稳健训练基准,CLAMP 将稳健准确度提升了 11.7%。在图 5 的可视化中还可以看到,CLAMP 可以成功去除模型对假特征的依赖(彩色绷带),而将注意力放在皮肤病变上——这才是真正的相关特征。

结果表明这种模型修补框架是自动化模型维护过程的一个很有潜力的研究方向。事实上,模型修补正发展成为一个最新的突破性领域,对于安全性至关重要的系统,这种方法能缓解一些重大问题;比如对于医疗系统,可帮助模型生成没有伪影的 MRI 扫描图像;对于自动驾驶系统,可提升感知模型在非常规物体或路况上的表现。SAIL 预计模型修补将在许多其它领域应用中得到广泛采用。

作者介绍:Sharon Y. Li目前在斯坦福人工智能实验室从事博士后研究工作。博士就读于康奈尔大学,曾师从图灵奖获得者约翰霍普克罗夫特教授。她将于今年秋季加入威斯康辛麦迪逊分校计算机系任职助理教授。她曾入选全美福布斯30岁以下精英人物榜单。

原文链接:https://ai.stanford.edu/blog/data-augmentation/

文为机器之心编译,转载请联系本公众号获得授权
✄------------------------------------------------
加入机器之心(全职记者 / 实习生):hr@jiqizhixin.com
投稿或寻求报道:content@jiqizhixin.com
广告 & 商务合作:bd@jiqizhixin.com