Flow-based学习笔记

Flow-based模型作为生成模型的一种,通过直接面对概率计算挑战,利用变换Jacobian行列式求解。本文介绍了Flow-based模型的基本概念,包括如何构建生成模型,以及在二维和高维分布情况下的变换方法。通过耦合层的设计,解决了计算复杂性和逆变换问题,实现了高效生成。最后,通过堆叠多个耦合层和1×1卷积来增强模型的拟合能力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Flow-based 学习笔记

flow-based的生成效果虽然不如GAN,但他已经非常接近GAN,足够惊艳。流模型是一种比较独特的生成模型——它选择直接直面生成模型的概率计算,要知道现阶段其他较火的生成模型,要么采用优化上界(VAE)或采用对抗训练的方式(GAN)去避开概率计算,从而寻找近似逼近真实分布的方法,但是流模型选择了一条硬路(主要是通过变换Jacobian 行列式)来求解,在后文会详细介绍。

1. 生成模型

在讲述Flow-based模型之前,首先介绍一下生成模型要解决什么问题:

如上图所示,给定两组数据 z 和 x,其中 z 服从已知的简单先验分布π(z)π(z)π(z)(通常是高斯分布,xxx服从复杂的分布p(x)p(x)p(x)(即训练数据代表的分布),现在我们想要找到一个变换函数fff,它能建立一种zzzxxx的映射f:z→xf: z → xf:zx,使得每对于π(z)π(z)π(z)中的一个采样点z′z^{'}z,都能在p(x)p(x)p(x)中有一个(新)样本点x′x^{'}x与之对应。

如果这个变换函数能找到的话,那么我们就实现了一个生成模型的构造。因为,p(x)p(x)p(x)中的每一个样本点都代表一张具体的图片,如果我们希望机器画出新图片的话,只需要从π(z)π(z)π(z)中随机采样一个点,然后通过f:z→xf: z → xf:zx,得到新样本点 xxx,也就是对应的生成的具体图片。所以,接下来的关键在于,这个变换函数 fff如何找呢?我们先来看一个最简单的例子。

如上图所示,假设 z 和 x 都是一维分布,其中 z 满足简单的均匀分布:π(z)=1(z∈[0,1]),π(z) = 1 (z ∈ [0,1]),π(z)=1(z[0,1]),x 也满足简单均匀分布:p(x)=0.5(x∈[1,3])p(x) = 0.5 (x ∈ [1,3])p(x)=0.5(x[1,3])

那么构建 z 与 x 之间的变换关系只需要构造一个线性函数即可:x=f(z)=2z+1x=f(z)=2z+1x=f(z)=2z+1.

下面再考虑非均匀分布的更复杂的情况:

如上图所示,π(z)π(z)π(z)p(x)p(x)p(x)都是较为复杂的分布,为了实现二者的转化,我们可以考虑在很短的间隔上将二者视为简单均匀分布,然后应用前边方法计算小段上的f∆f_{∆}f,最后将每个小段变换累加起来(每个小段实际对应一个采样样本)就得到最终的完整变换式 fff

如上图所示,假设在[z′,z′+△z][z^{'},z^{'}+\bigtriangleup z][z,z+z]π(z)π(z)π(z)近似服从均匀分布,在[x′,x′+∆x][x′,x′+∆x][x,x+x]p(x)p(x)p(x)也近似服从均匀分布,于是有p(x′)△x=π(z′)△zp(x^{'})\bigtriangleup x=π(z^{'})\bigtriangleup zp(x)x=π(z)z(因为变换前后的面积/即采样概率是一致的),当△x\bigtriangleup xx△z\bigtriangleup zz极小时,有:
p(x′)=π(z′)dzdx p(x^{'})=π(z^{'})\frac{dz}{dx} p(x)=π(z)dxdz
又考虑到dzdx\frac{dz}{dx}dxdz有可能是负值(如下图所示),而p(x′)p(x^{'})p(x)π(z′)π(z^{'})π(z)都为非负,所以p(x′)p(x^{'})p(x)π(z′)π(z^{'})π(z)的实际关系为:p(x′)=π(z′)∣dzdx∣p(x^{'})=π(z^{'})|\frac{dz}{dx}|p(x)=π(z)dxdz

下面进一步地做推广,我们考虑zzzxxx都是二维分布的情形。

如上图所示,zzzxxx都是二维分布,左图中浅蓝色区域表示初始点z′z^{'}zz1z_{1}z1方向上移动△z1\bigtriangleup z_{1}z1,在z2z_{2}z2方向上移动△z2\bigtriangleup z_{2}z2所形成的区域,这一区域通过f:z→xf: z →xf:zx映射,形成右图所示xxx域上的浅绿色菱形区域。其中,二维分布π(z)π(z)π(z)p(x)p(x)p(x)均服从简单均匀分布,其高度在图中未画出 (垂直纸面向外)。

因为蓝色区域与绿色区域具有相同的体积,所以有:
p(x′)∣det[Δx11Δx21Δx12Δx22]∣=π(z′)Δz1Δz2 p(x^{'})\begin{vmatrix}det\begin{bmatrix}\Delta x_{11} & \Delta x_{21}\\ \Delta x_{12} & \Delta x_{22}\end{bmatrix}\end{vmatrix}=\pi(z^{'})\Delta z_{1}\Delta z_{2} p(x)det[Δx11Δx12

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值