当前位置:   article > 正文

李宏毅——Flow-based Generative Model_change of variable theorem

change of variable theorem

导语

已经介绍的生成模型

在这里插入图片描述
之前的生成模型的问题
component-by-component问题:什么是最好的顺序;生成的慢
VAE问题:优化的是lower bound,不是最终的目的
GAN问题:训练不稳定

在这里插入图片描述
generator的问题
G是一个网络,定义了一个概率分布
比如:z是来自于Normal Distribution,但是得到了p是个其他的分布
我们希望这个Pg和真实数据的分布越接近越好
可以用最大似然函数的方式让它接近。
在这里插入图片描述
Pg通常比较复杂,可以用flow-based model来直接优化目标。
在这里插入图片描述

数学背景

jacobian Matrix

右下角表示两者的关系。
在这里插入图片描述

Determinant

在这里插入图片描述
determinant的含义:高维空间中的体积
在这里插入图片描述

change of Variable Theorem

z的分布是上图,z的分布是下图
探究他们之间的关系,就是研究generator
在这里插入图片描述
例子:z的分布是这样的
x=2z+1,那么px的分布是下面这样的。
p(x)=1/2*pie(z)
在这里插入图片描述
在更复杂的情况下:
在deltaz的情况下,因为非常小,可以视为uniform的分布。
蓝色方块和绿色方块有相同的面积。
要加绝对值,因为dz/dx可能为正也可能为负
在这里插入图片描述
在二维的情况下
在这里插入图片描述
在这里插入图片描述

flow-based generative model

假设做image的生成,输入的z也应该是1001003的,但是不能保证G可逆,G的能力是有限的。
在这里插入图片描述
一个G不够,可以加更多吗?
在这里插入图片描述
如何训练呢?
训练时,训练G-1,实际生成时使用G。
pie是Normal分布,所以使得zi最小,值最大。但是如果z总是0的话,JG-1就总是0,后面的项就会非常大
在这里插入图片描述
使用coupling layer,被用在两个知名的flow-base模型NICE和NVP中
把z拆成两组,前d维和后面的部分,x的前d维等于z的前d维直接复制过去。
用一个functionF把前d维变化成后面的维数,另一个function也变成后面的维数
在这里插入图片描述
求inverse也比较简单,看红线就知道
在这里插入图片描述
求jacobian的determinant可以看图,非常巧妙。
左上角的是I,右上角,因为浅绿色和浅蓝色的没有关系,所以是0,左下角的没意义,因为求determinant时右上角是O,可以视为左上角和右下角的乘积。右下角的是对角线的。
因为只有对角线的有关系,其他的没有关系。
在这里插入图片描述
把coupling layer叠起来,编程一个完整的网络
但是有个问题,如果前半段如果都是直接复制的话,等于最终什么都没有做。
所以要做一些手脚,比如下面的做法。
在这里插入图片描述
如果做的是图像的生成的话,拆法有两种,一是根据横轴和纵轴来分,二是根据层来拆。
在这里插入图片描述
或者用convolution的方法,比如GLOW。
w可以shuffle不同的channel。w可以视为一个G。
在这里插入图片描述
在这里插入图片描述
得到的jacobian是下面的
在这里插入图片描述
demo
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
glow的更多做法
语音合成
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/797849
推荐阅读
相关标签
  

闽ICP备14008679号