所谓的马尔科夫过程,就是该过程的当前状态仅由前一时刻的状态确定。用概率表达即为:
。
Viterbi算法的步骤为:
- 初始(t=0)
,对应各状态产生输出
的概率;

- 接下来的各时间步上,


是在t时刻到达状态j时产生对应输出序列
的概率,也是前面的前向变量;
- 结束:


状态序列回溯:

输入: 观察空间, 状态
, 观察序列
若在
时间观察值为
,则
, 大小为
的转移矩阵
,
为从状态
到
的转移概率, 大小为
的放射矩阵
,
为状态
观察到
的概率, 初始概率数组
of size
,
为
的概率, 输出: 最有可能的隐含状态序列
A01 function VITERBI( O, S,π,Y,A,B ) : X A02 for each state si do A03 T1[i,1]←πi
Bi
A04 T2[i,1]←0 A05 end for A06 for i←2,3,...,T do A07 for each state sj do A08 T1[j,i]←
A09 T2[j,i]←
A10 end for A11 end for A12 zT←
A13 xT←szT A14 for i←T,T-1,...,2 do A15 zi-1←T2[zi,i] A16 xi-1←szi-1 A17 end for A18 return X A19 end function

本文详细介绍了维特比算法的工作原理及其应用流程。通过解析算法的每一步骤,包括初始化、递归计算以及路径回溯等,帮助读者理解如何利用该算法找出最有可能的隐含状态序列。
,
状态
,
观察序列
若在
时间观察值为
,则
,
大小为
的转移矩阵
,
为从状态
到
的转移概率,
大小为
的放射矩阵
,
为状态
的概率,
初始概率数组
of size
,
为
的概率,
输出: 最有可能的隐含状态序列
A01 function VITERBI( O, S,π,Y,A,B ) : X
A02 for each state si do
A03 T1[i,1]←πi
Bi
A04 T2[i,1]←0
A05 end for
A06 for i←2,3,...,T do
A07 for each state sj do
A08 T1[j,i]←
A09 T2[j,i]←
A10 end for
A11 end for
A12 zT←
A13 xT←szT
A14 for i←T,T-1,...,2 do
A15 zi-1←T2[zi,i]
A16 xi-1←szi-1
A17 end for
A18 return X
A19 end function
865

被折叠的 条评论
为什么被折叠?



