一、GAN原理
**出发点:**机器学习中生成模型的问题
无监督学习是机器学习和未来人工智能的突破点,生成模型是无监督学习的关键部分
特点:
- 不需要MCMC或者变分贝叶斯等复杂的手段,只需要在G和D中对应的多层感知机中运行反向传播或者梯度下降算法
- 模型通常使用神经网络,其拟合能力最好
****G(Generator):****用于捕获数据分布的生成模型(生成图像的网络);接收到随机的噪声z,通过噪声z生成图像。尽可能多地模拟、建模和学习真实数据的分布规律。
****D(Discriminator):****用于判别数据是真实数据还是生成数据(伪数据)的判别模型(判别图像真伪的网络):输入一张图像,输出代表其为真实图像的概率值,100%即判断该图像是真的。
训练过程:
通过对抗性过程同时训练两个模型,训练过程中,生成器逐渐擅长创建更为真实的图像,鉴别器逐渐擅长判断真伪,当鉴别器没有办法判断图像真伪时,该训练过程达到平衡。
- 动态博弈过程:G尽可能生成真实的图像欺骗判别网络D,D尽量区别G生成的图像和真实的图像
- 博弈结果:理想情况下,达到纳什均衡点,G生成可以"以假乱真"的图像
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框架
第一步训练D时,V(G, D)越大越好,所以加上梯度ascending
第二步训练G时,V(G, D)越小越好,所以减去梯度descending
整个训练过程交替进行
体系结构:
- 传统生成模型的优化目标:数据的似然
- GAN创新地使用另外一个优化目标:①引入判别模型②优化过程是在生成模型和判别模型之间找纳什均衡
三、GAN实现过程
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-生成对抗性神经网络 - 知乎