请选择 进入手机版 | 继续访问电脑版
图像的生成模型,或者说图像模型(与语言模型相对应),是图像无监督学习的核心(可以以此解决一切逆问题,如超分辨率,降噪,inpaint,等等),也是图像有监督学习的重要基础。
本系列的最终目的,在于希望提出一种稳定,可解释,每一步都具有【数学和物理基础】的生成模型训练体系(包括网络架构,损失设计,训练算法,评估方法,等等)。
在此过程中,我们将看到,有些流传甚广的,著名的说法,实际存在漏洞和误区。
本系列的前后文见我的专栏。欢迎关注,欢迎讨论:
技术备忘录​zhuanlan.wengbi.com Rethink Generative Model:生成模型的误区?思考DL的理论细节 (4)-1.jpg 本文,对于前文中一些可能难以理解的观点,作进一步的说明。

1. 生成模型的漏洞

考虑样本集 。这里 是噪音。这就是真实的模型。下文我们先暂时忽略降噪的问题。
我在前文曾说过,对于  的估计是核心问题,而且,对于  的估计,不见得需要 GAN 这种拐弯抹角的方法。
例如,一种最简单的思路,是先还原:

然后找到合理的插值方法。这同样可以通过 Deep Image Prior(下文简称 DIP)实现。
Deep image prior 不是秘密,是公开的论文。大家都知道,大家都不重视,没有人研究,都去研究相对不重要的事情,很令人失望。
而且,很多人没有深究如何还原  ,直接就试图去猜 。例如,目前的 GAN 甚至完全不能保证还原 ,这是很大的漏洞,但是没有人去考虑。
因此我在上一篇中才会做一个弱智小实验,看看硬性还原  会怎样:
PENG Bo:DGN:生成模型,可以有多简单?思考DL的理论细节 (3)​zhuanlan.wengbi.com Rethink Generative Model:生成模型的误区?思考DL的理论细节 (4)-11.jpg 这种实验我会继续做。找到最佳的 G 架构,以及怎样用最小的 z 维数还原出 X,等等。
大家可能问,AE 系列就是还原 ,但是 AE 系列生成的图片很模糊啊?
    通常的解释是因为 AE 用了 MLE,这在一定条件下是对的。我认为,根本的解释是,常见 AE 用的网络太小,架构不好,所以不能完美还原。在这种限制下,Perceptual loss 比 MLE 好。但如果网络够强,其实 MLE 也不见得不行。当然,最终还是需要我称为 "Conceptual loss" 的事情(我也说不清这是啥)。其实有了 loss 就相当于已经很理解 ,所以这个问题是很微妙的。
在弱智小实验中,我们看到几百张图片配合 MLE,是可以记住的。但在这种网络规模和简单的架构下,图片很多就必然会越来越模糊。
所以我们需要想清楚最佳的 G 是怎样。

2. 模式坍塌的细节

模式坍塌是困扰 GAN 的常见问题。
Rethink Generative Model:生成模型的误区?思考DL的理论细节 (4)-14.jpg
应该是 Goodfellow 说过这个,他说,对于完美的 D,就最终会模式坍塌了(显然)。
所以很多人觉得,D 不能太完美。
在我看来,这个观点有问题。
首先,如果 G 固定输出和某个  一模一样的图片,那么,没错,现在的 GAN 中“分辨样本真实度的 D”,似乎就很难工作了(但是,我必须说,实际的 D 是在不断变动的,所以问题其实很复杂)。
完美的 D,是分辨 G 的输出的分布,这种 D 是不会出错的。我们的目标本来就是拟合分布。
如何输入分布?一种方法,是输入多个样本。这种 D,很多人想过了,例如这里面就很多:
https://arxiv.org/pdf/1606.03498.pdf​arxiv.org但这可能还不是最好的做法。我认为,最好的做法需要从源头开始,从 G 的架构就想清楚。
例如,一个“可解释”的 G,有助于我们实现这个目标。今天有篇文章挺好:
https://zhuanlan.wengbi.com/p/51044703​zhuanlan.wengbi.com Rethink Generative Model:生成模型的误区?思考DL的理论细节 (4)-16.jpg 其实,如果 G 坍塌了,真的就活不过来了吗?不一定。
    首先,我们的训练过程,是 SGD,不是 GD。所以,所有用积分观点看 GAN 的看法,都有漏洞。其实我们实际用的有步长的 GD 也不能用积分观点看。
其次,正如 WGAN 的文章,他认为两个 delta 函数之间的很多散度没法训练,所以很多散度不好。这看法也有点问题。
    因为,网络的输出的分布,是可以突然冒出来一个头的。例如,由于网络是高度非线性的,可能样本 A 的梯度,让另一个本来没有梯度的样本 B 也享受到梯度。例如,如果 G 一直生成 ,我们换一个只认 的 D,那么 G 也得变(注意 D 是一直在变的,所以完全可以这样变)。
其实,如果 D 对于所有  一视同仁,那么它最终会引导 G 跑出来(类似负采样)。但这里有一些细节问题,和训练的具体方法有关系。所以优化器对于现在的 GAN 很重要。
写到这里我发现确实有个细节。

现在的深度学习框架,采样样本,都是每个 epoch 打乱一次,全部走一遍。

这个采样方法有问题。

例如,这样就不可能出现连续采样同一样本的情况。

这个非常微妙,对于普通问题不影响。

但是,现在看来,说不定,这会和 GAN 的坍塌有关,稍后实验一下。

总之,我希望最终能有一个对于优化器不敏感的生成模型。
最后,再考虑“只看单个样本的真实度的 D”。
那么,下面这几种 G 都可以完美满足 D 的需求:
    “固定生成 的 G"“会根据不同  生成 的 G"“会根据不同  生成不同  的 G"“会根据不同  生成不同  以及其它 中的样本的 G"
并不能说,一定会坍塌到第 1 个。如果经常坍塌到第 1 个,说明整个系统有问题。
看一个几何图像,来自我 1 年多前的文章,这里的用法有点区别:
PENG Bo:GAN的几何图景:样本空间的Morse流,与鉴别网络D为何不可能真正鉴别真假​zhuanlan.wengbi.com Rethink Generative Model:生成模型的误区?思考DL的理论细节 (4)-29.jpg Rethink Generative Model:生成模型的误区?思考DL的理论细节 (4)-30.jpg
这里用这个图像说明另一个问题,这里想说的是,我们最终希望,输入不同的 z,可以流到不同的  以及其它 中的样本。这样就满足了 D = 1,也可以得到很好的样本。
所以这对应一种思路,就是先输入噪音图像(噪音的 D 应该 = 0),然后降噪。或者不同噪音对应不同的 D 的值,等等。未来我也试试。
总之,生成模型确实可以有很多思路。
后续继续。欢迎大家讨论,欢迎大家关注。
分享到 :
0 人收藏

Archiver|手机版|小黑屋|翁笔

© 2001-2018 Wengbi.com

返回顶部