此條目需要
精通或熟悉相關主題的編者 參與及協助編輯。
(2018年11月18日 ) 請邀請 適合的人士改善本條目 。更多的細節與詳情請參見討論頁 。
前向式演算法 (Forward algorithm ),在隱藏式馬可夫模型 (HMM)中,是用於計算「置信狀態」的。置信狀態指根據既往證據推算出的當前狀態的機率分布。這個過程也被叫做「濾波」。前向式演算法和維特比演算法 緊密相關但又互不相同。
發展歷史
前向式演算法是用來解決解碼問題的演算法之一。自從語音辨識技術[ 1] 和圖型識別技術發展以來,它也越來越普遍地被用在像計算生物學 [ 2] 這樣的使用HMM的領域內。
演算法
整個演算法的目標是計算聯合機率分布
p
(
x
t
,
y
1
:
t
)
{\displaystyle p(x_{t},y_{1:t})}
。為了方便,我們把
x
(
t
)
{\displaystyle x(t)}
簡寫做
x
t
{\displaystyle x_{t}}
,將
(
y
(
1
)
,
y
(
2
)
,
.
.
.
,
y
(
t
)
)
{\displaystyle (y(1),y(2),...,y(t))}
簡寫做
y
1
:
t
{\displaystyle y_{1:t}}
。直接計算
p
(
x
t
,
y
1
:
t
)
{\displaystyle p(x_{t},y_{1:t})}
則需要計算所有狀態序列
{
x
1
:
t
−
1
}
{\displaystyle \{x_{1:t-1}\}}
的邊際分布 ,而它的數量和
t
{\displaystyle t}
成指數相關。使用這一演算法,我們可以利用HMM的條件獨立 性質,遞迴 地進行計算。
我們令
α
t
(
x
t
)
=
p
(
x
t
,
y
1
:
t
)
=
∑
x
t
−
1
p
(
x
t
,
x
t
−
1
,
y
1
:
t
)
{\displaystyle \alpha _{t}(x_{t})=p(x_{t},y_{1:t})=\sum _{x_{t-1}}p(x_{t},x_{t-1},y_{1:t})}
.
利用連鎖律 來展開
p
(
x
t
,
x
t
−
1
,
y
1
:
t
)
{\displaystyle p(x_{t},x_{t-1},y_{1:t})}
,我們可以得到
α
t
(
x
t
)
=
∑
x
t
−
1
p
(
y
t
|
x
t
,
x
t
−
1
,
y
1
:
t
−
1
)
p
(
x
t
|
x
t
−
1
,
y
1
:
t
−
1
)
p
(
x
t
−
1
,
y
1
:
t
−
1
)
{\displaystyle \alpha _{t}(x_{t})=\sum _{x_{t-1}}p(y_{t}|x_{t},x_{t-1},y_{1:t-1})p(x_{t}|x_{t-1},y_{1:t-1})p(x_{t-1},y_{1:t-1})}
.
由於
y
t
{\displaystyle y_{t}}
和除了
x
t
{\displaystyle x_{t}}
之外的一切都條件獨立,而
x
t
{\displaystyle x_{t}}
又和
x
t
−
1
{\displaystyle x_{t-1}}
之外的一切都條件獨立,因此
α
t
(
x
t
)
=
p
(
y
t
|
x
t
)
∑
x
t
−
1
p
(
x
t
|
x
t
−
1
)
α
t
−
1
(
x
t
−
1
)
{\displaystyle \alpha _{t}(x_{t})=p(y_{t}|x_{t})\sum _{x_{t-1}}p(x_{t}|x_{t-1})\alpha _{t-1}(x_{t-1})}
.
這樣,由於
p
(
y
t
|
x
t
)
{\displaystyle p(y_{t}|x_{t})}
和
p
(
x
t
|
x
t
−
1
)
{\displaystyle p(x_{t}|x_{t-1})}
由HMM的輸出機率 和狀態轉移機率 我們可以很快計算用
α
t
−
1
(
x
t
−
1
)
{\displaystyle \alpha _{t-1}(x_{t-1})}
計算出
α
t
(
x
t
)
{\displaystyle \alpha _{t}(x_{t})}
,並且可以避免遞迴計算。
前向式演算法可以很容易地被修改來適應其他的HMM變種,比如馬可夫跳躍線性系統 。
平滑處理
為了能夠使用「未來的歷史」(比如我們在試圖預測過去的某個時點的狀態),我們可以執行後向演算法,它是前向式演算法的一個補充。這一操作被稱為平滑[為何? ] 。 前向-後向演算法 對
1
<
k
<
t
{\displaystyle 1<k<t}
計算
P
(
x
k
|
y
1
:
t
)
{\displaystyle P(x_{k}|y_{1:t})}
,因此使用了過去和未來的全部資訊。
解碼演算法
為了解碼最可能的序列,需要使用維特比演算法 。它會從過去的觀測中試圖推測最可能的狀態序列,也即使
P
(
x
0
:
t
|
y
0
:
t
)
{\displaystyle P(x_{0:t}|y_{0:t})}
最大化的狀態序列。
參考文獻
^ Lawrence R. Rabiner , "A Tutorial on Hidden Markov Models and Selected Applications in Speech Recognition". Proceedings of the IEEE , 77 (2), p. 257–286, February 1989. 10.1109/5.18626
^ Richard Durbin, Sean R. Eddy, Anders Krogh, Graeme Mitchison, "Biological Sequence Analysis: Probabilistic Models of Proteins and Nucleic Acids". Cambridge University Press , 1999, ISBN 0521629713 .