虽然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

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

贝叶斯网

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

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是否成为纯贝叶斯预测的一个瓶颈呢
    • 这种贝叶斯有局部极小点之说么感觉没有,理论上总会出现一个能跳出局部极小点的随机点发生。

[Bayes] Parameter estimation by Sampling的更多相关文章

  1. (转) Parameter estimation for text analysis 暨LDA学习小结

    Reading Note : Parameter estimation for text analysis 暨LDA学习小结 原文:http://www.xperseverance.net/blogs ...

  2. [Bayes] Hist & line: Reject Sampling and Importance Sampling

    吻合度蛮高,但不光滑. > L= > K=/ > x=runif(L) > *x*(-x)^/K)) > hist(x[ind],probability=T, + xla ...

  3. something about Parameter Estimation (参数估计)

    点估计 Point Estimation 最大似然估计(Maximum Likelihood Estimate —— MLE):视θ为固定的参数,假设存在一个最佳的参数(或参数的真实值是存在的),目的 ...

  4. Click Models for Web Search(2) - Parameter Estimation

    在Click Model中进行参数预估的方法有两种:最大似然(MLE)和期望最大(EM).至于每个click model使用哪种参数预估的方法取决于此model中的随机变量的特性.如果model中的随 ...

  5. [Bayes] Metroplis Algorithm --> Gibbs Sampling

    重要的是Gibbs的思想. 全概率分布,可以唯一地确定一个联合分布 ---- Hammersley-Clifford 多元高斯分布 当然,这个有点复杂,考虑个简单的,二元高斯,那么超参数就是: 二元高 ...

  6. [AI] 深度数学 - Bayes

    数学似宇宙,韭菜只关心其中实用的部分. scikit-learn (sklearn) 官方文档中文版 scikit-learn Machine Learning in Python 一个新颖的onli ...

  7. 本人AI知识体系导航 - AI menu

    Relevant Readable Links Name Interesting topic Comment Edwin Chen 非参贝叶斯   徐亦达老板 Dirichlet Process 学习 ...

  8. [ML] Bayesian Linear Regression

    热身预览 1.1.10. Bayesian Regression 1.1.10.1. Bayesian Ridge Regression 1.1.10.2. Automatic Relevance D ...

  9. [Bayes] runif: Inversion Sampling

    runifum Inversion Sampling 看样子就是个路人甲. Ref: [Bayes] Hist & line: Reject Sampling and Importance S ...

随机推荐

  1. git 分支合并冲突

    准备新的feature1分支,继续我们的新分支开发 [root@node1 git]# git checkout -b feature1 D git/LICENSE.txt Switched to a ...

  2. Revit API PickPoint过滤条件

    //过滤选择,加上过滤条件,没有看出来差别. [TransactionAttribute(Autodesk.Revit.Attributes.TransactionMode.Manual)] publ ...

  3. Unity3d之截图方法

    http://blog.csdn.net/highning0007/article/details/37991787 Unity3d之截图方法 分类: Unity3D2013-11-28 17:13  ...

  4. Unity Shader-后处理:简单的颜色调整(亮度,饱和度,对比度)

    好久没坚持写blog了,是时候开始撸一波新博文了!学习Unity有一段时间了,关于Shader的书也看了几本<Unity Shader入门精要>,<Unity 3D ShaderLa ...

  5. Fortran中的指针使用

    Fortran中的指针如何使用,功能怎样,下面的的5个例子足可以让你明白一切! 对于单个值,用起来很简单,但是无法体现指针的强大功能, 示例1: program test_pointer_1 impl ...

  6. [数据结构与算法分析(Mark Allen Weiss)]不相交集 @ Python

    最简单的不相交集的实现,来自MAW的<数据结构与算法分析>. 代码: class DisjSet: def __init__(self, NumSets): self.S = [0 for ...

  7. nodejs sass安装报错一招解决

    背景: 这个问题不是一天两天了,有时候是网速不行,有时候是被墙了,有时候是github把node-sass的包转移目录导致下载失败. Cannot download "https://git ...

  8. NPM慢怎么办 - nrm切换资源镜像

    1. 直接配置为taobao镜像 npm config set registry https://registry.npm.taobao.org 1. 使用NRM管理镜像 npm isntall -g ...

  9. linux远程开启不挂起的服务

    解决Linux关闭终端(关闭SSH等)后运行的程序自动停止 λ nohup --help Usage: nohup COMMAND [ARG]... or: nohup OPTION Run COMM ...

  10. framework中编译anroid工程并在模拟器上运行

    1.在eclipse下创建android工程Hello并拷贝到“源码目录/packages/experimental”下面   2.在Hello工程目录下面创建Android.mk文件,内容如下: L ...