前向-后向算法如何计算状态后验概率?
前向-后向算法是Baum-Welch学习算法的E步核心。请解释前向概率α和反向概率β的定义,如何利用它们计算状态后验概率γₜ(i)和转移后验概率ξₜ(i,j)。
回答
小字辈
前向概率 αₜ(i):
给定λ,到t时刻为止生成o₁...oₜ且t时刻处于状态i的概率:
αₜ(i) = P(o₁...oₜ, qₜ=i | λ)
反向概率 βₜ(i):
给定λ和t时刻处于状态i,生成oₜ₊₁...o_T的概率:
βₜ(i) = P(oₜ₊₁...o_T | qₜ=i, λ)
联合概率:
P(O, qₜ=i | λ) = αₜ(i) · βₜ(i)
状态后验概率 γₜ(i):
t时刻处于状态i的概率:
γₜ(i) = P(qₜ=i | O, λ) = αₜ(i)·βₜ(i) / P(O|λ)
其中 P(O|λ) = Σᵢ αₜ(i)·βₜ(i)(对所有t成立)
转移后验概率 ξₜ(i,j):
t时刻在状态i,t+1时刻转移到状态j的概率:
ξₜ(i,j) = P(qₜ=i, qₜ₊₁=j | O, λ)
= αₜ(i)·aᵢⱼ·bⱼ(oₜ₊₁)·βₜ₊₁(j) / P(O|λ)
在Baum-Welch中的使用:
- 期望状态计数:
Σₜ γₜ(i) - 期望转移计数:
Σₜ ξₜ(i,j) - M步更新:
- π̂ᵢ = γ₁(i)
- âᵢⱼ = Σₜ ξₜ(i,j) / Σₜ γₜ(i)
- b̂ⱼ(k) = Σₜ γₜ(j)·𝟙(oₜ=k) / Σₜ γₜ(j)
数值稳定性:常用对数域或缩放因子防止下溢。