变分贝叶斯初探

作者: WilliamY | 来源:发表于2019-07-15 11:55 被阅读6次

    原题:A Beginner's Guide to Variational Methods: Mean-Field Approximation
    给初学者的变分法指导:平均场近似

    作者:Eric Jang
    译者:尹肖贻
    变分贝叶斯(Variational Bayeisan,后文简称VB)方法是统计机器学习领域中,一类很常见技术。通过应用VB方法,我们能够重新形式化统计推断问题(即,将给定一随机变量的值,推断另一些随机变量的值),而将其作为优化问题(即,找到参数值,使目标函数最小化)。

    这种推断-优化的二元性,赋予我们强大的能力。我们既可以使用最新、最好的优化算法来解决统计机器学习问题,也可以反过来,使用统计技术来最小化函数。

    这篇文章是关于变分方法的入门教程。 我将推导出最简单的VB方法的优化目标,称为平均场近似。 这个目标,也称为变分下界,与变分自动编码器(VAE)中使用的技术完全相同(我将在后续文章中相信介绍它,堪称入木三分,惜字如金)。

    目录

    1.问题的前提和符号约定
    2.问题的表述
    3.平均场近似的变分下界
    4.前传KL与反传KL
    5.与深度学习的联系

    前提和符号约定

    本文假设读者熟悉随机变量、概率分布和数学期望等概念。如果你忘了这些概念,可以在这里进行复习。机器学习和统计领域的符号约定没有被严格地标准化,因此在这篇文章中,我们约定如下符号,确定的符号将对理解文意很有帮助:

    • 大写字母X表示随机变量;
    • 大写字母P(X)表示该变量的概率分布;
    • 小写字母x \sim P(X)表示通过一些生成过程,x为采样(\sim)概率分布P(X)中的值;
    • 小写字母p(X)X分布的(概率)密度函数,它是X的度量空间上的标量函数;
    • p(X = x)(简写p(x))表示在特定值x处的密度函数值。

    许多学术论文将术语“变量”、“分布”、“密度”,甚至“模型”互换使用。这种做法本身不一定导致错误,因为XP(X)p(X)都可以通过一对一的对应关系相互指代。但是,将这些术语混合在一起,容易让人感到困惑。因为它们的指代范畴各不相同(比如对函数进行抽样没有意义,对分布积分同样没有意义)。

    我们将系统建模为随机变量的集合,其中一些变量(X)是“可观察的”,而其他变量(Z)是“隐藏的”。 【译者按:后文称二者为“观察变量”和“隐变量”】我们可以通过下图绘制这种关系:

    ZX,通过条件分布P(X|Z)这条边,将两个变量联系在一起。

    说一个更形象的例子:X可能代表“图像的原始像素值”,而Z是二值变量。如果X是猫的图像,Z = 1

    P(Z=1)=1 (这一定是猫)
    P(Z=1)=0 (这一定不是猫)
    P(Z=1)=0.1 (有点像猫)

    贝叶斯定理给出了任意一对随机变量之间的一般关系:
    p(Z|X) = \frac{p(X|Z)p(Z)}{P(X)}
    其中的各项与如下常见名称相关联:

    p(Z|X)是后验概率:“给定图像,这是猫的概率是多少?” 如果我们可以从z\sim P(Z|X)进行采样,我们可以用它作一个猫分类器,告诉我们给定的图像是否是猫。

    p(X|Z)是似然概率:“给定Z的值,计算出该图像X在该类别下的‘可能’程度({是猫/不是猫})” 如果我们可以从x\sim P(X|Z)进行采样,那么我们就可以生成猫的图像和非猫的图像,就像生成随机数一样容易。如果你想了解更多相关信息,请参阅我的关于生成模型的其他文章: [1], [2]

    p(Z)是先验概率。它指代我们所知道的关于Z的任何先前信息——例如,如果我们认为所有图像中,有1/3是猫,那么p(Z=1)=\frac{1}{3}并且p(Z=0)=\frac{2}{3}

    隐变量作为先验概率

    这部分是为了感兴趣的读者准备的。请直接跳到下一部分,继续学习本教程。

    前面猫的示例提供了观察变量、隐变量和先验的理解角度,是传统的一个示例。 但是请注意,我们定义隐变量/观察变量之间的区别有些随意,你可以自由地将图形模型按需求进行分解。

    我们可以通过交换等式的项来重写贝叶斯定理:
    \frac{p(Z|X)p(X)}{p(Z)} = p(X|Z)
    现在的“后验概率”是P(X|Z)

    从贝叶斯统计框架,隐变量可以解释为附加到观察变量的先验信念。 例如,如果我们认为X是多元高斯,则隐变量Z可以表示高斯分布的均值和方差。 另外,参数P(Z)上的分布是P(X)的先验分布。

    你也可以自由选择XZ代表的值。 例如,Z可以代之以“均值、方差的立方根、以及X+Y,其中Y\sim N(0,1)”。 虽然有点突兀、奇怪,但只要相应地修改P(X|Z),结构仍然有效。

    你甚至可以往系统中“添加”变量。先验本身可能通过P(Z|\theta)依赖于其他随机变量,P(Z|\theta)具有它们自己的P(\theta)的先验分布,并且那些先验仍然是有先验的,依此类推。任何超参数都可以被认为是先验的。 在贝叶斯统计中,先验是无穷递归的。【译者按:1.英文中俗语“turtles all the way down”表示问题无限循环、递归,作者用了"priors all the way down"来诙谐地表达先验系统的递归性。2.先验的层次越深,对结果的影响越

    形式化

    我们感兴趣的关键问题是隐变量Z的后验推断或密度函数。后验推断的一些典型例子:

    • 给定监控录像X,嫌疑人是否出现?
    • 给定推特X,作者的心情是否忧郁?
    • 给定历史股票价格X_{1:t-1}X_t会是什么?

    我们通常假设,我们已知如何计算似然分布P(X|Z)和先验分布P(Z)【译者按:原文为“function”函数,应为讹误,后文类似情况以符号为准】。

    然而,对于像上面的复杂任务,我们常常不知道如何从P(Z|X)采样或计算p(Z|X)。或者,我们可能知道p(Z|X)的形式,但相应的计算十分复杂,以至于我们无法在合理的时间内对其评估【译者按:“评估”的意思是给定似然函数,求出该函数在某一点上的值】。 我们可以尝试使用像MCMC这样的基于采样的方法求解,但这类方法很难收敛。

    平均场近似的变分下界

    变分推断背后的想法是这样的:对简单的参数分布Q(Z|X)(就像高斯分布)进行推断。对这个函数,我们已经知道如何做后验推断,于是任务变成了调整参数\phi使得Q_\phi尽可能接近P。【译者按:“推断”在这里指的是从观察变量X的概率分布导出隐变量Z的概率分布】

    这在视觉上如下图所示:蓝色曲线是真实的后验分布,绿色分布是通过优化得到的拟合蓝色密度的变分近似(高斯分布)。


    两个分布“接近”意味着什么? 平均场变分贝叶斯(最常见的类型)使用反向KL散度作为两个分布之间的距离度量。

    KL(Q_\phi(Z|X)||P(Z|X)) = \sum_{z \in Z}{q_\phi(z|x)\log\frac{q_\phi(z|x)}{p(z|x)}}

    反向KL散度测量出将P(Z)“变形(distort)”成Q_\phi(Z)所需的信息量(以nat为单位或以2为底的对数bits为单位)。我们希望最小化这个量。【译者按:许多研究产生式模型的论文会比较不同方法下的散度值。】

    根据条件分布的定义,p(z|x) = \frac{p(x,z)}{p(x)}。 让我们将这个表达式代入原来的KL表达式,然后使用分配律:
    \begin{align} KL(Q||P) & = \sum_{z \in Z}{q_\phi(z|x)\log\frac{q_\phi(z|x)p(x)}{p(z,x)}} && \text{(1)} \\ & = \sum_{z \in Z}{q_\phi(z|x)\big(\log{\frac{q_\phi(z|x)}{p(z,x)}} + \log{p(x)}\big)} \\ & = \Big(\sum_{z}{q_\phi(z|x)\log{\frac{q_\phi(z|x)}{p(z,x)}}}\Big) + \Big(\sum_{z}{\log{p(x)}q_\phi(z|x)}\Big) \\ & = \Big(\sum_{z}{q_\phi(z|x)\log{\frac{q_\phi(z|x)}{p(z,x)}}}\Big) + \Big(\log{p(x)}\sum_{z}{q_\phi(z|x)}\Big) && \text{note: $\sum_{z}{q(z)} = 1 $} \\ & = \log{p(x)} + \Big(\sum_{z}{q_\phi(z|x)\log{\frac{q_\phi(z|x)}{p(z,x)}}}\Big) \\ \end{align}
    为了使KL(Q||P)相对于变分参数\phi最小化,我们只需要最小化\sum_{z}{q_\phi(z|x)\log{\frac{q_\phi(z|x)}{p(z,x)}}},因为\log{p(x)}对于\phi来说是常数。 让我们重新写这个数量作为对分布Q_\phi(Z|X)的期望。
    \begin{align} \sum_{z}{q_\phi(z|x)\log{\frac{q_\phi(z|x)}{p(z,x)}}} & = \mathbb{E}_{z \sim Q_\phi(Z|X)}\big[\log{\frac{q_\phi(z|x)}{p(z,x)}}\big]\\ & = \mathbb{E}_Q\big[ \log{q_\phi(z|x)} - \log{p(x,z)} \big] \\ & = \mathbb{E}_Q\big[ \log{q_\phi(z|x)} - (\log{p(x|z)} + \log(p(z))) \big] && \text{(via $\log{p(x,z)=p(x|z)p(z)}$) }\\ & = \mathbb{E}_Q\big[ \log{q_\phi(z|x)} - \log{p(x|z)} - \log(p(z))) \big] \\ \end{align} \\
    最小化上面的式子等价于最大化负的式子:
    \begin{align} \text{maximize } \mathcal{L} & = -\sum_{z}{q_\phi(z|x)\log{\frac{q_\phi(z|x)}{p(z,x)}}} \\ & = \mathbb{E}_Q\big[ -\log{q_\phi(z|x)} + \log{p(x|z)} + \log(p(z))) \big] \\ & = \mathbb{E}_Q\big[ \log{p(x|z)} + \log{\frac{p(z)}{ q_\phi(z|x)}} \big] && \text{(2)} \\ \end{align}
    在文献中,\mathcal{L}被称为变分下界。如果我们能够估计p(x|z)p(z)q(z|x),我们就可以计算它。我们可以继续调整式子里各项的顺序,使之更符合直觉:
    \begin{align*} \mathcal{L} & = \mathbb{E}_Q\big[ \log{p(x|z)} + \log{\frac{p(z)}{ q_\phi(z|x)}} \big] \\ & = \mathbb{E}_Q\big[ \log{p(x|z)} \big] + \sum_{Q}{q(z|x)\log{\frac{p(z)}{ q_\phi(z|x)}}} && \text{Definition of expectation} \\ & = \mathbb{E}_Q\big[ \log{p(x|z)} \big] - KL(Q(Z|X)||P(Z)) && \text{Definition of KL divergence} && \text{(3)} \end{align*}
    如果说采样z\sim Q(Z|X)是将观察变量x“编码”为隐变量z的过程,则采样x\sim Q(X|Z)是从z重建观察变量x的“解码”过程。

    由此得出\mathcal{L}是预期的“解码”似然(即变分分布Q_\phi能在多大程度上将样本Z解码回样本X),再减去变分近似的分布与先验Z之间的KL散度【译者按:原文是“加上”,应该是减去】。如果我们假设Q(Z|X)是条件高斯的,那么先验Z通常被指定为平均值0、标准偏差1的对角高斯分布。

    为什么\mathcal{L}称为变分下界? 将\mathcal{L}代入Eq. (1),我们有:
    \begin{align*} KL(Q||P) & = \log p(x) - \mathcal{L} \\ \log p(x) & = \mathcal{L} + KL(Q||P) && \text{(4)} \end{align*}

    Eq. (4)的含义,用大白话说就是,真实分布下的数据点x的对数似然\log{p(x)},等于\mathcal{L},加上KL(Q||P)用来捕获在该特定值xQ(Z|X=x)P(Z|X=x)之间距离的差。

    由于KL(Q||P)\geq 0\log{p(x)}必大于(或等于)\mathcal{L}。因此\mathcal{L}\log{p(x)}的下界。 \log{p(x)}也被称为证据下界(ELBO),通过调整公式:
    \mathcal{L} = \log p(x) - KL(Q(Z|X)||P(Z|X)) = \mathbb{E}_Q\big[ \log{p(x|z)} \big] - KL(Q(Z|X)||P(Z))

    注意,\mathcal{L}本身包含近似后验和先验之间的KL散度,因此\log p(x)中总共有两个KL项。

    前向KL与反向KL

    KL散度函数不是对称距离函数,即KL(P||Q)\neq KL(Q||P)(当Q≡P时除外)第一个被称为“前向KL”,而后者是“反向KL””。 我们为什么要使用反向KL呢?因为推导的目标要求我们近似p(Z|X),所以【在p(Z|X)q(Z|X)不能同时得到最优形式的情况下】我们要优先确保p(Z|X)的形式准确。

    我很喜欢Kevin Murphy在PML教科书中的解释,我在这里尝试重新说明一下:

    让我们首先考虑正向KL。正如上述推导,我们可以将KL写为,权重函数p(z)加权下,“惩罚”函数log{\frac{p(z)}{q(z)}}的期望。
    \begin{align*} KL(P||Q) & = \sum_z p(z) \log \frac{p(z)}{q(z)} \\ & = \mathbb{E}_{p(z)}{\big[\log \frac{p(z)}{q(z)}\big]}\\ \end{align*}
    只要P(Z)>0,惩罚函数在任何地方都会给总KL带来损失。对于P(Z)>0\lim_{q(Z) \to 0} \log \frac{p(z)}{q(z)} \to \infty。 这意味着前向KL将在Q(Z)未能“掩盖”P(Z)时,将会很大。

    因此,当我们确保前向KL最小化时P(Z)>0时,Q(Z)>0。 优化的变分分布Q(Z)被称为“避免零(zero-avoiding)”(密度P(Z)为零时Q(Z)避免为零)。


    最小化反向KL则具有相反的性质:

    如果,我们必须确保分母的地方,加权功能的。否则KL会爆炸。这被称为“必设零(zero-forcing)”:

    总而言之,最小化前向KL会“拉伸”变分分布覆盖整个,像一个篷布。与此相对,最小化反向KL“挤压”,使之落在之“下”。

    在机器学习问题中,使用平均场近似时,留意反向KL的后果很重要。 如果我们将单峰分布拟合到多模态分布,我们最终会得到更多的假阴性的样例(也就是说,P(Z)实际上存在概率,但我们依据Q(Z)认为没有可能性)。

    与深度学习的联系

    变分法对于深度学习非常重要。 我将在后面再写文章详细说明。这是“太长不看版”:

    • 深度学习非常擅长使用大量数据,在非常大的参数空间上进行优化(特别是使用了梯度下降算法)。
    • 变分贝叶斯为我们提供了一个框架,可以用来重写统计推断问题,变成优化问题。

    结合深度学习和变分贝叶斯方法,我们可以对极其复杂的后验分布进行推理。 事实证明,像变分自动编码器这样的现代技术,可以优化得到上文中形式完全相同的平均场变分下界!

    感谢阅读,敬请期待!

    相关文章

      网友评论

        本文标题:变分贝叶斯初探

        本文链接:https://www.haomeiwen.com/subject/imsdkctx.html