1. 初始化:
公式:
v
1
(
j
)
=
a
0
j
b
j
(
o
1
)
,
1
≤
j
≤
N
v_1(j) = a_{0j} b_j(o_1), \quad 1 \leq j \leq N
v1(j)=a0jbj(o1),1≤j≤N
- v 1 ( j ) v_1(j) v1(j):表示在时间 t = 1 t=1 t=1 时,以隐藏状态 j j j 为结束状态的最优路径的概率。
- a 0 j a_{0j} a0j:表示从初始状态(假设为虚拟状态 q 0 q_0 q0)转移到状态 j j j 的转移概率。
- b j ( o 1 ) b_j(o_1) bj(o1):表示状态 j j j 发射观测 o 1 o_1 o1 的概率。
初始化的过程计算的是:从起始状态 q 0 q_0 q0 转移到状态 j j j,并在 j j j 状态发射观测 o 1 o_1 o1 的概率。
2. 递归:
公式:
v
t
(
j
)
=
max
i
=
1
N
[
v
t
−
1
(
i
)
a
i
j
]
b
j
(
o
t
)
,
1
≤
j
≤
N
,
1
<
t
≤
T
v_t(j) = \max_{i=1}^N \left[ v_{t-1}(i) a_{ij} \right] b_j(o_t), \quad 1 \leq j \leq N, \, 1 < t \leq T
vt(j)=i=1maxN[vt−1(i)aij]bj(ot),1≤j≤N,1<t≤T
- v t ( j ) v_t(j) vt(j):表示在时间 t t t 时,以隐藏状态 j j j 为结束状态的最优路径的概率。
- v t − 1 ( i ) v_{t-1}(i) vt−1(i):表示时间 t − 1 t-1 t−1 时,以隐藏状态 i i i 为结束状态的最优路径的概率。
- a i j a_{ij} aij:表示从隐藏状态 i i i 转移到状态 j j j 的转移概率。
- b j ( o t ) b_j(o_t) bj(ot):表示状态 j j j 发射观测 o t o_t ot 的概率。
含义:
对于每个时间步 t t t 的每个状态 j j j,我们计算:
- 从前一个时间 t − 1 t-1 t−1 的所有可能状态 i i i 转移到状态 j j j 的概率。
- 找到其中概率最大的路径(即选择最优的 i i i)。
- 再乘以状态 j j j 发射当前观测 o t o_t ot 的概率 b j ( o t ) b_j(o_t) bj(ot)。
公式:
b
t
t
(
j
)
=
arg
max
i
=
1
N
[
v
t
−
1
(
i
)
a
i
j
b
j
(
o
t
)
]
,
1
≤
j
≤
N
,
1
<
t
≤
T
bt_t(j) = \arg\max_{i=1}^N \left[ v_{t-1}(i) a_{ij} b_j(o_t) \right], \quad 1 \leq j \leq N, \, 1 < t \leq T
btt(j)=argi=1maxN[vt−1(i)aijbj(ot)],1≤j≤N,1<t≤T
- b t t ( j ) bt_t(j) btt(j):是一个回溯指针,用于记录时间 t t t 时状态 j j j 的最优路径是从哪个状态 i i i 转移来的。
含义:
我们不仅需要计算概率最大值,还需要记录路径上每一步的决策(即最优转移路径),以便最终回溯得到完整的最优路径。
3. 结束:
公式:
P
∗
=
v
T
(
q
F
)
=
max
i
=
1
N
[
v
T
(
i
)
a
i
,
F
]
P^* = v_T(q_F) = \max_{i=1}^N \left[ v_T(i) a_{i,F} \right]
P∗=vT(qF)=i=1maxN[vT(i)ai,F]
- P ∗ P^* P∗:是最优路径的概率,即从初始状态到达最终状态 q F q_F qF 的最优路径的最大概率。
- v T ( i ) v_T(i) vT(i):是时间 T T T 时以状态 i i i 为结束状态的最优路径的概率。
- a i , F a_{i,F} ai,F:是从状态 i i i 转移到终止状态 q F q_F qF 的转移概率。
含义:
从所有可能的结束状态 i i i 中选择概率最大的路径,并将其作为最终的最优路径。
公式:
q
T
=
b
t
T
(
q
F
)
=
arg
max
i
=
1
N
[
v
T
(
i
)
a
i
,
F
]
q_T = bt_T(q_F) = \arg\max_{i=1}^N \left[ v_T(i) a_{i,F} \right]
qT=btT(qF)=argi=1maxN[vT(i)ai,F]
- q T q_T qT:是最优路径在最后一个时间步 T T T 所对应的隐藏状态。
总结过程:
- 初始化:计算初始状态到每个可能隐藏状态的概率。
- 递归:逐步计算每个时间步中每个状态的最优路径概率,同时记录路径选择。
- 结束:找到最优路径的最大概率,确定最终隐藏状态。
- 回溯:根据记录的路径选择回溯,得到完整的隐藏状态序列。