问答总结
- 近似算法的思想是什么,方法是怎样的?
- 维秘特算法的思想是什么,方法是怎样的?
一、目标
前文说过,预测问题可以描述为:
已知模型 λ = ( A , B , π ) \lambda=(A,B, \pi) λ=(A,B,π)和观测序列 O = o 1 , o 2 , . . . , o T O={o_1,o_2,..., o_T} O=o1,o2,...,oT.求最可能对应的不可观测状态序列 I = { i 1 , i 2 , . . . , i T } I=\{i_1, i_2, ..., i_T\} I={i1,i2,...,iT}. 即: I ∗ = a r g max I P ( I ∣ O , λ ) I^* = arg \max_{I}P(I|O,\lambda) I∗=argImaxP(I∣O,λ)
二、近似算法
1、思想
在每个时刻 t t t选择该时刻最可能出现的状态 i t ∗ i_t^* it∗, 从而得到状态序列 I ∗ = ( i 1 ∗ , i 2 ∗ , . . . , i T ∗ ) I^*=(i_1^*, i_2^*, ..., i_T^*) I∗=(i1∗,i2∗,...,iT∗).
2、方法
回想概率计算方法,我们得到了一个很重要的概率值:
γ
t
(
i
)
=
P
(
i
t
=
q
i
∣
O
,
λ
)
=
α
t
(
i
)
β
t
(
i
)
∑
j
=
1
N
α
t
(
j
)
β
t
(
j
)
\gamma_t(i)=P(i_t=q_i|O, \lambda)=\frac{\alpha_t(i)\beta_t(i)}{\sum_{j=1}^N\alpha_t(j)\beta_t(j)}
γt(i)=P(it=qi∣O,λ)=∑j=1Nαt(j)βt(j)αt(i)βt(i)
其含义为: 给定模型
λ
\lambda
λ和观测
O
O
O, 在时刻
t
t
t处于状态
q
i
q_i
qi的概率。
因此每个时刻 t t t最可能的状态 i t ∗ i_t^* it∗为:
i t ∗ = a r g max 1 ≤ i ≤ N [ γ t ( i ) ] , t = 1 , 2 , . . . , T i_t^*=arg \max_{1 \le i \le N}[\gamma_t(i)], t=1,2,...,T it∗=arg1≤i≤Nmax[γt(i)],t=1,2,...,T
这样,我们就可以得到状态序列 I ∗ = ( i 1 ∗ , i 2 ∗ , . . . , i T ∗ ) I^*=(i_1^*, i_2^*, ..., i_T^*) I∗=(i1∗,i2∗,...,iT∗).
三、维比特算法
1、思想
预测问题的目标是
I
∗
=
a
r
g
max
I
P
(
I
∣
O
,
λ
)
I^* = arg \max_{I}P(I|O,\lambda)
I∗=argImaxP(I∣O,λ)
由于状态序列
O
O
O和模型
λ
\lambda
λ已知,因此
P
(
O
∣
λ
)
P(O|\lambda)
P(O∣λ)为一个常数,所以有:
I ∗ = a r g max I P ( I ∣ O , λ ) = a r g max I P ( I , O ∣ λ ) P ( O ∣ λ ) = a r g max I P ( I , O ∣ λ ) I^* = arg \max_{I}P(I|O,\lambda) = arg \max_{I}\frac{P(I, O|\lambda)}{P(O|\lambda)} = arg \max_IP(I,O|\lambda) I∗=argImaxP(I∣O,λ)=argImaxP(O∣λ)P(I,O∣λ)=argImaxP(I,O∣λ)
因此在预测问题中,我们可以转而对联合概率建模。找到联合概率最大的一个状态序列。
2、方法
将T步,每步可选状态数为N的状态序列的所有可能描述为一个图,其中图的一条路径等价于一个状态序列。 下图为序列长度:
T
=
3
T=3
T=3,状态数目:
N
=
3
N=3
N=3的所有路径。其中一条路径是对应一个状态序列,也对应着一个联合概率
P
(
o
1
,
o
2
,
o
3
,
i
1
,
i
2
,
i
3
∣
λ
)
P(o_1,o_2, o_3, i_1, i_2, i_3 | \lambda)
P(o1,o2,o3,i1,i2,i3∣λ)。其中
i
∗
∈
{
A
,
B
,
C
}
i_* \in \{A, B, C\}
i∗∈{A,B,C},
o
∗
o_*
o∗为已知的观测,
λ
\lambda
λ为已知模型。
最简单的,我们可以通过暴力搜索,求出每一条路径对于的概率,然后选取概率最大的那条路径,即为所求状态序列。但是复杂度太高,为 O ( N T ) O(N^T) O(NT)
仔细观察,这对应着一个有向无环图(DAG), 其最大联合概率路径很容易可以使用动态规划方法求出。
因此来到动态规划问题求解步骤:
-
(1) 定义状态:
- 在时刻 t t t状态为 i i i的最大联合概率: δ t ( i ) = max i 1 , i 2 , . . .   i t − 1 P ( i t = i , i t − 1 , . . . , i 1 , o t , . . . , o 1 ∣ λ ) \delta_t(i) = \max_{i_1, i_2, ...\, i_{t-1}}P(i_t=i, i_{t-1}, ..., i_1, o_t, ..., o_1|\lambda) δt(i)=i1,i2,...it−1maxP(it=i,it−1,...,i1,ot,...,o1∣λ)
- 在时刻 t t t状态为 i i i的最大联合概率路径的前一个节点,即时刻 t − 1 t-1 t−1的结点(相当于路径回溯的指针): Ψ t ( i ) = a r g max 1 ≤ j ≤ N [ δ t − 1 ( j ) a j i ] \Psi_t(i)=arg \max_{1 \le j \le N}[\delta_{t-1}(j)a_{ji}] Ψt(i)=arg1≤j≤Nmax[δt−1(j)aji]
-
(2) 目标状态:
- 路径最大联合概率: P ∗ = max 1 ≤ i ≤ N δ T ( i ) P^* = \max_{1 \le i\le N}\delta_T(i) P∗=1≤i≤NmaxδT(i)
- 所求路径最后一个状态节点: i T ∗ = a r g max 1 ≤ i ≤ N [ δ T ( i ) ] i^*_T= arg \max_{1 \le i \le N}[\delta_T(i)] iT∗=arg1≤i≤Nmax[δT(i)]
-
(3) 状态转移:
- 状态转移图:
- 状态转移方程:
δ t ( i ) = max 1 ≤ j ≤ N [ δ t − 1 ( j ) a j i ] b i ( o t ) , i = 1 , 2 , . . . , N \delta_t(i)= \max_{1 \le j \le N}[\delta_{t-1}(j)a_{ji}]b_i(o_t), i=1,2,...,N δt(i)=1≤j≤Nmax[δt−1(j)aji]bi(ot),i=1,2,...,N
Ψ t ( i ) = a r g max 1 ≤ j ≤ N [ δ t − 1 ( j ) a j i ] b i ( o t ) , i = 1 , 2 , . . . , N \Psi_t(i) = arg \max_{1 \le j \le N}[\delta_{t-1}(j)a_{ji}]b_i(o_t), i=1,2,...,N Ψt(i)=arg1≤j≤Nmax[δt−1(j)aji]bi(ot),i=1,2,...,N
- 状态转移图:
-
(4) 初始化:
δ 1 ( i ) = π i b i ( o 1 ) , i = 1 , 2 , . . . , N \delta_1(i)=\pi_ib_i(o_1), i = 1,2,...,N δ1(i)=πibi(o1),i=1,2,...,N
Ψ 1 ( i ) = 0 , i = 1 , 2 , . . . , N \Psi_1(i)=0, i=1,2,...,N Ψ1(i)=0,i=1,2,...,N -
(5) 回溯
由于所求不只是一个概率,而是一条路径,因此最后回溯: i t ∗ = Ψ t + 1 ( i t + 1 ∗ ) , t = T − 1 , T − 2 , . . . , 1 i_t^* = \Psi_{t+1}(i_{t+1}^*), t=T-1,T-2,...,1 it∗=Ψt+1(it+1∗),t=T−1,T−2,...,1