要讲扩散模型,不得不提VAE。VAE和GAN一样,都是从隐变量 Z 生成目标数据 X 。它们假设隐变量服从某种常见的概率分布(比如正态分布),然后希望训练一个模型 X=g(Z) ,这个模型将原来的概率分布映射到训练集的概率分布,也就是分布的变换。注意,VAE和GAN的本质都是概率分布的映射。大致思路如下图所示:
图片来源:https://zhuanlan.zhihu.com/p/34998569
换句话说,大致意思就是先用某种分布随机生成一组隐变量,然后这个隐变量会经过一个生成器生成一组目标数据。VAE和GAN都希望这组数据的分布 \hat{X} 和目标分布 X 尽量接近。
是不是听上去很work?但是这种方法本质上是难以work的,因为“尽量接近”并没有一个确定的关于 X 和 \hat{X} 的相似度的评判标准。换句话说,这种方法的难度就在于,必须去猜测“它们的分布相等吗”这个问题,而缺少真正interpretable的价值判断。有聪明的同学会问,KL散度不就够了吗?不行,因为KL散度是针对两个已知的概率分布求相似度的,而 \hat{X} 和 X 的概率分布目前都是未知。
GAN的做法就是直接把这个度量标准也学过来就行,相当生猛。但是这样做的问题在于依然不interpretable,非常不优雅。VAE的做法就优雅很多了,我们先来看VAE是怎么做的,理解了VAE以后再去理解Diffussion就很自然了。
到底什么是生成模型?
我们看回生成模型到底是个啥。我们拿到一批sample(称为 X ),想要用 X 学到它的分布 p(X) ,这样就能同时学到没被sample到的数据了,用这个分布 p(X) 就能随意采样,然后获得生成结果。但是这个分布九曲回肠,根本不可能直接获得。所以绕个弯,整一个隐变量 Z ,这东西可以生成 X 。不妨假设 Z 满足正态分布,那就可以先从正态分布里面随便取一个 Z ,然后用 Z 和 X 的关系算出 p(X) 。这里不得不用一下数学公式,因为后面一直要用到(其实也很简单,学过概率学基础一下就看得懂):
p(X)=\sum_Z{p(X|Z)p(Z)}
换句话说,就是不直接求 p(X) ,而是造一个别的变量(好听的名字叫“隐变量”),获得这个隐变量和我要搞的 X 的关系,也能搞到 p(X) 。注意,上式中,p(X|Z) 称为后验分布, p(Z) 称为先验分布。 VAE的核心
VAE的核心就是,我们不仅假设 p(Z) 是正态分布,而且假设每个 p(X_k|Z) 也是正态分布。什么意思呢?因为 X 是一组采样,其实可以表示成 X=\{X_1,...,X_k\} ,而我们想要针对每个 X_k 获得一个专属于它和 Z 的一个正态分布。换句话说,有 k 个 X sample,就有 k 个正态分布 p(X_k|Z) 。其实也很好理解,每一个采样点当然都需要一个相对 Z 的分布,因为没有任何两个采样点是完全一致的。
那现在就要想方设法获得这 k 个正态分布了。怎么搞?学!拟合!但是要注意,这里的拟合与GAN不同,本质上是在学习 X_k 和 Z 的关系,而非学习比较 X 与 \hat{X} 的标准。
OK,现在问一个小学二年级就知道的问题,已知是正态分布,学什么才能确定这个正态分布?没错,均值和方差。怎么学?有数据啊! Z 不是你自己假设的吗, X_k 是已知的啊,那你就用这俩去学个均值和方差。
好,现在我们已经学到了这 k 个正态分布。那就好说了,直接从 p(Z|X_k) 里面采样一个 Z_k ,学一个generator,就能获得 X_k=g(Z_k) 了。那接下来只需要最小化方差 D^2(\hat{X}_k,X_k) 就行。来看看下面的图,仔细理解一下:
现在想想,为什么要用马尔可夫链。我们把问题详细地重述一下:为什么我们创造一个稳定分布为高斯分布的马尔可夫链,对于生成器模仿我们定义的某个映射的每一小步有帮助呢?这里你肯定想不出来,不然你也能发明diffusion model ——答案是,基于马尔可夫链的前向过程,其每一个epoch的逆过程都可以近似为高斯分布。
懵了吧,我也懵了。真正的推导发了好几篇paper,都是些数学巨佬的工作,不得不感叹基础科学的力量……相关工作主要用的是SDE(随机微分方程),我们在这里不做深入,但是需要理解大致的思路,如下图所示。
可以很清晰的认识到,VAE本质是一个基于梯度的encoder-decoder架构,encoder用来学高斯分布的均值和方差,decoder用变分后验来学习生成能力,而将标准高斯映射到数据样本是自己定义的。而扩散模型本质是一个SDE/Markov架构,虽然也借鉴了神经网络的前向传播/反向传播概念,但是并不基于可微的梯度,属于数学层面上的创新。两者都定义了高斯分布 Z 作为隐变量,但是VAE将 Z 作为先验条件(变分先验),而diffusion将 Z 作为类似于变分后验的马尔可夫链的平稳分布。
想要更深入的理解?