生成对抗网络(GAN)学习笔记——GAN是如何来训练的?
GAN有两个网络模型,生成网络和判别网络,这两个网络是相对独立的,那么如何对这两个模型进行训练呢? 采用生成器和判别器交替迭代训练(两者博弈的过程)。
交替迭代训练
1.首先,我们得到初始的真假数据集。给生成器一个随机的输入(初始化),生成器输出一个假的样本集(未训练时效果非常差,也就是非常假),同时我们有真实的样本集(标签数据),于是我们得到了真假数据集。
2.有了真假数据集后,固定生成器的参数不变,对判别器进行训练。训练过程是一个有监督的二分类问题,即给定一个样本,训练判别器能判断出其是真样本还是生成器生成的假样本。
3.完成判别器的训练后,我们要提升生成器的造假能力(因为一开始的数据太假了),我们将生成器与前一步训练好的判别器串接,固定判别器的参数不变,对生成器进行训练。给生成器一个随机输入,损失函数是判别器的输出是否为真,根据损失函数,对生成器的参数进行更新。
4.完成生成器的训练后,再次固定生成器的参数不变,对判别器进行训练。给生成器随机输入,得到新的假的数据集(此时的假样本比第1步生成的假样本要真一些,因为生成器经过了一轮优化),将最新得到真假样本输入给判别器进行训练,从而完成对判别器的再一次优化训练。
5.不断重复上述过程,直到满足设计者设定的训练次数,此时生成器会生成更真的数据,判别器有更好的鉴别真假的能力。
传统GAN损失函数
首先对判别器D进行优化(固定生成器G的参数),损失函数如下所示:
表示真实数据x输入判别器后的输出,训练判别器时我们希望这一项趋近于1,z表示随机输入生成器的数据, 表示生成器生成的假样本我们希望判别器将其判别为假,即训练判别器时 趋近于0。
对生成器G进行优化(固定判别器D的参数),损失函数如下所示:
我们希望生成器能够生成令判别器判别为真的假数据,即“欺骗判别器”,所以训练生成器时我们希望 趋近于1。
以上就是生成对抗网络的训练过程啦~希望能够解答小伙伴们的疑惑!
- 利用tensorflow训练简单的生成对抗网络GAN
- 生成对抗网络(GAN)相比传统训练方法有什么优势?(一)
- 生成式对抗网络GAN之实现手写字体的生成(基于keras Tensorflow2.0实现)详细分析训练过程和代码
- 不到 200 行代码,教你如何用 Keras 搭建生成对抗网络(GAN)
- 不到 200 行代码,教你如何用 Keras 搭建生成对抗网络(GAN)【转】
- 31 生成对抗网络 GAN
- 《白话深度学习与Tensorflow》学习笔记(6)生成式对抗网络(GAN)
- 生成对抗网络(GAN)简单入门(33)---《深度学习》
- [TensorFlow]生成对抗网络(GAN)介绍与实践
- 生成对抗网络GAN
- 七月算法深度学习 第三期 学习笔记-第五节 生成对抗网络GAN
- 干货丨一文看懂生成对抗网络:从架构到训练技巧
- Valse 2017 | 生成对抗网络(GAN)研究年度进展评述
- pytorch GAN生成对抗网络
- 深度通信网络专栏:基于GAN生成对抗网络的毫米波信道估计
- pytorch GAN生成对抗网络实例
- 生成对抗网络(GAN)的理论与应用完整入门介绍
- 洞见 | 生成对抗网络GAN最近在NLP领域有哪些应用?
- 案例带你学Pytorch系列(3)——GAN生成对抗网络
- GAN(生成对抗网络)学习笔记