理解GAN的原理

时间:2024-05-20 16:50:13

理解GAN的原理

Generative生成Adversarial对抗Nets网络是新深度学习的一项技术,通过下面的一张图片,来解释下这种技术的原理。
理解GAN的原理
人物设定:GAN是一个造假钞的造假者,他要造假钞就必须有一台印钞机(也就是GAN中的生成网络),他光有一台印钞机可能还不够,他需要用一台验钞机来看下他伪造的假钞能不能骗过别人(验钞机就是GAN中的鉴别网络)。印钞机(生成网络)的目标是把一张白纸印成一张钞票,核心是印钞的模板,相对应的是一个生成函数。验钞机(判别网络)的目标就是区分出真钞和假钞,核心是一个判别函数。

第一次印假钞(橙色):第一次印假钞的时候,首先把一张白纸(也就是噪声,这里为什么是噪声,后面解释)放到印钞机中,经过一个生成函数,变成了一张假钞。然后这个造假者,就把这张假钞放到验钞机里面去看下,结果他发现鉴别函数说他的钞票是假的。他这时候肯定不能放弃呀,他要想验钞机验不出他的假钞,他就去找出问题,看下哪里造的不够真,然后改进生成函数,让印钞机印的真点,这个找问题和改进的过程叫反馈调参。这就是第一次印假钞的过程。

第二次印假钞(绿色):经过第一次印假钞失败后,造假者改进了生成函数,他就开始了第二次印钞,当他把第二次的假钞放验钞机上时,如果发现他还是被验出来了,他就继续改进生成函数。

当他进行第三次,第四次…直到他成功骗过验钞机为止,当他骗过验钞机后,就得到一个很真的假钞了。

改验钞机(蓝色):这时候他就打算拿去用了,结果尴尬的是,他遇到一个比验钞机还准的高手,他一下子就看出这个钞票是假的了。这时候这个造假者觉得自己的尊严受到了侮辱,他一定要造出这个高手分辨不出的假币,但是这时候改进生成函数已经没啥意义了,因为验钞机已经不能识别真假了。他就想到改进验钞机的判别函数,让验钞机更准,然后再去改印钞机,然后他就这样做了,当他改好验钞机后,已经可以把之前那张假钞分辨出来了,这时候他就继续去改印钞机,当改进的验钞机又不能识别他做的假钞后,他就拿去试这个高手,如果说这个高手还是能分辨出来,他就继续优化验钞机和印钞机,不停的,不停的,就像印钞机和验钞机通过不停的验证改进,最后得到一个高手也分不清楚的假钞。

把印钞机和验钞机比作两个武侠人士,通过不断的切磋交流后,功力大进,最后打败了那个绝世高手,这就是Adversarial对抗的由来。而打败这个绝世高手其实就是一个检验他们两个功力的一个标准,而这个准则在GAN中就是一个叫做损失函数的东西,我们训练一个生成对抗网络,要看它训练的好不好,就是用这个标准检验的。这次就说到这,下次再说损失函数和GAN的优化目标和求解。