HMM(隐马尔可夫模型)的理解7——Baum–Welch 算法

文章目录

  • 一、论文信息
    • [III.HMM三个基本问题的求解(SOLUTIONS TO THE THREE BASIC PROBLEMS OF HMMs)](#III.HMM三个基本问题的求解(SOLUTIONS TO THE THREE BASIC PROBLEMS OF HMMs))
    • [C. 问题 3 的求解 1--5](#C. 问题 3 的求解 [1]–[5])
    • 问题1
    • 一、为什么这个问题难?
    • 二、核心矛盾与思路:"先有鸡还是先有蛋"
    • 三、两个关键量的含义
    • [四、重估计公式 (40):本质是"按期望次数重新数一遍"](#四、重估计公式 (40):本质是"按期望次数重新数一遍")
    • 五、为什么这样迭代一定有效?
    • 六、几个要点
    • 一句话总结
    • 问题2
    • [1. 为什么"知道状态序列就能数次数"?](#1. 为什么"知道状态序列就能数次数"?)
    • [2. 公式 (37) 的分子------没有少,是记号约定的问题](#2. 公式 (37) 的分子——没有少,是记号约定的问题)
    • [3. 为什么似然一定不减?](#3. 为什么似然一定不减?)
    • [4. 语音识别里实际怎么用?](#4. 语音识别里实际怎么用?)
    • [5. 和蒙特卡洛方法的区别与联系](#5. 和蒙特卡洛方法的区别与联系)
    • [1. 为什么"知道状态序列就能数次数"?](#1. 为什么"知道状态序列就能数次数"?)
    • [2. 公式 (37) 的分子------没有少,是记号约定的问题](#2. 公式 (37) 的分子——没有少,是记号约定的问题)
    • [3. 为什么似然一定不减?](#3. 为什么似然一定不减?)
    • [4. 语音识别里实际怎么用?](#4. 语音识别里实际怎么用?)
    • [5. 和蒙特卡洛方法的区别与联系](#5. 和蒙特卡洛方法的区别与联系)
    • [问题3:HMM 三大算法梳理](#问题3:HMM 三大算法梳理)
    • 〇、先统一约定(边界问题的根源)
    • [一、前向算法(解决问题 1:评估 P ( O ∣ λ ) P(O|\lambda) P(O∣λ))](#一、前向算法(解决问题 1:评估 P ( O ∣ λ ) P(O|\lambda) P(O∣λ)))
    • [二、后向算法( β \beta β 变量)](#二、后向算法( β \beta β 变量))
    • [三、Viterbi 算法(解决问题 2:最优路径)](#三、Viterbi 算法(解决问题 2:最优路径))
    • [四、Baum--Welch(解决问题 3:训练 = EM)](#四、Baum–Welch(解决问题 3:训练 = EM))
    • 五、三算法对比总表
    • 六、"边界问题"速查清单

一、论文信息

项目 内容
论文标题(英文) A Tutorial on Hidden Markov Models and Selected Applications in Speech Recognition
论文标题(中文) 隐马尔可夫模型及其在语音识别中若干应用的教程
作者 Lawrence R. Rabiner(劳伦斯·拉宾纳)
机构 AT&T Bell Laboratories(AT&T 贝尔实验室),美国新泽西州默里山
发表期刊 Proceedings of the IEEE(IEEE 会报)
发表时间 1989 年 2 月,第 77 卷第 2 期,第 257--286 页
DOI 10.1109/5.18626
论文地址 https://www.cs.ubc.ca/\~murphyk/Bayes/rabiner.pdf

III.HMM三个基本问题的求解(SOLUTIONS TO THE THREE BASIC PROBLEMS OF HMMs)

C. 问题 3 的求解 1--5

The third, and by far the most difficult, problem of HMMs is to determine a method to adjust the model parameters ( A , B , π A, B, \pi A,B,π ) to maximize the probability of the observation sequence given the model. There is no known way to analytically solve for the model which maximizes the probability of the observation sequence. In fact, given any finite observation sequence as training data, there is no optimal way of estimating the model parameters. We can, however, choose λ = ( A , B , π ) \lambda = (A, B, \pi) λ=(A,B,π) such that P ( O ∣ λ ) P(O|\lambda) P(O∣λ) is locally maximized using an iterative procedure such as the Baum--Welch method (or equivalently the EM (expectation-modification) method 23), or using gradient techniques 14. In this section we discuss one iterative procedure, based primarily on the classic work of Baum and his colleagues, for choosing model parameters.

HMM 的第三个、也是迄今 最困难的问题是:如何确定一种方法来调整模型参数 ( A , B , π ) (A, B, \pi) (A,B,π),使得给定模型下观测序列的概率 P ( O ∣ λ ) P(O|\lambda) P(O∣λ) 最大化。目前没有已知的解析方法 能直接解出使观测序列概率最大的模型。事实上,给定任何有限的观测序列作为训练数据,都不存在估计模型参数的最优方法 。但是,我们可以通过迭代过程来选择 λ = ( A , B , π ) \lambda = (A, B, \pi) λ=(A,B,π),使 P ( O ∣ λ ) P(O|\lambda) P(O∣λ) 达到局部最大 ------例如使用 Baum--Welch 方法(或等价地,EM(期望-修正)方法 23),或者使用梯度技术 14。本节讨论一种迭代过程,它主要基于 Baum 及其同事的经典工作,用于选择模型参数。

In order to describe the procedure for reestimation (iterative update and improvement) of HMM parameters, we first define ξ t ( i , j ) \xi_t(i, j) ξt(i,j) , the probability of being in state S i S_i Si at time t t t , and state S j S_j Sj at time t + 1 t+1 t+1 , given the model and the observation sequence, i.e.

为了描述 HMM 参数重估计(迭代更新与改进)的过程,我们首先定义 ξ t ( i , j ) \xi_t(i, j) ξt(i,j):给定模型和观测序列时,时刻 t t t 处于状态 S i S_i Si、时刻 t + 1 t+1 t+1 处于状态 S j S_j Sj 的概率,即

ξ t ( i , j ) = P ( q t = S i , q t + 1 = S j ∣ O , λ ) . ( 36 ) \xi_t(i, j) = P(q_t = S_i, q_{t+1} = S_j | O, \lambda). \quad (36) ξt(i,j)=P(qt=Si,qt+1=Sj∣O,λ).(36)

The sequence of events leading to the conditions required by (36) is illustrated in Fig. 6. It should be clear, from the definitions of the forward and backward variables, that we can write ξ t ( i , j ) \xi_t(i, j) ξt(i,j) in the form

图 6 展示了产生 (36) 式所需条件的事件序列。由前向变量和后向变量的定义,可以清楚地将 ξ t ( i , j ) \xi_t(i, j) ξt(i,j) 写成:

ξ t ( i , j ) = α t ( i ) a i j b j ( O t + 1 ) β t + 1 ( j ) P ( O ∣ λ ) = α t ( i ) a i j b j ( O t + 1 ) β t + 1 ( j ) ∑ i = 1 N ∑ j = 1 N α t ( i ) a i j b j ( O t + 1 ) β t + 1 ( j ) ( 37 ) \begin{aligned} \xi_t(i, j) &= \frac{\alpha_t(i) a_{ij} b_j(O_{t+1}) \beta_{t+1}(j)}{P(O|\lambda)} \\ &= \frac{\alpha_t(i) a_{ij} b_j(O_{t+1}) \beta_{t+1}(j)}{\sum_{i=1}^N \sum_{j=1}^N \alpha_t(i) a_{ij} b_j(O_{t+1}) \beta_{t+1}(j)} \end{aligned} \quad (37) ξt(i,j)=P(O∣λ)αt(i)aijbj(Ot+1)βt+1(j)=∑i=1N∑j=1Nαt(i)aijbj(Ot+1)βt+1(j)αt(i)aijbj(Ot+1)βt+1(j)(37)

where the numerator term is just P ( q t = S i , q t + 1 = S j , O ∣ λ ) P(q_t = S_i, q_{t+1} = S_j, O|\lambda) P(qt=Si,qt+1=Sj,O∣λ) and the division by P ( O ∣ λ ) P(O|\lambda) P(O∣λ) gives the desired probability measure.

其中分子项 恰好是 P ( q t = S i , q t + 1 = S j , O ∣ λ ) P(q_t = S_i, q_{t+1} = S_j, O|\lambda) P(qt=Si,qt+1=Sj,O∣λ),除以 P ( O ∣ λ ) P(O|\lambda) P(O∣λ) 即得到所需的概率度量。

Fig. 6. Illustration of the sequence of operations required for the computation of the joint event that the system is in state S i S_i Si at time t t t and state S j S_j Sj at time t + 1 t+1 t+1 .

图 6 :计算"系统在时刻 t t t 处于状态 S i S_i Si 且时刻 t + 1 t+1 t+1 处于状态 S j S_j Sj"这一联合事件所需操作序列的示意图。

We have previously defined γ t ( i ) \gamma_t(i) γt(i) as the probability of being in state S i S_i Si at time t t t , given the observation sequence and the model; hence we can relate γ t ( i ) \gamma_t(i) γt(i) to ξ t ( i , j ) \xi_t(i, j) ξt(i,j) by summing over j j j , giving

我们此前已将 γ t ( i ) \gamma_t(i) γt(i) 定义为给定观测序列和模型时、时刻 t t t 处于状态 S i S_i Si 的概率;因此通过对 j j j 求和,可以把 γ t ( i ) \gamma_t(i) γt(i) 与 ξ t ( i , j ) \xi_t(i, j) ξt(i,j) 联系起来:

γ t ( i ) = ∑ j = 1 N ξ t ( i , j ) . ( 38 ) \gamma_t(i) = \sum_{j=1}^N \xi_t(i, j). \quad (38) γt(i)=j=1∑Nξt(i,j).(38)

If we sum γ t ( i ) \gamma_t(i) γt(i) over the time index t t t , we get a quantity which can be interpreted as the expected (over time) number of times that state S i S_i Si is visited, or equivalently, the expected number of transitions made from state S i S_i Si (if we exclude the time slot t = T t = T t=T from the summation). Similarly, summation of ξ t ( i , j ) \xi_t(i, j) ξt(i,j) over t t t (from t = 1 t = 1 t=1 to t = T − 1 t = T - 1 t=T−1 ) can be interpreted as the expected number of transitions from state S i S_i Si to state S j S_j Sj . That is

如果将 γ t ( i ) \gamma_t(i) γt(i) 对时间下标 t t t 求和,得到的 可解释为:状态 S i S_i Si 被访问的(对时间的)期望次数 ;等价地,也就是从状态 S i S_i Si 出发的转移的期望次数 (若求和中排除 t = T t = T t=T 这个时刻)。类似地,将 ξ t ( i , j ) \xi_t(i, j) ξt(i,j) 对 t t t(从 t = 1 t=1 t=1 到 t = T − 1 t=T-1 t=T−1)求和,可解释为从状态 S i S_i Si 转移到状态 S j S_j Sj 的期望次数。即:

∑ t = 1 T − 1 γ t ( i ) = expected number of transitions from S i ( 39 a ) \sum_{t=1}^{T-1} \gamma_t(i) = \text{expected number of transitions from } S_i \quad (39a) t=1∑T−1γt(i)=expected number of transitions from Si(39a)

∑ t = 1 T − 1 ξ t ( i , j ) = expected number of transitions from S i to S j . ( 39 b ) \sum_{t=1}^{T-1} \xi_t(i, j) = \text{expected number of transitions from } S_i \text{ to } S_j. \quad (39b) t=1∑T−1ξt(i,j)=expected number of transitions from Si to Sj.(39b)

Using the above formulas (and the concept of counting event occurrences) we can give a method for reestimation of the parameters of an HMM. A set of reasonable reestimation formulas for π \pi π , A A A , and B B B are

利用上述公式(以及"计数事件发生次数"的概念),我们可以给出一套 HMM 参数重估计方法。一组合理的 π \pi π、 A A A、 B B B 重估计公式为:

π ˉ i = expected frequency (number of times) in state S i at time ( t = 1 ) = γ 1 ( i ) ( 40 a ) \bar{\pi}_i = \text{expected frequency (number of times) in state } S_i \text{ at time } (t = 1) = \gamma_1(i) \quad (40a) πˉi=expected frequency (number of times) in state Si at time (t=1)=γ1(i)(40a)

a ˉ i j = expected number of transitions from state S i to state S j expected number of transitions from state S i = ∑ t = 1 T − 1 ξ t ( i , j ) ∑ t = 1 T − 1 γ t ( i ) ( 40 b ) \begin{aligned} \bar{a}{ij} &= \frac{\text{expected number of transitions from state } S_i \text{ to state } S_j}{\text{expected number of transitions from state } S_i} \\ &= \frac{\sum{t=1}^{T-1} \xi_t(i, j)}{\sum_{t=1}^{T-1} \gamma_t(i)} \end{aligned} \quad (40b) aˉij=expected number of transitions from state Siexpected number of transitions from state Si to state Sj=∑t=1T−1γt(i)∑t=1T−1ξt(i,j)(40b)

b ˉ i ( k ) = expected number of times in state j and observing symbol v k expected number of times in state j = ∑ t = 1 T γ t ( j ) s.t. O t = v k ∑ t = 1 T γ t ( j ) . ( 40 c ) \begin{aligned} \bar{b}i(k) &= \frac{\text{expected number of times in state } j \text{ and observing symbol } v_k}{\text{expected number of times in state } j} \\ &= \frac{\sum{t=1}^T \gamma_t(j) \text{ s.t. } O_t = v_k}{\sum_{t=1}^T \gamma_t(j)}. \end{aligned} \quad (40c) bˉi(k)=expected number of times in state jexpected number of times in state j and observing symbol vk=∑t=1Tγt(j)∑t=1Tγt(j) s.t. Ot=vk.(40c)

If we define the current model as λ = ( A , B , π ) \lambda = (A, B, \pi) λ=(A,B,π) , and use that to compute the right-hand sides of (40a)--(40c), and we define the reestimated model as λ ˉ = ( A ˉ , B ˉ , π ˉ ) \bar{\lambda} = (\bar{A}, \bar{B}, \bar{\pi}) λˉ=(Aˉ,Bˉ,πˉ) , as determined from the left-hand sides of (40a)--(40c), then it has been proven by Baum and his colleagues 6, 3 that either 1) the initial model λ \lambda λ defines a critical point of the likelihood function , in which case λ ˉ = λ \bar{\lambda} = \lambda λˉ=λ ; or 2) model λ ˉ \bar{\lambda} λˉ is more likely than model λ \lambda λ in the sense that P ( O ∣ λ ˉ ) > P ( O ∣ λ ) P(O|\bar{\lambda}) > P(O|\lambda) P(O∣λˉ)>P(O∣λ) , i.e., we have found a new model λ ˉ \bar{\lambda} λˉ from which the observation sequence is more likely to have been produced.

若把当前模型定义为 λ = ( A , B , π ) \lambda = (A, B, \pi) λ=(A,B,π),用它来计算 (40a)--(40c) 各式右端,并把由 (40a)--(40c) 左端确定的重估计模型定义为 λ ˉ = ( A ˉ , B ˉ , π ˉ ) \bar{\lambda} = (\bar{A}, \bar{B}, \bar{\pi}) λˉ=(Aˉ,Bˉ,πˉ),那么 Baum 及其同事 63 已证明:要么 1) 初始模型 λ \lambda λ 已经是似然函数 的一个临界点 ,此时 λ ˉ = λ \bar{\lambda} = \lambda λˉ=λ;要么 2) 模型 λ ˉ \bar{\lambda} λˉ 比模型 λ \lambda λ 更优,即 P ( O ∣ λ ˉ ) > P ( O ∣ λ ) P(O|\bar{\lambda}) > P(O|\lambda) P(O∣λˉ)>P(O∣λ)------也就是说,我们找到了一个新模型 λ ˉ \bar{\lambda} λˉ,观测序列由它产生的可能性更大。

Based on the above procedure, if we iteratively use λ ˉ \bar{\lambda} λˉ in place of λ \lambda λ and repeat the reestimation calculation, we then can improve the probability of O O O being observed from the model until some limiting point is reached. The final result of this reestimation procedure is called a maximum like-lihood estimate of the HMM. It should be pointed out that the forward-backward algorithm leads to local maxima only, and that in most problems of interest , the optimization surface is very complex and has many local maxima.

基于上述过程,如果迭代地用 λ ˉ \bar{\lambda} λˉ 代替 λ \lambda λ 并重复重估计计算,就能不断提高从模型中观测到 O O O 的概率,直至达到某个极限点。该重估计过程的最终结果称为 HMM 的最大似然估计 。需要指出的是,前向-后向算法只能导致局部极大值 ;而且在大多数实际问题中,优化曲面非常复杂,存在许多局部极大值。

The reestimation formulas of (40a)--(40c) can be derived directly by maximizing (using standard constrained optimization techniques) Baum's auxiliary function over λ ˉ \bar{\lambda} λˉ .

(40a)--(40c) 的重估计公式,可以通过对 λ ˉ \bar{\lambda} λˉ 最大化 Baum 辅助函数(使用标准的约束优化技术)直接推导出 来:

Q ( λ , λ ˉ ) = ∑ O P ( Q ∣ O , λ ) log ⁡ P ( O , Q ∣ λ ˉ ) ( 41 ) Q(\lambda, \bar{\lambda}) = \sum_O P(Q|O, \lambda) \log P(O, Q\|\\bar{\\lambda}) \quad (41) Q(λ,λˉ)=O∑P(Q∣O,λ)logP(O,Q∣λˉ)(41)

It has been proven by Baum and his colleagues 6, 3 that maximization of Q ( λ , λ ˉ ) Q(\lambda, \bar{\lambda}) Q(λ,λˉ) leads to increased likelihood, i.e.

Baum 及其同事 63 已证明,最大化 Q ( λ , λ ˉ ) Q(\lambda, \bar{\lambda}) Q(λ,λˉ) 必然使似然增大,即

max ⁡ λ ˉ Q ( λ , λ ˉ ) ⇒ P ( O ∣ λ ˉ ) ≥ P ( O ∣ λ ) . ( 42 ) \max_{\bar{\lambda}} Q(\\lambda, \\bar{\\lambda}) \Rightarrow P(O|\bar{\lambda}) \geq P(O|\lambda). \quad (42) λˉmaxQ(λ,λˉ)⇒P(O∣λˉ)≥P(O∣λ).(42)

Eventually the likelihood function converges to a critical point.

最终,似然函数收敛到一个临界点。

Notes on the Reestimation Procedure: The reestimation formulas can readily be interpreted as an implementation of the EM algorithm of statistics 23 in which the E (expectation) step is the calculation of the auxiliary function Q ( λ , λ ˉ ) Q(\lambda, \bar{\lambda}) Q(λ,λˉ) , and the M (modification) step is the maximization over λ ˉ \bar{\lambda} λˉ . Thus the Baum-Welch reestimation equations are essentially identical to the EM steps for this particular problem.

关于重估计过程的说明: 重估计公式可以直接理解为统计学 中 EM 算法 23 的一种实现:其中 E(期望)步 是辅助函数 Q ( λ , λ ˉ ) Q(\lambda, \bar{\lambda}) Q(λ,λˉ) 的计算,M(修正/最大化)步 是对 λ ˉ \bar{\lambda} λˉ 求最大化。因此,Baum--Welch 重估计方程本质上与针对这一特定问题的 EM 步骤完全等同。

An important aspect of the reestimation procedure is that the stochastic constraints of the HMM parameters, namely

重估计过程的一个重要特点是:HMM 参数的随机性约束,即

∑ i = 1 N π ˉ i = 1 ( 43 a ) \sum_{i=1}^N \bar{\pi}_i = 1 \quad (43a) i=1∑Nπˉi=1(43a)

∑ j = 1 N a ˉ i j = 1 , 1 ≤ i ≤ N ( 43 b ) \sum_{j=1}^N \bar{a}_{ij} = 1, \quad 1 \leq i \leq N \quad (43b) j=1∑Naˉij=1,1≤i≤N(43b)

∑ k = 1 M b ˉ i ( k ) = 1 , 1 ≤ j ≤ N ( 43 c ) \sum_{k=1}^M \bar{b}_i(k) = 1, \quad 1 \leq j \leq N \quad (43c) k=1∑Mbˉi(k)=1,1≤j≤N(43c)

are automatically satisfied at each iteration. By looking at the parameter estimation problem as a constrained optimization of P ( O ∣ λ ) P(O|\lambda) P(O∣λ) (subject to the constraints of (43)), the techniques of Lagrange multipliers can be used to find the values of π i \pi_i πi , a i j a_{ij} aij , and b i ( k ) b_i(k) bi(k) which maximize P P P (we use the notation P = P ( O ∣ λ ) P = P(O|\lambda) P=P(O∣λ) as short-hand in this section). Based on setting up a standard Lagrange optimization using Lagrange multipliers, it can readily be shown that P P P is maximized when the following conditions are met:

在每次迭代中都会自动满足 。若把参数估计问题看作对 P ( O ∣ λ ) P(O|\lambda) P(O∣λ) 的约束优化(受 (43) 式约束),则可用拉格朗日乘子法 求出使 P P P 最大的 π i \pi_i πi、 a i j a_{ij} aij 和 b j ( k ) b_j(k) bj(k)(本节用记号 P = P ( O ∣ λ ) P = P(O|\lambda) P=P(O∣λ) 作为简写 )。基于用拉格朗日乘子建立标准的拉格朗日优化问题,可以很容易地证明: P P P 在满足以下条件时达到最大:

π j = π i ∂ P ∂ π j ∑ k = 1 N π k ∂ P ∂ π k ( 44 a ) \pi_j = \frac{\pi_i \frac{\partial P}{\partial \pi_j}}{\sum_{k=1}^N \pi_k \frac{\partial P}{\partial \pi_k}} \quad (44a) πj=∑k=1Nπk∂πk∂Pπi∂πj∂P(44a)

a i j = a i j ∂ P ∂ a i j ∑ k = 1 N a i k ∂ P ∂ a i k ( 44 b ) a_{ij} = \frac{a_{ij} \frac{\partial P}{\partial a_{ij}}}{\sum_{k=1}^N a_{ik} \frac{\partial P}{\partial a_{ik}}} \quad (44b) aij=∑k=1Naik∂aik∂Paij∂aij∂P(44b)

b j ( k ) = b j ( k ) ∂ P ∂ b j ( k ) ∑ ℓ = 1 M b j ( ℓ ) ∂ P ∂ b j ( ℓ ) ( 44 c ) b_j(k) = \frac{b_j(k) \frac{\partial P}{\partial b_j(k)}}{\sum_{\ell=1}^M b_j(\ell) \frac{\partial P}{\partial b_j(\ell)}} \quad (44c) bj(k)=∑ℓ=1Mbj(ℓ)∂bj(ℓ)∂Pbj(k)∂bj(k)∂P(44c)

By appropriate manipulation of (44), the right-hand sides of each equation can be readily converted to be identical to the right-hand sides of each part of (40a)-(40c), thereby showing that the reestimation formulas are indeed exactly correct at critical points of P P P . In fact the form of (44) is essentially that of a reestimation formula in which the left-hand side is the reestimate and the right-hand side is computed using the current values of the variables.

通过对 (44) 式作适当变形 ,各式右端可以容易地化为与 (40a)--(40c) 各部分右端完全相同 的形式,从而表明重估计公式在 P P P 的临界点处确实是严格正确的。事实上,(44) 式的形式本质上就是一个重估计公式:左端是重估计值,右端用变量的当前值计算。

Finally, we note that since the entire problem can be set up as an optimization problem, standard gradient techniques can be used to solve for "optimal" values of the model parameters 14. Such procedures have been tried and have been shown to yield solutions comparable to those of the standard reestimation procedures.

最后我们指出,由于整个问题可以建立为一个优化问题,因此也可以使用标准的梯度技术 来求解模型参数的"最优"值 14这类方法已被尝试过,并被证明能得到与标准重估计过程相当的结果。

问题1

这一节讲的是 HMM 三大问题中最难的第三个:模型训练(参数学习) ------只有观测数据 O O O,怎么把模型参数 λ = ( A , B , π ) \lambda = (A, B, \pi) λ=(A,B,π) 调整得越来越好。

一、为什么这个问题难?

  • 问题 1 (评估):参数已知,算 P ( O ∣ λ ) P(O|\lambda) P(O∣λ) → 有精确解法(前向算法)。
  • 问题 2(解码):参数已知,找最优状态序列 → 有精确解法(维特比)。
  • 问题 3 (训练):参数未知,只有观测序列 → 没有解析解、没有最优解。因为状态是隐藏的,你不知道哪个观测是哪个状态产生的,参数和隐藏状态互相依赖,无法直接解。

所以只能退而求其次:用迭代 方法一步步改进,最终收敛到一个局部最优

二、核心矛盾与思路:"先有鸡还是先有蛋"

  • 如果知道每条时刻处于哪个状态 → 直接数次数就能估计参数;
  • 如果知道参数 → 就能算出每个时刻处于各状态的概率。

Baum--Welch 的做法就是两头轮流来(这正是 EM 算法的思想)。

三、两个关键量的含义

ξ t ( i , j ) \xi_t(i,j) ξt(i,j) :时刻 t t t 在状态 S i S_i Si、时刻 t + 1 t+1 t+1 在状态 S j S_j Sj 的概率。

公式 (37) 的分子很好理解:

α t ( i ) ⏟ 前 t 步走到 S i ⋅ a i j ⏟ 转移到 S j ⋅ b j ( O t + 1 ) ⏟ 在 S j 发出观测 ⋅ β t + 1 ( j ) ⏟ 后面走完 \underbrace{\alpha_t(i)}{\text{前 }t\text{ 步走到 }S_i}\cdot \underbrace{a{ij}}{\text{转移到 }S_j}\cdot \underbrace{b_j(O{t+1})}{\text{在 }S_j\text{ 发出观测}}\cdot \underbrace{\beta{t+1}(j)}_{\text{后面走完}} 前 t 步走到 Si αt(i)⋅转移到 Sj aij⋅在 Sj 发出观测 bj(Ot+1)⋅后面走完 βt+1(j)

这就是"经过边 i → j i \to j i→j"的所有路径的总概率,除以 P ( O ∣ λ ) P(O|\lambda) P(O∣λ) 归一化成概率。

γ t ( i ) \gamma_t(i) γt(i) :时刻 t t t 处于状态 S i S_i Si 的概率 = ∑ j ξ t ( i , j ) = \sum_j \xi_t(i,j) =∑jξt(i,j)(不管下一步去哪,加总即可)。

四、重估计公式 (40):本质是"按期望次数重新数一遍"

虽然不知道真实的隐藏状态,但我们有每个状态/转移出现的期望次数,于是参数估计就退化成简单的"数数/比例":

参数 直觉
π ˉ i = γ 1 ( i ) \bar{\pi}_i = \gamma_1(i) πˉi=γ1(i) 初始时刻有多大概率在 S i S_i Si,就把它当初始概率
a ˉ i j = ∑ t ξ t ( i , j ) ∑ t γ t ( i ) \bar{a}_{ij} = \dfrac{\sum_t \xi_t(i,j)}{\sum_t \gamma_t(i)} aˉij=∑tγt(i)∑tξt(i,j) 从 i i i 出发的转移中,有多大比例去了 j j j
b ˉ j ( k ) = ∑ t : O t = v k γ t ( j ) ∑ t γ t ( j ) \bar{b}j(k) = \dfrac{\sum{t:O_t=v_k}\gamma_t(j)}{\sum_t\gamma_t(j)} bˉj(k)=∑tγt(j)∑t:Ot=vkγt(j) 处于 j j j 的时刻中,有多大比例发出了符号 v k v_k vk

打个比方:你要统计一个路口各方向的车流比例,但每辆车"从哪来往哪去"你只看到有雾中的模糊概率------那就把每辆车按概率"摊"到各条路径上再统计,这就是"期望次数"的含义。

五、为什么这样迭代一定有效?

这就是 Baum 证明的关键结论(公式 42):

max ⁡ λ ˉ Q ( λ , λ ˉ )    ⇒    P ( O ∣ λ ˉ ) ≥ P ( O ∣ λ ) \max_{\bar{\lambda}} Q(\lambda, \bar{\lambda}) \;\Rightarrow\; P(O|\bar{\lambda}) \geq P(O|\lambda) λˉmaxQ(λ,λˉ)⇒P(O∣λˉ)≥P(O∣λ)

即每次重估计保证似然不减 (严格增大,除非已在临界点)。所以反复执行"用旧参数算 γ , ξ \gamma, \xi γ,ξ → 更新参数"这个循环,似然单调上升,直到收敛。

  • E 步 (Expectation):用当前模型 λ \lambda λ 通过前向-后向算法算 γ t ( i ) \gamma_t(i) γt(i)、 ξ t ( i , j ) \xi_t(i,j) ξt(i,j)(等价于计算辅助函数 Q Q Q);
  • M 步 (Maximization):用 (40) 式重新估计参数(等价于对 Q Q Q 求最大)。

六、几个要点

  1. 约束自动满足(公式 43):新参数天然是合法概率分布(行和为 1),不用额外处理。拉格朗日乘子法推导(公式 44)证明了重估计公式在临界点处严格正确。
  2. 只能保证局部最优:目标函数曲面崎岖,有很多局部极大值,初始参数的选择很重要。
  3. 也可以用梯度法:本质是优化问题,所以梯度上升等方法同样可行,效果相当。

一句话总结

训练 HMM 没有闭式解,Baum--Welch(EM)算法通过"用当前模型猜隐藏状态的分布(E 步)→ 按期望次数重新统计参数(M 步)→ 重复 "的循环,让观测序列的似然 P ( O ∣ λ ) P(O|\lambda) P(O∣λ) 单调不减地爬升,最终收敛到一个局部最优的模型。

这也是实际中训练语音识别等 HMM 系统的标准方法。

问题2

1.如果知道每条时刻处于哪个状态 → 直接数次数就能估计参数;如果知道参数 → 就能算出每个时刻处于各状态的概率。为什么?

2.公式27的分子我感觉到疑惑,我按照后向算法的理解,alpha是浓缩的过去,然后要转移到j,然后当前不是要先发射观测b_j(O_{t}然后再转移然后再观察吗?怎么感觉少了当前的转移和观测?

3.为什么每次重估计能保证似然不减?

4.实际中训练语音识别怎么运用这一套的?

5.我突然想到了蒙特卡洛方法,两者有区别和联系吗?

五个问题都问得很好,逐个来:

1. 为什么"知道状态序列就能数次数"?

因为 HMM 的三个参数本质上都是频率的估计

  • a i j a_{ij} aij = "从状态 i i i 走到状态 j j j"占"从 i i i 出发"的比例;
  • b j ( k ) b_j(k) bj(k) = "在状态 j j j 发出符号 v k v_k vk"占"处于 j j j"的比例;
  • π i \pi_i πi = 初始状态为 i i i 的比例。

如果状态序列已知,比如是 S 1 S 2 S 2 S 3 ... S_1 S_2 S_2 S_3 \dots S1S2S2S3...,那每个转移、每次发射都是看得见的事实 ,直接数一数除以总数就行(这就是最大似然估计在"完全数据"下的样子)。反过来,若参数已知,前向-后向算法自然能算出 γ t ( i ) \gamma_t(i) γt(i)。困难恰恰在于两头都不知道 ------状态藏起来,只能拿到"期望次数"(带概率权重的计数),这就是 γ \gamma γ 和 ξ \xi ξ 存在的意义。EM 就是把"确定计数"软化成"期望计数"再迭代。

2. 公式 (37) 的分子------没有少,是记号约定的问题

你的疑惑源于发射时机的约定。Rabiner 这篇论文的约定是:时刻 t t t 处于状态 q t q_t qt,由该状态发出观测 O t O_t Ot。即每个时刻的节奏是:

到达状态 j j j(在时刻 t + 1 t+1 t+1)→ 立即由 j j j 发出 O t + 1 O_{t+1} Ot+1

再看分子四项对应的"走完一整条路径片段":

KaTeX parse error: Expected '}', got 'EOF' at end of input: ...向变量定义里不含当前发射)}}

关键在于两个"浓缩"变量的边界定义

  • α t ( i ) = P ( O 1 ⋯ O t , q t = S i   ∣   λ ) \alpha_t(i) = P(O_1\cdots O_t,\ q_t=S_i\,|\,\lambda) αt(i)=P(O1⋯Ot, qt=Si∣λ) ------ 已经包含 了 t t t 时刻的发射 b i ( O t ) b_i(O_t) bi(Ot);
  • β t + 1 ( j ) = P ( O t + 2 ⋯ O T   ∣   q t + 1 = S j , λ ) \beta_{t+1}(j) = P(O_{t+2}\cdots O_T\,|\,q_{t+1}=S_j,\ \lambda) βt+1(j)=P(Ot+2⋯OT∣qt+1=Sj, λ) ------ 是从 t + 2 t+2 t+2 开始 的未来,不包含 t + 1 t+1 t+1 时刻的发射。

所以 O t O_t Ot 的发射藏在 α \alpha α 里, O t + 1 O_{t+1} Ot+1 的发射由 b j ( O t + 1 ) b_j(O_{t+1}) bj(Ot+1) 显式补上, t + 2 t+2 t+2 之后交给 β \beta β。四个因子相乘,每个观测恰好被发射一次、每条转移恰好走一次------不多不少。你可以验证:把 ξ \xi ξ 对 i , j i,j i,j 全加起来,正好等于 P ( O ∣ λ ) P(O|\lambda) P(O∣λ)(这就是 (37) 分母的由来),如果漏了项这个等式就不成立了。

3. 为什么似然一定不减?

直觉版本分两步:

第一步(E 步) :固定旧参数 λ \lambda λ, Q ( λ , λ ˉ ) = ∑ Q P ( Q ∣ O , λ ) log ⁡ P ( O , Q ∣ λ ˉ ) Q(\lambda, \bar\lambda) = \sum_Q P(Q|O,\lambda)\log P(O,Q|\bar\lambda) Q(λ,λˉ)=∑QP(Q∣O,λ)logP(O,Q∣λˉ) 是"按旧模型认为各路径的可能性加权"的完全数据对数似然。

第二步(Jensen 不等式 / EM 的标准论证) :可以证明

log ⁡ P ( O ∣ λ ˉ ) − log ⁡ P ( O ∣ λ )    ≥    Q ( λ , λ ˉ ) − Q ( λ , λ ) \log P(O|\bar\lambda) - \log P(O|\lambda) \;\geq\; Q(\lambda,\bar\lambda) - Q(\lambda,\lambda) logP(O∣λˉ)−logP(O∣λ)≥Q(λ,λˉ)−Q(λ,λ)

右边是似然增量的一个下界 。而 M 步做的正是让 Q ( λ , λ ˉ ) ≥ Q ( λ , λ ) Q(\lambda,\bar\lambda) \geq Q(\lambda,\lambda) Q(λ,λˉ)≥Q(λ,λ)(求最大),所以下界 ≥ 0 \geq 0 ≥0,于是 log ⁡ P ( O ∣ λ ˉ ) ≥ log ⁡ P ( O ∣ λ ) \log P(O|\bar\lambda) \geq \log P(O|\lambda) logP(O∣λˉ)≥logP(O∣λ)。

Baum 在 1970 年代对 HMM 这类"混合/隐含结构"直接证明了这个不等式(Baum's inequality),后来人们发现它就是 EM 算法的特例。单调不减 + 似然有上界(≤1)⇒ 必然收敛 ------但只保证收敛到局部最优点或鞍点,这正是初始值很重要的原因。

4. 语音识别里实际怎么用?

经典(深度学习之前)的流程:

  1. 建模单元:每个音素(phone,如 /a/、/sh/)用一个从左到右的 HMM 建模,典型 3~5 个状态,捕捉发音的时间演变(起始---稳定---收尾)。词 = 音素 HMM 的拼接;句子 = 词 HMM 的拼接。
  2. 观测 :语音切成 25ms 的帧,每帧提取 MFCC 特征向量。早期用矢量量化把特征变成离散符号 v k v_k vk(对应离散 b j ( k ) b_j(k) bj(k)),后来用高斯混合模型(GMM)直接对连续特征建模发射概率(重估计公式相应换成"重估高斯的均值/方差/权重")。
  3. 训练(Baum-Welch / 嵌入式训练) :拿大量"语音 + 文本标注"的句子(注意:没有人标注每帧属于哪个状态 ,这正是问题 3 的场景)。把句子对应的 HMM 串成一个大 HMM,跑前向-后向算出所有 γ \gamma γ、 ξ \xi ξ,按 (40) 更新参数,迭代几十轮直到似然收敛。
  4. Viterbi 的辅助角色 :训练中常用 Viterbi 做强制对齐(forced alignment)------用当前模型找出最优状态序列,得到帧---音素对齐,既可用于简化训练(Viterbi training,用硬对齐代替软计数),也用于检查。
  5. 识别:来一句新语音,用维特比算法在所有候选词串的 HMM 上找最优路径,输出识别文本(这就是问题 2)。

一句话:Baum-Welch 负责"学出发音模型",Viterbi 负责"用模型猜说了什么"。

5. 和蒙特卡洛方法的区别与联系

联系 :两者都在对付同一个困难------"隐藏状态 Q Q Q 太多了,无法逐一处理"。 ∑ Q \sum_Q ∑Q 有 N T N^T NT 条路径,天文数字。

区别在于对付方式:

Baum--Welch(EM) 蒙特卡洛
策略 精确求期望 :用动态规划(前向-后向)把 N T N^T NT 条路径的求和压缩成 O ( N 2 T ) O(N^2T) O(N2T),一个不漏 随机采样:抽若干条样本路径,用样本平均近似期望
性质 确定性算法,同样的输入结果唯一 随机算法,结果有涨落
适用 HMM 这种结构有马尔可夫性、可动态规划的问题 更一般、但没有好用递推结构的复杂模型

两者的交汇确实存在:

  • Monte Carlo EM(MCEM) :当 E 步的期望算不出来时(模型太复杂,没有前向-后向这样的高效递推),用蒙特卡洛采样来近似 Q Q Q 函数,再照常做 M 步。
  • Viterbi training vs Gibbs sampling :前者是"只取最可能的一条路径"(EM 的硬版本),后者是"按后验分布随机抽路径"(纯蒙特卡洛/Markov Chain Monte Carlo 路线),Baum-Welch 恰好介于两者之间------用全部路径、按概率加权

可以说:HMM 是幸运的------它的结构让期望能被精确算出来,所以经典 Baum-Welch 不需要采样;换一个没有这种结构的模型,你就只能请蒙特卡洛出场了。

五个问题都问得很好,逐个来:

1. 为什么"知道状态序列就能数次数"?

因为 HMM 的三个参数本质上都是频率的估计

  • a i j a_{ij} aij = "从状态 i i i 走到状态 j j j"占"从 i i i 出发"的比例;
  • b j ( k ) b_j(k) bj(k) = "在状态 j j j 发出符号 v k v_k vk"占"处于 j j j"的比例;
  • π i \pi_i πi = 初始状态为 i i i 的比例。

如果状态序列已知,比如是 S 1 S 2 S 2 S 3 ... S_1 S_2 S_2 S_3 \dots S1S2S2S3...,那每个转移、每次发射都是看得见的事实 ,直接数一数除以总数就行(这就是最大似然估计在"完全数据"下的样子)。反过来,若参数已知,前向-后向算法自然能算出 γ t ( i ) \gamma_t(i) γt(i)。困难恰恰在于两头都不知道 ------状态藏起来,只能拿到"期望次数"(带概率权重的计数),这就是 γ \gamma γ 和 ξ \xi ξ 存在的意义。EM 就是把"确定计数"软化成"期望计数"再迭代。

2. 公式 (37) 的分子------没有少,是记号约定的问题

你的疑惑源于发射时机的约定。Rabiner 这篇论文的约定是:时刻 t t t 处于状态 q t q_t qt,由该状态发出观测 O t O_t Ot。即每个时刻的节奏是:

到达状态 j j j(在时刻 t + 1 t+1 t+1)→ 立即由 j j j 发出 O t + 1 O_{t+1} Ot+1

再看分子四项对应的"走完一整条路径片段":

KaTeX parse error: Expected '}', got 'EOF' at end of input: ...向变量定义里不含当前发射)}}

关键在于两个"浓缩"变量的边界定义

  • α t ( i ) = P ( O 1 ⋯ O t , q t = S i   ∣   λ ) \alpha_t(i) = P(O_1\cdots O_t,\ q_t=S_i\,|\,\lambda) αt(i)=P(O1⋯Ot, qt=Si∣λ) ------ 已经包含 了 t t t 时刻的发射 b i ( O t ) b_i(O_t) bi(Ot);
  • β t + 1 ( j ) = P ( O t + 2 ⋯ O T   ∣   q t + 1 = S j , λ ) \beta_{t+1}(j) = P(O_{t+2}\cdots O_T\,|\,q_{t+1}=S_j,\ \lambda) βt+1(j)=P(Ot+2⋯OT∣qt+1=Sj, λ) ------ 是从 t + 2 t+2 t+2 开始 的未来,不包含 t + 1 t+1 t+1 时刻的发射。

所以 O t O_t Ot 的发射藏在 α \alpha α 里, O t + 1 O_{t+1} Ot+1 的发射由 b j ( O t + 1 ) b_j(O_{t+1}) bj(Ot+1) 显式补上, t + 2 t+2 t+2 之后交给 β \beta β。四个因子相乘,每个观测恰好被发射一次、每条转移恰好走一次------不多不少。你可以验证:把 ξ \xi ξ 对 i , j i,j i,j 全加起来,正好等于 P ( O ∣ λ ) P(O|\lambda) P(O∣λ)(这就是 (37) 分母的由来),如果漏了项这个等式就不成立了。

3. 为什么似然一定不减?

直觉版本分两步:

第一步(E 步) :固定旧参数 λ \lambda λ, Q ( λ , λ ˉ ) = ∑ Q P ( Q ∣ O , λ ) log ⁡ P ( O , Q ∣ λ ˉ ) Q(\lambda, \bar\lambda) = \sum_Q P(Q|O,\lambda)\log P(O,Q|\bar\lambda) Q(λ,λˉ)=∑QP(Q∣O,λ)logP(O,Q∣λˉ) 是"按旧模型认为各路径的可能性加权"的完全数据对数似然。

第二步(Jensen 不等式 / EM 的标准论证) :可以证明

log ⁡ P ( O ∣ λ ˉ ) − log ⁡ P ( O ∣ λ )    ≥    Q ( λ , λ ˉ ) − Q ( λ , λ ) \log P(O|\bar\lambda) - \log P(O|\lambda) \;\geq\; Q(\lambda,\bar\lambda) - Q(\lambda,\lambda) logP(O∣λˉ)−logP(O∣λ)≥Q(λ,λˉ)−Q(λ,λ)

右边是似然增量的一个下界 。而 M 步做的正是让 Q ( λ , λ ˉ ) ≥ Q ( λ , λ ) Q(\lambda,\bar\lambda) \geq Q(\lambda,\lambda) Q(λ,λˉ)≥Q(λ,λ)(求最大),所以下界 ≥ 0 \geq 0 ≥0,于是 log ⁡ P ( O ∣ λ ˉ ) ≥ log ⁡ P ( O ∣ λ ) \log P(O|\bar\lambda) \geq \log P(O|\lambda) logP(O∣λˉ)≥logP(O∣λ)。

Baum 在 1970 年代对 HMM 这类"混合/隐含结构"直接证明了这个不等式(Baum's inequality),后来人们发现它就是 EM 算法的特例。单调不减 + 似然有上界(≤1)⇒ 必然收敛 ------但只保证收敛到局部最优点或鞍点,这正是初始值很重要的原因。

4. 语音识别里实际怎么用?

经典(深度学习之前)的流程:

  1. 建模单元:每个音素(phone,如 /a/、/sh/)用一个从左到右的 HMM 建模,典型 3~5 个状态,捕捉发音的时间演变(起始---稳定---收尾)。词 = 音素 HMM 的拼接;句子 = 词 HMM 的拼接。
  2. 观测 :语音切成 25ms 的帧,每帧提取 MFCC 特征向量。早期用矢量量化把特征变成离散符号 v k v_k vk(对应离散 b j ( k ) b_j(k) bj(k)),后来用高斯混合模型(GMM)直接对连续特征建模发射概率(重估计公式相应换成"重估高斯的均值/方差/权重")。
  3. 训练(Baum-Welch / 嵌入式训练) :拿大量"语音 + 文本标注"的句子(注意:没有人标注每帧属于哪个状态 ,这正是问题 3 的场景)。把句子对应的 HMM 串成一个大 HMM,跑前向-后向算出所有 γ \gamma γ、 ξ \xi ξ,按 (40) 更新参数,迭代几十轮直到似然收敛。
  4. Viterbi 的辅助角色 :训练中常用 Viterbi 做强制对齐(forced alignment)------用当前模型找出最优状态序列,得到帧---音素对齐,既可用于简化训练(Viterbi training,用硬对齐代替软计数),也用于检查。
  5. 识别:来一句新语音,用维特比算法在所有候选词串的 HMM 上找最优路径,输出识别文本(这就是问题 2)。

一句话:Baum-Welch 负责"学出发音模型",Viterbi 负责"用模型猜说了什么"。

5. 和蒙特卡洛方法的区别与联系

联系 :两者都在对付同一个困难------"隐藏状态 Q Q Q 太多了,无法逐一处理"。 ∑ Q \sum_Q ∑Q 有 N T N^T NT 条路径,天文数字。

区别在于对付方式:

Baum--Welch(EM) 蒙特卡洛
策略 精确求期望 :用动态规划(前向-后向)把 N T N^T NT 条路径的求和压缩成 O ( N 2 T ) O(N^2T) O(N2T),一个不漏 随机采样:抽若干条样本路径,用样本平均近似期望
性质 确定性算法,同样的输入结果唯一 随机算法,结果有涨落
适用 HMM 这种结构有马尔可夫性、可动态规划的问题 更一般、但没有好用递推结构的复杂模型

两者的交汇确实存在:

  • Monte Carlo EM(MCEM) :当 E 步的期望算不出来时(模型太复杂,没有前向-后向这样的高效递推),用蒙特卡洛采样来近似 Q Q Q 函数,再照常做 M 步。
  • Viterbi training vs Gibbs sampling :前者是"只取最可能的一条路径"(EM 的硬版本),后者是"按后验分布随机抽路径"(纯蒙特卡洛/Markov Chain Monte Carlo 路线),Baum-Welch 恰好介于两者之间------用全部路径、按概率加权

可以说:HMM 是幸运的------它的结构让期望能被精确算出来,所以经典 Baum-Welch 不需要采样;换一个没有这种结构的模型,你就只能请蒙特卡洛出场了。

问题3:HMM 三大算法梳理

梳理一下前后向算法、Viterbi算法、Baum--Welch 算法,其中一个关键问题是边界问题

〇、先统一约定(边界问题的根源)

采用 Rabiner 论文的约定:

  • 状态数 N N N,观测符号数 M M M,序列长度 T T T;
  • 时刻 t t t 处于状态 q t q_t qt,由该状态发出观测 O t O_t Ot(发射发生在"到达状态的当下");
  • λ = ( A , B , π ) \lambda = (A, B, \pi) λ=(A,B,π):转移矩阵、发射概率、初始分布。

后面所有"边界困惑",几乎都能追溯到发射时机数组端点定义这两件事。


一、前向算法(解决问题 1:评估 P ( O ∣ λ ) P(O|\lambda) P(O∣λ))

定义 : α t ( i ) = P ( O 1 O 2 ⋯ O t , q t = S i   ∣   λ ) \alpha_t(i) = P(O_1 O_2 \cdots O_t,\ q_t = S_i \,|\, \lambda) αt(i)=P(O1O2⋯Ot, qt=Si∣λ)

⚠️ 边界要点:α \alpha α 的下标 t t t 处,观测 O t O_t Ot 已经被发射掉了------它是"含端点"的。

步骤 公式 边界处理
初始化 α 1 ( i ) = π i b i ( O 1 ) \alpha_1(i) = \pi_i b_i(O_1) α1(i)=πibi(O1) t = 1 t=1 t=1 没有转移可走,只有"开局选状态" π i \pi_i πi + 立刻发射 O 1 O_1 O1
递推 α t + 1 ( j ) = ∑ i = 1 N α t ( i )   a i j b j ( O t + 1 ) \alpha_{t+1}(j) = \left\\sum_{i=1}\^N \\alpha_t(i)\\, a_{ij}\\right b_j(O_{t+1}) αt+1(j)=∑i=1Nαt(i)aijbj(Ot+1) 转移 a i j a_{ij} aij 和发射 b j ( O t + 1 ) b_j(O_{t+1}) bj(Ot+1) 成对出现,顺序是"先转移后发射"
终止 P ( O ∣ λ ) = ∑ i = 1 N α T ( i ) P(O|\lambda) = \sum_{i=1}^N \alpha_T(i) P(O∣λ)=∑i=1NαT(i) t = T t=T t=T 之后没有未来,直接对所有终态求和,不需要任何"结束转移"

易错点 :递推式右边是 b j ( O t + 1 ) b_j(O_{t+1}) bj(Ot+1) 不是 b j ( O t ) b_j(O_t) bj(Ot)------因为 α t ( i ) \alpha_t(i) αt(i) 已经吃过 O t O_t Ot 了,再吃就重复计数。


二、后向算法( β \beta β 变量)

定义 : β t ( i ) = P ( O t + 1 O t + 2 ⋯ O T   ∣   q t = S i , λ ) \beta_t(i) = P(O_{t+1} O_{t+2} \cdots O_T \,|\, q_t = S_i,\ \lambda) βt(i)=P(Ot+1Ot+2⋯OT∣qt=Si, λ)

⚠️ 边界要点:β \beta β 的下标 t t t 处,观测 O t O_t Ot 不在其中 ------它是"不含端点"的,从 t + 1 t+1 t+1 开始算。这正好和 α \alpha α 互补!

步骤 公式 边界处理
初始化 β T ( i ) = 1 \beta_T(i) = 1 βT(i)=1(对所有 i i i) t = T t=T t=T 之后是"空的未来",空序列概率定义为 1(不是 0!),这是人为规定的边界约定
递推 β 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=1Naijbj(Ot+1)βt+1(j) 倒退 着算: t = T − 1 , T − 2 , ... , 1 t = T-1, T-2, \dots, 1 t=T−1,T−2,...,1
终止 P ( O ∣ λ ) = ∑ i = 1 N π i b i ( O 1 ) β 1 ( i ) P(O|\lambda) = \sum_{i=1}^N \pi_i b_i(O_1) \beta_1(i) P(O∣λ)=∑i=1Nπibi(O1)β1(i) 最后补上开局 π i \pi_i πi 和第一个发射 b i ( O 1 ) b_i(O_1) bi(O1)------因为 β 1 \beta_1 β1 只覆盖了 O 2 ... O T O_2 \dots O_T O2...OT

核对完整性 : β t ( i ) \beta_t(i) βt(i) 里转移和发射配对为 ( a i j , b j ( O t + 1 ) ) (a_{ij}, b_j(O_{t+1})) (aij,bj(Ot+1)),从 t + 1 t+1 t+1 一路走到 T T T,每个观测恰好一次。


三、Viterbi 算法(解决问题 2:最优路径)

定义\\delta_t(i) = 时刻 t t t 结束于 S i S_i Si、观测 O 1 ... O t O_1\dots O_t O1...Ot 的单条最优路径 概率;

\\psi_t(i) = 该路径在 t − 1 t-1 t−1 时刻的前驱状态(回溯指针)。

⚠️ 与前向算法唯一 的区别: ∑ i \sum_i ∑i 换成 max ⁡ i \max_i maxi,外加 ψ \psi ψ 记录 argmax。发射、转移、端点约定完全一致

步骤 公式 边界处理
初始化 δ 1 ( i ) = π i b i ( O 1 ) \delta_1(i) = \pi_i b_i(O_1) δ1(i)=πibi(O1); ψ 1 ( i ) = 0 \psi_1(i) = 0 ψ1(i)=0 ψ 1 = 0 \psi_1 = 0 ψ1=0 是"起点无前驱"的哨兵值
递推 δ t ( j ) = max ⁡ i δ t − 1 ( i ) a i j b j ( O t ) \delta_t(j) = \max_i \\delta_{t-1}(i) a_{ij} b_j(O_t) δt(j)=maxiδt−1(i)aijbj(Ot); ψ t ( j ) = arg ⁡ max ⁡ i ⋯   \psi_t(j) = \arg\max_i\\cdots ψt(j)=argmaxi 同样是"先转移后发射"
终止 P ∗ = max ⁡ i δ T ( i ) P^* = \max_i \delta_T(i) P∗=maxiδT(i); q T ∗ = arg ⁡ max ⁡ i δ T ( i ) q_T^* = \arg\max_i \delta_T(i) qT∗=argmaxiδT(i) 只取一个终点(max),不像前向算法求和
回溯 q t ∗ = ψ t + 1 ( q t + 1 ∗ ) q_t^* = \psi_{t+1}(q_{t+1}^*) qt∗=ψt+1(qt+1∗), t = T − 1 → 1 t = T-1 \to 1 t=T−1→1 从终点倒推到 t = 1 t=1 t=1 即停( ψ 1 \psi_1 ψ1 不会被查)

四、Baum--Welch(解决问题 3:训练 = EM)

核心量 :把 α \alpha α 和 β \beta β 拼起来。

γ t ( i ) = P ( q t = S i ∣ O , λ ) = α t ( i )   β t ( i ) ∑ i α t ( i )   β t ( i ) \gamma_t(i) = P(q_t = S_i | O, \lambda) = \frac{\alpha_t(i)\,\beta_t(i)}{\sum_i \alpha_t(i)\,\beta_t(i)} γt(i)=P(qt=Si∣O,λ)=∑iαt(i)βt(i)αt(i)βt(i)

ξ t ( i , j ) = P ( q t = S i , q t + 1 = S j ∣ O , λ ) = α t ( i )   a i j   b j ( O t + 1 )   β t + 1 ( j ) ∑ i ∑ j α t ( i )   a i j   b j ( O t + 1 )   β t + 1 ( j ) \xi_t(i,j) = P(q_t = S_i, q_{t+1} = S_j | O, \lambda) = \frac{\alpha_t(i)\, a_{ij}\, b_j(O_{t+1})\, \beta_{t+1}(j)}{\sum_i\sum_j \alpha_t(i)\, a_{ij}\, b_j(O_{t+1})\, \beta_{t+1}(j)} ξt(i,j)=P(qt=Si,qt+1=Sj∣O,λ)=∑i∑jαt(i)aijbj(Ot+1)βt+1(j)αt(i)aijbj(Ot+1)βt+1(j)

⚠️ 边界要点(就是上一条对话你问的):

  • α t ( i ) \alpha_t(i) αt(i) 含 O t O_t Ot, β t + 1 ( j ) \beta_{t+1}(j) βt+1(j) 不含 O t + 1 O_{t+1} Ot+1 ------ 所以 γ t \gamma_t γt 中两者在 t t t 处"无缝拼接",每个观测恰好一次;
  • ξ t ( i , j ) \xi_t(i,j) ξt(i,j) 中间要显式补上 a i j b j ( O t + 1 ) a_{ij} b_j(O_{t+1}) aijbj(Ot+1) 这一段,因为 β t + 1 \beta_{t+1} βt+1 是从 t + 2 t+2 t+2 开始的;
  • ξ \xi ξ 只对 t = 1 ... T − 1 t = 1 \dots T-1 t=1...T−1 有定义( t = T t=T t=T 没有"下一个状态"),所以 (39) 的求和上限是 T − 1 T-1 T−1;而 γ \gamma γ 在 t = T t=T t=T 也有意义("访问次数"统计含终点)。

迭代流程

复制代码
E 步: 用当前 λ 跑前向+后向 → 得所有 γ_t(i)、ξ_t(i,j)
M 步: 重估计
      π̄ᵢ   = γ₁(i)
      āᵢⱼ  = Σ_t ξ_t(i,j) / Σ_t γ_t(i)          (t = 1..T-1)
      b̄ⱼ(k) = Σ_{t: O_t=v_k} γ_t(j) / Σ_t γ_t(j)  (t = 1..T)
重复直到 P(O|λ) 收敛(单调不减,保证收敛到局部最优)

五、三算法对比总表

前向 后向 Viterbi Baum--Welch
回答的问题 P ( O ∣ λ ) = ? P(O|\lambda)=? P(O∣λ)=? (辅助量) 最优路径 q ∗ = ? q^*=? q∗=? 最优参数 λ ∗ = ? \lambda^*=? λ∗=?
方向 1 → T 1 \to T 1→T T → 1 T \to 1 T→1 1 → T 1 \to T 1→T(再回溯) E 步两个方向都要
核心操作 ∑ i \sum_i ∑i ∑ j \sum_j ∑j max ⁡ i \max_i maxi 期望计数 + 比例更新
初始化 α 1 = π b ( O 1 ) \alpha_1 = \pi b(O_1) α1=πb(O1) β T = 1 \beta_T = 1 βT=1(约定) δ 1 = π b ( O 1 ) \delta_1 = \pi b(O_1) δ1=πb(O1), ψ 1 = 0 \psi_1 = 0 ψ1=0 需给定初始 λ ( 0 ) \lambda^{(0)} λ(0)
终止 ∑ i α T ( i ) \sum_i \alpha_T(i) ∑iαT(i) ∑ i π i b i ( O 1 ) β 1 ( i ) \sum_i \pi_i b_i(O_1)\beta_1(i) ∑iπibi(O1)β1(i) max ⁡ i δ T ( i ) \max_i \delta_T(i) maxiδT(i) 似然不再增长
发射在端点? 含 O t O_t Ot 不含 O t O_t Ot 含 O t O_t Ot 拼接时靠这个约定互补
复杂度 O ( N 2 T ) O(N^2T) O(N2T) O ( N 2 T ) O(N^2T) O(N2T) O ( N 2 T ) O(N^2T) O(N2T) 每轮 O ( N 2 T ) O(N^2T) O(N2T)

六、"边界问题"速查清单

  1. β T ( i ) = 1 \beta_T(i) = 1 βT(i)=1 是约定不是推导:代表"空未来"的概率,保证递推自洽;
  2. α \alpha α 含端点、 β \beta β 不含端点 :拼 γ \gamma γ、 ξ \xi ξ 时才不会重复或遗漏发射;
  3. 递推永远是"转移 a i j a_{ij} aij + 发射 b j ( O t + 1 ) b_j(O_{t+1}) bj(Ot+1)"成对:发射属于"到达的那个状态";
  4. 前向终止不用乘任何东西 ,后向终止要补 π i b i ( O 1 ) \pi_i b_i(O_1) πibi(O1):不对称是因为 α \alpha α、 β \beta β 各自吃的区间不同;
  5. ξ \xi ξ 只到 T − 1 T-1 T−1, γ \gamma γ 可到 T T T:一个统计转移、一个统计驻留;
  6. Viterbi 与前向的差别只有 max ⁡ \max max vs ∑ \sum ∑ 加回溯指针:别把两者当成两套框架;
  7. ψ 1 = 0 \psi_1 = 0 ψ1=0 与回溯止于 t = 1 t=1 t=1:起点没有前驱,是天然的递归基。

抓住第 2、3 两条,所有的下标、上限、初始化就都能自己推出来,不用死记。

相关推荐
大模型任我行25 分钟前
蚂蚁:金融文档解析新范式
人工智能·语言模型·自然语言处理·金融·论文笔记
IT毕设实战小研28 分钟前
基于大数据的AI应用对就业与收入增长的区域差异分析及可视化
大数据·人工智能·python·随机森林·机器学习·课程设计
音视频牛哥33 分钟前
世界模型如何重塑具身智能:从VLA到预测式机器人控制
人工智能·具身智能·世界模型·world model·vla模型·多模态感知·机器人决策
浅安的邂逅33 分钟前
260902-Qwen3.8-Max-0902 登顶 Code Arena WebDev:1691 分超 Opus 5
人工智能·ai模型·行业动态·产品发布/更新·模型发布/更新
力学与人工智能36 分钟前
智能流体力学专题研讨会特邀报告3|边鑫:混合深度学习与迭代方法的粘性不可压流动加速求解
人工智能·深度学习·流体力学·ppt分享
顿哥GPT37 分钟前
ChatGPT Plus / Pro + Codex 实战指南(2026年9月2日)
人工智能·chatgpt
mit6.82443 分钟前
AI时代的定位与趋势
人工智能
明月_清风1 小时前
十大经典排序算法 Go 实现全解:从入门到面试通关
后端·算法·排序算法
深念Y1 小时前
Cloudflare Workers AI 服务部署记录
人工智能·语音识别