[Bayes] Parameter estimation by Sampling

虽然openBugs效果不错,但原理是什么呢?需要感性认识,才能得其精髓。

Recall [Bayes] prod: M-H: Independence Sampler firstly.    采样法

Recall [ML] How to implement a neural network then.       梯度下降法

And compare them.


梯度下降,其实就是减小loss function,不断逼近拟合的过程。

那采样法呢?

y = a*x +sigma,  where sigma~N(0, tao^2)

        r  <- prod(fy/fx)*          # 求原分布的 似然比 以及 提议分布的 比值
g(xt[i-1]) / g(y[i])  # 提议分布if (u[i] <= r)
xt[i] <- y[i]
else {
xt[i] <- xt[i-1]

难道是贝叶斯线性回归

 
 

全贝叶斯还是好

 
题主指的应该是full-Bayesian吧。full-Bayesian方法说到底就是两步走:
  1. 用训练数据得到似然函数likelihood,再加上一个先验分布prior,得到一个后验分布posterior.
  2. 对于一个新的测试数据x,用之前得到的posterior作为权重在整个参数空间里计算一个加权积分,得到一个预测分布。(sampling method获得)

Full-Bayesian与最大似然估计,最大后验估计(MAP)不同之处在于它得到的是测试数据在整个空间上的一个概率分布,而不单纯是一个点估计。

它的精髓就在于这个加权积分:考虑到了参数的所有情况,并且加以不同的权重(后验分布的值),自然就避免了过拟合。
此外,很多情况下比起单纯的点估计,我们更需要一个分布来获得更多的信息(点估计只告诉了我们最有可能的情况,而分布包含了整个空间里的情况)。
 
 

后验形式太复杂,怎么办?

方案:近似法,或者采样法。
在实际中,除了少数情况(比如先验和似然函数都是高斯分布),那个后验分布的形式一般都很复杂,第二步里的积分是积不出来的。这时候就要采取一些近似方法,近似方法又分为两大类:
  1. 简化复杂的后验分布,然后就能算出积分的解析形式了。具体方法有变分推断,Laplace近似等。这类方法的特点是人算起来困难,机器跑起来快。
  2. 用采样的方法搞定后验分布。具体方法有Gibbs采样,HMC采样等。这类方法反过来了,人算起来简单,但是机器跑起来慢。

采样方法还有一个好处,就是精度算得比谁都高,但是毕竟还是too slow too simple~

 

对后验进行采样

From: https://zhuanlan.zhihu.com/p/20753438

如果我们有后验概率的具体表达式,原则上我们可以对待估计变量[Bayes] Parameter estimation by Sampling的统计特征进行直接估计。
然而现实并不那么美好,如果[Bayes] Parameter estimation by Sampling的维度很高,而且后验概率形式特别复杂,往往导致在对[Bayes] Parameter estimation by Sampling的某个分量求解边缘分布时的积分无法简单直接求得。
例如,求某个分量的期望就必然涉及对后验概率的积分。(积分不易)
 
蒙特卡罗积分法对于高维度的积分问题而言是一种可行的解决方案,基于这一原理,我们就能用基于抽样的方法来解决这一问题(这里的抽样是指按照给定的联合分布产生一个符合该分布的样本,而不是指从一个总体中抽取出一个样本)。
如果我们能够对后验概率进行采样,即根据后验概率获得一系列 [Bayes] Parameter estimation by Sampling的实现样本,我们就能够对这个样本进行直接的统计,从而获得对[Bayes] Parameter estimation by Sampling的估计。
 
 
那么如何完成对[Bayes] Parameter estimation by Sampling的采样呢?
这时候我们便要请出吉布斯(Gibbs)采样算法了。吉布斯采样算法的基本思想很直接,就是依次对[Bayes] Parameter estimation by Sampling的各个分量进行采样,在采样某一个分量的时候,认为其他分量固定。
这就将多维采样问题转换为了对一维分布进行采样,而这能够用拒绝算法(或者自适应拒绝算法)、切片法等等解决。
 
// Jeff: 先降维,每个维度再Rejection sampling方法
 
 

贝叶斯网

本来故事到这里已经可以结束,从而没有贝叶斯网什么事情了,
但是实践中,我发现(当然不可能是我首先发 现的),直接对后验概率进行吉布斯采样,虽然能凑合着用,但是效率有时候堪忧,贝叶斯网的出现可以显著改善采样的效率。
如果我们能够把后验概率进行分解, 把各个参量之间的关系捋顺,在对某一具体分量进行采集的时候,只需要计算和它相关的量,就能大大降低计算复杂性,从而提高效率。
 
例子:Gibbs采样法和贝叶斯网的必然联系
[Bayes] Parameter estimation by Sampling

Figure 01, rewrite PGM

结论:

通过sample 获得后验的一堆随机点,根据这些随机点再计算/推断出后验分布的各种统计量。

似然加权法是重要性抽样的一个特例

概念辨析

全贝叶斯:

The terminology "fully Bayesian approach" is nothing but a way to indicate that one moves from a "partially" Bayesian approach to a "true" Bayesian approach, depending on the context.

Or to distinguish a "pseudo-Bayesian" approach from a "strictly" Bayesian approach.

经验贝叶斯:

For example one author writes: "Unlike the majority of other authors interested who typically used an Empirical Bayes approach for RVM, we adopt a fully Bayesian approach" beacuse the empirical Bayes approach is a "pseudo-Bayesian" approach.

实质是:利用历史样本对先验分布或者先验分布的某些数字特征做出直接或间接的估计,是对贝叶斯方法的改进和推广,是介于经典统计学和贝叶斯统计学之间的一种统计推断方法。

There are others pseudo-Bayesian approaches, such as the Bayesian-frequentist predictive distribution (a distribution whose quantiles match the bounds of the frequentist prediction intervals).

In this page several R packages for Bayesian inference are presented. The MCMCglmm is presented as a "fully Bayesian approach" because the user has to choose the prior distribution, contrary to the other packages.

Another possible meaning of "fully Bayesian" is when one performs a Bayesian inference derived from the Bayesian decision theory framework, that is, derived from a loss function, because Bayesian decision theory is a solid foundational framework for Bayesian inference.

I think the terminology is used to distinguish between the Bayesian approach and the empirical Bayes approach.

Full Bayes uses a specified prior whereas empirical Bayes allows the prior to be estimated through use of data.

全贝叶斯:使用指定的先验

经验贝叶斯:使用数据估算来的先验

对openBugs的浅显的理解

未知量很多时,比如有n个。

先讨论nth的变量,那么先设定n-1个变量的值,怎么给,因为有预先假设的分布,故,从分布上随机取一个点。

注意有三个值,以及这三个值的关系:

样本中的(x, y)以及nth variable.

根据nth的值(是在假设的分布下随机取的),求出在已知样本数据(x,y)下的似然值。

一开始,很可能拟合的不好,即:似然值很小。那么调整假设分布的参数,比如正态分布的mu,使似然值达到“当前情况下”的所谓的最大。

调整后,在这个新分布下去一个值作为固定值,然后再考虑下一个变量的情况。

这里的Gibber只是代表一个算法思路,跟sampling貌似关系不大。

变量变多时,貌似过程会复杂很多,但概率图模型的作用就是告诉我们 (Figure 01, rewrite PGM),估计一个变量D时,没必要考虑 all rest,在当前情形下,只考虑B, C即可。这便大大的简化了计算时间。

这里注意到了一点与neutral network的一些区别:

Bayes方法如果参数很多怎么办?毕竟一次只能改变一个变量,如果是图片的话,即使是一个像素点一个变量,都是巨大的数量。

而neutral network 的 back propagation是一次调整众多的值。

    • 以上的这个issue是否成为纯贝叶斯预测的一个瓶颈呢
    • 这种贝叶斯有局部极小点之说么感觉没有,理论上总会出现一个能跳出局部极小点的随机点发生。
上一篇:TOP100summit 2017:【案例分享】魅族持续交付平台建设实践


下一篇:Noise Contrastive Estimation