目录
1. GAN基础原理
1.1 生成器
1.2 判别器
1.3 整体架构
2. 损失函数
3. DCGAN
3.1 问题
3.2 解决
1. GAN基础原理
GAN(Generative Adversarial Nets)是一种深度神经网络架构。它由生成器和判别器组成,生成器学习真实样本(图像)分布(特征)从而让自身生成的图像更加真实。判别器对生成的样本来进行真假判别。
1.1 生成器
想一想,生成器的作用是生成与真是图像接近的图像,达到以假乱真。那么其输出就是Fake Image(假图像),那么输入是啥呢?
答案是一组噪音,噪音是随机生成的?当然和原图像是有联系的吧。
那么生成器就在训练的过程中,得到一组参数,将噪声经过运算转换成真实的分布,产生以假乱真的图像。
1.2 判别器
判别器的作用是判断图像是真的还是假的。
想一想输入,是两种数据,真实的数据,生成器生成的假数据。
输出就是一个二分类,判断数据真假。
到最好的结果就是,判别器分不出假数据。
1.3 整体架构
怎么让生成的数据与真实的数据接近??想一想如果判别器越严格,生成器是否也会变得严格呢??就是判别器特别强悍,但是生成的数据让判别器判断不出来真假,这样就到达了目标。只有D的效果好G的效果也会好,所以关键是判别器的构建。
2. 损失函数
其损失函数:
它做的是去最大化D的区分度,最小化G和real的数据分布。
判别器要做的是区分真假数据,将真数据判断成真(1),把假数据判断成假(0)。判别模型的损失函数:
其中是真实数据判别概率,是假数据判别概率,代入-log函数得到其损失,学过神经网络的都知道。
生成器要做的是生成让判别器判断不出真假的数据,所以的它的损失函数和判别器有关:
的概率越接近0,表示其生成的数据就越不好,代入log函数的值就越大,损失就越大。
在迭代的过程中,生成器和判别器相互对抗,互为矛盾,提升效果,让损失函数收敛。
3. DCGAN
3.1 问题
在GAN的传统构建中,发现了一些问题。其损失总是收敛于一点,生成的数据总是很相像。
在反向传播中,梯度增大,或者消失。
3.2 解决
着重这些问题,发展出了DCGAN,用卷积核来提取特征,并且不同于传统的卷积神经网络,其用卷积成代替池化层,达到压缩的作用。
而且在生成器中加入反卷积(由噪音-->图像),用stride上下采样。
这是生成器的示意图:stride=2,3个反卷积核,由100维向量到64*64*3的图像,其第一步是reshape,然后反卷积,下采样,通道数不断减少。