对数域 Viterbi 单列计算(取球算例)

只算一格:第 t=2 步、状态 j=2 的 logφ₂(2)(观测=红球)。看 max 怎么在三个前驱上挑、回溯指针怎么记。

logφ_j(t) = log b_j(o_t) + maxi( log a_ij + logφ_i(t-1) )
t-1 = 1(前驱列) t = 2(目标格) q₁ logφ₁(1)=-2.708 q₂ logφ₂(1)=-1.609 q₃ logφ₃(1)=-3.401 q₂ 观测 o₂ = 红 log a₁₂ = -1.715 log a₂₂ = -1.022 log a₃₂ = -0.734 -4.423 -2.631 -4.135 越负越小 → 越接近 0 越大 (max) 回溯 ψ₂(2)=2 log b₂(红)=log0.6 加到 max 结果上 ↘ 网格[ j=2 , t=2 ] logφ₂(2) = -3.142
对数域提醒:全是负数相加;越接近 0 越大;别把发射 log b 与转移 log a 混淆,更别漏加 log b_j。
💡 连乘取对数变连加防下溢;max 在前驱 i 上取,并务必记回溯指针 ψ;结果 logφ₂(2)=-3.142