生成对抗网络(GAN,Generative Adversarial Networks) 作为一种优秀的生成式模型,引爆了许多图像生成的有趣应用。但也有不少人提出疑问:GAN 真的创造了新的信息吗?本文来源于知乎话题“GAN 真的创造了新的信息吗?”,精选了两个比较有意思的回答,也欢迎各位留言区评论交流~
作者:YukiRain、信息门下走狗
来源:https://www.zhihu.com/question/315259993
YukiRain:
一个多月前在AAAI2019听Goodfellow的invited talk,他当时说的一句话,翻译成中文大意是
很多人认为GAN在数据科学中的一个应用是数据增强,他们认为通过用已有的数据来训练GAN,可以创造出更多的数据,从而解决数据缺乏问题――据我所知这种方法从未奏效过 (As far as I know this never works in practice)
在我印象里ICLR2018就有人质疑过GAN是否能够真正意义上生成新的数据,当时作者罗列出的一系列实验结果表明结论是否定的
补两句我个人的看法,题主的问题是【GAN真的创造了新的信息吗】,仔细考虑下会发现这并不是一个良好定义的问题,因为如何算【创造了新的信息】是定义不清晰的。实际上我认为,在图像任务上通过人类肉眼观察是否出现了一些新的纹理特征一类的定义方式并不能为这个问题本身带来新的insight。这里可以稍微开一些脑洞,如果真实的样本集合是 ,生成的样本集合是 ,那么可以有这么几种定义方式:
思路一:entropy,如果 称之为【创造了新的信息】,然而GAN学习的分布是隐式的,这个entropy压根算不出来
思路二:truly Bayesian,若我们有一个机器学习模型 来对数据进行拟合,其中 ,我们可以用信息增益 (Information Gain) 来衡量【创造了新的信息】这一事件的程度,严格定义的信息增益形式为 ,若算出来 大于一个事先设定的常数,则认为【创造了新的特征】。问题在于,这个严格定义的information gain是没有办法做exact inference的,只能用变分下界之类的办法来算,处理起来也是相当麻烦
思路三:empirical evaluation,找一个baseline模型,分别在 与 两个数据集上进行训练,比较performance,这种做法没有任何理论保障,很难说baseline模型的选取是否对实验的最终结果带来了决定性影响。对于这种思路,我认为如果不在大量的baseline模型上进行测试并报告显著性,得到的结论是没有意义的。
信息门下走狗:
我个人觉得使用‘创造了信息’这个说法是不恰当的,因为从物理上说,信息是不能创造和消灭的,我们只能说,GAN是否可以生成一组数据来实质性的改善数据不足的问题,以及考察这个能力的获取的源头在哪里。
(1)GAN的本质可以理解为一种复杂插值系统,对训练数据进行插值从而拟合构造数据的分布。从这个角度看,我们使用的插值方法本身是提供了一类不包括在训练数据之中的信息的,因为这个插值方法作为一个生成网络,其结构本身就是高度复杂的,这个结构本身已经提供了关于数据分布模式的结构化的新信息或者说对数据模式的假定或先验。所以从这个角度看,的确可以说GAN提供了新信息。
(2) 从另一角度看,GAN网络结构的引入作为先验知识,其实可以同样直接引入问题,即直接把这个结构信息应用于希望借助GAN来增强数据的应用中而不必单独训练一个GAN来生成数据,因为反正这个GAN生成的数据的全部信息不外乎来自训练数据本身和GAN的网络结构这两个方面,理论上应用系统完全可以不依赖于GAN来完成同样的任务。从这个角度看,GAN并没有提供超越目标应用自身可以获取的额外的信息。
(3)之所以我们一般认为使用GAN来增强数据的确可以改善系统性能,本质还是GAN的结构信息提供了对问题的新的约束。这个约束是靠网络结构提供的,正如deep image prior所演示的一样,网络结构可以定义一个子流形。训练过程其实就是在对这个流形进行调整,使其更适合训练数据的结构。所以,总体看,我还是倾向于GAN的确是引入了新信息的,但这个信息是先验的,即(1)的观点。
(4)另外,将GAN单独进行训练后生成数据来协助系统改善性能,而不是直接将GAN的网络结构和应用打包,我觉得就是个表达效率问题,把GAN的结构信息和应用问题直接混在一起使用,可能不是一个最优化最高效的表达,而将训练GAN生成数据和目标应用分离,实际上是一种对问题解耦,是在网络结构层次上的graphical model的思路,其目的就是通过问题分解来简化问题,让表达效率更高。正如在通信系统中我们分离信源编码和信道编码而不是将二者放在一起混合编码一样,虽然理论上混合编码可能存在一个更好的解,但是问题复杂度增加使得这种投入产出比不尽合理,所以从效率角度看,我们还是选择解耦处理。
总而言之,无论是应用本身还是基于GAN增强,都依赖于对数据分布的估计,使用GAN不过是用了个特殊的估计器,本质不变。同时,我认为GAN的确是引入(不用创造)了训练数据之外的信息,是可以改善系统性能的,除非把引入GAN的先验信息直接应用于目标系统。
此外,人类从观测数据中总结自然规律算创造新信息么?人类认知世界的过程实际就是个GAN的结构,G是基于待发掘的规律的推理,D是实验验证,我觉得这个过程只能说是找到客观世界的一个描述,并非创造了信息。而这个描述本身已经存在于物理过程中,所以不是创造,只是表达。
☞ OpenPV平台发布在线的ParallelEye视觉任务挑战赛
☞【学界】OpenPV:中科院研究人员建立开源的平行视觉研究平台
☞【学界】ParallelEye:面向交通视觉研究构建的大规模虚拟图像集
☞【CFP】Virtual Images for Visual Artificial Intelligence
☞【最详尽的GAN介绍】王飞跃等:生成式对抗网络 GAN 的研究进展与展望
☞【智能自动化学科前沿讲习班第1期】王飞跃教授:生成式对抗网络GAN的研究进展与展望
☞【智能自动化学科前沿讲习班第1期】王坤峰副研究员:GAN与平行视觉
☞【重磅】平行将成为一种常态:从SimGAN获得CVPR 2017最佳论文奖说起
☞【学界】Ian Goodfellow等人提出对抗重编程,让神经网络执行其他任务
☞【学界】六种GAN评估指标的综合评估实验,迈向定量评估GAN的重要一步
☞【资源】T2T:利用StackGAN和ProGAN从文本生成人脸
☞【学界】 CVPR 2018最佳论文作者亲笔解读:研究视觉任务关联性的Taskonomy
☞【业界】英特尔OpenVINO™工具包为创新智能视觉提供更多可能
☞【学界】ECCV 2018: 对抗深度学习: 鱼 (模型准确性) 与熊掌 (模型鲁棒性) 能否兼得