1. LDA主題模型詳解
-
你一定從未看過如此通俗易懂的馬爾科夫鏈蒙特卡羅方法(MCMC)解讀(上):https://zhuanlan.zhihu.com/p/250146007
-
Metropolis 采樣算法:https://blog.csdn.net/jingjishisi/article/details/79291258
1.1 Beta/Dirichlet 分布的一個性質
如果 , 則
上式右邊的積分對應到概率分布 ,對於這個分布,我們有
把上式帶入的計算式,得到
(5)
這說明,對於Beta 分布的隨機變量,其均值可以用來估計。Dirichlet 分布也有類似的結論,如果
,同樣可以證明
(6)
以上兩個結論很重要,因為我們在后面的 LDA 數學推導中需要使用這個結論。
1.2 LDA-math-MCMC
吉布斯采樣(Gibbs sampling)是統計學中用於馬爾科夫蒙特卡洛(MCMC)的一種算法,用於在難以直接采樣時從某一多變量概率分布中近似抽取樣本序列。該序列可用於近似聯合分布、部分變量的邊緣分布或計算積分(如某一變量的期望值)。某些變量可能為已知變量,故對這些變量並不需要采樣。
馬氏鏈定理: 如果一個非周期馬氏鏈具有轉移概率矩陣,且它的任何兩個狀態是連通的,那么
存在且與
無關,記
, 我們有
是方程
的唯一非負解
其中,
稱為馬氏鏈的平穩分布。
這個馬氏鏈的收斂定理非常重要,所有的 MCMC(Markov Chain Monte Carlo) 方法都是以這個定理作為理論基礎的。 定理的證明相對復雜,一般的隨機過程課本中也不給證明,所以我們就不用糾結它的證明了,直接用這個定理的結論就好了。我們對這個定理的內容做一些解釋說明:
-
該定理中馬氏鏈的狀態不要求有限,可以是有無窮多個的;
-
定理中的“非周期“這個概念我們不打算解釋了,因為我們遇到的絕大多數馬氏鏈都是非周期的;
-
兩個狀態
是連通並非指
可以直接一步轉移到
(
),而是指
可以通過有限的
步轉移到達
(
)。馬氏鏈的任何兩個狀態是連通的含義是指存在一個
, 使得矩陣
中的任何一個元素的數值都大於零。
-
我們用
表示在馬氏鏈上跳轉第
步后所處的狀態,如果
存在,很容易證明以上定理的第二個結論。由於
上式兩邊取極限就得到
從初始概率分布 出發,我們在馬氏鏈上做狀態轉移,記
的概率分布為
, 則有
由馬氏鏈收斂的定理, 概率分布將收斂到平穩分布
。假設到第
步的時候馬氏鏈收斂,則有
所以 都是同分布的隨機變量,當然他們並不獨立。如果我們從一個具體的初始狀態
開始,沿着馬氏鏈按照概率轉移矩陣做跳轉,那么我們得到一個轉移序列
由於馬氏鏈的收斂行為,
都將是平穩分布
的樣本。
*** Markov Chain Monte Carlo***
對於給定的概率分布,我們希望能有便捷的方式生成它對應的樣本。由於馬氏鏈能收斂到平穩分布, 於是一個很的漂亮想法是:如果我們能構造一個轉移矩陣為
的馬氏鏈,使得該馬氏鏈的平穩分布恰好是
, 那么我們從任何一個初始狀態
出發沿着馬氏鏈轉移, 得到一個轉移序列
, 如果馬氏鏈在第
步已經收斂了,於是我們就得到了
的樣本
。
這個絕妙的想法在1953年被 Metropolis想到了,為了研究粒子系統的平穩性質, Metropolis 考慮了物理學中常見的波爾茲曼分布的采樣問題,首次提出了基於馬氏鏈的蒙特卡羅方法,即Metropolis算法,並在最早的計算機上編程實現。Metropolis 算法是首個普適的采樣方法,並啟發了一系列 MCMC方法,所以人們把它視為隨機模擬技術騰飛的起點。 Metropolis的這篇論文被收錄在《統計學中的重大突破》中, Metropolis算法也被遴選為二十世紀的十個最重要的算法之一。
我們接下來介紹的MCMC 算法是 Metropolis 算法的一個改進變種,即常用的 Metropolis-Hastings 算法。由上一節的例子和定理我們看到了,馬氏鏈的收斂性質主要由轉移矩陣決定, 所以基於馬氏鏈做采樣的關鍵問題是如何構造轉移矩陣
,使得平穩分布恰好是我們要的分布
。如何能做到這一點呢?我們主要使用如下的定理。
定理:[細致平穩條件] 如果非周期馬氏鏈的轉移矩陣和分布
滿足
(1)
則 是馬氏鏈的平穩分布,上式被稱為細致平穩條件(detailed balance condition)。
其實這個定理是顯而易見的,因為細致平穩條件的物理含義就是對於任何兩個狀態, 從
轉移出去到
而丟失的概率質量,恰好會被從
轉移回
的概率質量補充回來,所以狀態
上的概率質量
是穩定的,從而
是馬氏鏈的平穩分布。數學上的證明也很簡單,由細致平穩條件可得
由於 是方程
的解,所以
是平穩分布。
假設我們已經有一個轉移矩陣為馬氏鏈(
表示從狀態
轉移到狀態
的概率,也可以寫為
或者
), 顯然,通常情況下
也就是細致平穩條件不成立,所以 不太可能是這個馬氏鏈的平穩分布。我們可否對馬氏鏈做一個改造,使得細致平穩條件成立呢?譬如,我們引入一個
, 我們希望
(2)
取什么樣的 以上等式能成立呢?最簡單的,按照對稱性,我們可以取
於是(*)式就成立了。所以有
(3)
於是我們把原來具有轉移矩陣的一個很普通的馬氏鏈,改造為了具有轉移矩陣
的馬氏鏈,而
恰好滿足細致平穩條件,由此馬氏鏈
的平穩分布就是
!
在改造 的過程中引入的
稱為接受率,物理意義可以理解為在原來的馬氏鏈上,從狀態
以
的概率轉跳轉到狀態
的時候,我們以
的概率接受這個轉移,於是得到新的馬氏鏈
的轉移概率為
。
馬氏鏈轉移和接受概率
假設我們已經有一個轉移矩陣Q(對應元素為), 把以上的過程整理一下,我們就得到了如下的用於采樣概率分布
的算法。
上述過程中 說的都是離散的情形,事實上即便這兩個分布是連續的,以上算法仍然是有效,於是就得到更一般的連續概率分布
的采樣算法,而
就是任意一個連續二元概率分布對應的條件分布。
以上的 MCMC 采樣算法已經能很漂亮的工作了,不過它有一個小的問題:馬氏鏈在轉移的過程中的接受率
可能偏小,這樣采樣過程中馬氏鏈容易原地踏步,拒絕大量的跳轉,這使得馬氏鏈遍歷所有的狀態空間要花費太長的時間,收斂到平穩分布
的速度太慢。有沒有辦法提升一些接受率呢?
假設 , 此時滿足細致平穩條件,於是
上式兩邊擴大5倍,我們改寫為
看,我們提高了接受率,而細致平穩條件並沒有打破!這啟發我們可以把細致平穩條件(**) 式中的 同比例放大,使得兩數中最大的一個放大到1,這樣我們就提高了采樣中的跳轉接受率。所以我們可以取
於是,經過對上述MCMC 采樣算法中接受率的微小改造,我們就得到了如下教科書中最常見的 Metropolis-Hastings 算法。
對於分布 ,我們構造轉移矩陣
使其滿足細致平穩條件
此處 並不要求是一維的,對於高維空間的
,如果滿足細致平穩條件
那么以上的 Metropolis-Hastings 算法一樣有效。
1.2.1 ✨重要理解✨
馬氏鏈:
MCMC的隨機變量序列是\(X\)。\(X\)中有狀態(都是隨機變量):\(x_1\),\(x_2\),\(x_3\)......,有限或者無限可列個。
用時間\(t\)表示\(X\)中的第幾個狀態,寫作\(X_t\),\(X_t\)可以是\(x_1\),\(x_2\),\(x_3\)......中的任意一個,且遵循\(t\)時刻\(x\)的概率分布,每個時刻\(x\)的概率分布都是不同的。如,隨機變量序列\(X\)={\(X_1\)=\(x_2\),\(X_2\)=\(x_1\),\(X_3\)=\(x_1\),\(X_4\)=\(x_3\),\(X_5\)=\(x_3\)},\(X_1\)的概率分布是\(π(x)\)注意大小寫。
狀態轉移矩陣:
狀態轉移陣\(P_{x_ix_j}\)其概率是從隨機變量\(x_1\),\(x_2\),\(x_3\)......中相互轉換的概率,而不是\(X_1\),\(X_2\),\(X_3\)......之間的轉移概率。簡寫為\(P_{ij}\)。
1.3 Gibbs Sampling
對於高維的情形,由於接受率 的存在(通常
), 以上 Metropolis-Hastings 算法的效率不夠高。能否找到一個轉移矩陣Q使得接受率
呢?我們先看看二維的情形,假設有一個概率分布
, 考察
坐標相同的兩個點
,我們發現
所以得到
(4)
即
基於以上等式,我們發現,在 這條平行於
軸的直線上,如果使用條件分布
做為任何兩個點之間的轉移概率,那么任何兩個點之間的轉移滿足細致平穩條件。同樣的,如果我們在
這條直線上任意取兩個點
,也有如下等式
平面上馬氏鏈轉移矩陣的構造
於是我們可以如下構造平面上任意兩點之間的轉移概率矩陣Q
有了如上的轉移矩陣 Q, 我們很容易驗證對平面上任意兩點 , 滿足細致平穩條件
於是這個二維空間上的馬氏鏈將收斂到平穩分布 。而這個算法就稱為 Gibbs Sampling 算法,是 Stuart Geman 和Donald Geman 這兩兄弟於1984年提出來的,之所以叫做Gibbs Sampling 是因為他們研究了Gibbs random field, 這個算法在現代貝葉斯分析中占據重要位置。
二維Gibbs Sampling 算法中的馬氏鏈轉移
以上采樣過程中,如圖所示,馬氏鏈的轉移只是輪換的沿着坐標軸 軸和
軸做轉移,於是得到樣本
馬氏鏈收斂后,最終得到的樣本就是
的樣本,而收斂之前的階段稱為 burn-in period。額外說明一下,我們看到教科書上的 Gibbs Sampling 算法大都是坐標軸輪換采樣的,但是這其實是不強制要求的。最一般的情形可以是,在
時刻,可以在
軸和
軸之間隨機的選一個坐標軸,然后按條件概率做轉移,馬氏鏈也是一樣收斂的。輪換兩個坐標軸只是一種方便的形式。
以上的過程我們很容易推廣到高維的情形,對於(***) 式,如果 變為多維情形
,可以看出推導過程不變,所以細致平穩條件同樣是成立的
(5)
此時轉移矩陣 Q 由條件分布 定義。上式只是說明了一根坐標軸的情形,和二維情形類似,很容易驗證對所有坐標軸都有類似的結論。所以
維空間中對於概率分布
可以如下定義轉移矩陣
- 如果當前狀態為
,馬氏鏈轉移的過程中,只能沿着坐標軸做轉移。沿着
這根坐標軸做轉移的時候,轉移概率由條件概率
定義;
- 其它無法沿着單根坐標軸進行的跳轉,轉移概率都設置為 0。
於是我們可以把Gibbs Smapling 算法從采樣二維的 推廣到采樣
維的
以上算法收斂后,得到的就是概率分布的樣本,當然這些樣本並不獨立,但是我們此處要求的是采樣得到的樣本符合給定的概率分布,並不要求獨立。同樣的,在以上算法中,坐標軸輪換采樣不是必須的,可以在坐標軸輪換中引入隨機性,這時候轉移矩陣
中任何兩個點的轉移概率中就會包含坐標軸選擇的概率,而在通常的 Gibbs Sampling 算法中,坐標軸輪換是一個確定性的過程,也就是在給定時刻
,在一根固定的坐標軸上轉移的概率是1。
2. 所需工具庫
3. python實現
python工具庫: