1. 前向概率 α t ( i ) \alpha_t(i) αt(i) 的真正含义
公式:
α
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 \mid \lambda)
αt(i)=P(O1,O2,…,Ot,qt=i∣λ)
解释:
-
α
t
(
i
)
\alpha_t(i)
αt(i) 表示:
- 从初始状态开始
- 经历 t t t 步 后
- 恰好在状态 i i i
- 并且观察到了前 t t t 个观测值 O 1 , O 2 , . . . , O t O_1, O_2, ..., O_t O1,O2,...,Ot 的概率。
它 不是 “在 t t t 时刻生成某个具体观测值的概率”,而是 “经历 t t t 步到达状态 i i i 并生成整个序列 O 1 , O 2 , . . . , O t O_1, O_2, ..., O_t O1,O2,...,Ot 的概率”。
问题:
"如果 O t O_t Ot 不能由状态 i i i 生成,那为什么还会有 α t ( i ) \alpha_t(i) αt(i) ?
回答:如果状态 i i i 在时刻 t t t 不能生成观测 O t O_t Ot,那么对应的状态输出概率 b i ( O t ) b_i(O_t) bi(Ot) 会是 0,使得 α t ( i ) \alpha_t(i) αt(i) 变得很小或为 0,但不代表它不成立。因为前向概率不仅仅依赖于当前状态的观测输出,还考虑了所有可能的路径。
2. 前向概率递推公式
α t ( i ) = ∑ j α t − 1 ( j ) a j i b i ( O t ) \alpha_t(i) = \sum_{j} \alpha_{t-1}(j) a_{ji} b_i(O_t) αt(i)=j∑αt−1(j)ajibi(Ot)
拆解含义
- α t − 1 ( j ) \alpha_{t-1}(j) αt−1(j):在时刻 t − 1 t-1 t−1 处于状态 j j j 并生成观测 O 1 , O 2 , . . . , O t − 1 O_1, O_2, ..., O_{t-1} O1,O2,...,Ot−1 的概率。
- a j i a_{ji} aji:从状态 j j j 转移到状态 i i i 的概率。
- b i ( O t ) b_i(O_t) bi(Ot):状态 i i i 生成观测 O t O_t Ot 的概率。
为什么它计算的是 “到达状态 i i i 的概率”?
- α t ( i ) \alpha_t(i) αt(i) 只计算在 t t t 时刻到达状态 i i i 的所有可能路径的概率。
- 它不关心最终状态是什么,也不关心未来会发生什么,只关心目前是否处于状态 i i i。
什么时候 α t ( i ) = 0 \alpha_t(i) = 0 αt(i)=0?
如果:
- 状态 i i i 不能生成 O t O_t Ot,即 b i ( O t ) = 0 b_i(O_t) = 0 bi(Ot)=0,那么不管之前概率多大,最终 α t ( i ) \alpha_t(i) αt(i) 也会变成 0。
- 没有任何路径能让系统在时刻 t t t 进入状态 i i i,即 ∑ j α t − 1 ( j ) a j i = 0 \sum_j \alpha_{t-1}(j) a_{ji} = 0 ∑jαt−1(j)aji=0,那么 α t ( i ) \alpha_t(i) αt(i) 也会是 0。
因此:
- α t ( i ) \alpha_t(i) αt(i) 计算的是 “所有可能路径最终到达状态 i i i 并生成观测 O t O_t Ot 的概率”。
3. 后向概率 β t ( i ) \beta_t(i) βt(i) 的真正含义
公式:
β
t
(
i
)
=
P
(
O
t
+
1
,
O
t
+
2
,
.
.
.
,
O
T
∣
q
t
=
i
,
λ
)
\beta_t(i) = P(O_{t+1}, O_{t+2}, ..., O_T \mid q_t = i, \lambda)
βt(i)=P(Ot+1,Ot+2,...,OT∣qt=i,λ)
解释:
- 假设已经确定在 t t t 时刻处于状态 i i i,那么从 t t t 到最终时刻 T T T 还能观察到后续序列 O t + 1 , O t + 2 , . . . , O T O_{t+1}, O_{t+2}, ..., O_T Ot+1,Ot+2,...,OT 的概率是多少?
- 它不考虑到达状态 i i i 的概率,只计算如果已经在状态 i i i,后续还会发生的概率。
后向概率递推公式
β t ( i ) = ∑ j a i j b j ( O t + 1 ) β t + 1 ( j ) \beta_t(i) = \sum_j a_{ij} b_j(O_{t+1}) \beta_{t+1}(j) βt(i)=j∑aijbj(Ot+1)βt+1(j)
拆解含义
- a i j a_{ij} aij:从状态 i i i 转移到状态 j j j 的概率。
- b j ( O t + 1 ) b_j(O_{t+1}) bj(Ot+1):状态 j j j 生成观测 O t + 1 O_{t+1} Ot+1 的概率。
- β t + 1 ( j ) \beta_{t+1}(j) βt+1(j):状态 j j j 在 t + 1 t+1 t+1 之后观察到所有剩余序列的概率。
前向算法(Forward Algorithm)计算的是 在时刻 t t t 生成观测序列的概率,但它不是指 “仅仅在时刻 t t t 生成观测值 O t O_t Ot 的概率”,而是指 “从起始状态开始,经过 t t t 步,到达某个状态 i i i 并生成完整的部分观测序列 O 1 , O 2 , . . . , O t O_1, O_2, ..., O_t O1,O2,...,Ot 的概率”。
前向算法的核心目标
P
(
O
∣
λ
)
=
∑
i
α
T
(
i
)
P(O \mid \lambda) = \sum_{i} \alpha_T(i)
P(O∣λ)=i∑αT(i)
它的目的是高效地计算整个观测序列
O
=
(
O
1
,
O
2
,
.
.
.
,
O
T
)
O = (O_1, O_2, ..., O_T)
O=(O1,O2,...,OT) 发生的概率。
前向概率 α t ( i ) \alpha_t(i) αt(i) 的真正含义
α
t
(
i
)
=
P
(
O
1
,
O
2
,
.
.
.
,
O
t
,
q
t
=
i
∣
λ
)
\alpha_t(i) = P(O_1, O_2, ..., O_t, q_t = i \mid \lambda)
αt(i)=P(O1,O2,...,Ot,qt=i∣λ)
它表示:
- 从初始状态开始
- 经过 t t t 步,刚好到达状态 i i i
- 并且已经生成了观测序列 O 1 , O 2 , . . . , O t O_1, O_2, ..., O_t O1,O2,...,Ot
- 的概率
所以,前向概率 累积了所有可能路径,它不仅仅是 “单独在时刻 t t t 生成 O t O_t Ot 的概率”,而是 “所有能走到 i i i 并生成完整部分观测的概率”。
前向算法的递推公式
α t ( i ) = ∑ j α t − 1 ( j ) a j i b i ( O t ) \alpha_t(i) = \sum_{j} \alpha_{t-1}(j) a_{ji} b_i(O_t) αt(i)=j∑αt−1(j)ajibi(Ot)
- α t − 1 ( j ) \alpha_{t-1}(j) αt−1(j): 之前一步 t − 1 t-1 t−1 处于状态 j j j 并生成了 O 1 , . . . , O t − 1 O_1, ..., O_{t-1} O1,...,Ot−1 的概率。
- a j i a_{ji} aji: 从状态 j j j 迁移到 i i i 的概率。
- b i ( O t ) b_i(O_t) bi(Ot): 处于状态 i i i 时生成 O t O_t Ot 的概率。
这个递推过程意味着:
- 考虑了所有路径,只要到达了 t t t 时刻的状态 i i i,都被纳入计算。
- 并非仅仅是 P ( O t ∣ q t = i ) P(O_t \mid q_t = i) P(Ot∣qt=i),它还包含了到达 t t t 的所有可能路径的加权概率。
最终的前向算法目标
计算整个观测序列
O
O
O 发生的概率:
P
(
O
∣
λ
)
=
∑
i
α
T
(
i
)
P(O \mid \lambda) = \sum_{i} \alpha_T(i)
P(O∣λ)=i∑αT(i)
即所有可能的路径加总后,生成
O
1
,
O
2
,
.
.
.
,
O
T
O_1, O_2, ..., O_T
O1,O2,...,OT 的概率。
直观理解:前向算法 ≠ 只计算单个 O t O_t Ot 的生成概率
假设:
- 你在公园散步,你的路径是随机的。
- 你每走一步都会拍一张照片(这就是观测 O t O_t Ot)。
- 前向算法就是计算:“从起点出发,到达某个位置,并拍到所有这些照片的概率是多少?”
- 这个概率考虑了所有可能的路径,并不是简单地计算某张照片单独出现的概率,而是 “所有路径导致整个照片序列被拍摄的总概率”。
✅ 前向算法计算的是在
t
t
t 时刻生成观测序列
O
1
,
O
2
,
.
.
.
,
O
t
O_1, O_2, ..., O_t
O1,O2,...,Ot 的概率,而不是仅仅在
t
t
t 时刻生成
O
t
O_t
Ot 的概率。
✅ 它累积了所有可能路径的概率,而不是仅考虑单步
P
(
O
t
∣
q
t
=
i
)
P(O_t \mid q_t = i)
P(Ot∣qt=i)。
✅ 最终目标是计算整个观测序列的概率
P
(
O
∣
λ
)
P(O \mid \lambda)
P(O∣λ)。
计算在时刻 t 处于状态 i 的概率
理论推导
公式:
γ
t
(
i
)
=
α
t
(
i
)
β
t
(
i
)
P
(
O
∣
λ
)
\gamma_t(i) = \frac{\alpha_t(i) \beta_t(i)}{P(O|\lambda)}
γt(i)=P(O∣λ)αt(i)βt(i)
其中:
- γ t ( i ) \gamma_t(i) γt(i):在时刻 t t t 处于状态 i i i 的概率。
- α t ( i ) \alpha_t(i) αt(i)(前向概率,Forward Probability):在时刻 t t t 到达状态 i i i 并观察到部分观测序列 O 1 , O 2 , . . . , O t O_1, O_2, ..., O_t O1,O2,...,Ot 的概率。
- β t ( i ) \beta_t(i) βt(i)(后向概率,Backward Probability):在时刻 t t t 处于状态 i i i,并且从时刻 t + 1 t+1 t+1 到 T T T 观察到剩余的观测序列 O t + 1 , O t + 2 , . . . , O T O_{t+1}, O_{t+2}, ..., O_T Ot+1,Ot+2,...,OT 的概率。
-
P
(
O
∣
λ
)
P(O|\lambda)
P(O∣λ)(观测序列的概率):HMM 生成整个观测序列
O
O
O 的总概率,即:
P ( O ∣ λ ) = ∑ i α T ( i ) P(O|\lambda) = \sum_{i} \alpha_T(i) P(O∣λ)=i∑αT(i)
我们要计算的是:
γ
t
(
i
)
=
P
(
q
t
=
i
∣
O
,
λ
)
\gamma_t(i) = P(q_t = i | O, \lambda)
γt(i)=P(qt=i∣O,λ)
即在给定 HMM 参数 λ \lambda λ 和整个观测序列 O O O 的情况下,在时刻 t t t 处于状态 i i i 的概率。
利用 Bayes 公式:
P
(
A
∣
B
)
=
P
(
A
,
B
)
P
(
B
)
P(A|B) = \frac{P(A, B)}{P(B)}
P(A∣B)=P(B)P(A,B)
在这里,
A
A
A 是 “时刻
t
t
t 处于状态
i
i
i”,
B
B
B 是 “观测序列
O
O
O 发生”。因此:
γ
t
(
i
)
=
P
(
q
t
=
i
,
O
∣
λ
)
P
(
O
∣
λ
)
\gamma_t(i) = \frac{P(q_t = i, O | \lambda)}{P(O | \lambda)}
γt(i)=P(O∣λ)P(qt=i,O∣λ)
由于 HMM 的马尔科夫性质,
P
(
q
t
=
i
,
O
∣
λ
)
P(q_t = i, O | \lambda)
P(qt=i,O∣λ) 可以分解为:
P
(
q
t
=
i
,
O
∣
λ
)
=
P
(
O
1
:
t
,
q
t
=
i
∣
λ
)
P
(
O
t
+
1
:
T
∣
q
t
=
i
,
λ
)
P(q_t = i, O | \lambda) = P(O_{1:t}, q_t = i | \lambda) P(O_{t+1:T} | q_t = i, \lambda)
P(qt=i,O∣λ)=P(O1:t,qt=i∣λ)P(Ot+1:T∣qt=i,λ)
前向概率
α
t
(
i
)
\alpha_t(i)
αt(i) 定义为:
α
t
(
i
)
=
P
(
O
1
:
t
,
q
t
=
i
∣
λ
)
\alpha_t(i) = P(O_{1:t}, q_t = i | \lambda)
αt(i)=P(O1:t,qt=i∣λ)
后向概率
β
t
(
i
)
\beta_t(i)
βt(i) 定义为:
β
t
(
i
)
=
P
(
O
t
+
1
:
T
∣
q
t
=
i
,
λ
)
\beta_t(i) = P(O_{t+1:T} | q_t = i, \lambda)
βt(i)=P(Ot+1:T∣qt=i,λ)
因此:
P
(
q
t
=
i
,
O
∣
λ
)
=
α
t
(
i
)
β
t
(
i
)
P(q_t = i, O | \lambda) = \alpha_t(i) \beta_t(i)
P(qt=i,O∣λ)=αt(i)βt(i)
结合 Bayes 公式:
γ
t
(
i
)
=
α
t
(
i
)
β
t
(
i
)
P
(
O
∣
λ
)
\gamma_t(i) = \frac{\alpha_t(i) \beta_t(i)}{P(O|\lambda)}
γt(i)=P(O∣λ)αt(i)βt(i)
生活例子理解
假设你在一个公园散步,而这个公园里有三种不同的区域:
- 草地(状态 1)
- 湖边(状态 2)
- 森林(状态 3)
你在公园里走了一整天(观测序列 O O O),但你不记得自己每个时刻具体在哪个区域,只能通过你的照片和 GPS 数据(观测数据)来推测。
1. 前向概率 α_t(i) 的意义
假设你在第 t t t 分钟收到一张带有草地背景的照片(当前观测),前向概率 α t ( i ) \alpha_t(i) αt(i) 代表的是:
- “从早上开始散步到当前时间点,刚好走到草地的概率。”
即考虑所有可能的路径,只要最后到达草地都算进去。
2. 后向概率 β_t(i) 的意义
假设你在第 t t t 分钟收到一条朋友发来的信息,说你半小时后会出现在湖边。后向概率 β t ( i ) \beta_t(i) βt(i) 代表的是:
- “如果我现在在草地,那从这个时间点到散步结束,按照正常路径行走,并最终达到所有可能的观测序列的概率。”
3. 计算 γ_t(i)
现在你要计算 在第 t t t 分钟你在草地上的概率。 这意味着你需要结合:
- 前面的路径可能性(你早上是怎么走到这里的?)
- 后面的路径可能性(如果你现在在草地,未来的观察数据是否支持这个假设?)
公式:
γ
t
(
i
)
=
α
t
(
i
)
β
t
(
i
)
P
(
O
∣
λ
)
\gamma_t(i) = \frac{\alpha_t(i) \beta_t(i)}{P(O|\lambda)}
γt(i)=P(O∣λ)αt(i)βt(i)
其中:
- 分子 α t ( i ) β t ( i ) \alpha_t(i) \beta_t(i) αt(i)βt(i):表示你在 第 t t t 分钟在草地的所有可能路径的总概率。
- 分母 P ( O ∣ λ ) P(O|\lambda) P(O∣λ):表示 所有可能路径下能看到你所有照片和 GPS 数据的概率,用于归一化。
4. 直观理解
假设:
- 你的 GPS 记录显示,你早上 9 点时大概率在草地上(前向概率 α t ( i ) \alpha_t(i) αt(i) 很高)。
- 你的朋友发来消息,说你 10 点左右通常会到湖边(后向概率 β t ( i ) \beta_t(i) βt(i))。
- 但是 GPS 数据也显示,偶尔你会走不同的路径,影响整体概率 P ( O ∣ λ ) P(O|\lambda) P(O∣λ)。
最终:
γ
t
(
i
)
=
你在第
t
分钟在草地的路径概率
所有可能路径的总概率
\gamma_t(i) = \frac{\text{你在第 $t$ 分钟在草地的路径概率}}{\text{所有可能路径的总概率}}
γt(i)=所有可能路径的总概率你在第 t 分钟在草地的路径概率
这个值就是 “在时间 t t t 你在草地上的可能性”。
总结
- 前向概率 α t ( i ) \alpha_t(i) αt(i):从一开始到 t t t 的可能性。
- 后向概率 β t ( i ) \beta_t(i) βt(i):从 t t t 开始到结束的可能性。
- 归一化 P ( O ∣ λ ) P(O|\lambda) P(O∣λ):所有路径的总可能性。
- 最终 γ t ( i ) \gamma_t(i) γt(i):你在某个时刻 t t t 处于状态 i i i 的概率。