⑴ 变分贝叶斯初探
原题:A Beginner's Guide to Variational Methods: Mean-Field Approximation
给初学者的变分法指导:平均场近似
这种 推断-优化 的二元性,赋予我们强大的能力。我们既可以使用最新、最好的优化算法来解决统计机器学习问题,也可以反过来,使用统计技术来最小化函数。
这篇文章是关于变分方法的入门教程。 我将推导出最简单的VB方法的优化目标,称为 平均场近似 。 这个目标,也称为 变分下界 ,与变分自动编码器( VAE )中使用的技术完全相同(我将在后续文章中相信介绍它,堪称入木三分)。
1.问题的前提和符号约定
2.问题的表述
3.平均场近似的变分下界
4.前传KL与反传KL
5.与深度学习的联系
本文假设读者熟悉随机变量、概率分布和数学期望等概念。如果你忘了这些概念,可以在 这里 进行复习。机器学习和统计领域的符号约定没有被严格地标准化,因此在这篇文章中,我们约定如下符号,确定的符号将对理解文意很有帮助:
许多学术论文将术语“变量”、“分布”、“密度”,甚至“模型”互换使用。这种做法本身不一定导致错误,因为 、 和 都可以通过一对一的对应关系相互指代。但是,将这些术语混合在一起,容易让人感到困惑。因为它们的指代范畴各不相同(比如对函数进行 抽样 没有意义,对分布 积分 同样没有意义)。
我们将系统建模为随机变量的集合,其中一些变量( )是“可观察的”,而其他变量( )是“隐藏的”。 【译者按:后文称二者为“观察变量”和“隐变量”】我们可以通过下图绘制这种关系:
从 到 ,通过条件分布 这条边,将两个变量联系在一起。
说一个更形象的例子: 可能代表“图像的原始像素值”,而 是二值变量。如果 是猫的图像, 。
贝叶斯定理 给出了任意一对随机变量之间的一般关系:
其中的各项与如下常见名称相关联:
是后验概率:“给定图像,这是猫的概率是多少?” 如果我们可以从 进行采样,我们可以用它作一个猫分类器,告诉我们给定的图像是否是猫。
是似然概率:“给定 的值,计算出该图像 在该类别下的‘可能’程度({是猫/不是猫})” 如果我们可以从 进行采样,那么我们就可以生成猫的图像和非猫的图像,就像生成随机数一样容易。如果你想了解更多相关信息,请参阅我的关于生成模型的其他文章: [1] , [2] 。
是先验概率。它指代我们所知道的关于 的任何先前信息——例如,如果我们认为所有图像中,有1/3是猫,那么 并且 。
这部分是为了感兴趣的读者准备的。请直接跳到下一部分,继续学习本教程。
前面猫的示例提供了观察变量、隐变量和先验的理解角度,是传统的一个示例。 但是请注意,我们定义隐变量/观察变量之间的区别有些随意,你可以自由地将图形模型按需求进行分解。
我们可以通过交换等式的项来重写贝叶斯定理:
现在的“后验概率”是 。
从贝叶斯统计框架,隐变量可以解释为附加到观察变量的 先验信念 。 例如,如果我们认为 是多元高斯,则隐变量 可以表示高斯分布的均值和方差。 另外,参数 上的分布是 的先验分布。
你也可以自由选择 和 代表的值。 例如, 可以代之以“均值、方差的立方根、以及 ,其中 ”。 虽然有点突兀、奇怪,但只要相应地修改 ,结构仍然有效。
你甚至可以往系统中“添加”变量。先验本身可能通过 依赖于其他随机变量, 具有它们自己的 的先验分布,并且那些先验仍然是有先验的,依此类推。任何超参数都可以被认为是先验的。 在贝叶斯统计中, 先验是无穷递归的 。【译者按:1.英文中俗语“turtles all the way down”表示问题无限循环、递归,作者用了"priors all the way down"来诙谐地表达先验系统的递归性。2.先验的层次越深,对结果的影响越 小 】
我们感兴趣的关键问题是隐变量 的后验推断或密度函数。后验推断的一些典型例子:
我们通常假设,我们已知如何计算似然分布 和先验分布 【译者按:原文为“function”函数,应为讹误,后文类似情况以符号为准】。
然而,对于像上面的复杂任务,我们常常不知道如何从 采样或计算 。或者,我们可能知道 的形式,但相应的计算十分复杂,以至于我们无法在合理的时间内对其评估【译者按:“评估”的意思是给定似然函数,求出该函数在某一点上的值】。 我们可以尝试使用像 MCMC 这样的基于采样的方法求解,但这类方法很难收敛。
变分推断背后的想法是这样的:对简单的参数分布 (就像高斯分布)进行推断。对这个函数,我们已经知道如何做后验推断,于是任务变成了调整参数 使得 尽可能接近 。【译者按:“推断”在这里指的是从观察变量 的概率分布导出隐变量 的概率分布】
这在视觉上如下图所示:蓝色曲线是真实的后验分布,绿色分布是通过优化得到的拟合蓝色密度的变分近似(高斯分布)。
两个分布“接近”意味着什么? 平均场变分贝叶斯(最常见的类型)使用反向KL散度作为两个分布之间的距离度量。
反向KL散度测量出将 “扭曲(distort)”成 所需的信息量(以nat为单位或以2为底的对数bits为单位)。我们希望最小化这个量。【译者按:1.“扭曲”的意思是,把 和 贴合在一起,即通过某种映射引发函数图像的形变,使二者图像一致;2.许多研究产生式模型的论文会比较不同方法下的散度值。】
根据条件分布的定义, 。 让我们将这个表达式代入原来的KL表达式,然后使用分配律:
为了使 相对于变分参数 最小化,我们只需要最小化 ,因为 对于 来说是常数。 让我们重新写这个数量作为对分布 的期望。
最小化上面的式子等价于最大化负的式子:
在文献中, 被称为 变分下界 。如果我们能够估计 、 、 ,我们就可以计算它。我们可以继续调整式子里各项的顺序,使之更符合直觉:
如果说采样 是将观察变量 “编码”为隐变量 的过程,则采样 是从 重建观察变量 的“解码”过程。
由此得出 是预期的“解码”似然(即变分分布 能在多大程度上将样本 解码回样本 ),再减去变分近似的分布与先验 之间的KL散度【译者按:原文是“加上”,应该是减去】。如果我们假设 是条件高斯的,那么先验 通常被指定为平均值0、标准偏差1的对角高斯分布。
为什么 称为变分下界? 将 代入 ,我们有:
的含义,用大白话说就是,真实分布下的数据点 的对数似然 ,等于 ,加上 用来捕获在该特定值 处 和 之间距离的差。
由于 , 必大于(或等于) 。因此 是 的下界。 也被称为证据下界(ELBO),通过调整公式:
注意, 本身包含近似后验和先验之间的KL散度,因此 中总共有两个KL项。
KL散度函数不是对称距离函数,即 (当 时除外)第一个被称为“前向KL”,而后者是“反向KL””。 我们为什么要使用反向KL呢?因为推导的目标要求我们近似 ,所以【在 和 不能同时得到最优形式的情况下】我们要优先确保 的形式准确。
我很喜欢Kevin Murphy在 PML教科书 中的解释,我在这里尝试重新说明一下:
让我们首先考虑正向KL。正如上述推导,我们可以将KL写为,权重函数 加权下,“惩罚”函数 的期望。
只要 ,惩罚函数在任何地方都会给总KL带来损失。对于 , 。 这意味着前向KL将在 未能“掩盖” 时,将会很大。
因此,当我们确保前向KL最小化时 时, 。 优化的变分分布 被称为“避免零(zero-avoiding)”(密度 为零时 避免为零)。
如果 ,我们必须确保分母 的地方,加权功能的 ,否则KL会爆炸。这被称为“必设零(zero-forcing)”:
在机器学习问题中,使用平均场近似时,留意反向KL的后果很重要。 如果我们将单峰分布拟合到多模态分布,我们最终会得到更多的假阴性的样例(也就是说, 实际上存在概率,但我们依据 认为没有可能性)。
变分法对于深度学习非常重要。 我将在后面再写文章详细说明。这是“太长不看版”:
结合深度学习和变分贝叶斯方法,我们可以对 极其 复杂的后验分布进行推断。 事实证明,像变分自动编码器这样的现代技术,可以优化得到上文中形式完全相同的平均场变分下界!
感谢阅读,敬请期待!
鉴于标题,我们值得给出“平均场近似”这个名字背后的一些动机。
从统计物理学的观点来看,“平均场”是指忽略二阶效应,将困难的优化问题放松到更简单的问题。例如,在图模型的情境中,我们可以把估计 马尔可夫随机场 的配分函数(partition function)问题,转为最大化吉布斯自由能(对数配分函数减去相对熵)的问题。这显着地简化了全概率测量空间的全局优化的形式(参见M. Mezard和A. Montanari,Sect 4.4.2)。
整体分解:
平均场近似的分解:
从算法的观点来看,“平均场”是指用于计算马尔可夫随机场边缘概率的朴素平均场算法(naive mean field algorithm)。回想一下,朴素平均场算法的固定点【即最终解】是吉布斯变分问题的平均场近似的最优点。这种方法是“均值”,因为它是吉布斯采样器的平均/期望/ LLN版本,因此忽略了二阶(随机)效应(参见,M.Wainwright和M. Jordan,(2.14)和(2.15))。
【译者按:
1.上述说明主要针对配分函数而言的。
2.VAE的隐空间为标准高斯分布,协方差矩阵为对角单位阵,而不考虑非对角元素的影响。这体现了“平均场”的思想。
3.VAE的实验效果显示,产生图像较为模糊或“平均”,不够锐利,也许正是平均场近似的结果】
⑵ 什么是变分贝叶斯推论
贝叶斯概率和频率概率相对,它从确定的分布中观测到的频率或者在样本空间中的比例来导出概率。
变分法的关键定理是欧拉-拉格朗日方程。它对应于泛函的临界点。在寻找函数的极大和极小值时,在一个解附近的微小变化的分析给出一阶的一个近似。它不能分辨是找到了最大值或者最小值(或者都不是)。
⑶ 如何才能看得懂变分贝叶斯方法
指数分布族具有一个最大熵性质,均值参数空间具有凸性,对其上的任意内部点,最小指数族都能找到相应的分布满足一些性质。
所以一般考虑指数族。具体到VB法,E步骤是对隐变量后验概率的求解,其实质为计算相应的充分统计量,而M步骤为优化对应的参数向量(即参数的变分分布)。这两者可以看做一组共轭函数之间的最大熵与极大似然的共轭对偶关系。因为这是在指数分布族上的找最优分布,因此称为变分法。
⑷ 第七章 贝叶斯网络
用点表示事件条件概率,用边表示事件依赖关系的有向无环图。
1.典型贝叶斯问题
2.静态结构
在BN中描述概率的方式式每个节点上的条件概率分布。
3.联合/边缘/条件概率换算
4.链式法则与变量消元
变量消元能够显着减少链式法则计算公式的指数级别复杂度。
1.网络参数估计
精确网络参数估计有:最大似然度估计,最大后验估计
2.网络结构
网络结构不确定式,需要从数据中学习网络结构。该问题式NP难问题,解决方法有:
启发式搜索,Chow-Liu Tree算法
1.蒙特卡洛方法
2.马尔可夫链收敛定理
任何非周期马尔可夫链最终收敛于稳定的状态概率分布。
3.MCMC推理框架
4.Gibbs采样
构造一个从快速收敛到平稳状态的马尔可夫链。
5.变分贝叶斯
寻找于目标分布近似的Q分布,加快推理速度。
1.共轭分布
共轭分布简化贝叶斯网络中的概率计算。
2.隐含变量与显式变量
共轭分布常用于为BN中的隐含变量建模。
⑸ 贝叶斯网络和贝叶斯分类算法的区别
1、贝叶斯网络是:一种概率网络,它是基于概率推理的图形化网络,而贝叶斯公式则是这个概率网络的基础。贝叶斯网络是基于概率推理的数学模型,所谓概率推理就是通过一些变量的信息来获取其他的概率信息的过程,基于概率推理的贝叶斯网络(Bayesian network)是为了解决不定性和不完整性问题而提出的,它对于解决复杂设备不确定性和关联性引起的故障有很的优势,在多个领域中获得广泛应用。
2、贝叶斯分类算法是:统计学的一种分类方法,它是一类利用概率统计知识进行分类的算法。在许多场合,朴素贝叶斯(Naïve Bayes,NB)分类算法可以与决策树和神经网络分类算法相媲美,该算法能运用到大型数据库中,而且方法简单、分类准确率高、速度快。
3、贝叶斯网络和贝叶斯分类算法的区别:由于贝叶斯定理假设一个属性值对给定类的影响独立于其它属性的值,而此假设在实际情况中经常是不成立的,因此其分类准确率可能会下降。为此,就衍生出许多降低独立性假设的贝叶斯分类算法,如TAN(tree augmented Bayes network)算法。
贝叶斯分类算法是统计学的一种分类方法,它是一类利用概率统计知识进行分类的算法。在许多场合,朴素贝叶斯(Naïve Bayes,NB)分类算法可以与决策树和神经网络分类算法相媲美,该算法能运用到大型数据库中,而且方法简单、分类准确率高、速度快。
由于贝叶斯定理假设一个属性值对给定类的影响独立于其它属性的值,而此假设在实际情况中经常是不成立的,因此其分类准确率可能会下降。为此,就衍生出许多降低独立性假设的贝叶斯分类算法,如TAN(tree augmented Bayes network)算法。
⑹ 贝叶斯分类算法的基本步骤
主要有以下7个步骤:
1. 收集大量的垃圾邮件和非垃圾邮件,建立垃圾邮件集和非垃圾邮件集。
2. 提取邮件主题和邮件体中的独立字符串,例如 ABC32,¥234等作为TOKEN串并统计提取出的TOKEN串出现的次数即字频。按照上述的方法分别处理垃圾邮件集和非垃圾邮件集中的所有邮件。
3. 每一个邮件集对应一个哈希表,hashtable_good对应非垃圾邮件集而hashtable_bad对应垃圾邮件集。表中存储TOKEN串到字频的映射关系。
4. 计算每个哈希表中TOKEN串出现的概率P=(某TOKEN串的字频)/(对应哈希表的长度)。
5. 综合考虑hashtable_good和hashtable_bad,推断出当新来的邮件中出现某个TOKEN串时,该新邮件为垃圾邮件的概率。数学表达式为:
A 事件 ---- 邮件为垃圾邮件;
t1,t2 …….tn 代表 TOKEN 串
则 P ( A|ti )表示在邮件中出现 TOKEN 串 ti 时,该邮件为垃圾邮件的概率。
设
P1 ( ti ) = ( ti 在 hashtable_good 中的值)
P2 ( ti ) = ( ti 在 hashtable_ bad 中的值)
则 P ( A|ti ) =P2 ( ti ) /[ ( P1 ( ti ) +P2 ( ti ) ] ;
6. 建立新的哈希表hashtable_probability存储TOKEN串ti到P(A|ti)的映射
7. 至此,垃圾邮件集和非垃圾邮件集的学习过程结束。根据建立的哈希表 hashtable_probability可以估计一封新到的邮件为垃圾邮件的可能性。
当新到一封邮件时,按照步骤2,生成TOKEN串。查询hashtable_probability得到该TOKEN 串的键值。
假设由该邮件共得到N个TOKEN 串,t1,t2…….tn,hashtable_probability中对应的值为 P1 , P2 , ……PN , P(A|t1 ,t2, t3……tn) 表示在邮件中同时出现多个TOKEN串t1,t2……tn时,该邮件为垃圾邮件的概率。
由复合概率公式可得
P(A|t1 ,t2, t3……tn)=(P1*P2*……PN)/[P1*P2*……PN+(1-P1)*(1-P2)*……(1-PN)]
当 P(A|t1 ,t2, t3……tn) 超过预定阈值时,就可以判断邮件为垃圾邮件。
⑺ 基于贝叶斯估计特征分布融合的目标分类方法是什么
贝叶斯法则
机器学习的任务:在给定训练数据D时,确定假设空间H中的最佳假设。
最佳假设:一种方法是把它定义为在给定数据D以及H中不同假设的先验概率的有关知识下的最可能假设。贝叶斯理论提供了一种计算假设概率的方法,基于假设的先验概率、给定假设下观察到不同数据的概率以及观察到的数据本身。
应用
变分贝叶斯估计可以应用于完整的贝叶斯推断(full Bayesian inference),即对后验分布按因子展开进行近求解。在最大期望算法(Expectation-Maximization algorithm, EM)的E步中对隐变量后验分布的求解可以通过变分贝叶斯估计实现,形成变分贝叶斯EM(Variational Bayesian EM algorithm, VBEM)。
⑻ 朴素贝叶斯算法
贝叶斯算法是由英国数学家托马斯·贝叶斯提出的,这个算法的提出是为了解决“逆向概率”的问题。首先我们先来解释下正向概率与逆向概率的含义:
正向概率 :假设一个箱子里有5个黄色球和5个白色球,随机从箱子里拿出一个球,请问取出的是黄球的概率是多少?很容易计算P(黄球)= N(黄球)/N(黄球)+ N(白球) = 5/5+5 = 1/2。
逆向概率 :起初我们并不知道箱子里有多少个球,我们依次从箱子里取出10个球,发现这个10个球中有7个白球,3个黄球,那么我们会根据我们观察到的结果去推测箱子里白球与黄球的分布比例大概是7:3,但是我们无法推测出箱子里的球的个数。
贝叶斯算法是一种基于概率统计的机器学习算法,它会计算出每种情况发生的概率,然后对其进行分类,贝叶斯算法经常用于文本分类问题和垃圾邮件过滤问题。假设有一篇新闻报道news report,我们使用贝叶斯算法来判断它们的类别,结果如下:
p(politics|news) = 0.2
p(entertainment|news) = 0.4
p(sports|news) = 0.7
因为p(sports|news)的概率最大,所以我们判断这篇新闻报道为体育类报道。“|”左边为要判断的类别,右边是我们给定的文章。
贝叶斯公式推导
接下来,我们将通过一个例子来推导贝叶斯公式。在一所学校里,男生和女生的比例分别是60%和40%,男生全部穿长裤,女生一半穿长裤,一半穿裙子。现迎面走来一个同学,你只能看清他(她)穿的是长裤,而无法分辨出他(她)的性别,请问他(她)是女生的概率?
下面我们逐步计算这个问题:
假设学校里的学生总数为N。
男生人数:N * P(boys),女生人数:N * P(girls)。
穿长裤的男生人数:N * P(boys) * P(pants|boys),其中P(pants|boys)是条件概率的表达形式,意思是男生中穿长裤的概率。因为男生都穿长裤,所以N * P(boys) * P(pants|boys) = 60% * N。
穿长裤的女生的人数:N * P(girs) * P(pants|girls) = 0.2 * N。
穿长裤的总人数:N * P(boys) * P(pants|boys) + N * P(girs) * P(pants|girls)
穿长裤的同学是女生的概率:P(girl|pants) = N * P(girs) * P(pants|girls) / N * P(boys) * P(pants|boys) + N * P(girs) * P(pants|girls) = P(girs)*P(pants|girls) / P(pants),分母用P(pants)表示穿长裤的概率。
最终结果:P(girl | pants) = P(pants | girl) * P(girl) / P(pants)
其中:P(girl)我们称为先验概率,是已知值,在这个例子中P(girl) = 40%。先验概率:根据以往的经验和分析得到的结果,先验概率和其他条件的影响不受样本影响。
P(girl | pants)我们称为后验概率,根据观察到的结果,去反推是女生的概率。
贝叶斯数学表达式
贝叶斯算法在垃圾邮件过滤中的应用
给定一封邮件,判定它是否属于垃圾邮件?用D 来表示这封邮件,注意D 由N 个单词组成。我们用h+ 来表示垃圾邮件,h-表示正常邮件。
有贝叶斯公式可得:
P(h+ | D) = P(D | h+) * P(h+) / P(D)
P(h- | D) = P(D | h-) * P(h-) / P(D)
其中P(h+),P(h-)为先验概率,假如我们有1000封邮件,其中有50封是垃圾邮件,其他都是正常邮件,那么P(h+),P(h-)的概率就是已知的。两个式子的分母都是P(D),所以P(D)对于最终结果的比较是没有影响的。接下来就是要求P(D | h+),P(D | h-)垃圾邮件中或正常邮件中是邮件D的概率。
我们都知道一封邮件是由许多词构成的,所以我们将P(D | h+)的表达式转化为P(d1,d2,d3......dn | h+),就是看垃圾邮件中出现d1,d2...dn这些词的概率是多少。
P(d1,d2,d3......dn | h+) = P(d1 | h+) * P(d2 |d1,h+) * P(d3 |d1,d2,h+) ...
这个式子计算起来非常困难,所以在这里我们做一个假设,假设每个词都是独立的并且互不影响,那么这个式子就可以表示为:
P(d1,d2,d3......dn | h+) = P(d1 | h+) * P(d2 | h+) * P(d3 | h+) ...P(dn | h+)
P(h+ | D) = {P(d1 | h+) * P(d2 | h+) * P(d3 | h+) ...P(dn | h+)}* P(h+) / P(D)
上述这个式子我们就称为朴素贝叶斯公式,朴素贝叶斯公式是对贝叶斯公式的简化,它建立在每个条子互相独立的基础上。
在现实生活中,我们写的每一句话中词与词之间肯定是有相互联系,如果没有联系,那么这句话是读不通的。那么为什么朴素贝叶斯能够在计算中使用,首先是计算简单,其次对最终结果的影响非常小。
参考资料
1.唐宇迪,《机器学习与数据分析实战》课程。
2.Peter,《机器学习实战》。
⑼ 贝叶斯算法是什么
贝叶斯算法是统计学的一种分类方法,它是一类利用概率统计知识进行分类的算法。在许多场合,朴素贝叶斯(Naïve Bayes,NB)分类算法可以与决策树和神经网络分类算法相媲美,该算法能运用到大型数据库中,而且方法简单、分类准确率高、速度快。
由于贝叶斯定理假设一个属性值对给定类的影响独立于其它属性的值,而此假设在实际情况中经常是不成立的,因此其分类准确率可能会下降。为此,就衍生出许多降低独立性假设的贝叶斯分类算法,如TAN(tree augmented Bayes network)算法。
贝叶斯算法的主要步骤:
1、收集大量的垃圾邮件和非垃圾邮件,建立垃圾邮件集和非垃圾邮件集。
2、提取邮件主题和邮件体中的独立字符串,例如ABC32,¥234等作为TOKEN串并统计提取出的TOKEN串出现的次数即字频。按照上述的方法分别处理垃圾邮件集和非垃圾邮件集中的所有邮件。
3、每一个邮件集对应一个哈希表,hashtable_good对应非垃圾邮件集而hashtable_bad对应垃圾邮件集。表中存储TOKEN串到字频的映射关系。