在一般馬可夫模型中,能經由統計在t個時間序列的觀測值,進而估測當時間點為t+1時的序列狀態。在此種模型中,被觀測的對象狀態是已知的,能夠直接測量到的。所以,當序列的狀態是無法直接測得時,就必須使用隱藏式馬可夫模型來解決問題。
隱藏式馬可夫模型是一種統計模型,可視為是一個雙重的隨機程序。其中一個隱藏起來的隨機程序以狀態轉移機率,來描述停留在某一狀態或跳至另一個狀態的機率。而另一個隨機程序以觀測機率來描述其輸出
隱藏式馬可夫模型的狀態變遷概念圖。其中,X為隱藏狀態,y為可觀察的輸出,a為轉換機率,b為輸出機率。
隱藏式馬可夫模型的描述通常可用五個元素來建立。
1. S={s1,...,sN}代表N個狀態。
2. V={v1,…,vM}代表M個觀測符號。
3. Π={πi}代表啟始狀態機率。
4. A={aij}代表狀態轉移機率。
5. B={bi(vk)}代表輸出觀測機率。
6. λ=(Π,A,B)來表示一個HMM的模型參數。
其中
1. πi 為起始狀態為i的機率值
2. aij 為由狀態i轉至狀態j的機率值
3. bi(vk) 為狀態i下觀測到vk 的機率值
而模型參數的限制如下:
1. Σπi =1 i=1,2…N
2. Σaij =1 i=1,2…N j=1,2…N
3. Σbi(vk)=1 i=1,2…N k=1,2…N
在得到λ=(Π,A,B)後,接下來需要方法來統計觀測序列的機率值。在此最直接的想法為,逐一列出觀測序列的可能路徑並計算其路徑機率。最後再將所有機率值加總。但此法在序列長度長時,會因為計算量大而缺乏效率。因此為了降低計算量,一般會使用forward演算法來觀測序列在模型上所有可能的路徑機率合。即P(O|λ),其中,O=o1o2..oT(o t)。再者,我們以Q=q1q2,…,qT來代表序列狀態,在以知模型參數λ和觀測序列O的情況下。要找出一組此觀察序列的最佳序列狀態。這個部分常用viterbi演算法來解決。最後,在以之輸出序列的情況下,要找出最可能的狀態轉移機率以及輸出機率。這部分通常以Baum-Welch演算法以及Reversed Vitebi演算法解決。以上,便是使用HMM演算法的過程中必然會遇到的三個基本問題以及其常用的對應解決方式。
1. S={s1,...,sN}代表N個狀態。
2. V={v1,…,vM}代表M個觀測符號。
3. Π={πi}代表啟始狀態機率。
4. A={aij}代表狀態轉移機率。
5. B={bi(vk)}代表輸出觀測機率。
6. λ=(Π,A,B)來表示一個HMM的模型參數。
其中
1. πi 為起始狀態為i的機率值
2. aij 為由狀態i轉至狀態j的機率值
3. bi(vk) 為狀態i下觀測到vk 的機率值
而模型參數的限制如下:
1. Σπi =1 i=1,2…N
2. Σaij =1 i=1,2…N j=1,2…N
3. Σbi(vk)=1 i=1,2…N k=1,2…N
在得到λ=(Π,A,B)後,接下來需要方法來統計觀測序列的機率值。在此最直接的想法為,逐一列出觀測序列的可能路徑並計算其路徑機率。最後再將所有機率值加總。但此法在序列長度長時,會因為計算量大而缺乏效率。因此為了降低計算量,一般會使用forward演算法來觀測序列在模型上所有可能的路徑機率合。即P(O|λ),其中,O=o1o2..oT(o t)。再者,我們以Q=q1q2,…,qT來代表序列狀態,在以知模型參數λ和觀測序列O的情況下。要找出一組此觀察序列的最佳序列狀態。這個部分常用viterbi演算法來解決。最後,在以之輸出序列的情況下,要找出最可能的狀態轉移機率以及輸出機率。這部分通常以Baum-Welch演算法以及Reversed Vitebi演算法解決。以上,便是使用HMM演算法的過程中必然會遇到的三個基本問題以及其常用的對應解決方式。
沒有留言:
張貼留言