要解决的问题
生成模型可以按「能精确算出什么」来分类。有的模型能给出精确的似然,但采样代价高;有的采样很快,却只优化一个下界或某种近似。流(flow)模型走的是另一条路:精确的对数似然(log-likelihood)和精确的隐变量推断(latent-variable inference)都是可计算的,训练与生成两步也都能并行[1]。论文正是把这一点——两个方向都精确,且对硬件并行友好——作为这一类模型有吸引力的理由[1]。
做法
《Glow: Generative Flow with Invertible 1x1 Convolutions》于 2018 年 7 月 9 日首次提交到 arXiv,编号 1807.03039,第一作者是 Diederik P. Kingma,合作者是 Prafulla Dhariwal[1]。论文把 Glow 描述为一种简单的生成流,其关键构件是可逆的 1x1 卷积[1]。
所谓流,是一叠可逆的变换:它把一张图片映射成同样大小的隐向量,每一步都能反着走回来。训练时把图片顺着这叠变换推过去,得到隐编码和精确的似然;生成时把这个过程倒过来,从一次随机采样出发,一步步还原出一张图片。因为每一层都是双射(bijection),信息不会丢失;模型实际上是先取一个简单分布(通常是高斯分布),再把它扭曲成数据的形状,以此表示图片上的概率分布。让这套做法成立的是变量替换公式:每一层都要贡献自己雅可比行列式(Jacobian determinant)的对数项,因此如何让这个行列式算得便宜,是设计流模型时的核心约束。
多数流层先逐通道处理,于是还需要某种操作把不同通道的信息混合起来。固定的通道重排不需要参数,但无法学习;1x1 卷积则是在每个像素位置上对不同通道做一次可学习的线性组合,相当于在每个空间位置乘上一个小矩阵。论文的贡献就在于把这样的卷积放进流里,同时保证它仍然可逆[1]。通道怎样混合由模型自己学出来,而不是事先固定。
结果
作者报告,在标准基准上对数似然有显著提升[1]。他们还展示了:一个只朝朴素对数似然(plain log-likelihood)优化的模型,就能高效、逼真地合成和操纵大尺寸图像[1]。代码发布在 openai/glow 仓库中[1],其他人因此可以直接训练和检查这个模型。
为什么重要
流模型的账算得格外清楚。训练目标就是数据本身的似然;隐变量的推断是精确的;一张图片可以被映射成编码,再无损地解码回来。于是「操纵」在这里有明确的含义:改动编码,把变换倒着跑一遍,看解码出来的图——论文展示的正是大尺寸图像上的这种操作[1]。这也是 Glow 的位置所在:这类生成方法的吸引力不只在于图像更清晰,而在于有一个可以计算、可以互相比较的量。
局限
可逆是一条硬约束,不是白拿的好处。每一层都必须可逆,模型就不能在变深的过程中随意丢弃信息,输入与输出的维度必须对得上;因此相对于那些允许丢弃数据的结构,它在每个参数上的计算量和显存开销通常更高。此外雅可比行列式必须算得动,这又限制了单层的形状。这些是流这一类模型的普遍代价,也解释了为什么精确似然和精确推断需要用更多的工程代价来换。
注释与来源
- Glow: Generative Flow with Invertible 1x1 Convolutionshttps://arxiv.org/abs/1807.03039
引用本页: Glow:带可逆 1x1 卷积的生成流. TellWorld, https://www.tellworld.net/zh/papers/glow-2018. 更新于 2026-11-07