简单易懂的Gan入门

Gan(Generative Adversarial Networks), 意思是生成对抗网络,是最近比较火的一种深度学习网络,可以实现深度换脸,图片伪造等效果,不过论文和网上的很多文章会写的都太过于晦涩,实际上这个原理并不难理解,只是某些人喜欢把人能看懂的写的鬼都看不懂,给人一种不明觉厉的感觉,这里我就简单介绍一下gan的原理,以一种大家都能看到的方式

些介绍一下网上都有的感念和公式,一般网上都会围绕下面这个公式:

V(D,G)=Ex∼Pdata(x)[lnD(x)]+Ez∼Pz(z)[ln(1−D(G(z)))]
这个公式是论文里面提到的,不管怎样咱都得看一下这个公式
D(x):判别器,越真实则越接近1
G(x): 生成器,生成的是图片,所以没有损失函数
Ex∼Pdata(x):这个其实可以不用特别关注,就是真实图片的分布
Ez∼Pz(z):噪音输入的分布
所以公式我们为了方便理解也可以简化为:
V(D, G) = lnD(x)+ln(1-D(G(z)))
这个就是看着比较方便,那我们分析一下,其实这个公式有一点问题
首先不是整体损失
也就是说这个并不是一个损失函数
而且x和z也不是同一种输入,也没有相关性所以直接看这个公式没什么意义
第三就是D(x)和G(x)也都不是损失函数,这个上面也有解释
所以嘛这个公式并不是描述损失函数的,也就是不能直接优化了,没有优化的意义
不过要是面试问的时候可能还必须知道这个公式,毕竟是代表性的

那么问题就是这个到底要怎么优化才行,既然不能优化上面的那个公式
其实要优化也非常的简单,分两步来做

第一步是优化D,也就是这判别器
这个很简单直接是一个分类的cnn就可以,优化方法也很简单,可以用sgd等方式,不用细说,这一步是为了提高D的判别能力,能够真是判别出图像的真假, 这一步是lnD(x)这一步
第二步就是优化G,因为G是没有损失函数的,所以要借助D才能优化G,也就是D(G)这样就能产生损失函数了,当然这里优化的时候D的参数不要变,固定住,只优化G的参数,而且要让D(G)接近1的方向优化,以调整G,让G生成的接近真实情况,其实这一步就是1-lnD(G)这一步,最小化这一步

从这里我们也可以看出来,上面加在一块的公式没有意义,其实是分两步优化的

重复上面两个步骤,来达到一个整体优化的结果,这里就是最简单的解释整个过程了


DMLLLLL
dm ml hd
47 声望
6 粉丝
0 条评论
47 声望
6 粉丝
宣传栏