DL花书阅读笔记-近似推断
date
Jun 30, 2022
Last edited time
Jun 30, 2022 08:07 AM
status
Published
slug
DL花书阅读笔记-近似推断
tags
DL
summary
type
Post
Field
Plat
在深度学习中,通常我们有一系列可见变量 和一系列潜变量 。推断(inference)指给定一些其他变量的情况下计算某些变量概率分布的过程, 推断困难通常是指难以计算 或其期望。通常源于结构化图模型中潜变量之间的相互作用。
许多仅含一个隐藏层的简单图模型会定义成易于计算 或其期望的形式,例如受限玻尔兹曼机和概率 PCA。不幸的是,大多数具有多层隐藏变量的图模型的后验分布都很难处理。对于这些模型而言,精确推断算法需要指数量级的运行时间。即使一些只有单层的模型,如稀疏编码,也存在着这样的问题。
把推断视作优化问题
近似推断
假设我们有一个包含可见变量 和潜变量 的概率模型。我们希望计算观察数据的对数概率 。有时候如果边缘化消去 的操作很费时,则难以计算 。作为近似替代,我们可以计算一个 的下界 。这个下界被称为证据下界(evidence lower bound, ELBO),另一个常用名称是负变分自由能(variational free energy)。具体定义如下的:
其中 是关于 的一个任意概率分布。
因为 和 之间的距离是由 散度来衡量的,且 散度总是非负的,我们可以发现:
通过简单的代数运算我们可以把 重写成一个更加简单的形式:
这里使用的 即为 的简化写法, 如 .
这也给出了证据下界的标准定义:
其中 为分布 的熵. 越好地近似 的分布 ,得到的下界就越紧,换言之,就是 与 更加接近。当 时,这个近似是完美的,也意味着 。因此我们可以将推断问题看作是找一个分布 使得 最大的过程。
- 精确推断
精确推断能够在包含分布 的函数族中搜索一个函数,完美地最大化 。
- 近似推断
通过近似优化寻找分布 , 通过限定分布 的形式或者使用并不彻底的优化方法来使得优化的过程更加高效(却更粗略),但是优化的结果是不完美的,不求彻底地最大化 ,而只要显著地提升 。
期望最大化
在潜变量模型中期望最大化(expectation maximization, EM)算法,是一个非常常见的训练算法。与大多数我们在本章中介绍的其他算法不同的是,EM 并不是一个近似推断算法,而是一种能够学到近似后验的算法。
EM算法由交替迭代,直到收敛的两步运算组成:
- E 步(expectation step): 更新更准确的分布 来最大化 . 令 表示在这一步开始时的参数值。对任何我们想要训练的(对所有的或者小批量数据均成立)索引为 的训练样本 ,令 。通过这个定义,我们认为 在当前参数 下定义。如果我们改变 ,那么 将会相应地变化,但是 还是不变并且等于 。
- M 步(maximization step):更新 来最大化 . 使用选择的优化算法完全地或者部分地关于 最大化 . 这一步甚至可以通过推出解析解直接完成.
具体地说,M 步假设一个分布 可以被所有的 值分享。当 M 步越来越远离 E 步中的 时,这将会导致 和真实的 之间出现差距。幸运的是,在进入下一个循环时,E 步把这种差距又降到了 。
最大后验推断和稀疏编码
当训练带有潜变量的概率模型时,我们通常关注于计算 。另一种可选的推断形式是计算一个缺失变量的最可能值来代替在所有可能值的完整分布上的推断。在潜变量模型中,这意味着计算
这被称作最大后验(Maximum A Posteriori)推断,简称 MAP 推断。
我们令分布 满足一个 Dirac 分布, 能够使得 MAP 推断成为一种形式的近似推断, 即 . 这里的 其实就是上面的 .
那么这时候
则我们可以得到
这等价于 MAP 推断问题
也就是得到了 的一个近似分布 .
因此我们能够证明一种类似于 EM 算法的学习算法,其中我们轮流迭代两步,一步是用 MAP 推断估计出 来优化关于 的 ,另一步是更新 来增大 以优化关于 的 。
MAP 推断作为特征提取器以及一种学习机制被广泛地应用在了深度学习中。它主要用于稀疏编码模型中。
稀疏编码是一种在隐藏单元上加上了诱导稀疏性的先验知识的线性因子模型。一个常用的选择是可分解的 Laplace 先验,表示为
可见的节点是由一个线性变化加上噪声生成的:
分布 难以计算,甚至难以表达。每一对 , 变量都是 的母节点。这也意味着当 可被观察时,图模型包含了一条连接 和 的活跃路径。因此 中所有的隐藏单元都包含在了一个巨大的团中。分布 的难处理性导致了对数似然及其梯度也很难得到。因此我们不能使用精确的最大似然估计来进行学习。取而代之的是,我们通过 MAP 推断以及最大化由以 为中心的Dirac 分布所定义而成的 ELBO 来学习模型参数。
如果我们将训练集中所有的向量 拼成矩阵 ,并将所有的向量 拼起来组成矩阵 ,那么稀疏编码问题意味着最小化
为了避免如极端小的 和极端大的 这样的病态的解,大多数稀疏编码的应用包含了权重衰减或者对 列范数的限制。
我们可以通过交替迭代,分别关于 和 最小化 的方式来最小化 。然而关于这两个变量同时最小化 的问题通常并不是凸的。关于 的最小化问题需要某些特别设计的算法,例如特征符号搜索方法 (Leeet al., 2007)。
变分推断和变分学习
EM 算法给定了分布 的条件下能够进行大学习步骤,而基于 MAP 推断的学习算法则是学习一个 的点估计而非推断整个完整的分布。在这里我们介绍一些变分学习中更加通用的算法。
变分学习的核心思想就是我们在一个关于 的有约束的分布族上最大化 。选择这个分布族时应该考虑到计算 的难易度。一个典型的方法就是添加分布 如何分解的假设。我们可以通过选择分布 的形
式来选择任何图模型的结构,通过选择变量之间的相互作用来灵活地决定近似程度的大小。这种完全通用的图模型方法被称为结构化变分推断(structured variational inference)。
- 均值场
一种常用的变分学习的方法是加入一些限制使得 是一个因子分布, 即:
这被称为均值场(mean-field)方法。
变分方法的优点是我们不需要为分布 设定一个特定的参数化形式。我们设定它如何分解,之后通过解决优化问题来找出在这些分解限制下最优的概率分布。
离散型潜变量
对离散型潜变量来说,这意味着我们使用传统的优化技巧来优化描述分布 的有限个变量。关于离散型潜变量的变分推断相对来说比较直接。我们定义一个分布 ,通常分布 的每个因子都由一些离散状态的可查询表格定义。在最简单的情况中, 是二值的并且我们做了均值场假定,分布 可以根据每一个 分解。在这种情况下,我们可以用一个向量 来参数化分布 , 的每一个元素都代表一个概率,即 。
我的的条件有:
二值稀疏编码模型
在二值稀疏编码模型中,输入 ,是由模型通过添加高斯噪声到 个或有或无的不同成分的和而生成的。每一个成分可以是开或者关的,对应着隐藏单元 . 二值稀疏编码模型的概率分布定义如下:
其中 是一个可以学习的偏置集合, 是一个可以学习的权值矩阵, 是一个可以学习的对角精度矩阵。
证据下界的表示
结合上面提到的离散型潜变量的条件, 我的可以将证据下界表示为:
- 由二值稀疏编码模型因子之间是独立的(由有向图的模型结构可得), 那么
- 由有向图模型可得, 当一直隐藏层节点 的时候, 也是独立的, 那么 .
- 由均值场可得,
则
- 上式的第一部分 可以得到:
由于 是二值的. 上式可以变为:
并且 , 那么:
- 同理,
- 另外
那么,
根据上面的证明, 我们最终可以得到一个证据下界的表示:
尽管这些方程从美学观点来看有些不尽如人意。他们展示了 可以被表示为少量简单的代数运算。因此证据下界 是易于处理的。我们可以把 看作是难以处理的对数似然函数 的一个替代。
原则上说,我们可以使用关于 和 的梯度上升。这会成为一个推断和学习算法的完美组合。但是,由于两个原因,我们往往不这么做。第一点,对每一个 我们需要存储 。我们通常更加偏向于那些不需要为每一个样本都准备内存的算法。如果我们需要为每一个样本都存储一个动态更新的向量,使得算法很难处理上亿的样本。第二个原因就是为了能够识别 的内容,我们希望能够有能力快速提取特征 。在实际应用场景中,我们需要在有限时间内计算出 。
由于以上两个原因,我们通常不会采用梯度下降来计算均值场参数 。取而代之的是,我们使用不动点方程来快速估计。
不动点方程
不 动 点 方 程的 核 心 思 想 是 我 们 寻 找 一 个 关 于 的局 部 极 大 点, 满 足 。我们无法同时高效地计算所有 的元素。然而,我们可以解决单个变量的问题:
我们可以迭代地将这个解应用到 ,然后重复这个循环直到我们满足了收敛准则。常见的收敛准则包含了当整个循环所改进的 不超过预设的容差量时停止,或者是循环中改变的 不超过某个值时停止。
为了应用固定点更新的推断规则,我们通过令上式等于 来解 :
具体地说,均值场不动点方程定义了一个循环神经网络。这个神经网络的任务就是完成推断。
在二值稀疏编码模型中,我们可以发现上式中描述的循环网络连接包含了根据相邻隐藏单元变化值来反复更新当前隐藏单元的操作。输入层通常给隐藏单元发送一个固定的信息 ,然而隐藏单元不断地更新互相传送的信息。具体地说,当 和 两个单元的权重向量平行时,它们会互相抑制。
变分法
许多机器学习的技巧是基于寻找一个输入向量 来最小化函数 ,使得它取到最小值。这个步骤可以利用多元微积分以及线性代数的知识找到满足 的临界点来完成。函数 的函数被称为泛函(functional)。我们可以使用泛函导数(functional derivative),即在任意特定的 值,对一个泛函 求关于函数 的导数,这也被称为变分导数(variational derivative)。泛函 的关于函数 在点 处的泛函导数被记作 。
在其他机器学习文献中的许多结果则使用了更为通用的欧拉-拉格朗日方程(Euler-Lagrange Equation),它能够使得 不仅依赖于 的导数而且也依赖于 的值。
例子
考虑寻找一个定义在 上的有最大微分熵的概率密度函数。我们回过头来看一下一个概率分布 的熵,定义如下:
对于连续的值,这个期望可以被看作一个积分:
我们不能简单地仅仅关于函数 最大化 ,因为那样的话结果可能不是一个概率分布。需要使用一个拉格朗日乘子来添加一个分布 积分值为 的约束。同样地,当 方差增大时,熵也会无限制地增加。因此,在给定固定的方差 时,我们可以寻找一个最大熵的分布。为了获得一个唯一的解,我们再加一个约束:分布的均值必须为 。那么这个问题的拉格朗日泛函如下:
为了关于 最小化拉格朗日乘子,我们令泛函导数等于 :
那么:
为了解决这个最小化问题,我们需要选择 的值来确保所有的约束都能够满足。为了满足所有的约束,我们可以令 , , ,从而得到
也是当我们不知道真实的分布时总是使用正态分布的一个原因。因为正态分布拥有最大的熵,我们通过这个假定来保证了最小可能量的结构。
连续型潜变量
对连续型潜变量来说,这意味着我们使用一个被称为变分法的数学分支工具来使用变分法来实现关于 最大化 , 解决函数空间上的优化问题。然后决定哪一个函数来表示分布 。
如果我们做了均值场近似:.
并且对任何的 固定 ,那么只需要满足分布 中任何联合分布变量的概率值不为 ,我们就可以通过归一化下面这个未归一的分布: .
来得到最优的 。在这个方程中计算期望就能得到正确的 的表达式。我们只有在希望提出一种新形式的变分学习算法时才需要使用变分法来直接推导 的函数形式. 上式给出了适用于任何概率模型的均值场近似。
这里又不懂了.
上式是一个不动点方程,对每一个 它都被迭代地反复使用直到收敛。然而,它还包含着更多的信息。它还包含了最优解取到的泛函形式,无论我们是否能够通过不动点方程来解出它。这意味着我们可以利用方程中的泛函形式,把其中一些值当成参数,然后通过任何我们想用的优化算法来解决这个问题。
学习和推断之间的相互作用
训练算法倾向于朝使得近似推断算法中的近似假设变得更加真实的方向来适应模型。由 , 则当训练参数时,变分学习增加 部分.
对于一个特定的 ,对于 中概率很大的 它增加了 ;对于 中概率很小的 它减小了 。这种行为使得我们做的近似假设变得合理。如果我们用单峰值近似后验来训练模型,那么所得具有真实后验的模型会比我们使用精确推断训练模型获得的模型更接近单峰值。
因此,估计变分近似对模型的破坏程度是很困难的。存在几种估计 的方式。通常我们在训练模型之后估计 ,然后发现它和 的差距是很小的。从这里我们可以得出结论,对于特定的从学习过程中获得的 来说,变分近似是很准确的。然而我们无法直接得到变分近似普遍很准确或者变分近似几乎不会对学习过程产生任何负面影响这样的结论。
学成近似推断
推断可以被视作一个增加函数 值的优化过程。显式地通过迭代方法(比如不动点方程或者基于梯度的优化算法)来进行优化的过程通常是代价很高且耗时巨大的。我们可以将优化过程视作将一个输入 投影到一个近似分布 的一个函数 。一旦我们将多步的迭代优化过程看作是一个函数,我们可以用一个近似函数为 的神经网络来近似它。
醒眠算法
训练一个可以用 来推断 的模型的一个主要难点在于我们没有一个监督训练集来训练模型。给定一个 ,我们无法获知一个合适的 。从 到 的映射依赖
于模型族的选择,并且在学习过程中随着 的改变而变化。
醒眠(wake sleep)算法 (Hinton et al., 1995b; Frey et al., 1996) 通过从模型分布中抽取 和 的样本来解决这个问题。
学习挑断的其他形式
学成近似推断策略已经被应用到了其他模型中。Salakhutdinov and Larochelle (2010) 证明了在学成推断网络中的单遍传递相比于在深度玻尔兹曼机中的迭代均值场不动点方程能够得到更快的推断。其训练过程基于运行推断网络,然后运行一步均值场来改进其估计,并训练推断网络来输出这个更精细的估计以代替其原始估计。
近来学成近似推断已经成为了变分自编码器形式的生成模型中的主要方法之一(Kingma and Welling, 2014a; Rezende et al., 2014)。在这种优美的方法中,不需要
为推断网络构造显式的目标。反之,推断网络仅仅被用来定义 ,然后调整推断网络的参数来增大 。