隱馬爾可夫模型(HMM explained)

隱馬爾可夫模型


隱馬爾可夫模型(Hidden Markov Model,HMM),是上世紀七十年代由美國數學家Leonard E. Baum等人提出來的,可以用於解決標註(tagging)問題,屬於一種生成模型(generative model),即直接生成觀測序列和狀態序列的聯合概率分佈。

1 描述

1.1 術語解釋:

  • 狀態序列(state sequence):模型假設由一個隱藏的馬爾可夫鏈生成一個不可觀測的序列,稱這個序列爲狀態序列,其中序列的每個時間步都代表着一個不可被觀測到的狀態
  • 觀測序列(observation sequence):狀態序列的每個狀態都會對應生成一個結果,這個結果是可以觀測得到的,將這個由狀態序列生成的結果序列稱爲觀測序列

1.2 形式定義

序列

  • 狀態序列:I=(i1,i2,...,iT)I = (i_1, i_2, ..., i_T)
  • 觀測序列:O=(o1,o2,...,oT)O = (o_1, o_2, ..., o_T)
    (其中T爲序列長度,也可以理解爲總的時間步)

集合

  • 狀態集合:Q={q1,q2,...,qN}Q = \{q_1, q_2, ..., q_N\}
  • 觀測結果集合:V=(v1,v2,...,vM)V = (v_1, v_2, ..., v_M)
    (其中N爲可能的狀態數,M爲可能的觀測結果數目)

概率矩陣

  • 狀態轉移概率矩陣:A=[aij]N×NA = [a_{ij}]_{N \times N}
    矩陣的每個元素代表從一個狀態qiq_i轉移到另一個狀態qjq_j的概率,即aij=Pr(it+1=qjit=qi)a_{ij} = Pr(i_{t+1} = q_j | i_{t} = q_i)
  • 觀測概率矩陣:B=[bj(k)]N×MB =[ b_j(k)]_{N \times M}
    矩陣每個元素代表從一個狀態qjq_j生成觀測結果vkv_k的概率,即bj(k)=Pr(ot=vkit=qj)b_j(k) = Pr (o_t = v_k |i_t = q_j )

初始狀態矩陣概率

  • 初始狀態概率向量: $\pi = (\pi_i) $
    向量的元素代表在第一時刻(t=1),處於狀態qiq_i的概率,即πi=Pr(i1=qi)\pi_i = Pr(i_1=q_i)

有了以上的形式定義,我們可以使用λ=(A,B,π)\lambda = (A, B, \pi)來表示模型,這三個元素可以決定一個隱馬爾可夫模型,因爲由初始狀態π\pi和狀態轉移概率矩陣AA可以確定隱藏的狀態序列II,然後通過得出的這個狀態序列II以及觀測概率矩陣BB,可以確定如何從這些狀態生成觀測結果,也就是確定觀測序列OO

2 例子

2.1 問題描述

假設有三個盒子,每個盒子裏有紅白兩種顏色的球,盒子裏的紅白球數目如下:

盒子標號 1 2 3
紅球數目 5 3 6
白球數目 5 7 4

抽取球的規則爲:首先從三個盒子裏面以概率選擇一個盒子,然後在這個盒子裏面隨機選擇一個球,記錄球的顏色後放回,並以當前盒子隨機轉移到下一個盒子。

挑選初始盒子的規則爲:0.5的概率挑選盒子1,0.25的概率挑選盒子2,0.25的概率挑選盒子3

轉移盒子的規則爲:如果當前是盒子1,則一定轉移到盒子2,如果當前是盒子2,則0.4的概率轉移到1,以0.6的概率轉移到3,如果當前爲盒子3,則以0.5的概率轉移到1,以0.5的概率轉移到2

重複這個過程五次,最後得到顏色的觀測序列爲:O={}O= \{紅, 紅, 白, 白, 紅\}。注意,這裏我們只能觀測到選出球的顏色,而盒子的序列是不可觀測的,也就是說盒子的序列爲隱藏的狀態序列。

2.2 模型定義

  • 問題的集合如下:

狀態的集合爲:Q={123},N=3Q = \{盒子1, 盒子2, 盒子3\}, N=3

觀測的集合爲:V={},M=2V = \{紅, 白\}, M=2

  • 概率矩陣:

狀態轉移概率矩陣:
A=(0100.400.60.50.50) A = \left( \begin{array}{ccc} 0 & 1 &0 \\ 0.4 & 0 & 0.6 \\ 0.5 & 0.5 & 0 \end{array} \right)

觀測概率矩陣:
B=(0.50.50.30.70.60.4) B = \left( \begin{array}{ccc} 0.5 & 0.5 \\ 0.3 & 0.7 \\ 0.6 & 0.4 \end{array} \right)

  • 初始概率向量:

π=(0.5,0.25,0.25) \pi = (0.5, 0.25, 0.25)

根據以上定義,可以確定隱馬爾可夫模型λ=(A,B,π)\lambda = (A, B, \pi)

2.3 三個基本問題

Rabiner(1989)1提出隱馬爾可夫模型有下面三個基本問題:

  1. Likelihood:即概率計算問題,給定模型λ=(A,B,π)\lambda = (A, B, \pi)和觀測序列OO,計算在模型下觀測序列出現的概率Pr(Oλ)Pr(O|\lambda)
  2. Learning:即學習問題,給定觀測序列OO,估計模型參數AA BBπ\pi
  3. Decoding:即預測問題,給定模型λ=(A,B,π)\lambda = (A, B, \pi)和觀測序列OO,求最可能的狀態序列II

問題一:Likelihood Computation

1 直接計算的方法

概率計算問題定義如下:

給定模型λ=(A,B,π)\lambda = (A, B, \pi)和觀測序列O=(o1,o2,...,oT)O = (o_1, o_2, ..., o_T),計算在模型下觀測序列出現的概率Pr(Oλ)Pr(O|\lambda)

一個最簡單的方法是按照概率公式直接計算,方法是列舉所有可能的狀態序列I=(i1,i2,...,iT)I = (i_1, i_2, ..., i_T),然後求每個狀態序列產生觀測序列的概率,最後對這些可能的狀態序列求和,就得出觀測序列的概率了。

  • 具體過程如下:

首先計算狀態序列的概率:
Pr(Iλ)=πi1ai1i2ai2i3...aiT1iT Pr(I|\lambda) = \pi_{i_1} a_{i_1 i_2} a_{i_2 i_3} ... a_{i_{T-1} i_T}

然後計算給定狀態序列下,觀測序列的概率:

Pr(OI,λ)=bi1(o1)bi2(o2)...biT(oT) Pr(O|I, \lambda) = b_{i_1}(o_1) b_{i_2}(o_2) ...b_{i_T}(o_T)

所以可以求出狀態序列和觀測序列的聯合概率(所以說HMM是生成模型):

Pr(O,Iλ)=Pr(Iλ)Pr(OI,λ)=πi1bi1(o1)ai1i2 bi(o)...aiT1iT2biT(oT) Pr(O, I|\lambda) = Pr(I|\lambda) Pr(O|I, \lambda) \\ = \pi_{i_1} b_{i_1}(o_1) a_{i_1 i_2} b_{i_2}(o_2)... a_{i_{T-1} i_T2} b_{i_T}(o_T)

最後將可能的狀態序列求和就可以得出最終的觀測序列概率:
Pr(Oλ)=IPr(Iλ)Pr(OI,λ)=i1,i2,...,iTπi1bi1(o1)ai1i2 bi(o)...aiT1iT2biT(oT) Pr(O|\lambda) = \sum_I Pr(I|\lambda) Pr(O|I, \lambda) \\ = \sum_{i_1, i_2, ..., i_T} \pi_{i_1} b_{i_1}(o_1) a_{i_1 i_2} b_{i_2}(o_2)... a_{i_{T-1} i_T2} b_{i_T}(o_T)
顯然這種方法需要遍歷T時間步的可能狀態序列,而每個時間步都可能是NN個狀態之一,所以總的計算量是O(TNT)O(TN^T)的,顯然是不可行的。

這裏引入一種動態規劃(dynamic programming,DP)的算法來解決計算量問題,稱之爲前向後向算法(forward-backward algorithm)。動態規劃算法使用表來存儲中間值以減少重複計算,以空間換時間,這裏的programming本來指的是表格的意思,DP可直譯爲動態的表格。

2 前向後向算法

1) 前向算法

定義在時刻t,給定隱馬爾可夫模型λ\lambda,觀測序列爲o1,o2,...,oto_1, o_2,...,o_t且狀態爲qiq_{i}的概率爲前向概率,即:
αt(i)=Pr(o1,o2,...,ot,qiλ) \alpha_t(i) = Pr(o_1, o_2,...,o_t,q_i| \lambda)
顯然前向概率可以遞推的求解,從而可以遞推的求出觀測序列概率P(Oλ)P(O|\lambda),算法具體過程如下:

  1. 初始化: α1(j)=πjbj(o1)\alpha_1(j) = \pi_j b_j(o_1)
  2. 遞推:αt+1(i)=[j=1Nαt(j)]bi(ot+1)\alpha_{t+1}(i) = \left[ \sum_{j=1}^{N}\alpha_t(j) \right]b_i(o_{t+1})
  3. 終止:Pr(Oλ)=i=1NαT(i)Pr(O|\lambda) = \sum_{i=1}^{N}\alpha_T(i)

2) 後向算法

定義在時刻t,給定隱馬爾可夫模型λ\lambda,狀態爲qiq_{i}的條件下,從t+1到T的部分觀測序列爲ot+1,ot+2,...,oTo_{t+1}, o_{t+2},...,o_T的概率爲後向概率,即:
βt(i)=Pr(ot+1,ot+2,...,oTit=qi,λ) \beta_t(i) = Pr(o_{t+1}, o_{t+2},...,o_T|i_t = q_i, \lambda)
可以遞推的方式得到後向概率,從而獲得觀測序列概率P(Oλ)P(O|\lambda),算法過程如下:

  1. 初始化: βT(i)=1,i=1,2,...,N\beta_T(i) = 1,\quad i=1,2,...,N
  2. 遞推:βt(i)=j=1Naijbj(ot+1)βt+1(j),i=1,2,...,N\beta_{t}(i) = \sum_{j=1}^{N} a_{ij} b_j(o_{t+1}) \beta_{t+1}(j),\quad i=1, 2, ..., N
  3. 終止:Pr(Oλ)=i=1Nπibi(o1)β1(i)Pr(O|\lambda) = \sum_{i=1}^{N}\pi_i b_i(o_1)\beta_1(i)

問題二:Training

模型訓練的問題定義如下:

給定觀測序列O=(o1,o2,...,oT)O = (o_1, o_2, ..., o_T),確定模型的參數λ=(A,B,π)\lambda = (A, B, \pi)

隱馬爾可夫模型的訓練算法稱爲Baum-Welch算法,是EM算法的一個特例。EM算法是一種迭代的算法,算法分爲兩步,第一步求期望Expectation,第二步最大化期望Maximization。簡單來講就是初始化概率的估計值,然後使用這些估計值來計算一個更好的估計,不斷的迭代提升。

MSE vs EM(https://machinelearningmastery.com/expectation-maximization-em-algorithm/)

Maximum likelihood estimation is an approach to density estimation for a dataset by searching across probability distributions and their parameters.

It is a general and effective approach that underlies many machine learning algorithms, although it requires that the training dataset is complete, e.g. all relevant interacting random variables are present. Maximum likelihood becomes intractable if there are variables that interact with those in the dataset but were hidden or not observed, so-called latent variables.

The expectation-maximization algorithm is an approach for performing maximum likelihood estimation in the presence of latent variables. It does this by first estimating the values for the latent variables, then optimizing the model, then repeating these two steps until convergence. It is an effective and general approach and is most commonly used for density estimation with missing data, such as clustering algorithms like the Gaussian Mixture Model.

EM算法詳細步驟如下:

1. 確定完全數據的對數似然函數

完全數據定義爲:(Q,I)=(o1,o2,...,oT,i1,i2,...,iT)(Q, I) = (o_1, o_2, ..., o_T, i_1, i_2, ..., i_T),它的對數似然函數爲:logPr(O,Iλ)\log Pr(O, I|\lambda)

2. E步:求QQ函數

QQ函數爲:Q(λ,λ^)=IlogPr(O,Iλ)Pr(O,Iλ^)Q(\lambda, \hat{\lambda}) = \sum_I \log Pr(O,I|\lambda)Pr(O, I|\hat{\lambda})

這裏$ \hat{\lambda}是模型*當前的估計值*,\lambda$是通過計算而獲得的更好的估計值

這裏的Q函數實際上省略了常數因子$ \frac{1}{Pr(O|\hat{\lambda})},按照定義,Q(\lambda, \hat{\lambda}) =\mathbb{E}_I[\log Pr(O, I | \lambda)|O, \hat{\lambda}],展開得到\sum_I \frac{\log Pr(O, I|\lambda)Pr(O,I|\hat{\lambda})}{Pr(O|\hat{\lambda})} = \frac{1}{Pr(O|\hat{\lambda})} \sum_I \log Pr(O, I|\lambda)Pr(O,I|\hat{\lambda})$。

其中Pr(O,Iλ)=πi1bi1(o1)ai1i2bi2o2...aiT1iTbiT(oT)Pr(O, I|\lambda) = \pi_{i_1}b_{i_1}(o_1)a_{i_1 i_2}b_{i_2}{o_2}...a_{i_{T-1}i_T}b_{i_T}(o_T)

所以logPr(O,Iλ)=logπi1+t=1T1aitit+1+t=1Tbit(ot)\log Pr(O,I|\lambda) = \log \pi_{i_1} + \sum_{t=1}^{T-1} a_{i_{t}i_{t+1}} + \sum_{t=1}^{T} b_{i_t}(o_t)

帶入到Q函數,Q(λ,λ^)=Ilogπi1Pr(O,Iλ^)+I(t=1T1logaitit+1)Pr(O,Iλ^)+I(t=1Tlogbit(ot))Pr(O,Iλ^)Q(\lambda, \hat{\lambda}) = \sum_I \log \pi_{i_1}Pr(O, I|\hat{\lambda}) + \sum_I\left( \sum_{t=1}^{T-1} \log a_{i_{t}i_{t+1}} \right)Pr(O, I|\hat{\lambda}) + \sum_I\left( \sum_{t=1}^{T} \log b_{i_t}(o_t) \right)Pr(O, I|\hat{\lambda})

3. M步:極大化Q函數

這個步驟就是求能夠極大化Q函數的模型參數,即AABBπ\pi

從上面的Q函數表達式可以看出,要求的模型參數分別位於三個項中,所以可以逐個對各項最大化。這是一個約束優化問題,因爲是概率,所以要滿足歸一性的約束條件,運用拉格朗日乘子法可以解決這個問題。

(1)最大化第一項

第一項可以寫爲:
Ilogπi1Pr(O,Iλ^)=i=1NlogπiPr(O,i1=iλ^) \sum_I \log \pi_{i_1}Pr(O, I|\hat{\lambda}) = \sum_{i=1}^{N} \log \pi_i Pr(O, i_1=i|\hat{\lambda})
而且πi\pi_i需要滿足約束條件i=1Nπi=1\sum_{i=1}^N \pi_i = 1,所以這裏需要藉助拉格朗日乘子解決這個約束優化問題:
i=1NlogπiPr(O,i1=iλ^)+γ(i=1Nπi1) \sum_{i=1}^{N} \log \pi_i Pr(O, i_1=i|\hat{\lambda}) + \gamma \left( \sum_{i=1}^N \pi_i - 1 \right)
計算其對於πi\pi_i的偏導數並令其爲0
πi[i=1NlogπiPr(O,i1=iλ^)+γ(i=1Nπi1)]=0 \frac{\partial}{\partial \pi_i}\left[ \sum_{i=1}^{N} \log \pi_i Pr(O, i_1=i|\hat{\lambda}) + \gamma \left( \sum_{i=1}^N \pi_i - 1 \right) \right] = 0
得:
Pr(O,i1=iλ^)πi+γ=0Pr(O,i1=iλ^)+γπi=0 \frac{Pr(O,i_1=i|\hat{\lambda})}{\pi_i} + \gamma = 0 \\ Pr(O,i_1=i|\hat{\lambda}) + \gamma \pi_i = 0
對i求和得(這裏i=1Nπi=1\sum_{i=1}^N \pi_i = 1):
i=1NPr(O,i1=iλ^)+i=1Nγπi=0Pr(Oλ^)+γ=0 \sum_{i=1}^{N} Pr(O,i_1=i|\hat{\lambda}) +\sum_{i=1}^{N} \gamma \pi_i = 0 \\ Pr(O|\hat{\lambda}) + \gamma = 0
解得γ\gamma
γ=Pr(Oλ^) \gamma = - Pr(O|\hat{\lambda})
帶入式Pr(O,i1=iλ^)+γπi=0Pr(O,i_1=i|\hat{\lambda}) + \gamma \pi_i = 0可以解出πi\pi_i
πi=Pr(O,i1=iλ^)Pr(Oλ^) \pi_i = \frac{Pr(O,i_1=i|\hat{\lambda})}{Pr(O|\hat{\lambda})}

(2)最大化第二項

第二項可以寫成(這裏前面兩個求和是對於轉移矩陣AA的, 後面求和是對於長度爲TT的狀態序列II的):
I(t=1T1logaitit+1)Pr(O,Iλ^)=i=1Nj=1Nt=1T1logaijPr(O,it=i,it+1=jλ^) \sum_I\left( \sum_{t=1}^{T-1} \log a_{i_{t}i_{t+1}} \right)Pr(O, I|\hat{\lambda}) = \sum_{i=1}^{N} \sum_{j=1}^{N} \sum_{t=1}^{T-1} \log a_{ij} Pr(O, i_t=i, i_{t+1}=j|\hat{\lambda})
同樣是一個約束優化問題,約束條件爲j=1Naij=1\sum_{j=1}^N a_{ij} = 1,應用拉格朗日乘子法可以解決這個問題,過程如下:

添加拉格朗日乘子:
i=1N[j=1Nt=1T1logaijPr(O,it=i,it+1=jλ^)+γ(j=1Naij1)] \sum_{i=1}^{N} \left[ \sum_{j=1}^{N} \sum_{t=1}^{T-1} \log a_{ij} Pr(O, i_t=i, i_{t+1}=j|\hat{\lambda}) + \gamma \left( \sum_{j=1}^N a_{ij} - 1 \right) \right]
計算其對於aija_{ij}的偏導數並令其爲0:
t=1T1Pr(O,it=i,it+1=jλ^)aij+γ=0t=1T1Pr(O,it=i,it+1=jλ^)+γaij=0 \frac{\sum_{t=1}^{T-1} Pr(O, i_t=i, i_{t+1}=j|\hat{\lambda})}{a_{ij}} + \gamma = 0 \\ \sum_{t=1}^{T-1} Pr(O, i_t=i, i_{t+1}=j|\hat{\lambda}) + \gamma a_{ij} = 0
對j求和得:
j=1Nt=1T1Pr(O,it=i,it+1=jλ^)+j=1Nγaij=0t=1T1Pr(O,it=iλ^)+γ=0 \sum_{j=1}^{N} \sum_{t=1}^{T-1} Pr(O, i_t=i, i_{t+1}=j|\hat{\lambda}) + \sum_{j=1}^{N} \gamma a_{ij} = 0 \\ \sum_{t=1}^{T-1} Pr(O, i_t=i|\hat{\lambda}) + \gamma = 0
解得γ\gamma
γ=t=1T1Pr(O,it=iλ^) \gamma = -\sum_{t=1}^{T-1} Pr(O, i_t=i|\hat{\lambda})
帶入t=1T1Pr(O,it=i,it+1=jλ^)+γaij=0\sum_{t=1}^{T-1} Pr(O, i_t=i, i_{t+1}=j|\hat{\lambda}) + \gamma a_{ij} = 0解得aija_{ij}
aij=t=1T1Pr(O,it=i,it+1=jλ^)t=1T1Pr(O,it=iλ^) a_{ij} = \frac{\sum_{t=1}^{T-1} Pr(O, i_t=i, i_{t+1}=j|\hat{\lambda}) }{\sum_{t=1}^{T-1} Pr(O, i_t=i|\hat{\lambda})}

(2)最大化第三項

第三項可以寫爲:
I(t=1Tlogbit(ot))Pr(O,Iλ^)=j=1Nt=1Tlogbj(ot)Pr(O,it=jλ^) \sum_I\left( \sum_{t=1}^{T} \log b_{i_t}(o_t) \right)Pr(O, I|\hat{\lambda}) = \sum_{j=1}^{N} \sum_{t=1}^{T} \log b_j(o_t) Pr(O, i_t = j|\hat{\lambda})
同樣需要滿足約束條件k=1Mbj(k)=1\sum_{k=1}^M b_j(k) = 1,過程如下:
j=1Nt=1Tlogbj(ot)Pr(O,it=jλ^)+γ(k=1Mbj(k)1) \sum_{j=1}^{N} \sum_{t=1}^{T} \log b_j(o_t) Pr(O, i_t = j|\hat{\lambda}) + \gamma \left( \sum_{k=1}^M b_j(k) - 1\right)
計算其對於bj(k)b_j(k)的偏導數並令其爲0,這裏左項只有在ot=vko_t=v_k時,bj(ot)b_j(o_t)bj(k)b_j(k)的偏導數纔不爲0,用I(ot=vk)I(o_t =v_k)表示,結果爲:
t=1TPr(O,it=jλ^)I(ot=vk)+γbj(k)=0 \sum_{t=1}^{T} Pr(O, i_t = j|\hat{\lambda})I(o_t =v_k) + \gamma b_j(k) = 0
對k求和得:
γ=t=1TPr(O,it=jλ^) \gamma = -\sum_{t=1}^{T} Pr(O, i_t = j|\hat{\lambda})
代回得:
bj(k)=t=1TPr(O,it=jλ^)I(ot=vk)t=1TPr(O,it=jλ^) b_j(k) = \frac{\sum_{t=1}^{T} Pr(O, i_t = j|\hat{\lambda})I(o_t =v_k)}{\sum_{t=1}^{T} Pr(O, i_t = j|\hat{\lambda})}

總結:

經上面的推導,最後得出三個表達式,分別爲:
πi=Pr(O,i1=iλ^)Pr(Oλ^)aij=t=1T1Pr(O,it=i,it+1=jλ^)t=1T1Pr(O,it=iλ^)bj(k)=t=1TPr(O,it=jλ^)I(ot=vk)t=1TPr(O,it=jλ^) \pi_i = \frac{Pr(O,i_1=i|\hat{\lambda})}{Pr(O|\hat{\lambda})} \\ a_{ij} = \frac{\sum_{t=1}^{T-1} Pr(O, i_t=i, i_{t+1}=j|\hat{\lambda}) }{\sum_{t=1}^{T-1} Pr(O, i_t=i|\hat{\lambda})}\\ b_j(k) = \frac{\sum_{t=1}^{T} Pr(O, i_t = j|\hat{\lambda})I(o_t =v_k)}{\sum_{t=1}^{T} Pr(O, i_t = j|\hat{\lambda})}
我們分別使用γt(i)\gamma_t(i)ξt(i,j)\xi_t(i, j)來表示它們:
πi=γ1(i)aij=t=1T1ξt(i,j)t=1T1γt(i)bj(k)=t=1,ot=vkTγt(j)t=1Tγt(j) \pi_i = \gamma_1(i) \\ a_{ij} = \frac{\sum_{t=1}^{T-1} \xi_t(i, j) }{\sum_{t=1}^{T-1} \gamma_t(i)}\\ b_j(k) = \frac{\sum_{t=1,o_t=v_k}^{T} \gamma_t(j)}{\sum_{t=1}^{T} \gamma_t(j)}

關於這兩個概率γt(i)\gamma_t(i)ξt(i,j)\xi_t(i, j)的定義如下,可以通過前向後向算法求出相應的值:

1、給定模型$\lambda 和觀測Ot,在時刻t處於狀態q_i $的概率爲:
KaTeX parse error: No such environment: align at position 8: \begin{̲a̲l̲i̲g̲n̲}̲ \gamma_t(i) &=…
2、給定模型$\lambda 和觀測Ot,在時刻t處於狀態q_i t+1的且時刻t+1處於狀態q_j$的概率爲:
KaTeX parse error: No such environment: align at position 8: \begin{̲a̲l̲i̲g̲n̲}̲ \xi_t(i, j) &=…

以上就是Baum-Welch算法,實際上就是EM算法在學習HMM上的具體實現。

問題三:Decoding

維特比算法(Viterbi algorithm)使用動態規劃(DP)解決HMM預測問題(decoding),即使用DP求概率最大路徑,一條路徑對應着一個狀態序列。

引入兩個變量δ\deltaΨ\Psi

定義在時刻tt狀態爲ii的所有單個路徑(i1,i2,...,it)(i_1, i_2,...,i_t)中概率最大值爲:
δt(i)=maxi1,i2,...,it1Pr(it=i,it1,...,i1,ot,...,o1λ),i=1,2,...,N \delta_t(i) = \max _{i_1, i_2,...,i_{t-1}} Pr(i_t=i, i_{t-1},...,i_1,o_t,...,o_1|\lambda), \quad i=1,2,...,N
由定義可以得出它的遞推公式:
KaTeX parse error: No such environment: align at position 8: \begin{̲a̲l̲i̲g̲n̲}̲ \delta_{t+1}(i…
定義在時刻tt狀態爲ii的所有單個路徑(i1,i2,...,it1,i)(i_1, i_2,...,i_{t-1}, i)中概率最大的路徑的第t1t-1個節點爲:
Ψt(i)=argmax1jN[δt1(j)aji],i=1,2,...,N \Psi_t(i) = \arg \max_{1\le j \le N} [\delta_{t-1}(j) a_{ji}], \quad i=1,2,...,N

維特比算法:

輸入:模型λ=(A,B,π)\lambda = (A, B, \pi ),觀測序列O=(oq,o2,...,oT)O = (o_q, o_2,...,o_T)

輸出:最優路徑(狀態序列)I=(i1,i2,...iT)I^*=(i_1^*, i_2^*,... i_T^*)

(1) 初始化。
δ1(i)=πibi(o1),i=1,2,...,NΨ1(i)=0,i=1,2,...,N \delta_1(i) = \pi_i b_i(o_1), \quad i=1,2,...,N \\ \Psi_1(i) = 0, \quad i=1,2,...,N

(2) 遞推。對t=2,3,...,Tt=2,3,...,T
δt(i)=max1jN[δt1(j)aji]bi(ot)Ψt(i)=argmax1jN[δt1(j)aji],i=1,2,...,N \delta_t(i) = \max_{1\le j \le N}[\delta_{t-1}(j) a_{ji}] b_i(o_{t}) \\ \Psi_t(i) = \arg \max_{1\le j \le N} [\delta_{t-1}(j) a_{ji}], \quad i=1,2,...,N
(3) 終止。
P=max1iN=δT(i)iT=argmax1iN[δT(i)] P^* = \max_{1 \le i \le N} = \delta_T(i) \\ i_T^* = \arg \max_{1 \le i \le N} [\delta_T(i)]
(4) 最優路徑回溯。對t=T1,T2,...,1t=T-1, T-2,...,1
it=Ψt+1(it+1) i_t* = \Psi_{t+1}(i_{t+1}^*)
獲得最優路徑I=(i1,i2,...iT)I^*=(i_1^*, i_2^*,... i_T^*)


  1. Rabiner, L. R. (1989). A tutorial on hidden Markov models and selected applications in speech recognition. Proceedings of the IEEE, 77(2), 257–286. ↩︎

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章