admin管理员组文章数量:1130349
chapter
生成式模型
假设训练数据符合某分布p,我们的目标是构建一个p模型,来生成和训练数据相似的数据。
从大的分类标准来看,生成式模型分为两类,显式密度估计和隐式密度估计,这取决于我们定义和求解p模型的方式是显式还是隐式。
以下是生成式模型的家族图谱:
pixelRNNs&pixelCNNs
这里的定义很简单,唯一的一点疑惑是,如何定义元素的顺序?下面有两种方法:
变分自编码器(Variational Autoencoders,VAE)
首先是自编码器:
首先我们通过编码器来得到输入数据的特征,然后再将其解构来得到一些与输入数据相似的数据。我们可以通过计算原始数据与重构数据的差来得到损失,并不断缩小损失。结果就是,我们相当于将图片的信息存储到了Z里。我们可以认为Z的每列都代表了图片的一种特征,当它的值改变时,生成的图像也在改变。
但通过这种方式,我们只能得到已有的图像,因为我们不能随意产生合理的Z值。为了得到新的图像,我们假设Z服从单位高斯分布,并从中取样,然后我们就可通过它来对图像x采样。
但有个问题,我们如何得到这个解码器呢?按照神经网络的思想,如果一个函数/映射太过复杂,那我们就设置一个神经网络,来让它自己学习合适的函数。
那么如何训练这个网络呢?回想之前的pixelCNNs和pixelRNNs,一个直观的思路是最大化似然函数:
但如下图所示,这个积分是很难计算的。不过根据贝叶斯公式,我们可以得到下图第二个式子,我们发现,如果能够计算出p(z|x),我们就能计算出p(x)。但p(z|x)并不能直接算出来,于是按照前面的思路,我们用神经网络定义一个它的近似:q(z|x),并称其为编码器。
下面是似然估计的计算过程:
从最后的结果里我们也能看出为什么我们要让似然估计最大。
以下是VAE的计算流程:
当计算好q(z|x)后,在生成阶段,我们只需要解码器就可以了。我们可以对z进行采样,然后进行迭代训练神经网络即可。
总结一下VAE:
生成式对抗网络(GANs)
如果我们想要高维、复杂的训练分布中采样,是无法直接做到的,一个曲折的方法是,首先找到一个简单的分布与该分布的映射,然后在这个简单分布中采样。
那么我们该如何找到这个映射呢?神经网络。
这个神经网络有一点特殊:它是由两个神经网络构成,其中一个叫生成器网络,另一个叫判别器网络。这两个神经网络在训练过程中要不断对抗:前者要生成以假乱真的图片,而后者要想办法辨别出来:
这是它的训练目标:
为了完成这个目标,我们就要分别对判别器和生成器进行梯度上升和梯度下降。
但在实际实践中,我们发现当生成器的伪造能力较弱时,
的梯度变化较平坦,反之则很陡峭。这和我们希望的相反,因为我们希望在其能力较弱时梯度更陡峭,进而学到更多。于是为了达到这个目的,我们将这项变为:
以下是GANs的伪代码:
之后GANs有了各种各样的探索和改进,下面是一个有点像变魔法的例子:
chapter
生成式模型
假设训练数据符合某分布p,我们的目标是构建一个p模型,来生成和训练数据相似的数据。
从大的分类标准来看,生成式模型分为两类,显式密度估计和隐式密度估计,这取决于我们定义和求解p模型的方式是显式还是隐式。
以下是生成式模型的家族图谱:
pixelRNNs&pixelCNNs
这里的定义很简单,唯一的一点疑惑是,如何定义元素的顺序?下面有两种方法:
变分自编码器(Variational Autoencoders,VAE)
首先是自编码器:
首先我们通过编码器来得到输入数据的特征,然后再将其解构来得到一些与输入数据相似的数据。我们可以通过计算原始数据与重构数据的差来得到损失,并不断缩小损失。结果就是,我们相当于将图片的信息存储到了Z里。我们可以认为Z的每列都代表了图片的一种特征,当它的值改变时,生成的图像也在改变。
但通过这种方式,我们只能得到已有的图像,因为我们不能随意产生合理的Z值。为了得到新的图像,我们假设Z服从单位高斯分布,并从中取样,然后我们就可通过它来对图像x采样。
但有个问题,我们如何得到这个解码器呢?按照神经网络的思想,如果一个函数/映射太过复杂,那我们就设置一个神经网络,来让它自己学习合适的函数。
那么如何训练这个网络呢?回想之前的pixelCNNs和pixelRNNs,一个直观的思路是最大化似然函数:
但如下图所示,这个积分是很难计算的。不过根据贝叶斯公式,我们可以得到下图第二个式子,我们发现,如果能够计算出p(z|x),我们就能计算出p(x)。但p(z|x)并不能直接算出来,于是按照前面的思路,我们用神经网络定义一个它的近似:q(z|x),并称其为编码器。
下面是似然估计的计算过程:
从最后的结果里我们也能看出为什么我们要让似然估计最大。
以下是VAE的计算流程:
当计算好q(z|x)后,在生成阶段,我们只需要解码器就可以了。我们可以对z进行采样,然后进行迭代训练神经网络即可。
总结一下VAE:
生成式对抗网络(GANs)
如果我们想要高维、复杂的训练分布中采样,是无法直接做到的,一个曲折的方法是,首先找到一个简单的分布与该分布的映射,然后在这个简单分布中采样。
那么我们该如何找到这个映射呢?神经网络。
这个神经网络有一点特殊:它是由两个神经网络构成,其中一个叫生成器网络,另一个叫判别器网络。这两个神经网络在训练过程中要不断对抗:前者要生成以假乱真的图片,而后者要想办法辨别出来:
这是它的训练目标:
为了完成这个目标,我们就要分别对判别器和生成器进行梯度上升和梯度下降。
但在实际实践中,我们发现当生成器的伪造能力较弱时,
的梯度变化较平坦,反之则很陡峭。这和我们希望的相反,因为我们希望在其能力较弱时梯度更陡峭,进而学到更多。于是为了达到这个目的,我们将这项变为:
以下是GANs的伪代码:
之后GANs有了各种各样的探索和改进,下面是一个有点像变魔法的例子:
本文标签: chapter
版权声明:本文标题:chapter 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://it.en369.cn/IT/1686602638a15797.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。


发表评论