[Bayes] Parameter estimation by Sampling

雖然openBugs效果不錯,但原理是什麼呢?須要感性認識,才能得其精髓。html

 

Recall [Bayes] prod: M-H: Independence Sampler firstly.    採樣法算法

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

And compare them.函數


  

梯度降低,其實就是減少loss function,不斷逼近擬合的過程。post

採樣法呢?學習

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]

 

難道是貝葉斯線性迴歸ui

 
 

全貝葉斯仍是好

 
題主指的應該是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~this

 

 

對後驗進行採樣

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

若是咱們有後驗機率的具體表達式,原則上咱們能夠對待估計變量 \theta 的統計特徵進行直接估計。
然而現實並不那麼美好,若是 \theta 的維度很高,並且後驗機率形式特別複雜,每每致使在對 \theta
的某個份量求解邊緣分佈時的積分沒法簡單直接求得。
例如,求某個份量的指望就必然涉及對驗機率的積分。(積分不易)
 
蒙特卡羅積分法對於高維度的積分問題而言是一種可行的解決方案,基於這一原理,咱們就能用基於抽樣的方法來解決這一問題(這裏的抽樣是指按照給定的聯合分佈產生一個符合該分佈的樣本,而不是指從一個整體中抽取出一個樣本)。
若是咱們可以對後驗機率進行採樣,即根據後驗機率得到一系列  \theta 的實現樣本,咱們就可以對這個樣本進行直接的統計,從而得到對 \theta
的估計。
 
 
那麼如何完成對p(\mathbf{\theta}|\mathbf{x})的採樣呢?
這時候咱們便要請出吉布斯(Gibbs)採樣算法了。吉布斯採樣算法的基本思想很直接,就是依次對 \theta
的各個份量進行採樣,在採樣某一個份量的時候,認爲其餘份量固定。
這就將多維採樣問題轉換爲了對一維分佈進行採樣,而這可以用拒絕算法(或者自適應拒絕算法)、切片法等等解決。
 
// 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是否成爲純貝葉斯預測的一個瓶頸呢
    • 這種貝葉斯有局部極小點之說麼感受沒有,理論上總會出現一個能跳出局部極小點的隨機點發生。
相關文章
相關標籤/搜索