GAN数学原理及代码实现

GAN

generator 和discriminator

生成式对抗网络(Generative Adversarial Networks, GAN),包括生成器 generator 和判别器 discriminator。

生成器(generator)是一个神经网络,根据不同的输入向量可以生成不同特征的图像或者语音等。

判别器 (discriminator)也是一个神经网络,其输入是 generator 的输出,输出为一个标量。discriminator 用于判别 generator 的输出和真实数据的相似情况。输出的标量值越大,对应的 generator 生成的图片更加真实。
在这里插入图片描述
最开始,generator 产生了一堆近似噪声的东西,训练 discriminator 并固定 generator 使得其能够判别 generator 产生的和数据集中图片的区别。

接下来固定 discriminator,来训练 generator 使得 generator 生成的图像可以骗过 discriminator。

如此循环迭代,直到 generator 的图像满意为止。

GAN 中的训练算法可以表述为如下:
在这里插入图片描述
上图中,蓝色的框表示 discriminator 的训练,红色框表示 generator 的训练。输入到 generator 中 的向量 z z z$可以从一个分布中随机采样得到。它和数据集中的数据 x x x 并没有直接的关系, x ~ \widetilde{x} x 表示生成的数据。
下面重点来探讨两个 V ~ \widetilde{V} V 的函数。需要调整参数使得 V ~ \widetilde{V} V 最大,因此使用的是梯度上升的方法而不是梯度下降,所以参数更新那里会有一个负号的差距。

  1. 对于判别器,当判别器的输入为数据集中的真实图片,那么 D ( x i ) D(x^i) D(xi) 越大,对应的 V ~ \widetilde{V} V 将增大,而对于生成器产生的数据 x ~ \widetilde{x} x 越小,对应的 V ~ \widetilde{V} V 增大。这样判别器优化的最终结果是对于数据集中的数据,会给出一个很高的分数(接近 1),而对于生成器生成的数据,则给出很低的分数。
  2. 对于生成器,优化目标依然是使得 V ~ \widetilde{V} V 最大,但是需要固定住判别器。这样的训练的最终结果是生成器骗过判别器,使得生成的数据经过判别器输出接近 1。

对于具体的实现,一般会将生成器和判别器放进一个网络中去,对于生成器的训练,冻结判别器;而对于判别器的训练,则冻结生成器。

一般来说,会将判别器的输出通过 sigmoid 归一化,并且一次生成器的训练不会迭代太多次,这样生成的数据不会有太大的变化。

仅使用generator来生成图片

generator 缺乏全局观。以图像数据为例,输出的每一个神经元对应一个像素值,但是更重要的是,输出的像素对应的值要构成一幅有意义的图像。通常的神经网络结构,同一层输出神经元之间是相互独立的,这样会导致输出图像的不和谐。
在这里插入图片描述

仅使用discriminator来生成图片

相比较 generator 直接生成,discriminator 生成很容易就有全局观念,但是也会有新的问题。主要如下:

  1. 利用 discriminator 生成需要求解
    在这里插入图片描述
    这需要很大的搜索量,对于图像而言,遍历所有的图像是几乎不可能完成的任务。
  2. 怎样获得一个训练良好的 discriminator。训练一个 discriminator,需要标注什么样的图像是好的,什么样的图像是不好的,而好与不好很难去界定。

条件GAN

条件 GAN 是对生成器和判别器分别添加一个对应的条件,以文本转图像为例,生成器 generator 希望生成和文本相关的图像,就需要将原始的文本作为条件,和一个随机向量一起输入到 generator 中,这告诉 generator,需要根据文本来生成对应的图像。

对于文本转图像的判别器 discriminator,需要将源文本输入到 discriminator 中作为判别的一个条件,用来告诉 discriminator,generator 不仅要生成合理的图像,生成的图像还要和文本对应。

如果不加条件,那么可能就会生成和文本描述无关的内容。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值