这部分介绍 sampling 方法,书上也称为 particle-based method,这是因为每一个从分布中采集到的样本可以看成是一个 particle(instantiation of r.v.),而我们的 inference 借助了 particles。

比较简单的问题就是 forward sampling,比如一个 BN,如果我们希望得到联合分布下的样本,我们可以按照分解关系依照 topological order 进行采样,确定了先验后,后面的 r.v.s 就可以使用 CPD 进行采样了。这时的问题是对于某个事件 我们如何进行估计?其实很简单,我们在采样获得的 中看看哪些包含这个 的赋值,进行计数,其占整个样本的比例我们记为 ,Hoeffding bound 揭示了这个估计的准确程度(大数定律):

利 用这个 bound 我们可以推算出来给定 与精度 ,如果希望以 概率以上不等式满足需要多少样本。这是一个绝对误差,对于相对误差来说一般使用 Chernoff bound

对条件概率来说这个问题一般是用 rejection sampling 的策略,比如我们需要计算 ,抽取 particles 之后我们可以仅仅使用满足 的样本,然后仍然使用前面的策略,这时有效的样本仅仅占

rejection 导致样本的利用率降低,为此一个常用的策略是 importance sampling。一种错误的做法是我们在 foward sampling 产生样本碰到 evidence r.v.s 后直接取我们观测的值,但这并没有考虑到其父节点产生它自己的概率,为此我们必须为每个样本进行适当的调整(加权),使得不大可能产生的样本对应权值会相 对较低,我们可以在产生过程中碰到 evidence 时修改权值 ,它初始为 1,没碰到一个 evidence 就在上面乘以对应的 CPD。如此一来我们产生的样本都与 evidence compatible,但多余了一个权值,我们在计算条件概率时把原先的计数相除换成权值和相除即可。这个技术可以看成通过 likelihood 进行 weighting,因此称为 likelihood weighting。而对应的 particle 由于关联了一个 weight,也称为 weighted particle。但是这种方法为什么给出的渐进结果收敛到真实值呢?我们可以用 importance sampling 来搞定。

importance sampling 是借助另外一个分布 来求一个采样困难的分布 的 inference 的手法,我们的目标是获得

我们这里近似的时候 是来自 的 i.i.d. r.v.s,importance sampling 使用 ,且每个样本伴随有一个 weight,,最后的估计是

很容易证明这个 unnormalized importance sampling 获得的是无偏估计。如果我们对 并不了解,而仅仅能计算出来 ,这时我们就需要使用 normalized importance sampling,

这个估计不是无偏的,且很难计算其方差。那么为了说明 likelihood weighting 的确能得到我们需要的效果,我们可以提供对应的 importance sampling 下的对应辅助分布。为此我们引入所谓 mutilated network,这是将原先的 BN 进行某种程度的修正,去掉给定 r.v.s. 中父节点的边,将给定的 r.v.s. 的 prior 设置为 deterministic 类型(反应其给定的值),这样在这个新的 BN 上我们的分布作为 ,而原函数作为辅助函数,使用 importance sampling,此时我们需要说明这个 BN 对应的是我们需要的采样分布(比较显然,因为给定的都是先验),而此时如果从原分布里面采样与给定值不相符就会得到一个 0 weight。

事实上 importance sampling 也能处理没有 condition/observation 的情况,这时我们的 可以选择 query r.v.s 上的 函数的乘积。这样我们就可以利用 importance sampling 上面获得的 bound 来分析这些 sampling 的收敛情况了。对条件分布,我们可以转换成为前面两种 case,分别 unnormalized 采样,然后做比(这也称为 ratio likelihood weighting);或者使用 normalized 采样,这样相比时也能约掉(称为 normalized likelihood weighting)。这里仅仅谈到了 forward sampling,importance sampling 还包括 backward sampling(有 evidence 的时候 sample reason?)

一类很重要的算法称为 MCMC(Markov Chain Monte Carlo),其中一个典型的代表就是 Gibbs sampling,这是我们已知所有条件分布时,从条件分布获得样本来 simulate 联合分布下样本的算法。这个方法是计算有效的,这是因为我们根据这个算法发现条件概率其实仅仅于与该变量相关的 factor 有关系,并且无所谓是 normalized 还是 unnormalized factor。

这种方法归到 Monte chain(离散状态离散时间 Markov 过程),描述这个过程需要 transition matrix、prior。如果某个分布 满足 ,则称为 transition probability 为 的 Markov chain 的 stationary/invariant distribution。比较重要的一些性质包括周期性(periodic),可约性(reducible,存在多个 stationary distribution,对应 transition matrix 是 reducible),ergodic(一个状态称为 ergodic 当且仅当其是非周期的,重现概率大于零,对不可约 Markov 过程如果所有状态为 ergodic 则称其为 ergodic)。在这里我们将 ergodicity 定义为 regularity,一个 Markov chain 称为 regular 当且仅当存在 ,对任意 ,从 通过 步迁移到 的概率大于零。可以证明 regular Markov chain 存在唯一的 stationary distribution。

以上是对于单变量的 Markov chain,对于 PGM 而言,我们可以是一个很复杂的 transition,也可以将这个 transition 定义在单个变量上,这样每个 transition 就可以认为是一个 kernel,且某些情况我们观测到的 transition 是随机选择某个 kernel 之后得到的结果,这样我们就可以换一个角度来理解 Gibbs sampling 的过程,其每步随机变量的 transition 是依赖于其他的变量而不是当前的取值。同时 Gibbs sampling 的思想可以用在 block 上,即我们不是一个变量一个变量的做 transition。

除了 Gibbs sampling 以外,我们还有一类更广义的构造需要的分布是某个 Markov chain 的 stationary distribution 的算法。它基于所谓的 reversible Markov Chain 的概念,即如果一个 Markov chain 存在唯一一个分布 ,使得 ,任意两个状态互相转移的概率相等,这个称为可逆 Markov 过程,这个方程称为 detailed balance。事实上一个 regular Markov chain 如果是 reversible 的,满足 detailed balance 方程的分布就是 stationary distribution。所谓的 Metropolis-Hastings 算法需要一个 proposal distribution 作为 transition probability,为了使得获得的 transition 以 作为 stationary distribution,我们只需要让它满足 detailed balance 方程,这使得我们需要用某种方式修正这个 proposal distribution,这个 idea 源自 rejection sampling,即我们接受 transition 当且仅当额外的 上均匀分布随机变量小于 ,这也称为 accepting probability,这样一来我们真实的转移概率就变成了 ,容易证明 满足该 Markov chain detailed balance 方程,因为成为了 stationary distribution。

对于 PGM 来说,如果希望获得联合分布的样本,使用 MH 算法的一种思路是为每个随机变量给出一个 proposal distribution,此时定义的 accepting probability 中 具有和 Gibbs sampling 类似的优点,非常容易计算。事实上,Gibbs sampling 只是选择了某个特殊的 proposal distribution(也很明显正好是条件分布,这样能跟前面一部分约掉),使得 accepting probability 为 1。

那么使用 Markov chain 获得我们需要的稳态分布的样本如何与我们的 inference 问题发生关系呢?前面的方法都是 i.i.d. 样本,所以我们可以有一些界帮助我们 justify 算法的合理性,这里样本明明不独立,那会有什么样的性质呢?首先,为了使用来自 stationary distribution 的样本,我们必须等待 Markov chain 进入“足够好”的阶段,为此我们定义了所谓 -mixing time,也就是分布与稳态分布的 KL divergence 小于 的最小时间。可惜对 PGM 来说并不存在一些有意义的 mixing time 的 bound 分析。关于使用稳态分布样本进行估计,我们有如下渐进收敛结果,即通过 MC 样本获得的估计会收敛到以真实期望 为均值的正态分布,其方差比较复杂,但是是有限的。为了减少估计的方差,如何选择合适的 transition 是非常重要的,一般的原则是让状态能够较快/大的变化。实际应用中比较好的策略是通过几个并行的 MC,等待 burn-in 之后,通过几个结果上的比较可以获得收敛性上的判断。

一类减少 MC 方法方差的手法称为 Rao-Blackwellization,其核心思想就是能通过闭式解搞定的就闭式解,迫不得已才用 MC,这反应在 particle-based 的方案中就是所谓的 collapsed particles(采样后只有一部分随机用来通过样本进行估计,另一部分通过闭式解搞定),这种情况下我们把 ,前部分是通过 particle 这类做法求,而后面是有 的闭式表达,这样计算 时我们可以用

首先产生联合分布样本,而仅仅用 部分,每一个样本对应的 由于可以获得闭式解,我们就可以不使用对应 部分的值,而是给出解析解。这种方法很容易应用到 importance sampling、MCMC 里面去,这会大大减少估计的方差。

对于某些情况,分布集中在少数几个 取值上,直接使用 sampling 的方案会非常慢,这时使用所谓的 deterministic search method 会更好,此时直接将高概率出现的取值拿出来,然后用他们的加权和即可(会不会一致的偏小/大?)。

——————-
And to Sarah he said, Behold, I have given your brother a thousand pieces of silver: behold, he is to you a covering of the eyes, to all that are with you, and with all other: thus she was reproved.

pgm9的更多相关文章

随机推荐

  1. array_multisort函数,以及多维数组下排序的应用,并与usort函数对比

    以前比较少用这个函数,大部分自己接触的业务里,处理稍微大一些的数组的时候几乎都是从db里取出来的,在db里就order by了. 最近倒是用了次,这个函数用来排序很强大,有点类似于sql中的order ...

  2. Python爬虫爬取贴吧的帖子内容

    最近在看一个大神的博客,从他那里学会了很多关于python爬虫的知识,其实python如果想用在实际应用中,你需要了解许多,比如正则表达式.引入库.过滤字段等等,下面不多说,我下面的程序是爬取Ubun ...

  3. odoo 之报date<form string=''product lc''> 错误

    原因是: </page> </notebook> </form> <div class="oe_chatter"> <fiel ...

  4. 20155204《网络对抗》Exp7 网络欺诈防范

    20155204<网络对抗>Exp7 网络欺诈防范 一.基础问题回答 1.通常在什么场景下容易受到DNS spoof攻击 在不安全的网络环境下访问网站. 2.在日常生活工作中如何防范以上两 ...

  5. Exp3

    利用不同免杀方式生成文件 1.msfvenom 使用msfvenom命令查看功能介绍 其中有: -p 选择一个载荷(或者叫模块) -l 载荷列表 -f 生成的文件格式 -e 编码方式 -l 编码次数 ...

  6. java.lang.IllegalStateException: Cannot forward after response has been committe

    参考:https://blog.csdn.net/lewky_liu/article/details/79845655 加上 return 搞定

  7. Merge:解析on子句和when not match子句的陷阱

    在细节上,体现编程的修养.每一位大师,master,其基础必定夯实.废话不多说,直接上干货,Merge子句用于对两个数据表执行数据同步,On子句指定匹配(when matched)条件,When子句指 ...

  8. mybatis源码-解析配置文件(三)之配置文件Configuration解析

    目录 1. 简介 1.1 系列内容 1.2 适合对象 1.3 本文内容 2. 配置文件 2.1 mysql.properties 2.2 mybatis-config.xml 3. Configura ...

  9. Flask_admin 笔记一 (快速启用)

    1,快速启用   1) 安装flask-admin pip install flask-admin 2) 配置使用 from flask import Flask from flask_admin i ...

  10. M1阶段事后分析

    M1阶段的开发结束了,在周四的课上我们组也进行了alpha阶段的汇报.我们的努力得到了应有的回报,下面我们将针对M1阶段产生的一些问题进行分析和反思. 一.设想和目标 1.我们的app更像是一款针对北 ...