ML、DL、CNN学习记录7
文章目录
ML、DL、CNN学习记录7
GAN(Generative Adversarial Network)
到目前为止,GAN主要应用于图像生成、人脸变换、 生成高质量图像、场景生成、半监督建模、图像混合、图像修复、RelD、 超分辨率重建、遮挡剔除、语义分割、目标检测、特征点检测、视频预测与合成、纹理与风格转换等。
Image,label
GAN的学习
生成器和判别器的训练
判别器:直接单独的网络(可单独训练)
生成器:需要和GAN一起训练
GAN目标
- 判别网络的目的:就是能判别出来属于的一张图它是来自真实样本集还是假样本集。假如输入的是真样本,网络输出就接近1,输入的是假样本,网络输出接近0,那么很完美,达到了很好判别的目的。
- 生成网络的目的:生成网络是造样本的,它的目的就是使得自己造样本的能力尽可能强,强到什么程度呢,你判别网络没法判断我是真样本还是假样本。
再理解GAN
- 判别网络说,我很强,来一个样本我就知道它是来自真样本集还是假样本集。生成网络就不服了,说我也很强,我生成一个假样本,虽然我生成网络知道是假的,但是你判别网络不知道呀,我包装的非常逼真,以至于判别网络无法判断真假,那么用输出数值来解释就是,生成网络生成的假样本进去了判别网络以后,判别网络给出的结果是一个接近0.5的值,极限情况就是0.5,也就是说判别不出来了,这就是纳什平衡了。
GAN的损失函数
对于判别器 (参数更新):
:越大越好,代表判别器效果越好。
越接近1越好,越大越好。
:越大越好
:越接近0越好
:越大越好
对于生成器 (参数更新):
:越大越好,代表判别器效果越好。
越接近1越好,越大越好。
:越大越好
:越接近1越好,代表生成的数据尽可能的与真实数据一样
:越小越好
logD(x)和G(z)无关,求导时直接为零
GAN 训练
GAN的扩展
DCGAN
- DCGAN的全称是Deep Convolution Generative Adversarial Networks (深度卷积生成对抗网络)。是2014年Ian J. Goodfellow的那篇开创性的GAN论文之后一个新的提出将GAN和卷积网络结合起来,以解决GAN训练不稳定的问题的一篇 paper.
- DCGAN的原理和GAN是一样的( GAN网络提出了理论,具体的
G, D
实现可以自己来定)。DCGAN把上述的G
和D
换成了两个卷积神经网络。D
可以理解为一个分类的卷积网络。G
则是一个全卷积网络。但不是直接换就可以了DCGAN对卷积神经网络的结构做了一些改变,以提高样本的质量和收敛的速度,这些改变有:
-
G
网络中使用转置卷积(反卷积) ( transposed convolutional layer) 进行上采样,D
网络中用strided convolutions来替代空间池化(pooling) ; - 除了生成器模型的输出层和判别器模型的输入层,在网络其它层上都使用了BatchNormalization,使用BN可以稳定学习,有助于处理初始化不良导致的训练问题;
- 去掉Full-Conn层,使网络变为全卷积网络;
- G网络中使用ReLU作为**函数,最后一层使用tanh;
- D网络中使用LeakyReLU作为**函数.
CGAN
CGAN与GAN的不同之处在哪儿? CGAN解决了哪些GAN不能解决的问题?
- CGAN与GAN不同之 处在于生成器和辨别器中添加了同样的条件,该条件可以是任何标签。
- CGAN解决了普通的GAN生成模型时方向不确定性,使得生成的输出更加符合我们的预期。
Stack GAN
文字 --> 图