对抗神经网络的思维被使用的很广,比如在Bert系列的文章中,将会有一篇和对抗神经网络思想类似的变种。在其他领域比如蒸馏等也会有所应用,所以,为了知识的完整性,特地把以前写的一篇老文章发出来。
鉴于要保持知识的完整性,所以我们再回顾一下2014年就火起来的生成对抗网络。文章成文自2016年,所以文章中我的感受是指我在2016年
的感受。
最近,深度学习在很多领域的突破性进展想必不用我多说了。但大家似乎发现了这样的一个现实,即深度学习取得突破性进展的地方貌似都是判别(discriminative)式模型。
所谓的discriminative可以简单的认为是分类问题,比如给一张图片,判断这张图片上有什么动物;再比如给定一段语音,判断这段语音所对应的文字。
在判别式模型上,有很多行之有效的方法,如反向传播,dropout,piecewise linear units等技术。
其实,这篇论文很早之前就看了,但我对生成模型在AI里的地位一直不能特别直观的感受。最近才慢慢的理解。
从细节上来看,生成模型可以做一些无中生有的事情。比如图片的高清化,遮住图片的一部分去修复,再或者画了一幅人脸的肖像轮廓,将其渲染成栩栩如生的照片等等。
再提高一层,生成模型的终极是创造,通过发现数据里的规律来生产一些东西,这就和真正的人工智能对应起来了。想想一个人,他可以通过看,听,闻去感知这世界,这是所谓的Discriminative,他也可以说,画,想一些新的事情,这就是创造。所以,生成模型我认为是AI在识别任务发展相当成熟之后的AI发展的又一个阶段。
但是现在,生成模型还没有体会到深度学习的利好,在Discriminative模型上,成果如雨后春笋,但在生成模型上,却并非如此。原因如下:
那么,是不是生成模型就借不了深度学习发展的东风了呢?我只能说,有的时候,不得不曲线救国。
可以设想警察和小偷的故事,警察为了提高绩效,需要不停的提高鉴别水平来识别小偷,小偷为了不被抓,也需要提高自己的技巧来更好的隐蔽。假以时日,警察和小偷各自的水平都提高了很多。道高一尺魔高一丈,其实这个过程中道和魔都有提升。这就是对抗的基本思想,而更正式一点,则是如下表达:
假设有一种概率分布M,它相对于我们是一个黑盒子。为了了解这个黑盒子中的东西是什么,我们构建了两个东西生成器G和判别器D,G是另一种我们完全知道的概率分布,D用来区分一个事件是由黑盒子中那个不知道的东西产生的还是由我们自己设的G产生的。
不断的调整G和D,直到D不能把事件区分出来为止。在调整过程中,需要:
当D无法区分出事件的来源的时候,可以认为,G和M是一样的。从而,我们就了解到了黑盒子中的东西。
且看上面四张图a,b,c,d. 黑色的点状线代表M所产生的一些数据,红色的线代表我们自己模拟的分布G,蓝色的线代表着分类模型D。
a图表示初始状态,b图表示,保持G不动,优化D,直到分类的准确率最高。c图表示保持D不动,优化G,直到混淆程度最高。d图表示,多次迭代后,终于使得G能够完全你和M产生的数据,从而认为,G就是M。
将上述例子所描述的过程公式化,得到如上公式。公式中D(x)表示x属于分布M的概率,因而,优化D的时候就是让V(D,G)最大,优化G的时候就是让V(D,G)最小。
其中,x~pdata(x) 表示x取自真正的分布。z~pz(z) 表示z取自我们模拟的分布。G表示生成模型,D表示分类模型。
上述即是G和D的训练过程。其中在每次迭代中,梯度下降K次来训练D,然后梯度下降一次来训练G,之所以这样做,是因为D的训练是一个非常耗时的操作,且在有限的集合上,训练次数过多容易过拟合。
看到这里,对抗网络的思想大家就已经了解了,后面是两个数学证明来证明生成对抗问题的合理性。
第一个证明是,当G固定的时候,D会有唯一的最优解。真实描述如下:
证明如下:
首先,对V(G,D)进行变换
对于任意的a,b ∈ R2 \ {0, 0}, 下面的式子在a/(a+b)处达到最优。
得证!
根据证明一,可以对V(G,D)中最大化D的步骤进行变换。
从而得到定理
直接带入pg=pdata可得-log4,当入pg!=pdata时,得到
命题二原文如下:
这个定理的证明需要用到凸函数的某个似乎是很明显的定理,即,通过凸函数的上确界的次导数可以找到函数在最大值时的导数。这个理论应用到G和D中就是在G不变时,D是拥有唯一的最优值的凸函数,因而可以得到。但因为我对凸优化理论尚不熟悉,所以没有理解透彻这个地方。
早期的训练中,D可以很轻松的分辨出来G和M中不同的样本,从而会饱和,所以用logD(G(z))来代替log(1-D(G(z)),这样可以为早期的学习提供更加好的梯度。
实验就是去拟合Guassian Parzen Windown,具体细节略过。结果如下:
优势:
劣势:
各种生成模型的对比如下:
对抗的思想设计的很巧妙,简单的思想解决了很大的问题。现在图像生成、图像修复、图像风格迁移大多数都是基于GAN的。比如最近流行的生成人脸的应用,还有换脸的应用等。
但最原始的GAN的训练不是特别稳定,后续还有很多工作来使得GAN的训练变得稳定,同时能生成效果更好的图等,如果有时间的话,我也会一一介绍。
由于微信平台算法改版,公号内容将不再以时间排序展示,如果大家想第一时间看到我们的推送,强烈建议星标我们和给我们多点点【在看】。星标具体步骤为:
(1)点击页面最上方"AINLP",进入公众号主页。
(2)点击右上角的小点点,在弹出页面点击“设为星标”,就可以啦。
感谢支持,比心。
推荐阅读
征稿启示| 200元稿费+5000DBC(价值20个小时GPU算力)
完结撒花!李宏毅老师深度学习与人类语言处理课程视频及课件(附下载)
模型压缩实践系列之——bert-of-theseus,一个非常亲民的bert压缩方法
文本自动摘要任务的“不完全”心得总结番外篇——submodular函数优化
斯坦福大学NLP组Python深度学习自然语言处理工具Stanza试用
关于AINLP
AINLP 是一个有趣有AI的自然语言处理社区,专注于 AI、NLP、机器学习、深度学习、推荐算法等相关技术的分享,主题包括文本摘要、智能问答、聊天机器人、机器翻译、自动生成、知识图谱、预训练模型、推荐系统、计算广告、招聘信息、求职经验分享等,欢迎关注!加技术交流群请添加AINLPer(id:ainlper),备注工作/研究方向+加群目的。
阅读至此了,分享、点赞、在看三选一吧🙏