能量视角下的GAN模型-EBMs

date
Jun 22, 2022
Last edited time
Sep 6, 2022 06:10 AM
status
Published
slug
能量视角下的GAN模型-EBMs
tags
DL
GAN
summary
幸好之前看了花书, 很多在花书上都有提及. 2022.09.06@添加了关于郎之万方程的链接 2022.09.07@修改了一个公式错误
type
Post
Field
Plat
本文的模型在 ImageNet(128x128) 上的条件生成效果
本文的模型在 ImageNet(128x128) 上的条件生成效果
今天要介绍的结果还是跟能量模型相关,来自论文《Implicit Generation and Generalization in Energy-Based Models》
这篇文章就是指出能量模型实际上就是某个特定的 Langevin 方程的静态解,然后就用这个 Langevin 方程来实现采样,有了采样过程也就可以完成能量模型的训练。

能量分布

DL花书阅读笔记-深度学习中的结构化概率模型
我们可以把概率分布分解成许多因子的乘积形式,而不是使用单一的函数来表示概率分布。 优点: 这种分解可以极大地减少用来描述一个分布的参数数量。 我们可以用图来描述这种分解。由一些可以通过边互相连接的顶点的集合构成。当我们用图来表示这种概率分布的分解,我们把它称为结构化概率模型(structured probabilistic model)或者图模型(graphical model)。 无向(undirected)模型使用带有无向边的图,它们将分解表示成一组函数 有向(directed)模型使用带有有向边的图,它们用条件概率分布来表示分解。也被称为信念网络(belief network)或者贝叶斯网络(Bayesian network)。 变量 的有向概率模型是通过有向无环图 (每个结点都是模型中的随机变量)和一系列局部条件概率分布(local conditional probability distribution) 来定义的,其中 表示结点 的所有父结点。 的概率分布可以表示为 无向(undirected )模型,也被称为马尔可夫随机场(Markov random field, MRF)或者是马尔可夫网络(Markov network)。就像它们的名字所说的那样,无向模型中所有的边都是没有方向的。 一个无向模型是一个定义在无向模型 上的结构化概率模型。对于图中的每一个团 ,一个因子(factor)(也称为团势能(clique potential)),衡量了团中变量每一种可能的联合状态所对应的密切程度。它们一起定义了未归一化概率函数(unnormalized probability function): 团: 是图中结点的一个子集,并且其中的点是全连接的 为了得到一个有效的概率分布,我们需要使用对应的归一化的概率分布: 其中, 是使得所有的概率之和或者积分为 1 的常数, 归一化常数 被称作是配分函数.
DL花书阅读笔记-深度学习中的结构化概率模型
《能量视角下的 GAN 模型(二):GAN=“分析”+“采样”》一样,假设我们有一批数据,我们希望用一个概率模型去拟合它,我们选取的模型为
其中 是带参数 的未定函数,我们称为 “能量函数”,而 是归一化因子(配分函数)
这样的分布可以称为 “能量分布”,在物理中也被称为 “玻尔兹曼分布”。
为了求出参数 ,我们先定义对数似然函数:
我们希望它越大越好,也就是希望其负对数似然
越小越好,为此,我们对 使用梯度下降。我们有(具体推导参考上面链接)
所以
这意味着梯度下降的更新公式是
这里的能量函数 , 相当是 , 即 .

Langevin 方程

在式 (5) 中,是容易估算的,直接抽样一批真实数据来计算就行了;但是 却很困难,因为我们不知道怎么实现从 中采样。
重要采样思路是定义另外一个容易采样的分布 ,然后改为从 中采样,同时去缩小 的差异,使得 确实可以成为 的一个良好近似。但这篇论文不一样,它直接从能量模型对应的 Langevin 方程采样。
DL花书阅读笔记-蒙特卡洛方法
随机算法可以粗略地分为两类:Las Vegas算法和蒙特卡罗算法。 Las Vegas算法总是精确地返回一个正确答案(或者返回算法失败了)。 对于机器学习中的许多问题来说,我们很难得到精确的答案。这类问题很难用精确的确定性算法如Las Vegas算法解决。取而代之的是确定性的近似算法或蒙特卡罗近似方法。 当无法精确计算和或积分时,通常可以使用蒙特卡罗采样来近似它。我们将需要估计的和或者积分,写成期望的形式, 如下: 此外,根据大数定理(Law of large number),如果样本 是独立同分布的,那么其平均值几乎必然收敛到期望值, . 根据中心极限定理, 的分布收敛到以 为均值以 为方差的正态分布。 当我们无法从 中采样时,一个备选方案是用重要采样。 我们从 分布中采样,然后估计 在此分布下的均值。使用最优的采样函数 对应所谓的最优重要采样。 有偏重要采样 这种方法的优势为不需要归一化的 或 分布。在处理离散变量时,有偏重要采样估计可以表示为 其中 和 分别是分布 和 的未经归一化的形式, 是从分布 中抽取的样本。这种估计是有偏的,因为 ,只有当 且 收敛到 时,等式才渐近地成立。所以这一估计也被称为渐近无偏的。 实际中, 我们会倾向于将采样函数构造成常用的分布形式, 例如高斯分布, 以方便采样. 故有偏重要性采样更为常见.
DL花书阅读笔记-蒙特卡洛方法
Langevin 方程:
马尔可夫链由一个随机状态 和一个转移分布 定义而成, 是一个概率分布,说明了给定状态 的情况下随机地转移到 的概率。运行一个马尔可夫链意味着根据转移分布 采出的值 来更新状态
从状态 到新状态 ′ 。单一状态转移到 的概率可以表示为 .
我们可以将转移算子 表示成一个矩阵 。矩阵 的定义如下:. 矩阵 有一种特殊的结构,因为它的每一列都代表一个概率分布。这样的矩阵被称为随机矩阵(Stochastic Matrix)。如果对于任意状态 到任意其他状态 存在一个 使得转移概率不为 ,那么 Perron-Frobenius 定理可以保证这个矩阵的最大特征值是实数且大小为
另外, 可以用一个向量 来描述这个概率分布 , .
则单次转移的马尔可夫过程可写为: , 或者 , 其中随机过程 定义了转移分布 .
的一个特例就是Langevin方程:
它也称为随机微分方程,当 时,它的静态分布正好是能量分布 .
 
 
时,序列 所服从的分布就是 ,换句话说,是该 Langevin 方程的静态分布,再换句话说,那就是给定能量函数 后(也确定了),上式的递归过程就可以帮我们得到一批从 采样的样本来。
有了这个采样过程,首先 可以估算了,因此能量模型可以完成训练了;训练完成之后,还是使用Langevin方程帮助我们从中采样出一批新样本了,这样就完成生成过程了。

模型细节

首先是作者往模型 加入了谱归一化,而 本身就相当于 GAN 中的判别器地位,所以加入谱归一化是可以理解的。其次,在训练的过程中,用的能量函数不是 ,而是加上一个小的 L2 正则:,其中 是一个小的正常数,作者的意思是这样会使得整个 loss 更光滑,训练起来更稳定(使用时还是 )。
然后,回到采样问题,采样是通过式Langevin方程进行的,它是一个迭代过程,既然是迭代就需要初始值。然而如果直接从随机分布(比如均匀分布)中采样随机向量作为初始值,作者提到会出现模式单一的问题,即迭代出来的图片形式比较单一,导致采样不充分,所以作者维护了一个 Buffer,它把历史的的采样结果缓存起来,作为下一次采样的候选初始值。即下面链接的 PCD 算法.
DL花书阅读笔记-直面配分函数
配分函数是未归一化概率所有状态的积分(对于连续变量)或求和(对于离散变量): 通过最大似然学习无向模型特别困难的原因在于配分函数依赖于参数。对数似然相对于参数的梯度具有一项对应于配分函数的梯度: 这是机器学习中非常著名的正相(positive phase)和负相(negative phase)的分解。 其中, 对于大多数感兴趣的无向模型而言,负相计算是困难的。没有潜变量或潜变量之间很少相互作用的模型通常会有一个易于计算的正相。 该等式是使用各种蒙特卡罗方法近似最大化(具有难计算配分函数模型的)似然的基础。 对比散度(CD) 对比散度(CD,或者是具有 k 个 Gibbs 步骤的 CD-k)算法在每个步骤中初始化马尔可夫链为采样自数据分布中的样本 (Hinton, 2000, 2010). 初始时,数据分布并不接近模型分布,因此负相不是非常准确。幸运的是,正相仍然可以准确地增加数据的模型概率。进行正相阶段一段时间之后,模型分布会更接近于数据分布,并且负相开始变得准确。 缺点 它不能抑制远离真实训练样本的高概率区域。这些区域在模型上具有高概率,但是在数据生成区域上具有低概率,被称为虚假模态(spurious modes)。 CD并不直接有助于训练更深的模型。这是因为在给定可见单元样本的情况下,很难获得隐藏单元的样本。由于隐藏单元不包括在数据中,所以使用训练点初始化无法解决这个问题。即使我们使用数据初始化可见单元,我们仍然需要磨合在给定这些可见单元的隐藏单元条件分布上采样的马尔可夫链。 对模型进行采样可以得到所有的单元样本 , 但是从数据中我们只有一部分 可见, 那么另一部分 称为隐藏样本.
DL花书阅读笔记-直面配分函数
模型的更新过程:
假定数据样本分布为 ,选定迭代步长 (参考值为 1/200)、迭代步数 (参考值 20~50)和 batch size ,Buffer 记为 ,初始化是空集。
循环执行,直到收敛:
循环执行,得到一批真假样本:
  1. 中采样一个真样本 ,加入到当前批;
  1. 以 95% 的概率从 (或者以 5% 的概率从均匀分布)选取一个样本作为初始值
  1. 为初始值,Langevin 方程为迭代式共 步,得到
  1. 作为假样本 ,加入到当前批,同时加入到
有了真假样本后,执行一步优化器,优化目标为:
而训练完成后的采样,同样需要维护 Buffer,并且作者为了保证多样性,他将模型分别训练几次,得到若干个不同权重的统一模型,然后同时从这若干个模型中采样,并且共享、共同维护一个 Buffer。其他细节问题大家直接看原论文即可,因为不打算复现,所以就不考究了。

总结

至于效果上,可以说它媲美 GAN,也可以说比不上 GAN。作者主要在 Cifar10 和 ImageNet 上做实验,这两个数据集当然很难,可以说一般的 GAN 都生成不好,从效果图来看,确实可以 PK 大多数 GAN 了,在 Cifar10 上明显完胜 Glow。说它比不上,则是感觉它太有技巧性了,不够优雅,比如 Langevin 方程的所导致的采样思路,我感觉就没有什么底,维护一个 Buffer 的做法,虽然实践效果还可以,但显然工程味道太浓了….
在 cifar10 的无条件生成上的效果图
在 cifar10 的无条件生成上的效果图
 

© Lazurite 2021 - 2024