谷歌又来造福AI学者了:数据增强也能自动化!

谷歌又来造福AI学者了:数据增强也能自动化!

深度神经网络是非常强大的机器学习系统,近年来在计算机视觉领域更是取得了极大的成功。不过,它的威力得以发挥,很大程度上要归功于庞大的有标注的训练数据集。

一般来说,只要增加数据集中数据的数量、质量和多样性,就可以改善模型的效果。



然而,收集数目庞大的高质量数据在实践中极其耗费时间精力,并不总是可行的。解决该问题的一种方法就是将图像的对称性硬编码到模型结构中,例如卷积神经网络。但这种方式的难度较大。另一种方法就是进行数据增强。



数据增强是一种通过随机“强化”数据来增加数据的数量和差异性的策略。我们知道,神经网络在最开始并不是智能的,需要在不断学习中逐渐完善。



谷歌又来造福AI学者了:数据增强也能自动化!

图丨对 

ImageNet 

中的图片进行数据增强。左侧为原图,右侧为处理后的图片。上图:对图片进行数据增强的常用操作中心旋转

举例来说,假如我们想要训练可以识别狗狗图片的神经网络模型,在未经训练的情况下,网络模型无法判别出黑狗、白狗、花狗、正立的狗、四肢朝天的狗、侧躺的狗都属于同一类别。我们需要为模型提供相应的例子进行训练,但是数据集中可能并不能囊括狗各种颜色,各种形态的图片。



在这种情况下,如果对训练图片进行简单的变化,把站立的狗翻转、旋转,改变狗的颜色,我们就拥有了多张可以用于训练的图片,神经网络可以在这些丰富的样例中发现数据中的不变性,把握狗这一类别的特点。这个通过对数据集中图片进行变换处理得到更多样例的过程,就是数据增强。它在不引入更多样例的情况下对数据集进行了扩充,训练后可以提高模型的泛化能力。

 

谷歌又来造福AI学者了:数据增强也能自动化!

图丨通过 

AutoAugment 

选择的策略对图像进行数据增强操作



以往的数据增强方式往往由计算机科学家手动设计,这需要许多额外的知识。此外,这些方法往往只对某一个数据集适用,无法迁移到其他数据集上。比如说,在 CIFAR-10 和 ImageNet 这类自然图像数据集上,对图片进行随机裁剪,图像镜像和色彩漂移/白化等是更适合的数据增强策略,但这些方式却不适用于 MNIST(一个手写数字数据集)。



一直以来,计算机视觉和机器学习领域的研究重点往往是设计出更好的网络模型,却未在寻找更好的数据增强方式,纳入更多数据的不变性上付出更多努力。而最近,对自动学习数据增强方式的需求逐渐上升。



Google AI 最近提出了简单的,自动找到适合数据集的数据增强方式的方法 AutoAugment,其灵感来自于最近体系结构搜索领域取得的进展。

通过这种方法选择出的数据增强策略不仅在 ImageNet、CIFAR-10, CIFAR-100 和 SVHN 等多个数据集上刷新了准确率,而且可以在不使用无标签数据的情况下取得与半监督学习相当的效果。此外,适用于一个数据集的策略也可以应用于其他相似的数据集。

 

谷歌又来造福AI学者了:数据增强也能自动化!

图| 在 SVHN( street view of house numbers)数据集上通过 AutoAugment 得到的一种数据增强策略以及其增强效果



该算法将选择最好的增强策略问题视为离散搜索问题。在研究者建立的搜索空间中,每个策略包含 5 个子策略,每个子策略包含 2 个图像处理操作。每个操作由两个参数决定:执行该操作的概率以及操作的程度度量。例如,中心旋转 90 度就是一个基本的图像处理操作。



搜索空间中的图像处理操作共计 16 种。它们主要来自常用的 python 图像处理库 PIL。研究者考虑了该库中所有以图片作为输入和输出的函数。除此之外,他们还选择了另外两种极富前景的数据增强技术:Cutout 和 SamplePairing。为了进行离散搜索,实验中将执行每种操作的概率离散化为 11 个值,将每种操作的度量离散化为 10 个值。每个子策略包含两个参数,故每个子策略的选择就是在 (16*11*10)^2 种可能性中搜索。而每个策略包含 5 个子策略,就是在包含 (16*11*10)^10 种可能性的空间中进行搜索。

 

谷歌又来造福AI学者了:数据增强也能自动化!

图丨 搜索空间中的图像变换操作以及度量取值范围



研究者选择强化学习作为搜索算法。它由两部分组成:第一部分是由 RNN(递归神经网络)组成的控制器,第二部分是使用近端策略优化算法的训练算法。训练中的每一步,控制器通过 softmax 函数选择一个策略,然后将其嵌入到下一步。控制器通过奖励信号进行训练,即该策略在改善子模型(搜索模型的一部分,被训练的神经网络)上的效果。研究者指出,强化学习并不是搜索算法唯一的选择。选择遗传编程等作为搜索算法可能会提高整个算法的效果。



在实验中,神经网络模型利用选定的增强方式增强过的训练集进行训练,即对最小批量数据中的每一个样例随机使用五种策略中的一种进行处理。

接下来通过一个验证集来检验模型的准确度,这个准确度再作为奖励信号用于控制器的训练。通过这样的过程选择出 5 个最佳策略组成一个包含 25 个子策略的最终的增强策略,在各个数据集上应用。



在 CIFAR-10 数据集上,利用 AutoAugment 算法自动获得的增强策略,该数据集上的错误率下降到了 1.48%,比之前的最好结果下降了 0.65%。训练的过程中研究者也发现,在给定的训练时间内,使用少量数据多轮训练比增加数据量减少迭代次数的效果更好。

 

谷歌又来造福AI学者了:数据增强也能自动化!

谷歌又来造福AI学者了:数据增强也能自动化!

图| CIFAR-10(上图)和 CIFAR-100(下图)数据集上不同模型配合不同数据增强方式的错误率,数值越低模型效果越好



在 Image 数据集上,利用该算法得到的增强策略,Top1 准确率达到了 83.54%。

 

谷歌又来造福AI学者了:数据增强也能自动化!

图| ImageNet 数据集上上利用 AutoAugment 搜索到的一种增强策略,以及其增强效果



数据增强无疑是扩充数据集、改善模型效果简单而有效的方法。不仅是计算视觉,在其他深度学习广泛应用的领域,它也应该得到足够的关注。



-End-



论文地址:http://arxiv.org/abs/1805.09501?context=cs.CV



参考:http://ai.googleblog.com/2018/06/improving-deep-learning-performance.html

谷歌又来造福AI学者了:数据增强也能自动化!



谷歌又来造福AI学者了:数据增强也能自动化!