GAN生成对抗性网络

一、GAN原理

出发点:机器学习中生成模型的问题

                无监督学习是机器学习和未来人工智能的突破点,生成模型是无监督学习的关键部分

特点:

  1. 不需要MCMC或者变分贝叶斯等复杂的手段,只需要在G和D中对应的多层感知机中运行反向传播或者梯度下降算法
  2. 模型通常使用神经网络,其拟合能力最好

GAN生成对抗性网络_第1张图片

G(Generator):用于捕获数据分布的生成模型(生成图像的网络);接收到随机的噪声z,通过噪声z生成图像。尽可能多地模拟、建模和学习真实数据的分布规律。

D(Discriminator):用于判别数据是真实数据还是生成数据(伪数据)的判别模型(判别图像真伪的网络):输入一张图像,输出代表其为真实图像的概率值,100%即判断该图像是真的。

训练过程:

        通过对抗性过程同时训练两个模型,训练过程中,生成器逐渐擅长创建更为真实的图像,鉴别器逐渐擅长判断真伪,当鉴别器没有办法判断图像真伪时,该训练过程达到平衡。

  • 动态博弈过程:G尽可能生成真实的图像欺骗判别网络D,D尽量区别G生成的图像和真实的图像
  • 博弈结果:理想情况下,达到纳什均衡点,G生成可以“以假乱真”的图像

GAN生成对抗性网络_第2张图片

D(x):D网络判断真实图片是否真实的概率,因为x本来就是真实的,所以该值越接近1越好

D(G(z)):D网络判断G生成的图片是否真实的概率

对于G:G希望自己生成的图片越接近真实越好,即G希望D(G(z))尽可能大,V(D, G)会变小,所以对于G是min_G

对于D:D的能力越强,D(x)越大,D(G(x))越小,V(D,G)会变大,所以对于D是求最大max_D

二、GAN框架

GAN生成对抗性网络_第3张图片

第一步训练D时,V(G, D)越大越好,所以加上梯度ascending

第二步训练G时,V(G, D)越小越好,所以减去梯度descending

整个训练过程交替进行

体系结构:

  • 传统生成模型的优化目标:数据的似然
  • GAN创新地使用另外一个优化目标:①引入判别模型②优化过程是在生成模型和判别模型之间找纳什均衡

三、GAN实现过程

GAN生成对抗性网络_第4张图片

1.前向传播阶段

模型输入:
        随机产生一个随机向量作为生成模型的输入数据,然后经过生成模型后产生一个新的向量,即为Fake Image

        从数据集中随机选择一张图片,将图片转化成向量,即为Real Image

模型输出:

        fake image和real image是判别网络的输入,根据输入的图片类型是Fake Image或Real Image将判别模型的输入数据的label标记为0或者1。即判别模型的输入类型为(xfake,0)或者(xreal,1)。

        经过判别网络后输出一个0到1之间的数,用来表示输入图片为真实图像的概率。

2.反向传播阶段—优化目标

①优化D

②优化G

3.损失函数

        希望生成样本和真实样本拥有相同的概率密度函数

        GAN的损失函数源自于二分类对数似然函数的交叉熵损失函数。第一项是使正样本的识别结果尽量为 1 ,第二项是使负样本的预测值尽量为 0 

损失函数:

4.迭代更新

得到损失函数后按照单个模型的更新方法进行修正

四、GAN特性

        采用对抗思想的原因:评估一个生成样本的质量,是一个很难量化的指标。对抗思想,把评估生成样本的质量的任务交给一个判别器模型去做

特点:

        传统模式相比,有两种不同的网络,采用对抗训练方法

缺点:

        训练GAN需要达到Nash均衡,有时候可以通过梯度下降方法实现,有时候不能;

        GAN不适用于处理离散数据,如文本;

        GAN存在训练不稳定、梯度消失和模态崩溃等问题

五、GAN应用

        用于无监督学习和半监督学习

        GAN与强化学习相结合

        图像样式转换、图像降噪和恢复、图像超分辨率

        计算机视觉,图像、文本、语音,或者任何含有规律的数据合成

        用于分类领域:将判别器替换为分类器,执行多个分类任务

六、其他

①早停法(Early Stopping):

        生成器或鉴别器损失突然增加或减少

        损失函数随机上升或下降,可能得到生成器的损失远远高于判别器的损失

②处理Mode Collapse(模式坍塌|生成器”崩溃”,总是将每一个输入的隐向量生成单一的样本)问题时,尝试使用较小的学习率,并从头开始训练

③添加噪声:在真实数据和合成数据中添加噪声,提高判别器的训练难度有利于提高系统的整体稳定性

④标签平滑:将标签值设置成一个低一些的值,阻止判别器对分类标签过于确信

⑤多尺度梯度(处理不太小的尺度时使用):由于两个网络之间的多个跳连接,梯度流从判别器流向生成器,和传统的用于语义分割的U-Net类似

⑥双时间尺度更新规则:使用不同的学习速率;为判别器选择一个更高的学习率(生成器必须用更小的更新幅度来欺骗判别器,不会选择快速、不精确和不现实的方式赢得博弈)。使用TTUR时,生成器有更大的损失量

⑦谱归一化:应用于卷积核的一种特殊的归一化,可以极大地提高训练的稳定性

参考链接:GAN-生成对抗性神经网络 - 知乎

你可能感兴趣的:(深度学习,GAN,生成对抗网络,人工智能,神经网络)