GAN学习笔记

生成对抗网络(GAN)学习笔记

参考原文: https://blog.csdn.net/qq_28168421/article/details/80993864.

GAN简介

GAN的思想是是一种二人零和博弈思想(two-player game),博弈双方的利益之和是一个常数,比如两个人掰手腕,假设总的空间是一定的,你的力气大一点,那你就得到的空间多一点,相应的我的空间就少一点,相反我力气大我就得到的多一点,但有一点是确定的就是,我两的总空间是一定的,这就是二人博弈,但是总利益是一定的。
在GAN中,有两个这样的博弈者,一个是生成模型(G),一个是判别模型(D):

  • 相同点:这两个模型都可以看成是一个黑匣子,接受输入然后有一个输出,类似一个函数,一个输入输出映射。
  • 不同点:
    生成模型功能:比作是一个样本生成器,输入一个噪声/样本,然后把它包装成一个逼真的样本,也就是输出。
    判别模型:比作一个二分类器(如同0-1分类器),来判断输入的样本是真是假。(就是输出值大于0.5还是小于0.5)
    在这里插入图片描述
    这里可以看出,生成模型就是左下角的网络,判别模型就是右边的网络,左边的真实样本和生成模型生成的样本组合成一个数据集进入判别网络进行判别。

两种模型是干什么的

  • 生成模型:用于制造真假难分的样本
  • 判别模型:用于判定模型的真假

显然这是两种“对抗“性质的网络,生成网络的目的就算让自己的造样本的能力尽可能的强(也就是让判别模型判定为真实样本1),判别模型的目的就是让自己的区分能力尽可能的好(也就是把生成模型生成的样本判定为假样本0)。那么极限平衡状态就是,生成模型生成的样本无法被判别模型判别(0.5)。

模型训练

上面可以知道GAN是由两种对抗性质的网络组合而成,那这两种网络是如何训练的呢?又是如何在训练过程中完善彼此的呢?
在这里插入图片描述
训练方法:单独交替迭代训练
意思就是:先假设其中一个已经训练好了,来帮助训练另一个,然后用这个训练好的模型去帮助训练,然后再反过来,如此交替训练。

为什么要这样训练呢?是因为GAN本身特性如此,生成网络和判别网络本身是两个不相干的网络,不可以同步训练,只能分开训练,但是彼此又是相辅相成。所以训练其中一个又需要另外一个来搭配训练。

细看训练过程
  • 训练判别模型
    假设哪个模型是已经训练好的呢?第一次通常假设生成模型已经训练好(效果非常差,可以认为是随机生成),然后用于生成假样本(0),然后真样本集(1)我们也有,这样就可以直接丢到判别模型中进行训练了。

为什么这样?这就要看判别模型的目的了,判别模型就是为了区分生成模型生成出来的样本和真样本,为了这个目的,所以直接把生成模型生成出来的样本打上假标签,然后就形成了最简单的二分类问题,直接训练就可以达到目的。

  • 训练生成模型
    通过上一步已经训练好了判别模型,现在就可以把这个判别模型接到生成模型后来训练了,这里的关键步骤就是,把生成模型生成的样本,标签都设置为1(即设置成真样本),也就是说,所有的样本,标签都为1,这样,当生成网络的样本通过判别网络的时候,判别结果和标签就会形成误差,用于反向调参,使得生成模型的结果更加接近真样本。

这里需要注意的是,该步骤是训练生成模型,而判别模型是已经训练好的,所以判别模型的参数是不可以发生变化的。

完成了上述两步,则GAN训练的一个循环就完成了,再进行第二次循环,直到生成模型达到我们需要的程度位置。

核心公式理解

这是原文中的目标公式(优化目标):
在这里插入图片描述
简单来说,这就是一个最大最小优化问题,先找到D(判别),使得V最大,然后在此基础上找到G(生成),使得V最小。这样理解就简单了,从公式可以看出,是由两个期望相加而成。
第一个期望可以理解为,输入真实样本(1)后,判别模型D的判定结果的期望,所以这里的期望当然是越大越好。
第二个期望可以理解为,当输入为生成模型生成的样本时的期望。

在这里插入图片描述
优化D的时候,由真样本X的输入,也有生成模型生成的样本的输入,但是这里跟生成模型无关,可以看成一个定值。
优化G的时候,真样本直接被去掉了,只看生成样本的输入。

再续。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值