前向概率 α t ( i ) \alpha_t(i) αt(i):
表示从初始状态 q 0 q_0 q0 出发,经过 t t t 步达到状态 q i q_i qi,并且生成观测序列 O 1 , O 2 , … , O t O_1, O_2, \dots, O_t O1,O2,…,Ot 的概率。
α t ( i ) = P ( O 1 , O 2 , … , O t , q t = i ∣ λ ) \alpha_t(i) = P(O_1, O_2, \dots, O_t, q_t = i | \lambda) αt(i)=P(O1,O2,…,Ot,qt=i∣λ)
后向概率 β t ( i ) \beta_t(i) βt(i):
表示从状态 q i q_i qi 出发,经过 t + 1 t+1 t+1 到最终状态 q F q_F qF,生成剩余观测序列 O t + 1 , O t + 2 , … , O T O_{t+1}, O_{t+2}, \dots, O_T Ot+1,Ot+2,…,OT 的概率。
β t ( i ) = P ( O t + 1 , O t + 2 , … , O T ∣ q t = i , λ ) \beta_t(i) = P(O_{t+1}, O_{t+2}, \dots, O_T | q_t = i, \lambda) βt(i)=P(Ot+1,Ot+2,…,OT∣qt=i,λ)
核心区别:
两者的本质是相同的,只是前向概率计算是“累积到终点”,而后向概率是“从终点倒推”。
开始和结束的时间点不同:
计算方向不同:
公式差异:
区别:前向概率在计算时依赖上一时刻的状态概率 α t ( i ) \alpha_t(i) αt(i),后向概率则依赖下一时刻的状态概率 β t + 1 ( j ) \beta_{t+1}(j) βt+1(j)。
前向概率 α T ( q F ) \alpha_T(q_F) αT(qF):
表示从初始状态 q 0 q_0 q0 出发,生成完整序列 O 1 , O 2 , … , O T O_1, O_2, \dots, O_T O1,O2,…,OT 并达到终点状态 q F q_F qF 的概率。
后向概率 β 1 ( 0 ) \beta_1(0) β1(0):
表示从初始状态 q 0 q_0 q0 出发,生成完整序列 O 1 , O 2 , … , O T O_1, O_2, \dots, O_T O1,O2,…,OT 的概率。
总结:两者的意义是相同的,都是计算 P ( O ∣ λ ) P(O|\lambda) P(O∣λ),但在实际操作中,通常会结合前向概率和后向概率的递归公式,避免单纯使用一种算法计算整个序列的概率。
我们有一个简单的隐马尔可夫模型(HMM):
现在,我们通过后向算法计算 β t ( i ) \beta_t(i) βt(i)。
后向概率递推公式:
β t ( i ) = ∑ j = 1 N a i j b j ( O t + 1 ) β t + 1 ( j ) \beta_t(i) = \sum_{j=1}^N a_{ij} b_j(O_{t+1}) \beta_{t+1}(j) βt(i)=j=1∑Naijbj(Ot+1)βt+1(j)
根据后向算法的初始条件:
β 3 ( i ) = 1 ∀ i \beta_3(i) = 1 \quad \forall i β3(i)=1∀i
即在最后一个时刻,每个状态的后向概率都是 1(因为没有剩余观测值)。
因此:
β 3 ( q 1 ) = 1 , β 3 ( q 2 ) = 1 \beta_3(q_1) = 1, \quad \beta_3(q_2) = 1 β3(q1)=1,β3(q2)=1
根据公式:
β 2 ( i ) = ∑ j = 1 2 a i j b j ( O 3 ) β 3 ( j ) \beta_2(i) = \sum_{j=1}^2 a_{ij} b_j(O_3) \beta_3(j) β2(i)=j=1∑2aijbj(O3)β3(j)
对于 q 1 q_1 q1:
β 2 ( q 1 ) = a 11 ⋅ b 1 ( o 3 ) ⋅ β 3 ( q 1 ) + a 12 ⋅ b 2 ( o 3 ) ⋅ β 3 ( q 2 ) \beta_2(q_1) = a_{11} \cdot b_1(o_3) \cdot \beta_3(q_1) + a_{12} \cdot b_2(o_3) \cdot \beta_3(q_2) β2(q1)=a11⋅b1(o3)⋅β3(q1)+a12⋅b2(o3)⋅β3(q2)
β 2 ( q 1 ) = 0.7 ⋅ 0.1 ⋅ 1 + 0.3 ⋅ 0.6 ⋅ 1 = 0.07 + 0.18 = 0.25 \beta_2(q_1) = 0.7 \cdot 0.1 \cdot 1 + 0.3 \cdot 0.6 \cdot 1 = 0.07 + 0.18 = 0.25 β2(q1)=0.7⋅0.1⋅1+0.3⋅0.6⋅1=0.07+0.18=0.25
对于 q 2 q_2 q2:
β 2 ( q 2 ) = a 21 ⋅ b 1 ( o 3 ) ⋅ β 3 ( q 1 ) + a 22 ⋅ b 2 ( o 3 ) ⋅ β 3 ( q 2 ) \beta_2(q_2) = a_{21} \cdot b_1(o_3) \cdot \beta_3(q_1) + a_{22} \cdot b_2(o_3) \cdot \beta_3(q_2) β2(q2)=a21⋅b1(o3)⋅β3(q1)+a22⋅b2(o3)⋅β3(q2)
β 2 ( q 2 ) = 0.4 ⋅ 0.1 ⋅ 1 + 0.6 ⋅ 0.6 ⋅ 1 = 0.04 + 0.36 = 0.40 \beta_2(q_2) = 0.4 \cdot 0.1 \cdot 1 + 0.6 \cdot 0.6 \cdot 1 = 0.04 + 0.36 = 0.40 β2(q2)=0.4⋅0.1⋅1+0.6⋅0.6⋅1=0.04+0.36=0.40
结果:
β 2 ( q 1 ) = 0.25 , β 2 ( q 2 ) = 0.40 \beta_2(q_1) = 0.25, \quad \beta_2(q_2) = 0.40 β2(q1)=0.25,β2(q2)=0.40
根据公式:
β 1 ( i ) = ∑ j = 1 2 a i j b j ( O 2 ) β 2 ( j ) \beta_1(i) = \sum_{j=1}^2 a_{ij} b_j(O_2) \beta_2(j) β1(i)=j=1∑2aijbj(O2)β2(j)
对于 q 1 q_1 q1:
β 1 ( q 1 ) = a 11 ⋅ b 1 ( o 2 ) ⋅ β 2 ( q 1 ) + a 12 ⋅ b 2 ( o 2 ) ⋅ β 2 ( q 2 ) \beta_1(q_1) = a_{11} \cdot b_1(o_2) \cdot \beta_2(q_1) + a_{12} \cdot b_2(o_2) \cdot \beta_2(q_2) β1(q1)=a11⋅b1(o2)⋅β2(q1)+a12⋅b2(o2)⋅β2(q2)
β 1 ( q 1 ) = 0.7 ⋅ 0.4 ⋅ 0.25 + 0.3 ⋅ 0.3 ⋅ 0.40 \beta_1(q_1) = 0.7 \cdot 0.4 \cdot 0.25 + 0.3 \cdot 0.3 \cdot 0.40 β1(q1)=0.7⋅0.4⋅0.25+0.3⋅0.3⋅0.40
β 1 ( q 1 ) = 0.07 + 0.036 = 0.106 \beta_1(q_1) = 0.07 + 0.036 = 0.106 β1(q1)=0.07+0.036=0.106
对于 q 2 q_2 q2:
β 1 ( q 2 ) = a 21 ⋅ b 1 ( o 2 ) ⋅ β 2 ( q 1 ) + a 22 ⋅ b 2 ( o 2 ) ⋅ β 2 ( q 2 ) \beta_1(q_2) = a_{21} \cdot b_1(o_2) \cdot \beta_2(q_1) + a_{22} \cdot b_2(o_2) \cdot \beta_2(q_2) β1(q2)=a21⋅b1(o2)⋅β2(q1)+a22⋅b2(o2)⋅β2(q2)
β 1 ( q 2 ) = 0.4 ⋅ 0.4 ⋅ 0.25 + 0.6 ⋅ 0.3 ⋅ 0.40 \beta_1(q_2) = 0.4 \cdot 0.4 \cdot 0.25 + 0.6 \cdot 0.3 \cdot 0.40 β1(q2)=0.4⋅0.4⋅0.25+0.6⋅0.3⋅0.40
β 1 ( q 2 ) = 0.04 + 0.072 = 0.112 \beta_1(q_2) = 0.04 + 0.072 = 0.112 β1(q2)=0.04+0.072=0.112
结果:
β 1 ( q 1 ) = 0.106 , β 1 ( q 2 ) = 0.112 \beta_1(q_1) = 0.106, \quad \beta_1(q_2) = 0.112 β1(q1)=0.106,β1(q2)=0.112
使用后向概率公式计算:
P ( O ∣ λ ) = ∑ i = 1 2 π i b i ( O 1 ) β 1 ( i ) P(O|\lambda) = \sum_{i=1}^2 \pi_i b_i(O_1) \beta_1(i) P(O∣λ)=i=1∑2πibi(O1)β1(i)
代入计算:
P ( O ∣ λ ) = 0.6 ⋅ 0.5 ⋅ 0.106 + 0.4 ⋅ 0.1 ⋅ 0.112 P(O|\lambda) = 0.6 \cdot 0.5 \cdot 0.106 + 0.4 \cdot 0.1 \cdot 0.112 P(O∣λ)=0.6⋅0.5⋅0.106+0.4⋅0.1⋅0.112
P ( O ∣ λ ) = 0.0318 + 0.00448 = 0.03628 P(O|\lambda) = 0.0318 + 0.00448 = 0.03628 P(O∣λ)=0.0318+0.00448=0.03628
在通常的后向算法中,我们的初始化条件是:
β T ( i ) = 1 ∀ i \beta_T(i) = 1 \quad \forall i βT(i)=1∀i
这是因为在最后一个时刻 T T T,没有更多的观测值需要生成,后向概率设为 1 表示“从这里到序列结束”的概率为 1。
公式:
β T ( i ) = a i , F , 1 ≤ i ≤ N \beta_T(i) = a_{i,F}, \quad 1 \leq i \leq N βT(i)=ai,F,1≤i≤N
这表示,在最后时刻 T T T,每个状态的后向概率不仅仅是 1,而是还要考虑从当前状态 q i q_i qi 到某个“终止状态” q F q_F qF 的转移概率 a i , F a_{i,F} ai,F。这种设置适用于显式定义了“终止状态”的情况。
两种初始化条件的区别在于,是否需要显式考虑一个“终止状态” q F q_F qF:
常见初始化(设为 1):
不需要终止状态,即模型默认序列的末尾就是自然的结束点。这种情况下,最后一个时刻的后向概率 β T ( i ) \beta_T(i) βT(i) 直接初始化为 1,表示没有剩余的观测值。
带终止状态的初始化:
明确设置了一个“终止状态” q F q_F qF,并且最后时刻 T T T 的后向概率还需要包括从当前状态 q i q_i qi 到终止状态 q F q_F qF 的转移概率 a i , F a_{i,F} ai,F。
如果使用常见的后向算法初始化条件 β T ( i ) = 1 \beta_T(i) = 1 βT(i)=1 并且有两个状态 q 1 q_1 q1 和 q 2 q_2 q2,后向概率是否应该是 1 / 2 1/2 1/2 的问题可以通过以下详细分析来解答。
在这种初始化条件下,后向概率没有直接考虑隐藏状态的分布是否需要归一化,因为后向算法本身会在整个递归过程中对所有状态的概率进行加权和归一化。因此,在最后时刻,直接设置 β T ( i ) = 1 \beta_T(i) = 1 βT(i)=1 是完全合理的,不需要进行额外的处理。
后向概率 β t ( i ) \beta_t(i) βt(i) 本身并不要求是归一化的概率分布。相反: