chapter-13-生成式模型

生成式模型



假设训练数据符合某分布p,我们的目标是构建一个p模型,来生成和训练数据相似的数据。

从大的分类标准来看,生成式模型分为两类,显式密度估计和隐式密度估计,这取决于我们定义和求解p模型的方式是显式还是隐式。

以下是生成式模型的家族图谱:
chapter-13-生成式模型_第1张图片

pixelRNNs&pixelCNNs

chapter-13-生成式模型_第2张图片
这里的定义很简单,唯一的一点疑惑是,如何定义元素的顺序?下面有两种方法:
chapter-13-生成式模型_第3张图片
chapter-13-生成式模型_第4张图片

变分自编码器(Variational Autoencoders,VAE)



首先是自编码器:
chapter-13-生成式模型_第5张图片
首先我们通过编码器来得到输入数据的特征,然后再将其解构来得到一些与输入数据相似的数据。我们可以通过计算原始数据与重构数据的差来得到损失,并不断缩小损失。结果就是,我们相当于将图片的信息存储到了Z里。我们可以认为Z的每列都代表了图片的一种特征,当它的值改变时,生成的图像也在改变。

但通过这种方式,我们只能得到已有的图像,因为我们不能随意产生合理的Z值。为了得到新的图像,我们假设Z服从单位高斯分布,并从中取样,然后我们就可通过它来对图像x采样。

但有个问题,我们如何得到这个解码器呢?按照神经网络的思想,如果一个函数/映射太过复杂,那我们就设置一个神经网络,来让它自己学习合适的函数。

那么如何训练这个网络呢?回想之前的pixelCNNs和pixelRNNs,一个直观的思路是最大化似然函数:
在这里插入图片描述
但如下图所示,这个积分是很难计算的。不过根据贝叶斯公式,我们可以得到下图第二个式子,我们发现,如果能够计算出p(z|x),我们就能计算出p(x)。但p(z|x)并不能直接算出来,于是按照前面的思路,我们用神经网络定义一个它的近似:q(z|x),并称其为编码器。
chapter-13-生成式模型_第6张图片
下面是似然估计的计算过程:
chapter-13-生成式模型_第7张图片
从最后的结果里我们也能看出为什么我们要让似然估计最大。

以下是VAE的计算流程:
chapter-13-生成式模型_第8张图片
当计算好q(z|x)后,在生成阶段,我们只需要解码器就可以了。我们可以对z进行采样,然后进行迭代训练神经网络即可。

总结一下VAE:

chapter-13-生成式模型_第9张图片

生成式对抗网络(GANs)



chapter-13-生成式模型_第10张图片
如果我们想要高维、复杂的训练分布中采样,是无法直接做到的,一个曲折的方法是,首先找到一个简单的分布与该分布的映射,然后在这个简单分布中采样。

那么我们该如何找到这个映射呢?神经网络。

这个神经网络有一点特殊:它是由两个神经网络构成,其中一个叫生成器网络,另一个叫判别器网络。这两个神经网络在训练过程中要不断对抗:前者要生成以假乱真的图片,而后者要想办法辨别出来:
chapter-13-生成式模型_第11张图片
这是它的训练目标:
chapter-13-生成式模型_第12张图片
为了完成这个目标,我们就要分别对判别器和生成器进行梯度上升和梯度下降。

但在实际实践中,我们发现当生成器的伪造能力较弱时,
在这里插入图片描述
的梯度变化较平坦,反之则很陡峭。这和我们希望的相反,因为我们希望在其能力较弱时梯度更陡峭,进而学到更多。于是为了达到这个目的,我们将这项变为:
在这里插入图片描述
以下是GANs的伪代码:
chapter-13-生成式模型_第13张图片
之后GANs有了各种各样的探索和改进,下面是一个有点像变魔法的例子:
chapter-13-生成式模型_第14张图片

你可能感兴趣的:(chapter-13-生成式模型)