机器学习06 GAN

生成网络 Generator

常规网络

常规的回归任务可以看做如上结构,x 作为输入进入网络进行运算,得到对应输出 y,对于给定的 x,一定会得到相同的y

生成网络

生成器网络则在常规网络的基础上增加了新的输入 z,且输入 z 往往是通过简单分布(如高斯分布)采样得到一个随机值,将 x 和 z 一起输入网络,由于 z 的取值是随机的,对于同一个 x 也会得到不同的 y,这就使得网络的输出从固定值变成了一个 y 的分布。

为什么采用这种做法?

有“创造性”的任务

在绘画、作文等需要“创造性”的任务中,我们不希望模型的输出是一成不变的,即对于同样的输入,能够得到不同的输出,且这种输出是符合某种概率分布的(用概率来约束)。

GAN (Generative Adversarial Network 对抗生成网络)

GAN 的基本思想是“对抗”,即构建两个神经网络:generator 生成器discriminator 判别器

对抗生成的过程

生成器用于生成内容,其结果将交由判别器进行真实性判定,判别器会对生成器得到的结果进行打分(scale),两个神经网络一同训练,判别器为了区分内容的真假在不断进化,生成器为了“骗过”判别器也要进化,从而生成更逼真的内容。

两个神经网络在对抗过程中不断进化,最终就能产生以假乱真的内容。

训练过程:

第一步:固定生成器,更新判别器

判别器更新

首先初始化生成器参数,然后将其固定不变,就可以通过生成器得到输出结果(由于未经训练,其结果可能与真实情况相差甚远,甚至全是噪声)

之后将真实数据和这些结果交给判别器,判别器可以将其视为一个分类任务或者回归任务,对生成器的结果进行打分,分数越高越真实。训练目的是能让判别器的判别结果尽可能向真实情况靠拢,即生成器结果判假,真实数据判真。

通过这一部分训练,增强判别器的判别能力。

第二步:固定判别器,更新生成器

生成器更新

这一阶段将判别器参数固定,将生成器得到结果交给判别器进行打分,以提高判别器分数为目的对生成器进行训练。

通过这一部分训练,增强生成器的生成能力。

第三步:重复前两个步骤,反复执行

通过反复训练两个网络,通过对抗完成生成过程。

应用:

生成人脸:

Progressive GAN

除了动漫和文字,GAN 也可以用于生成人脸,而且这些人脸是数据集中没有出现过的,新的人脸。

生成中间过程:

对输入向量进行插值得到中间过程

对于最左侧和最右侧两个输入,我们可以通过对这两个输入向量做内插,来得到这两个输入之间的值对应的生成结果,可以得到更多的输入,整个序列构成了一个连续的变化。

GAN 的理论分析


机器学习06 GAN
https://username.github.io/2022/08/06/机器学习06-GAN/
作者
ZhuoRan-Takuzen
发布于
2022年8月6日
许可协议