馬爾可夫過程
- 無后效性隨機過程
- 定義:\(t_n\)時刻的狀態\(x_n\)的條件分布,僅僅與前一個狀態\(x_{n-1}\)有關,即\(P(x_n|x_1,\cdots,x_{n-1})=p(x_n|x_{n-1})\)
- 時間和狀態的取值都是離散的馬爾可夫過程稱為馬爾可夫鏈
隱馬爾可夫模型
隱馬爾可夫模型\(\lambda\)可以用三元符號表示
其中,\(A\)是狀態轉移概率矩陣,\(B\)是觀測概率矩陣,\(\pi\)是初始狀態概率向量
- 包括概率計算問題、預測問題、學習問題三個基本問題:
- 概率計算問題:給定模型\(\lambda\),計算觀測序列\(O\)出現的概率,可用前向和后向算法求解
- 預測問題:也稱為解碼問題,已知模型參數和觀測序列\(O\),計算最可能的隱狀態\(I\),可用維特比算法
- 學習問題:給定觀測序列\(O\),估計模型\(\lambda\)的參數,可使用Baum-Welch算法進行參數學習
- 中文分詞
- 有監督:對語料進行標注得到語料所有的隱狀態信息,然后使用簡單計數法對模型概率分布進行極大似然估計
- 無監督:Baum-Welch算法,同時優化隱狀態序列和模型對應概率分布
- 對聯合概率\(P(x,y)\)進行建模
概率計算問題
前向算法
前向概率定義:
給定模型\(\lambda\),定義到時刻\(t\)部分觀測序列為\(o_1,o_2,\cdots,o_t\)且狀態為\(q_i\)的概率為前向概率,記作:
觀測序列概率的前向算法:
-
輸入:模型\(\lambda\),觀測序列\(O\)
-
輸出:觀測序列概率\(P(O|\lambda)\)
- 初始化前向概率,是初始時刻的狀態\(i_1=q_i\)和觀測\(o_1\)的聯合概率
\[\alpha_1(i)=\pi_ib_i(o_1),\qquad i=1,2,\cdots,N \]- 遞推:對\(t=1,2,\cdots,T-1\),
\[\alpha_{t+1}(i)=\left[\sum \limits_{j=1}^N \alpha_t(j)a_{ji}\right]b_i(o_{t+1}) \]其中,\(a_{ji}\)是轉移概率,\(b_i\)是發射概率
- 終止
\[P(O|\lambda)=\sum\limits_{i=1}^N \alpha_T(i) \]
后向算法
后向概率定義:
給定模型\(\lambda\),定義在時刻\(t\)狀態為\(q_i\)的條件下,從\(t+1\)到\(T\)的部分觀測序列為\(o_{t+1},o_{t+2},\cdots,o_T\)的概率為后向概率,記作:
觀測序列概率的后向算法:
-
輸入:模型\(\lambda\),觀測序列\(O\)
-
輸出:觀測序列概率\(P(O|\lambda)\)
- 初始化后向概率,對最終時刻的所有狀態\(q_i\)規定\(\beta_T(i)=1\)
\[\beta_T(i)=1,\qquad i=1,2,\cdots,N \]- 遞推:對\(t=T-1,T-2,\cdots,1\),
\[\beta_{t}(i)=\sum \limits_{j=1}^N a_{ij}b_j(o_{t+1})\beta_{t+1}(i) \]其中,\(a_{ij}\)是轉移概率,\(b_j\)是發射概率
- 終止
\[P(O|\lambda)=\sum\limits_{i=1}^N \pi_ib_i(o_1)\beta_1(i) \]
學習問題
監督學習算法
假設已給訓練數據集包含\(S\)個長度相同的觀測序列和對應的狀態序列\(\{(O_1,I_1),\cdots,(O_S,I_S)\}\),那么模型參數可以用極大似然估計求得
但是人工標注數據代價高,所以會利用非監督學習方法
Baum-Welch算法
此時隱馬爾可夫模型可以看做一個含有隱變量的概率模型
其中,\(I\)是狀態序列,不可觀測。它的參數學習可以用EM算法實現。
-
確定完全數據的對數似然函數
所有觀測數據寫成\(O=(o_1,o_2,\cdots,o_T)\),所有隱數據寫成\(I=(i_1,i_2,\cdots,i_T)\),完全數據是\((O,I)=(o_1,\cdots,o_T,i_1,\cdots,i_T)\)。完全數據的對數似然函數是\(\log P(O,I|\lambda)\) -
EM算法的E步:求\(Q\)函數\(Q(\lambda,\overline{\lambda})=\sum_I[\log P(O,I|\lambda)|O,\overline{\lambda}]\)
\[Q(\lambda,\overline{\lambda})=\sum_I\log P(O,I|\lambda)P(O,I|\overline{\lambda}) \]其中\(\overline{\lambda}\)是當前參數估計值,\(\lambda\)是要最大化的參數。
\[P(O,I|\lambda)=\pi_{i_1}b_{i_1}(o_1)a_{i_1 i_2}b_{i_2}(o_2)\cdots a_{i_{T-1}i_T}b_{i_T}(o_T) \]於是,\(Q\)函數可以寫成:
\[\begin{aligned} Q(\lambda,\overline{\lambda}) &=\sum_I \log \pi_{i_1}P(O,I|\overline{\lambda}) + \sum_I \left(\sum \limits_{t=1}^{T-1}\log a_{i_t i_{t+1}}\right)P(O,I|\overline{\lambda}) + \sum_I \left(\sum \limits_{t=1}^{T}\log b_{i_t}(o_t)\right)P(O,I|\overline{\lambda}) \end{aligned}\] -
EM算法的M步:極大化\(Q\)函數求模型參數\(A,B,\pi\)。由於要極大化的參數單獨出現在三項中,所以只需對各項分別極大化,利用拉格朗日乘子法,得到\(\pi_i,a_{ij},b_j(k)\)
預測問題
近似算法
在每個時刻\(t\)選擇在該時刻最有可能出現的狀態\(i_t^*\),從而得到一個狀態序列,將它作為預測的結果
優點是計算簡單,缺點是不能保證預測狀態序列整體是最有可能的序列,因為預測的狀態序列可能有實際不發生的部分,可能存在轉移概率為0的相鄰狀態。
維特比算法
用動態規划求概率最大路徑(最優路徑)。最優路徑具有這樣的特性:如果最優路徑在時刻\(t\)通過節點\(i^*_t\),那么這一路徑從節點\(i^*_t\)到終點\(i^*_T\)的部分路徑,對於從\(i^*_t\)到\(i^*_T\)的所有可能的部分路徑來說,必須是最優的。根據這一原理,我們只需從時刻\(t=1\)開始,遞推地計算在時刻\(t\)狀態為\(i\)的各條部分路徑的最大概率,直到得到時刻\(t=T\)狀態為\(i\)的各條路徑的最大概率。時刻\(t=T\)的最大概率即為最優路徑的概率\(P^*\),最優路徑的終結點\(i^*_T\)也同時得到。之后,從后向前逐步求得節點,得到最優路徑。
最大熵馬爾可夫模型
-
去除了隱馬爾可夫模型中觀測狀態相互獨立的假設,考慮了整個觀測序列
-
直接對標注的后驗概率\(P(y|x)\)進行建模
-
最大熵馬爾可夫模型建模如下
\[p(x_{1\cdots n}|y_{1\cdots n})=\prod \limits_{i=1}^n p(x_i|x_{i-1}, y_{1 \cdots n}) \]對於\(p(x_i)\),不僅考慮了\(p(x_{i-1})\),還考慮了\(y_{1\cdots n}\)
其中\(p(x_i|x_{i-1},y_{1\cdots n})\)會在局部歸一化,即枚舉\(x_i\)的所有取值,計算公式為
\[p(x_i|x_{i-1},y_{1 \cdots, n})=\frac{exp(F(x_i, x_{i-1}, y_{1\cdots n}))}{Z(x_{i-1}, y_{1 \cdots n})} \]其中\(Z\)為歸一化因子\(Z(x_{i-1}, y_{1 \cdots n}) = \sum_{x_i}\exp(F(x_i, x_{i-1}, y_{1 \cdots n}))\),\(F\)為\(x_i, x_{i-1}, y_{1,\cdots n}\)所有特征線性相加
-
標注偏置問題:由於局部歸一化,隱狀態會傾向於轉移到那些后續狀態可能更少的狀態上去,以提高整體的后驗概率
-
條件隨機場使用全局歸一化
\[p(x_{1\cdots n}|y_{1\cdots n})=\frac{1}{Z(y_{1\cdots n})}\prod \limits_{i=1}^n \exp\{F(x_i|x_{i-1}, y_{1 \cdots n})\} \]