第九章 隐马尔科夫模型HMM
文章目錄
- 1 隱馬爾科夫模型定義
- 2 概率計算算法
- 2.1 前向概率
- 2.2 概率計算
- 3 學習算法
- 3.1 EM算法
- 3.2EM在HMM
- 4 預測算法
1 隱馬爾科夫模型定義
隱馬爾科夫模型是一個seq2seq模型。例如詞性標注。
| 狀態序列 | 代詞 | 動詞 | 名詞 |
| 觀察序列 | 我 | 愛 | 機器學習 |
能夠看到的,例如詞語是觀察序列。看不到的部分是狀態序列,例如詞性。
狀態集合:Q={q1,q2,...qN}Q=\{q_1,q_2,...q_N\}Q={q1?,q2?,...qN?},∣Q∣=N|Q|=N∣Q∣=N
觀察集合:V={v1,v2,...vM}V=\{v_1,v_2,...v_M\}V={v1?,v2?,...vM?},∣V∣=M|V|=M∣V∣=M
強定義:狀態是觀測不到的,類比于心理活動。觀察是可以看到的,類比于面部表情。
狀態序列:I={i1,i2,...it...iT}I=\{i_1,i_2,...i_t...i_T\}I={i1?,i2?,...it?...iT?}, it∈Qi_t\in Qit?∈Q, (t=1,2,…T)
觀察序列:O={o1,o2,...ot,....oT}O=\{o_1,o_2,...o_t,....o_T\}O={o1?,o2?,...ot?,....oT?}, oi∈Vo_i\in Voi?∈V, (t=1,2,…T)
- 序列與集合是不同的。序列中的元素是有前后順序的。
- 總的時刻用T表示
- 強定義:每個時刻的觀察只與這個時刻的狀態有關系。(心理活動影響了面部表情)
狀態轉移矩陣:是從一個狀態轉移到另外一個狀態的概率。例如從代詞轉到動詞的概率。A=[aij]N?NA=[a_{ij}]_{N*N}A=[aij?]N?N?,表示從狀態i到狀態j的轉換概率。在t時刻,處于狀態qiq_iqi?條件下,在t+1時刻,轉移到狀態qjq_jqj?的概率aij=P(it+1=qj∣it=qi)a_{ij}=P(i_{t+1}=q_j|i_t=q_i)aij?=P(it+1?=qj?∣it?=qi?)
觀測概率矩陣:B=[bj(k)]N?MB=[b_{j}(k)]_{N*M}B=[bj?(k)]N?M?。在t時刻處于狀態qjq_jqj?下生成觀測vkv_kvk?的概率bj(k)=P(ot=vk∣it=qj)b_j(k)=P(o_t=v_k|i_t=q_j)bj?(k)=P(ot?=vk?∣it?=qj?)
初始概率向量:π=(πi)\pi=(\pi_i)π=(πi?),在t=1的時刻,狀態處于qiq_iqi?的概率。πi=P(i1=qi)\pi_i=P(i_1=q_i)πi?=P(i1?=qi?),π\piπ是一個N維向量。
隱馬爾科夫模型:λ=(A,B,π)\lambda = (A,B,\pi)λ=(A,B,π)
以上可以成立的假設是:
1 ?次?爾科夫性假設:在任意時刻t的狀態只依賴于t-1時刻的狀態。
P(it∣it?1,,ot?1,...i1,o1)=P(it∣it?1)P(i_t|i_{t-1,},o_{t-1},...i_1,o_1)=P(i_t|i_{t-1})P(it?∣it?1,?,ot?1?,...i1?,o1?)=P(it?∣it?1?)
2 觀測獨立性假設:任意時刻t的觀測只與t時刻的狀態有關。
P(ot∣it,it?1...i1,ot?1,ot?2...o1)=P(ot∣it)P(o_t|i_t,i_{t-1}...i_1,o_{t-1},o_{t-2}...o_1)=P(o_t|i_{t})P(ot?∣it?,it?1?...i1?,ot?1?,ot?2?...o1?)=P(ot?∣it?)
觀測序列生成算法
輸入:隱馬爾科夫模型λ=(A,B,π)\lambda=(A,B,\pi)λ=(A,B,π),觀測序列長度T
輸出:觀測序列O=o1,o2,...,oTO={o_1,o_2,...,o_T}O=o1?,o2?,...,oT?
HMM三個問題
1 概率計算,已知λ=(A,B,π)\lambda=(A,B,\pi)λ=(A,B,π)和O=o1,o2,...,oTO={o_1,o_2,...,o_T}O=o1?,o2?,...,oT?,計算P(O∣λ)P(O|\lambda)P(O∣λ)
在模型已知的情況下,出現觀測序列的概率
2 學習:已知O=o1,o2,...,oTO={o_1,o_2,...,o_T}O=o1?,o2?,...,oT?,計算λ?=argmaxP(O∣λ)\lambda^{*}= argmax P(O|\lambda)λ?=argmaxP(O∣λ)
已知觀測序列,計算模型,計算得到的模型應該是使得觀測序列的概率最大。
3 預測/編碼問題:已知λ=(A,B,π)\lambda=(A,B,\pi)λ=(A,B,π)和O=o1,o2,...,oTO={o_1,o_2,...,o_T}O=o1?,o2?,...,oT?,計算I?=argmaxP(I∣Oλ)I^*=argmaxP(I|O\lambda)I?=argmaxP(I∣Oλ)
已知模型和觀測序列,計算概率最大的狀態序列。
2 概率計算算法
2.1 前向概率
給定模型λ\lambdaλ,時刻t部分觀測序列為o1,o2,...,oto_1,o_2,...,o_to1?,o2?,...,ot?且狀態為qiq_iqi?的概率
遞推公式:
這一步是簡寫,用O1tO^t_1O1t? 表示從1到t時刻的觀察序列。
當it=qii_t=q_iit?=qi?的時候,在t?1t-1t?1時刻的狀態可能為q1,q2,...qNq_1,q_2,...q_Nq1?,q2?,...qN?,那么P(it=qi)=P(it=qi∣it?1=q1)+P(it=qi∣it?1=q2)+...+P(it=qi∣it?1=qN)P(i_t=q_i)=P(i_t=q_i|i_{t-1}=q_1)+P(i_t=q_i|i_{t-1}=q_2)+...+P(i_t=q_i|i_{t-1}=q_N)P(it?=qi?)=P(it?=qi?∣it?1?=q1?)+P(it?=qi?∣it?1?=q2?)+...+P(it?=qi?∣it?1?=qN?),根據加法公式得到這一步遞推。
這一步利用的是乘法公式:P(AB)=P(A|B)P(B)
在這里A=it=qi,oti_t=q_i,o_tit?=qi?,ot?,B=it?1=qj,o1t?1i_{t-1}=q_j,o^{t-1}_1it?1?=qj?,o1t?1?
根據定義P(it?1=qj,o1t?1)=αt?1(j)P(i_{t-1}=q_j,o^{t-1}_1)=\alpha_{t-1}(j)P(it?1?=qj?,o1t?1?)=αt?1?(j)
能夠省略公式中的o1t?1o^{t-1}_1o1t?1?是因為假設,t時刻的狀態只與t-1時刻的狀態有關,t時刻的觀察只與t時刻的狀態有關。所以可以去掉。
這里同樣是利用乘法規則做變換。:P(AB)=P(A|B)P(B)
在這里A=oto_tot?,B=it=qii_{t}=q_iit?=qi?
這一步替換是根據A方程和B方程的定義來的。
2.2 概率計算
具體計算過程可以通過前向或者后向計算得到。
3 學習算法
已知O=o1,o2,...,oTO={o_1,o_2,...,o_T}O=o1?,o2?,...,oT?,計算λ?=argmaxP(O∣λ)\lambda^{*}= argmax P(O|\lambda)λ?=argmaxP(O∣λ)
已知觀測序列,計算模型,計算得到的模型應該是使得觀測序列的概率最大。
EM算法是一個一般算法,涉及兩類數據,一類數據已知,一類數據未知的時候,可以用EM。
3.1 EM算法
EM算法中觀測變量Y 對應 觀測序列
EM算法中隱隨機變量Z 對應 狀態序列
含有隱變量 的概率模型,?標是極?化觀測變量 關于參數 的對數似然函數,即maxθL(θ)max_{\theta}L(\theta)maxθ?L(θ)
其中
L(θ)=logP(Y∣θ)L(\theta)=logP(Y|\theta)L(θ)=logP(Y∣θ)
=log∑ZP(Y,Z∣θ)=log\sum_ZP(Y,Z|\theta)=log∑Z?P(Y,Z∣θ)(邊緣概率到聯合概率)
=log∑ZP(Y∣Z,θ)P(Z∣θ)=log\sum_ZP(Y|Z,\theta)P(Z|\theta)=log∑Z?P(Y∣Z,θ)P(Z∣θ) (乘法規則)
對數似然函數𝐿 (𝜃)與第𝑖次迭代后的對數似然函數L(θ(i))L(\theta^{(i)})L(θ(i))的差 :
根據Jensen不等式
將上面的式子做以下變形,
得到:L(θ)>=B(θ,θ(i))L(\theta)>=B(\theta,\theta^{(i)})L(θ)>=B(θ,θ(i)),B(θ,θ(i))B(\theta,\theta^{(i)})B(θ,θ(i))是一個下界函數。如果不斷找到下界函數的最大值,就近似找到了上界函數的最大值。
記Q=argmaxθ(∑ZP(Z∣Y,θ(i))logP(Y,Z∣θ))Q=arg max_{\theta}(\sum_ZP(Z|Y,\theta^{(i)})logP(Y,Z|\theta))Q=argmaxθ?(∑Z?P(Z∣Y,θ(i))logP(Y,Z∣θ))
3.2EM在HMM
對于HMM而言
θ\thetaθ就是(A,B,π)
Z就是狀態序列I
Y就是觀測序列O
隱馬爾科夫模型是含有隱變量的概率模型:P(O∣λ)=∑P(O∣I,λ)P(I∣λ)P(O|\lambda)=\sum P(O|I,\lambda)P(I|\lambda)P(O∣λ)=∑P(O∣I,λ)P(I∣λ)
完全數據(O,I)=(o1,o2...oT,i1,i2,...iT)(O,I)=(o_1,o_2...o_T,i_1,i_2,...i_T)(O,I)=(o1?,o2?...oT?,i1?,i2?,...iT?)
完全數據的對數似然函數logP(O,I∣λ)logP(O,I|\lambda)logP(O,I∣λ)
Q(λ,λ?)Q(\lambda,\lambda^-)Q(λ,λ?)函數
使用Baum-Welch算法完成學習過程。
4 預測算法
已知λ=(A,B,π)\lambda=(A,B,\pi)λ=(A,B,π)和O=o1,o2,...,oTO={o_1,o_2,...,o_T}O=o1?,o2?,...,oT?,計算I?=argmaxP(I∣Oλ)I^*=argmaxP(I|O\lambda)I?=argmaxP(I∣Oλ)
已知模型和觀測序列,計算概率最大的狀態序列。
在時刻𝑡狀態為𝑖的所有單個路徑(𝑖1, 𝑖2, ? , 𝑖𝑡)中概率最?值
得到遞推公式:
這是一個動態規劃的過程。在求得δT(i)\delta_{T}(i)δT?(i)取得最大概率的i,經過倒推獲得整個I序列。
總結
以上是生活随笔為你收集整理的第九章 隐马尔科夫模型HMM的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 视觉感受排序算法
- 下一篇: HoloLens开发手记 - Unity