本文主要是學習筆記,一方面是為了加強理解,感覺在做筆記過程中理解起來更簡單,另一方面為了加強記憶,建立大腦關於‘隱馬爾可夫模型’的神經網絡
1. 模型場景
在介紹隱馬爾可夫模型之前先來看個例子:
假設有4個盒子,每個盒子里面都裝有紅、白兩種顏色的求,盒子里面的紅包球數量如下:
按照下面的方式抽球,產生一個球的顏色的觀測序列:
- (1)開始,從4個盒子里以等概率隨機選取一個盒子,從這個盒子里隨機抽出一個球,記錄其顏色,然后放回
- (2)然后,從當前盒子隨機轉移到下一個盒子,規則是:如果當前盒子是盒子1,那么下一個盒子一定是盒子2,如果當前盒子是盒子2或3,那么分別以概率0.4和0.6轉移到左邊或右邊的盒子,如果當前是盒子4,那么各以0.5的概率停留在盒子4或轉移到盒子3
- (3)確定轉移的盒子后,再從這個盒子里隨機抽出一個球,記錄其顏色,放回
- (4)如此下去,重復進行5次,得到一個球的顏色的觀測序列:$$O = (紅,紅,白,白,紅)$$
在這個過程中,觀察者只能觀測到球的顏色的序列,觀測不到球是從哪個盒子取出的,即觀測不到盒子的序列
2. 隱馬爾可夫模型三要素
上面的例子是一個典型的隱馬爾可夫模型。有兩個隨機序列,一個是盒子的序列(狀態序列),一個是球的顏色的觀測序列,前者是隱藏的,只有后者是可觀測的。
隱馬爾可夫模型有三要素,表示為$$\lambda = (A, B, \pi)$$
注:A為狀態轉移矩陣,B為觀測概率分布矩陣,\(\pi 為初始狀態概率向量\)
通過上面的例子,來分別計算下A,B和\(\pi\)的值
狀態轉移概率分布矩陣:
\(A[ij]\)表示從狀態i轉移到狀態j的概率
觀測概率分布矩陣:
\(B[i0]\)表示盒子i中取出紅球的概率,\(B[i1]\)表示盒子i中取出白球的概率
初始概率分布:
3. 隱馬爾可夫模型的三個基本問題
(1) 概率計算問題
給定模型\(\lambda = (A,B,\pi)\)和觀測序列\(O = (o_1,o_2,...,0_T)\),計算在模型\(\lambda\)下觀測模型出現的概率\(P(O|\lambda)\)
(2) 學習問題
已知觀測序列\(O = (o_1,o_2,...,0_T)\),估計模型\(\lambda = (A,B,\pi)\)參數,使得在該模型下觀測序列概率\(P(O|\lambda)\)最大,用極大似然估計的方法估計參數
(3) 預測問題,也稱為解碼問題
已知模型\(\lambda = (A,B,\pi)\)和觀測序列\(O = (o_1,o_2,...,0_T)\),求對給定觀測序列條件概率\(P(O|\lambda)\)最大的狀態序列\(I = (i_1,i_2,...,i_T)\)。即給定觀測序列,求最有可能的對應的狀態序列
下面分別介紹針對不同問題的解決算法
4. 概率計算算法
4.1 問題描述
給定模型\(\lambda = (A,B,\pi)\)和觀測序列\(O = (o_1,o_2,...,0_T)\),計算在模型\(\lambda\)下觀測模型出現的概率\(P(O|\lambda)\)
4.2 前向算法
(1) 計算狀態t1下觀測為紅球的情況,注:序列和矩陣索引都從1開始
第一次從盒子1選擇紅球的情況:
第一次從盒子2選擇紅球的情況:
第一次從盒子3選擇紅球的情況:
第一次從盒子4選擇紅球的情況:
(2) 計算狀態t2下觀測為紅球的情況,及第二次選擇為紅球的情況
第二次從盒子1選擇紅球的情況:
第二次從盒子2選擇紅球的情況:
第二次從盒子3選擇紅球的情況:
第二次從盒子4選擇紅球的情況:
...
通過上述規律我們得到公式:
(1) 初值
(2) 遞推
(3) 終止
4.3 后向算法
顧名思義,后向算法就是根據t時刻的觀測序列概率算出t-1時刻觀測序列的概率
令在t時刻狀態為\(q_i\)的條件下,從t+1到T的觀測序列的概率為\(\beta_t(i)\),則$$\beta_t(i) = P(o_{t+1},o_{t+2},...,o_T|i_t=q_i,\lambda)$$
要特別注意\(\beta_t(i)\)的定義,后面才能很好的理解
(1) 對最終時刻的所有狀態\(q_i\)規定$$\beta_T(i) = 1$$
(2) $$\beta_t(i) = \sum_{j=1}^N a_{ij}b_j(0_{t+1})\beta_{t+1}(j)$$
(3) $$P(O|\lambda) = \sum_{i=1}^N\pi_ib_i(o_1)\beta_1(i)$$
5. 學習算法
5.1 問題描述
已知觀測序列\(O = (o_1,o_2,...,0_T)\),估計模型\(\lambda = (A,B,\pi)\)參數,使得在該模型下觀測序列概率\(P(O|\lambda)\)最大,用極大似然估計的方法估計參數
隱馬爾可夫模型的學習,根據訓練數據集是包括觀測序列和對應的狀態序列還是只有觀測序列,可以分別由監督學習與無監督學習實現
對於監督學習,由於數據集包含了觀測序列和對應的狀態序列,這樣就可以直接根據利用數據集預估模型參數
對於非監督學習,可以使用EM算對隱參數進行學習。EM算法參考附錄
6. 預測算法
6.1 問題描述
已知模型\(\lambda = (A,B,\pi)\)和觀測序列\(O = (o_1,o_2,...,0_T)\),求對給定觀測序列條件概率\(P(O|\lambda)\)最大的狀態序列\(I = (i_1,i_2,...,i_T)\)。即給定觀測序列,求最有可能的對應的狀態序列
6.2 維特比算法
維特比算法實際是用動態規划解隱馬爾可夫模型預測問題,即用動態規划求概率最大路徑
定義兩個變量:
\(\delta_t(i)\)表示在時刻t狀態為i的所有單個路徑中的最大概率值
\(\psi_t(i)\)表示在時刻t狀態為i的所有單個路徑中概率最大的路徑的第t-1個節點
(1) 初始化$$\delta_1(i) = \pi_ib_i(o_1)$$
(2) 遞推,對t=2,3,...,T
(3) 終止
7. 附:EM算法
7.1 EM算法定義
輸入:觀測變量數據X,隱變量數據Z,聯合分布\(P(X,Z|\theta)\),也稱為完全數據,這樣更好理解點
輸出:模型參數\(\theta\)
(1)選擇初始模型參數\(\theta^{(0)}\),開始迭代
(2)E步:記\(\theta^{i}\)為第i次迭代參數\(\theta\)的估計值,計算在第i次迭代的期望$$Q(\theta,\theta^{(i)}) = E(logP(x,z|\theta)|x,\theta^{(i)}))=\int_zlogp(x,z|\theta)p(z|\theta^{(i)})$$
(3)M步:求使\(\theta^{(i+1)} = Q(\theta,\theta^{(i)})的最大值\)
(4)重復第(2)步和第(3)步
7.2 EM算法幾點說明
(1)參數的初值可以任意選擇,但需注意EM算法對初始值是敏感的
(2)E步求\(Q(\theta,\theta^{(i)})\),Q函數中的Z是為隱變量,X是觀測數據,\(Q(\theta,\theta^{(i)})\)中的第一個變元表示要極大化的參數,第二個變元表示參數的當前估計值,每次迭代實際在求Q的極大值
(3)給出停止迭代的條件,一般是對較小的正數\(\xi_i,\xi_2\),若滿足\(||\theta^{(i+1)} - \theta^{(i)} < \xi_i||或||Q(\theta^{(i+1)},\theta^{(i)})-Q(\theta^{(i)},\theta^{(i)})|| < \xi_2\)
7.3 EM算法推導
由於log函數為凹函數,則$$L(\theta) \geq \int_zlog\frac{p(x,z|\theta)}{p(z|\theta^{(i)})}p(z|\theta^{(i)})dz$$
由於減式后面與模型參數\(\theta\)無關,\(P(z|\theta^{(i)})是已知的\),所以只需關注減式前面的式子,令$$Q(\theta,\theta^{(i)})=\int_zlogp(x,z|\theta)p(z|\theta^{(i)})$$
和算法定義中的步驟(2)相同,將原L的優化問題轉換為求原問題下界\(Q(\theta,\theta^{(i)})\)的最大值
因此,任何可以使\(Q(\theta,\theta^{(i)})\)增大的\(\theta\)都可以使\(L(\theta)\)增大,為了使\(L(\theta)\)有盡可能的增長,選擇使\(Q(\theta,\theta^{(i)})\)達到最大,即$$\theta^{(i+1)} = argmaxQ(\theta,\theta^{(i)})$$
7.4 EM算法收斂性
定理1:\(設P(x|\theta)為觀測數據的似然函數,\theta^{(i)}為EM算法得到的參數估計序列,P(x|\theta^{(i)})為對應的似然函數序列,則P(x|\theta^{(i)})單調遞增\)
定理2:\(設L(\theta) = logP(x|\theta)為觀測數據的似然函數,\theta^{(i)}為EM算法得到的參數估計序列,L(\theta^{(i)})為對應的似然函數序列\)
(1)\(如果P(x|\theta)有上界,則L(\theta^{(i)})收斂到某一值L^*\)
(2)\(在函數Q(\theta,\theta^{(i)})與L(\theta)滿足一定條件下,由EM算法得到的參數估計序列\theta^{(i)}的收斂值\theta^*是L(\theta)的穩定值\)
以上為EM算法的'官方'說明,若不理解可以參考博客https://www.jianshu.com/p/1121509ac1dc
最后針對隱馬爾可夫模型拋出拋出兩個問題:
(1) 如何對中文分詞問題用隱馬爾可夫模型進行建模和訓練?
(2) 最大熵馬爾可夫模型為什么會產生標注偏置問題?如何解決?
參考資料:
李航老師的《統計學習方法》