条件变分自动编码器

条件变分自编码器CVAE
条件变分自编码器概述

VAE的局限

对于普通的VAE来说,其生成能力和过程表现在从一个隐藏的变量空间中采样,然后去解码生成一个新的东西,拿minist手写数据集举例的话,我们在生成数字之前并不知道解码器会从这个隐变量z中解码出什么数字。这是因为原始的VAE直接对隐变量z和数据X建模,而CVAE可以对定义在条件概率下的隐变量z和数据X建模。

VAE公式

logP(X)DKL[Q(z|X)||P(z|X)]=E[logP(X|z)]DKL[Q(z|X)||P(z)] l o g P ( X ) − D K L [ Q ( z | X ) | | P ( z | X ) ] = E [ l o g P ( X | z ) ] − D K L [ Q ( z | X ) | | P ( z ) ]

编码器是在基于X对隐变量z建模。

CVAE公式

上述VAE中不管X的类型是什么,如minist中的X为0~9,不同的数字可能有不一样的数据分布,但这个信息并没有得到利用,所以可以加入数据的标签作为条件,得到编码器: Q(Z|X,c) Q ( Z | X , c ) ,解码器: P(X|z,c) P ( X | z , c ) ,这里c是先验知识,如每张图片的标签,这样就推广为CVAE。
公式如下:

logP(X|c)DKL[Q(z|X,c)||P(z|X,c)]=E[logP(X|z,c)]DKL[Q(z|X,c)||P(z|c)] l o g P ( X | c ) − D K L [ Q ( z | X , c ) | | P ( z | X , c ) ] = E [ l o g P ( X | z , c ) ] − D K L [ Q ( z | X , c ) | | P ( z | c ) ]

这样,隐变量的分布局限在条件c下,对于编码器即 P(z|c) P ( z | c ) ,在每一个c的值下面,都有一个隐变量z的分布 P(Z) P ( Z ) ,对解码器也是如此。

条件变分自编码概述

条件变分自动编码器_第1张图片

你可能感兴趣的:(条件变分自动编码器)