深度学习中最有趣的领域–GAN, Generative Adversarial Networks(生成式对抗网络)
GAN 的基础概念
GAN 被“卷积网络之父” Yann LeCun(杨立昆)誉为「过去十年计算机科学领域最有趣的想法之一」,是近年来火遍全网,AI 研究者最为关注的深度学习技术方向之一。
生成式对抗网络,简称 GAN,是一种近年来大热的深度学习模型,该模型由两个基础神经网络即生成器神经网络(Generator Neural Network) 和判别器神经网络(Discriminator Neural Network) 所组成,其中一个用于生成内容,另一个则用于判别生成的内容。
GAN 受博弈论中的零和博弈启发,将生成问题视作判别器和生成器这两个网络的对抗和博弈:
- 生成器从给定噪声中(一般是指均匀分布或者正态分布)产生合成数据,判别器分辨生成器的的输出和真实数据。
- 前者试图产生更接近真实的数据,相应地,后者试图更完美地分辨真实数据与生成数据。
- 由此,两个网络在对抗中进步,在进步后继续对抗,由生成式网络得的数据也就越来越完美,逼近真实数据,从而可以生成想要得到的数据(图片、序列、视频等)。
GAN 的花样“玩”法
Text to Image Generation:根据文字描述生成对应图像。
Image to Image Translation:图像到图像的转化。如将黑白图像转换为彩色图像、将航拍图像变成地图形式、将白天的照片转换为黑夜的照片、甚至可以根据物体的轮廓、边缘信息,来生成实体包包的形式。
Super resolution:图片/视频超分。
Photo to Cartoon:人物/实景动漫化。
Motion Driving:人脸表情动作迁移。
Lip Sythesis:唇形动作合成。
Santana 等人实现了利用 GAN 的辅助自动驾驶。首先,生成与真实交通场景图像分布一致的图像,然后,训练一个基于循环神经网络的转移模型来预测下一个交通场景。
另外,GAN 还可以用于对抗神经机器翻译,将神经机器翻译(neural machine translation, NMT)作为 GAN 的生成器,采用策略梯度方法训练判别器,通过最小化人类翻译和神经机器翻译的差别生成高质量的翻译。
GAN 最直接的应用在于数据的生成,也就是通过 GAN 的建模能力生成图像、语音、文字、视频等等。目前,GAN 最成功的应用领域主要是计算机视觉,包括图像、视频的生成,如图像翻译、图像上色、图像修复、视频生成等。此外 GAN 在自然语言处理,人机交互领域也略有拓展和应用。
GAN 的原理
举个简单的例子,我们将生成内容的网络称为 G(Generator),将鉴别内容的网络称为 D(Discriminator),下图中枯叶蝶进化的例子可以很好的说明 GAN 的工作原理。(引自李宏毅老师 GAN 课程)
图中的枯叶蝶扮演 Generator 的角色,相应的其天敌之一的麻雀扮演 Discriminator 的角色。起初,枯叶蝶的翅膀与其他的蝴蝶别无二致,都是色彩斑斓;
第一阶段:麻雀为了识别并捕杀蝴蝶升级自己的判别标准为非棕色翅膀;
第二阶段:为了躲避麻雀,枯叶蝶的翅膀进化为棕色;
第三阶段:麻雀更加聪明,识别枯叶蝶的标准升级为所看到的物体是否具有纹路;
第四阶段:枯叶蝶的翅膀进化出纹路更像枯叶;
……
如此不断的进行下去,伴随着枯叶蝶的不断进化和麻雀判别标准的不断升级,二者不断地相互博弈,最终导致的结果就是枯叶蝶的翅膀(输出)无限接近于真实的枯叶(真实物体)。
用数学语言描述上述原理:
- G G G 是一个生成图片的网络,它接收一个随机的噪声 z z z,通过这个噪声生成图片,记做 G ( z ) G(z) G(z)。
- D D D 是一个判别网络,判别一张图片是不是“真实的”。它的输入参数是 x x x, x x x 代表一张图片,输出 D ( x ) D(x) D(x) 代表 x x x 为真实图片的概率,如果为 1,就代表 100% 是真实的图片,而输出为 0,就代表不可能是真实的图片。
上图中的标记符号:
- p d a t a ( x ) p_{data}(x) pdata(x):真实数据的分布
- x x x: p d a t a ( x ) p_{data}(x) pdata(x) 的样本(真实图片)
- p ( z ) p(z) p(z):生成器的分布
- z z z: p ( z ) p(z) p(z) 的样本(噪声)
G G G 和 D D D 构成了一个动态的“博弈过程”。
- 在训练过程中,生成网络 G G G 的目标就是尽量生成真实的图片去欺骗判别网络 D D D。
- 而 D D D 的目标就是尽量把 G G G 生成的图片和真实的图片分别开来。
最后博弈的结果是什么?
- 在最理想的状态下, G G G 可以生成足以“以假乱真”的图片 G ( z ) G(z) G(z)。
- 对于 D D D 来说,它难以判定 G G G 生成的图片究竟是不是真实的,因此 D ( G ( z ) ) = 0.5 D(G(z)) = 0.5 D(G(z))=0.5。
用公式表示如下:
整个式子由两项构成。
x
x
x 表示真实图片,
z
z
z 表示输入
G
G
G 网络的噪声,而
G
(
z
)
G(z)
G(z) 表示
G
G
G 网络生成的图片。
- D ( x ) D(x) D(x) 表示 D D D 网络判断真实图片是否真实的概率(因为 x x x 就是真实的,所以对于 D D D 来说,这个值越接近 1 越好)。
- 而 D ( G ( z ) ) D(G(z)) D(G(z)) 是 D D D 网络判断 G G G 生成的图片的是否真实的概率。
G G G 的目的:上面提到过, D ( G ( z ) ) D(G(z)) D(G(z)) 是 D D D 网络判断 G G G 生成的图片是否真实的概率, G G G 应该希望自己生成的图片“越接近真实越好”。也就是说, G G G 希望 D ( G ( z ) ) D(G(z)) D(G(z)) 尽可能得大,这时 V ( D , G ) V(D, G) V(D,G) 会变小。因此我们看到式子的最前面的记号是( m i n G min_G minG)。
D D D 的目的: D D D 的能力越强, D ( x ) D(x) D(x) 应该越大, D ( G ( z ) ) D(G(z)) D(G(z)) 应该越小。这时 V ( D , G ) V(D,G) V(D,G) 会变大。因此式子对于 D D D 来说是求最大 ( m a x D max_D maxD)。
最终通过不断的训练,生成的图片会相当真实。(如下图)
GAN 的发展历史
GAN 最早是由 Ian J. Goodfellow 等人于2014年10月提出的,他的《Generative Adversarial Nets》可以说是这个领域的开山之作,论文一经发表,就引起了热议。而随着 GAN 在理论与模型上的高速发展,它在计算机视觉、自然语言处理、人机交互等领域有着越来越深入的应用,并不断向着其它领域继续延伸。
顾名思义,DCGAN 主要讨论 CNN 与 GAN 如何结合使用并给出了一系列建议。由于卷积神经网络(Convolutional neural network, CNN)比 MLP 有更强的拟合与表达能力,并在判别式模型中取得了很大的成果。因此,Alec 等人将 CNN 引入生成器和判别器,称作深度卷积对抗神经网络(Deep Convolutional GAN, DCGAN)。另外还讨论了 GAN 特征的可视化、潜在空间插值等问题。
DCGAN 生成的动漫头像:
Ian Goodfellow 等人提供了诸多训练稳定 GAN 的建议,包括特征匹配、mini-batch 识别、历史平均、单边标签平滑以及虚拟批标准化等技巧。讨论了 GAN 不稳定性的最佳假设。
PACGAN 讨论的是的如何分析 model collapse,以及提出了 PAC 判别器的方法用于解决 model collapse。思想其实就是将判别器的输入改成多个样本,这样判别器可以同时看到多个样本可以从一定程度上防止 model collapse。
WGAN 首先从理论上分析了原始 GAN 模型存在的训练不稳定、生成器和判别器的 loss 无法只是训练进程、生成样本缺乏多样性等问题,并通过改进算法流程针对性的给出了改进要点。
CycleGAN 讨论的是 image2image 的转换问题,提出了 Cycle consistency loss 来处理缺乏成对训练样本来做 image2image 的转换问题。Cycle Consistency Loss 背后的主要想法,图片 A 转化得到图片 B,再从图片 B 转换得到图片 A’,那么图片 A 和图片 A’应该是图一张图片。
Vid2Vid 通过在生成器中加入光流约束,判别器中加入光流信息以及对前景和背景分别建模重点解决了视频转换过程中前后帧图像的不一致性问题。
PGGAN 创造性地提出了以一种渐进增大(Progressive growing)的方式训练 GAN,利用逐渐增大的 PGGAN 网络实现了效果令人惊叹的生成图像。“Progressive Growing” 指的是先训练 4x4 的网络,然后训练 8x8,不断增大,最终达到 1024x1024。这既加快了训练速度,又大大稳定了训练速度,并且生成的图像质量非常高。
StackGAN 是由文本生成图像,StackGAN 模型与 PGGAN 工作的原理很像,StackGAN 首先输出分辨率为 64×64 的图像,然后将其作为先验信息生成一个 256×256 分辨率的图像。
BigGAN 模型是基于 ImageNet 生成图像质量最高的模型之一。该模型很难在本地机器上实现,而且 有许多组件,如 Self-Attention、 Spectral Normalization 和带有投影鉴别器的 cGAN 等。
StyleGAN 应该是截至目前最复杂的 GAN 模型,该模型借鉴了一种称为自适应实例标准化 (AdaIN) 的机制来控制潜在空间向量 z z z。虽然很难自己实现一个 StyleGAN,但是它提供了很多有趣的想法。
标签:真实,判别,生成式,Adversarial,生成,GAN,图像,图片 From: https://blog.csdn.net/xiaoyuting999/article/details/143669391