细水长flow之NICE:流模型的基本概念与实现

本文深入介绍了NICE模型,作为Glow模型的基础,NICE通过非线性独立成分估计解决连续分布建模的挑战。文章详细探讨了流模型的概念,特别是加性耦合层和尺度变换层的设计,以及如何通过这些结构实现可逆变换。此外,还介绍了NICE在MNIST数据集上的实验,展示了模型生成样本的能力。
摘要由CSDN通过智能技术生成

640


作者丨苏剑林

单位丨广州火焰信息科技有限公司

研究方向丨NLP,神经网络

个人主页丨kexue.fm


前言:自从在机器之心上看到了 Glow 模型之后(下一个GAN?OpenAI提出可逆生成模型Glow),我就一直对其念念不忘。现在机器学习模型层出不穷,我也经常关注一些新模型动态,但很少像 Glow 模型那样让我怦然心动,有种“就是它了”的感觉。更意外的是,这个效果看起来如此好的模型,居然是我以前完全没有听说过的。于是我翻来覆去阅读了好几天,越读越觉得有意思,感觉通过它能将我之前的很多想法都关联起来。在此,先来个阶段总结。


背景


本文主要是 NICE: Non-linear Independent Components Estimation 一文的介绍和实现。这篇文章也是 Glow 模型的基础文章之一,可以说它就是 Glow 的奠基石。


■ 论文 | NICE: Non-linear Independent Components Estimation

■ 链接 | https://www.paperweekly.site/papers/2206

■ 源码 | https://github.com/laurent-dinh/nice


艰难的分布


众所周知,目前主流的生成模型包括 VAE 和 GAN,但事实上除了这两个之外,还有基于 flow 的模型(flow 可以直接翻译为“流”,它的概念我们后面再介绍)。


事实上 flow 的历史和 VAE、GAN 它们一样悠久,但是 flow 却鲜为人知。在我看来,大概原因是 flow 找不到像 GAN 一样的诸如“造假者-鉴别者”的直观解释吧,因为 flow 整体偏数学化,加上早期效果没有特别好但计算量又特别大,所以很难让人提起兴趣来。不过现在看来,OpenAI 的这个好得让人惊叹的、基于 flow 的 Glow 模型,估计会让更多的人投入到 flow 模型的改进中。


640

 Glow模型生成的高清人脸


生成模型的本质,就是希望用一个我们知道的概率模型来拟合所给的数据样本,也就是说,我们得写出一个带参数 θ 的分布 qθ(x)。然而,我们的神经网络只是“万能函数拟合器”,却不是“万能分布拟合器”,也就是它原则上能拟合任意函数,但不能随意拟合一个概率分布,因为概率分布有“非负”和“归一化”的要求。这样一来,我们能直接写出来的只有离散型的分布,或者是连续型的高斯分布。


当然,从最严格的角度来看,图像应该是一个离散的分布,因为它是由有限个像素组成的,而每个像素的取值也是离散的、有限的,因此可以通过离散分布来描述。这个思路的成果就是 PixelRNN 一类的模型了,我们称之为“自回归流”,其特点就是无法并行,所以计算量特别大。所以,我们更希望用连续分布来描述图像。当然,图像只是一个场景,其他场景下我们也有很多连续型的数据,所以连续型的分布的研究是很有必要的。


各显神通


所以问题就来了,对于连续型的,我们也就只能写出高斯分布了,而且很多时候为了方便处理,我们只能写出各分量独立的高斯分布,这显然只是众多连续分布中极小的一部分,显然是不够用的。为了解决这个困境,我们通过积分来创造更多的分布:


640


这里 q(z) 一般是标准的高斯分布,而 qθ(x|z)=qθ(x|z) 可以选择任意的条件高斯分布或者狄拉克分布。这样的积分形式可以形成很多复杂的分布。理论上来讲,它能拟合任意分布。 


现在分布形式有了,我们需要求出参数 θ,那一般就是最大似然,假设真实数据分布为 p̃(x),那么我们就需要最大化目标:


640

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值