Improving Variational Auto-Encoders using Householder Flow

Improving Variational Auto-Encoders using Householder Flow

blob.png

Max Welling是VAE的鼻祖


首先,这个文章是上面那个文章的延续,只不过用了更好的flow,我们为什么要在VI里面用这个flow就不说了,见下面

blob.png

反正最后的形式是

blob.png

然后就是现在的一些Normalization flow的形式,

blob.png

可以看到其中有一个是 general normalization flow 还有一个是volum preserving flows 上面那个文章就是用的第一种吧应该

然后这个文章主要是研究第二个,他们的差别就是雅各布行列式怎么被计算的,但是volume preserving的那种要保证所有的行列式都是1  因此在上面那个式子里面保证了左边的那个det是0(ln后)


然后我们看看作者怎么用Householder Flow来计算的,

--------------

假设我们的方差矩阵式full的  那么它可以被分解成

blob.png

而我们知道一个正交矩阵的雅各比行列式为1    所以我们有 for

blob.png

  

因为我们最后就是为了得到一个Z(t)使之能符合右边的那个分布Udiag()Ut 所以我们的任务就是怎么找到这么一组变换,使之能够成为上面的那个

然后我们有一个公里

blob.png

所以

blob.png

好了 现在我们可以看看在VAE里面怎么去找这个flow了

blob.png

我们的这个转换就是这个householder转化,

其中的每一个转化中,根据公式6 我们知道SYYT就是上面式子中的右部分,而且k=1 


在VAE里面,这个v(x)也是由我们的VAE的encoder提供的,我们提前设定好一个t 然后用VAE产生一系列的V  就可以得到了


blob.png

然后是实验

blob.png

可以看到确实这个z很像真实的点了

=====================================

而且有一个重要的性质就是  


这个东西放上去 因为是Householder的,也就是只有协方差的一些东西,添加的变化都是正交的,因此在VAE的求导函数里面所有的东西都没有变,即目标函数还是那样写,只不过我们的那个隐变量Z变了,变成了我们设计的那个转化后的东西


留下您的评论

回复列表:

By王炳宁 on Dec. 21, 2016 | 类别 ML

关于本站