被浏览
127,948

创建时间:2019-03-09  21:33:27

最后编辑:2019-03-13  03:31:43

19 个回答

Amusi、physixfan 等 953 人赞同了该回答

一个多月前在AAAI2019听Goodfellow的invited talk,他当时说的一句话,翻译成中文大意是

很多人认为GAN在数据科学中的一个应用是数据增强,他们认为通过用已有的数据来训练GAN,可以创造出更多的数据,从而解决数据缺乏问题――据我所知这种方法从未奏效过 (As far as I know this never works in practice)

在我印象里ICLR2018就有人质疑过GAN是否能够真正意义上生成新的数据,当时作者罗列出的一系列实验结果表明结论是否定的

补两句我个人的看法,题主的问题是【GAN真的创造了新的信息吗】,仔细考虑下会发现这并不是一个良好定义的问题,因为如何算【创造了新的信息】是定义不清晰的。实际上我认为,在图像任务上通过人类肉眼观察是否出现了一些新的纹理特征一类的定义方式并不能为这个问题本身带来新的insight。这里可以稍微开一些脑洞,如果真实的样本集合是 DD ,生成的样本集合是 DGD_{G} ,那么可以有这么几种定义方式:

  • 思路一:entropy,如果 H(DG)>H(D)H(D_{G})>H(D) 称之为【创造了新的信息】,然而GAN学习的分布是隐式的,这个entropy压根算不出来
  • 思路二:truly Bayesian,若我们有一个机器学习模型 fθf_{\theta} 来对数据进行拟合,其中 θP(θ)\theta\sim{P(\theta)} ,我们可以用信息增益 (Information Gain) 来衡量【创造了新的信息】这一事件的程度,严格定义的信息增益形式为 IG(DG)=H(θ|DDG)H(θ|D)IG(D_{G})=H(\theta|D\cup{D_{G}})-H(\theta|D) ,若算出来 IG(DG)IG(D_{G}) 大于一个事先设定的常数,则认为【创造了新的特征】。问题在于,这个严格定义的information gain是没有办法做exact inference的,只能用变分下界之类的办法来算,处理起来也是相当麻烦
  • 思路三:empirical evaluation,找一个baseline模型,分别在 DDDDGD\cup{D_{G}} 两个数据集上进行训练,比较performance,这种做法没有任何理论保障,很难说baseline模型的选取是否对实验的最终结果带来了决定性影响。对于这种思路,我认为如果不在大量的baseline模型上进行测试并报告显著性,得到的结论是没有意义的。

最后谢邀,之后有空回来补references吧

薛天帆 等 139 人赞同了该回答

从信息论角度,数据通过任何通道信息只会减少,不会增加。

补充:

贴个图便于理解,圈是数据,方框是模型

这里面其实有两个问题:

1)经过GAN增强后的数据信息是不是变多了。

其实应该问相对于谁信息变多了。这里面涉及两组数据,一组是要增强的数据X,另外还有一组是用来训练GAN的数据Y。增强后的数据我们叫Z,如果问的是X用GAN增强后得到的Z,信息会不会比X多,那么回答是有可能,因为增强后的数据是包含了X和Y中的信息。如果问Z的信息会不会比X+Y多,那么一定不会。

2)经过GAN增强后的数据会不会提高后面的classifier的performance。

这里面又涉及两个通道:GAN和classifier,这里我们叫A和B。其实如果两个通道不相关,即使A把数据X中的信息减少了,也有可能会增加B的performance。由于B受自身能力的限制,它能直接从X得到的信息不是X的全部信息。而如果A对X的分布进行了变形刚好适应B的能力,那么最后的结果有可能变好。

我举一个极端的例子。假设我们的数据都是[0,1]的feature,而B这个classifier就是把所有输入求平均看是不是大于0.5。这个B当然是非常差的,接近于随机乱猜。

而我们的A本身就是一个好的classifier,它输出的就是一个0/1的label。可以看到从数据到label,A丢失了大量的信息。但是数据通过A之后再给B,明显提升了B的performance.

但问题的关键是如果A和B是独立的,A能否提高B的能力是不可控的。这种独立训练几个模型,然后把模型堆叠起来的土鳖做法古而有之,什么PCA+SVM,XXA+XXM...GAN+CNN也没有更高级。如果你愿意,你也可以用一个大的Y训练个PCA,PCA也有Generative模型,你用这个PCA也可以对X进行数据增强。这和GAN+CNN完全没区别。

我们要把A和B相关起来,那么A+B这个整体本身就是一个Deep结构了。而机器学习应该做的就是这种end2end的模型,中间的层间是相关的。

我个人觉得使用‘创造了信息’这个说法是不恰当的,因为从物理上说,信息是不能创造和消灭的,我们只能说,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是实验验证,我觉得这个过程只能说是找到客观世界的一个描述,并非创造了信息。而这个描述本身已经存在于物理过程中,所以不是创造,只是表达。

5 人赞同了该回答

在训练的时候把训练数据的信息提取到参数中,之后当你输入一个x,GAN会根据训练时学到的信息生成图片。如果和x比,信息量确实多了,但这些信息来自对训练数据的信息的归纳

就像先给你看很多花的照片,然后让你“画一朵花”。你画的花信息量当然比“画一朵花”这4个字多,但信息不是凭空产生的,而是来自于之前给你看过的照片

个人理解,欢迎指正

4 人赞同了该回答

如果说艺术源于生活

那么

艺术真的创造了新的信息吗?