对⽣成对抗⽹络GANs原理、实现过程、应⽤场景的理解(附代码),另附:深
度学习⼤神⽂章列表
⽣成模型和判别模型
两个模型的对⽐
对抗⽹络思想
理解了⽣成模型和判别模型后,再来理解对抗⽹络就很直接了,对抗⽹络只是提出了⼀种⽹络结构,总体来说,整个框架还是很简单的。
GANs简单的想法就是⽤两个模型,⼀个⽣成模型,⼀个判别模型。判别模型⽤于判断⼀个给定的图⽚是不是真实的图⽚(判断该图⽚是从
数据集⾥获取的真实图⽚还是⽣成器⽣成的图⽚),⽣成模型的任务是去创造⼀个看起来像真的图⽚⼀样的图⽚,有点拗⼝,就是说模型⾃
⼰去产⽣⼀个图⽚,可以和你想要的图⽚很像。⽽在开始的时候这两个模型都是没有经过训练的,这两个模型⼀起对抗训练,⽣成模型产⽣
⼀张图⽚去欺骗判别模型,然后判别模型去判断这张图⽚是真是假,最终在这两个模型训练的过程中,两个模型的能⼒越来越强,最终达到
稳态。(这⾥⽤图⽚举例,但是GANs的⽤途很⼴,不单单是图⽚,其他数据,或者就是简单的⼆维⾼斯也是可以的,⽤于拟合⽣成⾼斯分
布。)
⼀、可以有两种输⼊
1、我们随机产⽣⼀个随机向量作为⽣成模型的数据,然后经过⽣成模型后产⽣⼀个新的向量,作为Fake Image,记作D(z)。
2、从数据集中随机选择⼀张图⽚,将图⽚转化成向量,作为Real Image,记作x。
⼆、将由1或者2产⽣的输出,作为判别⽹络的输⼊,经过判别⽹络后输⼊值为⼀个0到1之间的数,⽤于表⽰输⼊图⽚为Real Image的概
率,real为1,fake为0。
使⽤得到的概率值计算损失函数,解释损失函数之前,我们先解释下判别模型的输⼊。根据输⼊的图⽚类型是Fake Image或Real Image将
判别模型的输⼊数据的label标记为0或者1。即判别模型的输⼊类型为 或者 。
由于y为输⼊数据的类型,当输⼊的是从数据集中取出的real image数据时,y=1,上⾯公式的前半部分为0,只需考虑第⼆部分(后半部
分)。⼜D(x)为判别模型的输出,表⽰输⼊x为real 数据(y=1,代表是real数据)的概率,我们的⽬的是让判别模型的输出D(x)的输出
尽量靠近1。
由于y为输⼊数据的类型,当输⼊的是从数据集中取出的fake image数据时,y=0,上⾯公式的后半部分为0,只需考虑第⼀部分(前半部
分)。⼜因G(z)是⽣成模型的输出,输出的是⼀张Fake Image(y=0,表⽰输出的是fake数据)。我们要做的是让D(G(z))的输出尽可
能趋向于0。这样才能表⽰判别模型是有区分⼒的。
相对判别模型来说,这个损失函数其实就是交叉熵损失函数。计算loss,进⾏梯度反传。这⾥的梯度反传可以使⽤任何⼀种梯度修正的⽅
法。
当更新完判别模型的参数后,我们再去更新⽣成模型的参数。
评论3
最新资源