深度学习之其他常见的生成式模型
1.1 什么是自回归模型:pixelRNN与pixelCNN?
自回归模型通过对图像数据的概率分布
p
d
a
t
a
(
x
)
p_{data}(x)
pdata(x)进行显式建模,并利用极大似然估计优化模型。具体如下:
p
d
a
t
a
(
x
)
=
∏
i
=
1
n
p
(
x
i
∣
x
1
,
x
2
,
.
.
.
,
x
i
−
1
)
p_{data}(x)=\prod_{i=1}^np(x_i|x_1,x_2,...,x_{i-1})
pdata(x)=i=1∏np(xi∣x1,x2,...,xi−1)
上述公式很好理解,给定
x
1
,
x
2
,
.
.
.
,
x
i
−
1
x_1,x_2,...,x_{i-1}
x1,x2,...,xi−1条件下,所有
p
(
x
i
)
p(x_i)
p(xi)的概率乘起来就是图像数据的分布。如果使用RNN对上述依然关系建模,就是pixelRNN。如果使用CNN,则是pixelCNN。具体如下[5]:
显然,不论是对于pixelCNN还是pixelRNN,由于其像素值是一个个生成的,速度会很慢。语音领域大火的WaveNet就是一个典型的自回归模型。
1.2 什么是VAE?
PixelCNN/RNN定义了一个易于处理的密度函数,我们可以直接优化训练数据的似然;对于变分自编码器我们将定义一个不易处理的密度函数,通过附加的隐变量 z z z对密度函数进行建模。 VAE原理图如下[6]:
在VAE中,真实样本 X X X通过神经网络计算出均值方差(假设隐变量服从正太分布),然后通过采样得到采样变量 Z Z Z并进行重构。VAE和GAN均是学习了隐变量 z z z到真实数据分布的映射。但是和GAN不同的是:
- GAN的思路比较粗暴,使用一个判别器去度量分布转换模块(即生成器)生成分布与真实数据分布的距离。
- VAE则没有那么直观,VAE通过约束隐变量 z z z服从标准正太分布以及重构数据实现了分布转换映射 X = G ( z ) X=G(z) X=G(z)
生成式模型对比
- 自回归模型通过对概率分布显式建模来生成数据
- VAE和GAN均是:假设隐变量 z z z服从某种分布,并学习一个映射 X = G ( z ) X=G(z) X=G(z),实现隐变量分布 z z z与真实数据分布 p d a t a ( x ) p_{data}(x) pdata(x)的转换。
- GAN使用判别器去度量映射 X = G ( z ) X=G(z) X=G(z)的优劣,而VAE通过隐变量 z z z与标准正太分布的KL散度和重构误差去度量。