使用 GAN 进行数据增强-AI快速进阶系列
1. 概述
在本教程中,我们将讨论使用生成对抗网络 (GAN) 进行数据增强。首先,我们将介绍数据增强和 GAN,然后我们将介绍一个能够生成非常逼真的样本的 GAN 架构。
2. 数据增强
深度学习彻底改变了许多领域,并已成为许多复杂任务(如文本翻译、图像分割和自动语音识别)的最新方法。大型注释数据集在这一成功中起着至关重要的作用,因为深度学习模型需要大量数据进行训练。但是,注释大量训练数据有时既困难又昂贵。因此,适当的数据增强对于提高模型性能非常有用。
为了更好地通过示例解释这个概念,我们将重点介绍图像的数据增强,但无论域如何,方法都是相同的。通常,数据增强的目标是通过更改现有数据的属性或生成全新的合成数据来增加数据集的大小。
通常,遵循前一种方法,我们翻转、旋转或随机更改图像的色调、饱和度、亮度和对比度。该过程很简单,可以在训练模型时在线完成。使用这些技术的缺点是,我们不会向模型引入新的合成数据,而只是包含处于不同状态的相同样本。因此,模型已经看到了这些样本,并且对泛化性的影响是有限的:
生成新的逼真的合成数据是一项艰巨的任务,包括学习模仿数据集的原始分布。正如我们将看到的,GAN 可以生成真实的样本并提高模型性能。
3. GANs
让我们首先简要介绍一下它们由两部分组成的结构。
学习生成合理数据的生成器。它采用固定长度的随机向量作为输入,并学习生成模拟原始数据集分布的样本。然后,生成的样本成为鉴别器的负示例。
学习将生成器的合成数据与真实数据区分开来的鉴别器。它将样本作为输入,并将其分类为“真实”(来自原始数据集)或“假”(来自生成器)。鉴别器惩罚生成器产生难以置信的样本:
在图像的情况下,生成器和鉴别器都是CNN,生成器的目标是生成非常逼真的图像,以至于鉴别器认为它们是真实的。然后,使用反向传播来随着时间的推移更新这些模型的权重和偏差,生成器将慢慢学习创建模拟原始数据集的物理和数学分布的样本。
这些模型玩一个两人的最小最大值游戏,因此优化鉴别器的目标函数会对生成器的目标函数产生负面影响,反之亦然。具体说来:
2)鉴别器希望最大化log(D(x_{d})) + log(1 - D(G(z)))原始数据集中的样本位置。该项对应于为真实样本和来自生成器的样本分配正确标签的概率。
4. 条件性 GAN
在少数样本学习设置中,我们希望根据有限数量的样本训练预测模型。例如,假设我们要创建一个模型,该模型将狗的图像作为输入并预测其品种。我们有庞大的动物数据集,但用狗品种注释的数据量非常有限。在这里,解决方案是使用 GAN 来扩充我们的数据集。
尽管常规 GAN 在大量数据上训练时可以生成非常逼真的样本,但它们无法生成具有特定标签的样本。条件 GAN 通过修改原始生成器网络来控制其输出来处理这个问题。具体来说,网络有两个主要变化。
我们在生成器的输入中添加一个标签Y,并尝试生成相应的数据点。
鉴别器将样本X和相应的标签Y作为输入:
在条件 GAN 中,生成器被教导生成特定类的示例来欺骗鉴别器。这样,条件 GAN 可以从给定类型的域生成样本。在论文中,我们可以看到一些为每行生成数字的示例,条件为一个标签
5. 限制
GAN 的功能在数据增强方面令人印象深刻,因为它们可以有效地学习输入数据的基础分布并生成非常真实的样本。但是,存在一些限制:
- 我们没有用于评估生成样本质量的内在指标。已经提出了一些实验指标,但需要朝着这个方向做更多的研究。
- GAN的训练通常是不稳定的,需要大量的计算资源。
6. 结论
在本文中,我们讨论了如何使用 GAN 进行数据增强。首先,我们介绍了数据增强和生成模型的主题,然后我们介绍了可用于生成非常现实样本的条件 GAN。最后,我们强调了GAN的一些局限性。