隐马尔可夫模型(HMM explained)

隐马尔可夫模型


隐马尔可夫模型(Hidden Markov Model,HMM),是上世纪七十年代由美国数学家Leonard E. Baum等人提出来的,可以用于解决标注(tagging)问题,属于一种生成模型(generative model),即直接生成观测序列和状态序列的联合概率分布。

1 描述

1.1 术语解释:

  • 状态序列(state sequence):模型假设由一个隐藏的马尔可夫链生成一个不可观测的序列,称这个序列为状态序列,其中序列的每个时间步都代表着一个不可被观测到的状态
  • 观测序列(observation sequence):状态序列的每个状态都会对应生成一个结果,这个结果是可以观测得到的,将这个由状态序列生成的结果序列称为观测序列

1.2 形式定义

序列

  • 状态序列: I = ( i 1 , i 2 , . . . , i T ) I = (i_1, i_2, ..., i_T) I=(i1,i2,...,iT)
  • 观测序列: O = ( o 1 , o 2 , . . . , o T ) O = (o_1, o_2, ..., o_T) O=(o1,o2,...,oT)
    (其中T为序列长度,也可以理解为总的时间步)

集合

  • 状态集合: Q = { q 1 , q 2 , . . . , q N } Q = \{q_1, q_2, ..., q_N\} Q={q1,q2,...,qN}
  • 观测结果集合: V = ( v 1 , v 2 , . . . , v M ) V = (v_1, v_2, ..., v_M) V=(v1,v2,...,vM)
    (其中N为可能的状态数,M为可能的观测结果数目)

概率矩阵

  • 状态转移概率矩阵: A = [ a i j ] N × N A = [a_{ij}]_{N \times N} A=[aij]N×N
    矩阵的每个元素代表从一个状态 q i q_i qi转移到另一个状态 q j q_j qj的概率,即 a i j = P r ( i t + 1 = q j ∣ i t = q i ) a_{ij} = Pr(i_{t+1} = q_j | i_{t} = q_i) aij=Pr(it+1=qjit=qi)
  • 观测概率矩阵: B = [ b j ( k ) ] N × M B =[ b_j(k)]_{N \times M} B=[bj(k)]N×M
    矩阵每个元素代表从一个状态 q j q_j qj生成观测结果 v k v_k vk的概率,即 b j ( k ) = P r ( o t = v k ∣ i t = q j ) b_j(k) = Pr (o_t = v_k |i_t = q_j ) bj(k)=Pr(ot=vkit=qj)

初始状态矩阵概率

  • 初始状态概率向量: $\pi = (\pi_i) $
    向量的元素代表在第一时刻(t=1),处于状态 q i q_i qi的概率,即 π i = P r ( i 1 = q i ) \pi_i = Pr(i_1=q_i) πi=Pr(i1=qi)

有了以上的形式定义,我们可以使用 λ = ( A , B , π ) \lambda = (A, B, \pi) λ=(A,B,π)来表示模型,这三个元素可以决定一个隐马尔可夫模型,因为由初始状态 π \pi π和状态转移概率矩阵 A A A可以确定隐藏的状态序列 I I I,然后通过得出的这个状态序列 I I I以及观测概率矩阵 B B B,可以确定如何从这些状态生成观测结果,也就是确定观测序列 O O O

2 例子

2.1 问题描述

假设有三个盒子,每个盒子里有红白两种颜色的球,盒子里的红白球数目如下:

盒子标号123
红球数目536
白球数目574

抽取球的规则为:首先从三个盒子里面以概率选择一个盒子,然后在这个盒子里面随机选择一个球,记录球的颜色后放回,并以当前盒子随机转移到下一个盒子。

挑选初始盒子的规则为:0.5的概率挑选盒子1,0.25的概率挑选盒子2,0.25的概率挑选盒子3

转移盒子的规则为:如果当前是盒子1,则一定转移到盒子2,如果当前是盒子2,则0.4的概率转移到1,以0.6的概率转移到3,如果当前为盒子3,则以0.5的概率转移到1,以0.5的概率转移到2

重复这个过程五次,最后得到颜色的观测序列为: O = { 红 , 红 , 白 , 白 , 红 } O= \{红, 红, 白, 白, 红\} O={}。注意,这里我们只能观测到选出球的颜色,而盒子的序列是不可观测的,也就是说盒子的序列为隐藏的状态序列。

2.2 模型定义

  • 问题的集合如下:

状态的集合为: Q = { 盒 子 1 , 盒 子 2 , 盒 子 3 } , N = 3 Q = \{盒子1, 盒子2, 盒子3\}, N=3 Q={123},N=3

观测的集合为: V = { 红 , 白 } , M = 2 V = \{红, 白\}, M=2 V={},M=2

  • 概率矩阵:

状态转移概率矩阵:
A = ( 0 1 0 0.4 0 0.6 0.5 0.5 0 ) A = \left( \begin{array}{ccc} 0 & 1 &0 \\ 0.4 & 0 & 0.6 \\ 0.5 & 0.5 & 0 \end{array} \right) A=00.40.5100.500.60

观测概率矩阵:
B = ( 0.5 0.5 0.3 0.7 0.6 0.4 ) B = \left( \begin{array}{ccc} 0.5 & 0.5 \\ 0.3 & 0.7 \\ 0.6 & 0.4 \end{array} \right) B=0.50.30.60.50.70.4

  • 初始概率向量:

π = ( 0.5 , 0.25 , 0.25 ) \pi = (0.5, 0.25, 0.25) π=(0.5,0.25,0.25)

根据以上定义,可以确定隐马尔可夫模型 λ = ( A , B , π ) \lambda = (A, B, \pi) λ=(A,B,π)

2.3 三个基本问题

Rabiner(1989)1提出隐马尔可夫模型有下面三个基本问题:

  1. Likelihood:即概率计算问题,给定模型 λ = ( A , B , π ) \lambda = (A, B, \pi) λ=(A,B,π)和观测序列 O O O,计算在模型下观测序列出现的概率 P r ( O ∣ λ ) Pr(O|\lambda) Pr(Oλ)
  2. Learning:即学习问题,给定观测序列 O O O,估计模型参数 A A A B B B π \pi π
  3. Decoding:即预测问题,给定模型 λ = ( A , B , π ) \lambda = (A, B, \pi) λ=(A,B,π)和观测序列 O O O,求最可能的状态序列 I I I

问题一:Likelihood Computation

1 直接计算的方法

概率计算问题定义如下:

给定模型 λ = ( A , B , π ) \lambda = (A, B, \pi) λ=(A,B,π)和观测序列 O = ( o 1 , o 2 , . . . , o T ) O = (o_1, o_2, ..., o_T) O=(o1,o2,...,oT),计算在模型下观测序列出现的概率 P r ( O ∣ λ ) Pr(O|\lambda) Pr(Oλ)

一个最简单的方法是按照概率公式直接计算,方法是列举所有可能的状态序列 I = ( i 1 , i 2 , . . . , i T ) I = (i_1, i_2, ..., i_T) I=(i1,i2,...,iT),然后求每个状态序列产生观测序列的概率,最后对这些可能的状态序列求和,就得出观测序列的概率了。

  • 具体过程如下:

首先计算状态序列的概率:
P r ( I ∣ λ ) = π i 1 a i 1 i 2 a i 2 i 3 . . . a i T − 1 i T Pr(I|\lambda) = \pi_{i_1} a_{i_1 i_2} a_{i_2 i_3} ... a_{i_{T-1} i_T} Pr(Iλ)=πi1ai1i2ai2i3...aiT1iT

然后计算给定状态序列下,观测序列的概率:

P r ( O ∣ I , λ ) = b i 1 ( o 1 ) b i 2 ( o 2 ) . . . b i T ( o T ) Pr(O|I, \lambda) = b_{i_1}(o_1) b_{i_2}(o_2) ...b_{i_T}(o_T) Pr(OI,λ)=bi1(o1)bi2(o2)...biT(oT)

所以可以求出状态序列和观测序列的联合概率(所以说HMM是生成模型):

P r ( O , I ∣ λ ) = P r ( I ∣ λ ) P r ( O ∣ I , λ ) = π i 1 b i 1 ( o 1 ) a i 1 i 2   b i 2 ( o 2 ) . . . a i T − 1 i T 2 b i T ( o T ) Pr(O, I|\lambda) = Pr(I|\lambda) Pr(O|I, \lambda) \\ = \pi_{i_1} b_{i_1}(o_1) a_{i_1 i_2} b_{i_2}(o_2)... a_{i_{T-1} i_T2} b_{i_T}(o_T) Pr(O,Iλ)=Pr(Iλ)Pr(OI,λ)=πi1bi1(o1)ai1i2 bi(o)...aiT1iT2biT(oT)

最后将可能的状态序列求和就可以得出最终的观测序列概率:
P r ( O ∣ λ ) = ∑ I P r ( I ∣ λ ) P r ( O ∣ I , λ ) = ∑ i 1 , i 2 , . . . , i T π i 1 b i 1 ( o 1 ) a i 1 i 2   b i 2 ( o 2 ) . . . a i T − 1 i T 2 b i T ( o T ) Pr(O|\lambda) = \sum_I Pr(I|\lambda) Pr(O|I, \lambda) \\ = \sum_{i_1, i_2, ..., i_T} \pi_{i_1} b_{i_1}(o_1) a_{i_1 i_2} b_{i_2}(o_2)... a_{i_{T-1} i_T2} b_{i_T}(o_T) Pr(Oλ)=IPr(Iλ)Pr(OI,λ)=i1,i2,...,iTπi1bi1(o1)ai1i2 bi(o)...aiT1iT2biT(oT)
显然这种方法需要遍历T时间步的可能状态序列,而每个时间步都可能是 N N N个状态之一,所以总的计算量是 O ( T N T ) O(TN^T) O(TNT)的,显然是不可行的。

这里引入一种动态规划(dynamic programming,DP)的算法来解决计算量问题,称之为前向后向算法(forward-backward algorithm)。动态规划算法使用表来存储中间值以减少重复计算,以空间换时间,这里的programming本来指的是表格的意思,DP可直译为动态的表格。

2 前向后向算法

1) 前向算法

定义在时刻t,给定隐马尔可夫模型 λ \lambda λ,观测序列为 o 1 , o 2 , . . . , o t o_1, o_2,...,o_t o1,o2,...,ot且状态为 q i q_{i} qi的概率为前向概率,即:
α t ( i ) = P r ( o 1 , o 2 , . . . , o t , q i ∣ λ ) \alpha_t(i) = Pr(o_1, o_2,...,o_t,q_i| \lambda) αt(i)=Pr(o1,o2,...,ot,qiλ)
显然前向概率可以递推的求解,从而可以递推的求出观测序列概率 P ( O ∣ λ ) P(O|\lambda) P(Oλ),算法具体过程如下:

  1. 初始化: α 1 ( j ) = π j b j ( o 1 ) \alpha_1(j) = \pi_j b_j(o_1) α1(j)=πjbj(o1)
  2. 递推: α t + 1 ( i ) = [ ∑ j = 1 N α t ( j ) ] b i ( o t + 1 ) \alpha_{t+1}(i) = \left[ \sum_{j=1}^{N}\alpha_t(j) \right]b_i(o_{t+1}) αt+1(i)=[j=1Nαt(j)]bi(ot+1)
  3. 终止: P r ( O ∣ λ ) = ∑ i = 1 N α T ( i ) Pr(O|\lambda) = \sum_{i=1}^{N}\alpha_T(i) Pr(Oλ)=i=1NαT(i)
2) 后向算法

定义在时刻t,给定隐马尔可夫模型 λ \lambda λ,状态为 q i q_{i} qi的条件下,从t+1到T的部分观测序列为 o t + 1 , o t + 2 , . . . , o T o_{t+1}, o_{t+2},...,o_T ot+1,ot+2,...,oT的概率为后向概率,即:
β t ( i ) = P r ( o t + 1 , o t + 2 , . . . , o T ∣ i t = q i , λ ) \beta_t(i) = Pr(o_{t+1}, o_{t+2},...,o_T|i_t = q_i, \lambda) βt(i)=Pr(ot+1,ot+2,...,oTit=qi,λ)
可以递推的方式得到后向概率,从而获得观测序列概率 P ( O ∣ λ ) P(O|\lambda) P(Oλ),算法过程如下:

  1. 初始化: β T ( i ) = 1 , i = 1 , 2 , . . . , N \beta_T(i) = 1,\quad i=1,2,...,N βT(i)=1,i=1,2,...,N
  2. 递推: β t ( i ) = ∑ j = 1 N a i j b j ( o t + 1 ) β t + 1 ( j ) , i = 1 , 2 , . . . , N \beta_{t}(i) = \sum_{j=1}^{N} a_{ij} b_j(o_{t+1}) \beta_{t+1}(j),\quad i=1, 2, ..., N βt(i)=j=1Naijbj(ot+1)βt+1(j),i=1,2,...,N
  3. 终止: P r ( O ∣ λ ) = ∑ i = 1 N π i b i ( o 1 ) β 1 ( i ) Pr(O|\lambda) = \sum_{i=1}^{N}\pi_i b_i(o_1)\beta_1(i) Pr(Oλ)=i=1Nπibi(o1)β1(i)

问题二:Training

模型训练的问题定义如下:

给定观测序列 O = ( o 1 , o 2 , . . . , o T ) O = (o_1, o_2, ..., o_T) O=(o1,o2,...,oT),确定模型的参数 λ = ( A , B , π ) \lambda = (A, B, \pi) λ=(A,B,π)

隐马尔可夫模型的训练算法称为Baum-Welch算法,是EM算法的一个特例。EM算法是一种迭代的算法,算法分为两步,第一步求期望Expectation,第二步最大化期望Maximization。简单来讲就是初始化概率的估计值,然后使用这些估计值来计算一个更好的估计,不断的迭代提升。

MSE vs EM(https://machinelearningmastery.com/expectation-maximization-em-algorithm/)

Maximum likelihood estimation is an approach to density estimation for a dataset by searching across probability distributions and their parameters.

It is a general and effective approach that underlies many machine learning algorithms, although it requires that the training dataset is complete, e.g. all relevant interacting random variables are present. Maximum likelihood becomes intractable if there are variables that interact with those in the dataset but were hidden or not observed, so-called latent variables.

The expectation-maximization algorithm is an approach for performing maximum likelihood estimation in the presence of latent variables. It does this by first estimating the values for the latent variables, then optimizing the model, then repeating these two steps until convergence. It is an effective and general approach and is most commonly used for density estimation with missing data, such as clustering algorithms like the Gaussian Mixture Model.

EM算法详细步骤如下:

1. 确定完全数据的对数似然函数

完全数据定义为: ( Q , I ) = ( o 1 , o 2 , . . . , o T , i 1 , i 2 , . . . , i T ) (Q, I) = (o_1, o_2, ..., o_T, i_1, i_2, ..., i_T) (Q,I)=(o1,o2,...,oT,i1,i2,...,iT),它的对数似然函数为: log ⁡ P r ( O , I ∣ λ ) \log Pr(O, I|\lambda) logPr(O,Iλ)

2. E步:求 Q Q Q函数

Q Q Q函数为: Q ( λ , λ ^ ) = ∑ I log ⁡ P r ( O , I ∣ λ ) P r ( O , I ∣ λ ^ ) Q(\lambda, \hat{\lambda}) = \sum_I \log Pr(O,I|\lambda)Pr(O, I|\hat{\lambda}) Q(λ,λ^)=IlogPr(O,Iλ)Pr(O,Iλ^)

这里$ \hat{\lambda} 是 模 型 ∗ 当 前 的 估 计 值 ∗ , 是模型*当前的估计值*, \lambda$是通过计算而获得的更好的估计值

这里的Q函数实际上省略了常数因子$ \frac{1}{Pr(O|\hat{\lambda})} , 按 照 定 义 , ,按照定义, Q(\lambda, \hat{\lambda}) =\mathbb{E}_I[\log Pr(O, I | \lambda)|O, \hat{\lambda}] , 展 开 得 到 ,展开得到 \sum_I \frac{\log Pr(O, I|\lambda)Pr(O,I|\hat{\lambda})}{Pr(O|\hat{\lambda})} = \frac{1}{Pr(O|\hat{\lambda})} \sum_I \log Pr(O, I|\lambda)Pr(O,I|\hat{\lambda})$。

其中 P r ( O , I ∣ λ ) = π i 1 b i 1 ( o 1 ) a i 1 i 2 b i 2 o 2 . . . a i T − 1 i T b i T ( o T ) Pr(O, I|\lambda) = \pi_{i_1}b_{i_1}(o_1)a_{i_1 i_2}b_{i_2}{o_2}...a_{i_{T-1}i_T}b_{i_T}(o_T) Pr(O,Iλ)=πi1bi1(o1)ai1i2bi2o2...aiT1iTbiT(oT)

所以 log ⁡ P r ( O , I ∣ λ ) = log ⁡ π i 1 + ∑ t = 1 T − 1 a i t i t + 1 + ∑ t = 1 T b i t ( o t ) \log Pr(O,I|\lambda) = \log \pi_{i_1} + \sum_{t=1}^{T-1} a_{i_{t}i_{t+1}} + \sum_{t=1}^{T} b_{i_t}(o_t) logPr(O,Iλ)=logπi1+t=1T1aitit+1+t=1Tbit(ot)

带入到Q函数, Q ( λ , λ ^ ) = ∑ I log ⁡ π i 1 P r ( O , I ∣ λ ^ ) + ∑ I ( ∑ t = 1 T − 1 log ⁡ a i t i t + 1 ) P r ( O , I ∣ λ ^ ) + ∑ I ( ∑ t = 1 T log ⁡ b i t ( o t ) ) P r ( O , I ∣ λ ^ ) Q(\lambda, \hat{\lambda}) = \sum_I \log \pi_{i_1}Pr(O, I|\hat{\lambda}) + \sum_I\left( \sum_{t=1}^{T-1} \log a_{i_{t}i_{t+1}} \right)Pr(O, I|\hat{\lambda}) + \sum_I\left( \sum_{t=1}^{T} \log b_{i_t}(o_t) \right)Pr(O, I|\hat{\lambda}) Q(λ,λ^)=Ilogπi1Pr(O,Iλ^)+I(t=1T1logaitit+1)Pr(O,Iλ^)+I(t=1Tlogbit(ot))Pr(O,Iλ^)

3. M步:极大化Q函数

这个步骤就是求能够极大化Q函数的模型参数,即 A A A B B B π \pi π

从上面的Q函数表达式可以看出,要求的模型参数分别位于三个项中,所以可以逐个对各项最大化。这是一个约束优化问题,因为是概率,所以要满足归一性的约束条件,运用拉格朗日乘子法可以解决这个问题。

(1)最大化第一项

第一项可以写为:
∑ I log ⁡ π i 1 P r ( O , I ∣ λ ^ ) = ∑ i = 1 N log ⁡ π i P r ( O , i 1 = i ∣ λ ^ ) \sum_I \log \pi_{i_1}Pr(O, I|\hat{\lambda}) = \sum_{i=1}^{N} \log \pi_i Pr(O, i_1=i|\hat{\lambda}) Ilogπi1Pr(O,Iλ^)=i=1NlogπiPr(O,i1=iλ^)
而且 π i \pi_i πi需要满足约束条件 ∑ i = 1 N π i = 1 \sum_{i=1}^N \pi_i = 1 i=1Nπi=1,所以这里需要借助拉格朗日乘子解决这个约束优化问题:
∑ i = 1 N log ⁡ π i P r ( O , i 1 = i ∣ λ ^ ) + γ ( ∑ i = 1 N π i − 1 ) \sum_{i=1}^{N} \log \pi_i Pr(O, i_1=i|\hat{\lambda}) + \gamma \left( \sum_{i=1}^N \pi_i - 1 \right) i=1NlogπiPr(O,i1=iλ^)+γ(i=1Nπi1)
计算其对于 π i \pi_i πi的偏导数并令其为0
∂ ∂ π i [ ∑ i = 1 N log ⁡ π i P r ( O , i 1 = i ∣ λ ^ ) + γ ( ∑ i = 1 N π i − 1 ) ] = 0 \frac{\partial}{\partial \pi_i}\left[ \sum_{i=1}^{N} \log \pi_i Pr(O, i_1=i|\hat{\lambda}) + \gamma \left( \sum_{i=1}^N \pi_i - 1 \right) \right] = 0 πi[i=1NlogπiPr(O,i1=iλ^)+γ(i=1Nπi1)]=0
得:
P r ( O , i 1 = i ∣ λ ^ ) π i + γ = 0 P r ( O , i 1 = i ∣ λ ^ ) + γ π i = 0 \frac{Pr(O,i_1=i|\hat{\lambda})}{\pi_i} + \gamma = 0 \\ Pr(O,i_1=i|\hat{\lambda}) + \gamma \pi_i = 0 πiPr(O,i1=iλ^)+γ=0Pr(O,i1=iλ^)+γπi=0
对i求和得(这里 ∑ i = 1 N π i = 1 \sum_{i=1}^N \pi_i = 1 i=1Nπi=1):
∑ i = 1 N P r ( O , i 1 = i ∣ λ ^ ) + ∑ i = 1 N γ π i = 0 P r ( O ∣ λ ^ ) + γ = 0 \sum_{i=1}^{N} Pr(O,i_1=i|\hat{\lambda}) +\sum_{i=1}^{N} \gamma \pi_i = 0 \\ Pr(O|\hat{\lambda}) + \gamma = 0 i=1NPr(O,i1=iλ^)+i=1Nγπi=0Pr(Oλ^)+γ=0
解得 γ \gamma γ
γ = − P r ( O ∣ λ ^ ) \gamma = - Pr(O|\hat{\lambda}) γ=Pr(Oλ^)
带入式 P r ( O , i 1 = i ∣ λ ^ ) + γ π i = 0 Pr(O,i_1=i|\hat{\lambda}) + \gamma \pi_i = 0 Pr(O,i1=iλ^)+γπi=0可以解出 π i \pi_i πi
π i = P r ( O , i 1 = i ∣ λ ^ ) P r ( O ∣ λ ^ ) \pi_i = \frac{Pr(O,i_1=i|\hat{\lambda})}{Pr(O|\hat{\lambda})} πi=Pr(Oλ^)Pr(O,i1=iλ^)

(2)最大化第二项

第二项可以写成(这里前面两个求和是对于转移矩阵 A A A的, 后面求和是对于长度为 T T T的状态序列 I I I的):
∑ I ( ∑ t = 1 T − 1 log ⁡ a i t i t + 1 ) P r ( O , I ∣ λ ^ ) = ∑ i = 1 N ∑ j = 1 N ∑ t = 1 T − 1 log ⁡ a i j P r ( O , i t = i , i t + 1 = j ∣ λ ^ ) \sum_I\left( \sum_{t=1}^{T-1} \log a_{i_{t}i_{t+1}} \right)Pr(O, I|\hat{\lambda}) = \sum_{i=1}^{N} \sum_{j=1}^{N} \sum_{t=1}^{T-1} \log a_{ij} Pr(O, i_t=i, i_{t+1}=j|\hat{\lambda}) I(t=1T1logaitit+1)Pr(O,Iλ^)=i=1Nj=1Nt=1T1logaijPr(O,it=i,it+1=jλ^)
同样是一个约束优化问题,约束条件为 ∑ j = 1 N a i j = 1 \sum_{j=1}^N a_{ij} = 1 j=1Naij=1,应用拉格朗日乘子法可以解决这个问题,过程如下:

添加拉格朗日乘子:
∑ i = 1 N [ ∑ j = 1 N ∑ t = 1 T − 1 log ⁡ a i j P r ( O , i t = i , i t + 1 = j ∣ λ ^ ) + γ ( ∑ j = 1 N a i j − 1 ) ] \sum_{i=1}^{N} \left[ \sum_{j=1}^{N} \sum_{t=1}^{T-1} \log a_{ij} Pr(O, i_t=i, i_{t+1}=j|\hat{\lambda}) + \gamma \left( \sum_{j=1}^N a_{ij} - 1 \right) \right] i=1N[j=1Nt=1T1logaijPr(O,it=i,it+1=jλ^)+γ(j=1Naij1)]
计算其对于 a i j a_{ij} aij的偏导数并令其为0:
∑ t = 1 T − 1 P r ( O , i t = i , i t + 1 = j ∣ λ ^ ) a i j + γ = 0 ∑ t = 1 T − 1 P r ( O , i t = i , i t + 1 = j ∣ λ ^ ) + γ a i j = 0 \frac{\sum_{t=1}^{T-1} Pr(O, i_t=i, i_{t+1}=j|\hat{\lambda})}{a_{ij}} + \gamma = 0 \\ \sum_{t=1}^{T-1} Pr(O, i_t=i, i_{t+1}=j|\hat{\lambda}) + \gamma a_{ij} = 0 aijt=1T1Pr(O,it=i,it+1=jλ^)+γ=0t=1T1Pr(O,it=i,it+1=jλ^)+γaij=0
对j求和得:
∑ j = 1 N ∑ t = 1 T − 1 P r ( O , i t = i , i t + 1 = j ∣ λ ^ ) + ∑ j = 1 N γ a i j = 0 ∑ t = 1 T − 1 P r ( O , i t = i ∣ λ ^ ) + γ = 0 \sum_{j=1}^{N} \sum_{t=1}^{T-1} Pr(O, i_t=i, i_{t+1}=j|\hat{\lambda}) + \sum_{j=1}^{N} \gamma a_{ij} = 0 \\ \sum_{t=1}^{T-1} Pr(O, i_t=i|\hat{\lambda}) + \gamma = 0 j=1Nt=1T1Pr(O,it=i,it+1=jλ^)+j=1Nγaij=0t=1T1Pr(O,it=iλ^)+γ=0
解得 γ \gamma γ
γ = − ∑ t = 1 T − 1 P r ( O , i t = i ∣ λ ^ ) \gamma = -\sum_{t=1}^{T-1} Pr(O, i_t=i|\hat{\lambda}) γ=t=1T1Pr(O,it=iλ^)
带入 ∑ t = 1 T − 1 P r ( O , i t = i , i t + 1 = j ∣ λ ^ ) + γ a i j = 0 \sum_{t=1}^{T-1} Pr(O, i_t=i, i_{t+1}=j|\hat{\lambda}) + \gamma a_{ij} = 0 t=1T1Pr(O,it=i,it+1=jλ^)+γaij=0解得 a i j a_{ij} aij
a i j = ∑ t = 1 T − 1 P r ( O , i t = i , i t + 1 = j ∣ λ ^ ) ∑ t = 1 T − 1 P r ( O , i t = i ∣ λ ^ ) a_{ij} = \frac{\sum_{t=1}^{T-1} Pr(O, i_t=i, i_{t+1}=j|\hat{\lambda}) }{\sum_{t=1}^{T-1} Pr(O, i_t=i|\hat{\lambda})} aij=t=1T1Pr(O,it=iλ^)t=1T1Pr(O,it=i,it+1=jλ^)

(2)最大化第三项

第三项可以写为:
∑ I ( ∑ t = 1 T log ⁡ b i t ( o t ) ) P r ( O , I ∣ λ ^ ) = ∑ j = 1 N ∑ t = 1 T log ⁡ b j ( o t ) P r ( O , i t = j ∣ λ ^ ) \sum_I\left( \sum_{t=1}^{T} \log b_{i_t}(o_t) \right)Pr(O, I|\hat{\lambda}) = \sum_{j=1}^{N} \sum_{t=1}^{T} \log b_j(o_t) Pr(O, i_t = j|\hat{\lambda}) I(t=1Tlogbit(ot))Pr(O,Iλ^)=j=1Nt=1Tlogbj(ot)Pr(O,it=jλ^)
同样需要满足约束条件 ∑ k = 1 M b j ( k ) = 1 \sum_{k=1}^M b_j(k) = 1 k=1Mbj(k)=1,过程如下:
∑ j = 1 N ∑ t = 1 T log ⁡ b j ( o t ) P r ( O , i t = j ∣ λ ^ ) + γ ( ∑ k = 1 M b j ( k ) − 1 ) \sum_{j=1}^{N} \sum_{t=1}^{T} \log b_j(o_t) Pr(O, i_t = j|\hat{\lambda}) + \gamma \left( \sum_{k=1}^M b_j(k) - 1\right) j=1Nt=1Tlogbj(ot)Pr(O,it=jλ^)+γ(k=1Mbj(k)1)
计算其对于 b j ( k ) b_j(k) bj(k)的偏导数并令其为0,这里左项只有在 o t = v k o_t=v_k ot=vk时, b j ( o t ) b_j(o_t) bj(ot) b j ( k ) b_j(k) bj(k)的偏导数才不为0,用 I ( o t = v k ) I(o_t =v_k) I(ot=vk)表示,结果为:
∑ t = 1 T P r ( O , i t = j ∣ λ ^ ) I ( o t = v k ) + γ b j ( k ) = 0 \sum_{t=1}^{T} Pr(O, i_t = j|\hat{\lambda})I(o_t =v_k) + \gamma b_j(k) = 0 t=1TPr(O,it=jλ^)I(ot=vk)+γbj(k)=0
对k求和得:
γ = − ∑ t = 1 T P r ( O , i t = j ∣ λ ^ ) \gamma = -\sum_{t=1}^{T} Pr(O, i_t = j|\hat{\lambda}) γ=t=1TPr(O,it=jλ^)
代回得:
b j ( k ) = ∑ t = 1 T P r ( O , i t = j ∣ λ ^ ) I ( o t = v k ) ∑ t = 1 T P r ( O , i t = j ∣ λ ^ ) b_j(k) = \frac{\sum_{t=1}^{T} Pr(O, i_t = j|\hat{\lambda})I(o_t =v_k)}{\sum_{t=1}^{T} Pr(O, i_t = j|\hat{\lambda})} bj(k)=t=1TPr(O,it=jλ^)t=1TPr(O,it=jλ^)I(ot=vk)

总结:

经上面的推导,最后得出三个表达式,分别为:
π i = P r ( O , i 1 = i ∣ λ ^ ) P r ( O ∣ λ ^ ) a i j = ∑ t = 1 T − 1 P r ( O , i t = i , i t + 1 = j ∣ λ ^ ) ∑ t = 1 T − 1 P r ( O , i t = i ∣ λ ^ ) b j ( k ) = ∑ t = 1 T P r ( O , i t = j ∣ λ ^ ) I ( o t = v k ) ∑ t = 1 T P r ( O , i t = j ∣ λ ^ ) \pi_i = \frac{Pr(O,i_1=i|\hat{\lambda})}{Pr(O|\hat{\lambda})} \\ a_{ij} = \frac{\sum_{t=1}^{T-1} Pr(O, i_t=i, i_{t+1}=j|\hat{\lambda}) }{\sum_{t=1}^{T-1} Pr(O, i_t=i|\hat{\lambda})}\\ b_j(k) = \frac{\sum_{t=1}^{T} Pr(O, i_t = j|\hat{\lambda})I(o_t =v_k)}{\sum_{t=1}^{T} Pr(O, i_t = j|\hat{\lambda})} πi=Pr(Oλ^)Pr(O,i1=iλ^)aij=t=1T1Pr(O,it=iλ^)t=1T1Pr(O,it=i,it+1=jλ^)bj(k)=t=1TPr(O,it=jλ^)t=1TPr(O,it=jλ^)I(ot=vk)
我们分别使用 γ t ( i ) \gamma_t(i) γt(i) ξ t ( i , j ) \xi_t(i, j) ξt(i,j)来表示它们:
π i = γ 1 ( i ) a i j = ∑ t = 1 T − 1 ξ t ( i , j ) ∑ t = 1 T − 1 γ t ( i ) b j ( k ) = ∑ t = 1 , o t = v k T γ t ( j ) ∑ t = 1 T γ t ( j ) \pi_i = \gamma_1(i) \\ a_{ij} = \frac{\sum_{t=1}^{T-1} \xi_t(i, j) }{\sum_{t=1}^{T-1} \gamma_t(i)}\\ b_j(k) = \frac{\sum_{t=1,o_t=v_k}^{T} \gamma_t(j)}{\sum_{t=1}^{T} \gamma_t(j)} πi=γ1(i)aij=t=1T1γt(i)t=1T1ξt(i,j)bj(k)=t=1Tγt(j)t=1,ot=vkTγt(j)

关于这两个概率 γ t ( i ) \gamma_t(i) γt(i) ξ t ( i , j ) \xi_t(i, j) ξt(i,j)的定义如下,可以通过前向后向算法求出相应的值:

1、给定模型$\lambda 和 观 测 和观测 O , 在 时 刻 t 处 于 状 态 ,在时刻t处于状态 tq_i $的概率为:
KaTeX parse error: No such environment: align at position 8: \begin{̲a̲l̲i̲g̲n̲}̲ \gamma_t(i) &=…
2、给定模型$\lambda 和 观 测 和观测 O , 在 时 刻 t 处 于 状 态 ,在时刻t处于状态 tq_i 的 且 时 刻 t + 1 处 于 状 态 的且时刻t+1处于状态 t+1q_j$的概率为:
KaTeX parse error: No such environment: align at position 8: \begin{̲a̲l̲i̲g̲n̲}̲ \xi_t(i, j) &=…

以上就是Baum-Welch算法,实际上就是EM算法在学习HMM上的具体实现。

问题三:Decoding

维特比算法(Viterbi algorithm)使用动态规划(DP)解决HMM预测问题(decoding),即使用DP求概率最大路径,一条路径对应着一个状态序列。

引入两个变量 δ \delta δ Ψ \Psi Ψ

定义在时刻 t t t状态为 i i i的所有单个路径 ( i 1 , i 2 , . . . , i t ) (i_1, i_2,...,i_t) (i1,i2,...,it)中概率最大值为:
δ t ( i ) = max ⁡ i 1 , i 2 , . . . , i t − 1 P r ( i t = i , i t − 1 , . . . , i 1 , o t , . . . , o 1 ∣ λ ) , i = 1 , 2 , . . . , N \delta_t(i) = \max _{i_1, i_2,...,i_{t-1}} Pr(i_t=i, i_{t-1},...,i_1,o_t,...,o_1|\lambda), \quad i=1,2,...,N δt(i)=i1,i2,...,it1maxPr(it=i,it1,...,i1,ot,...,o1λ),i=1,2,...,N
由定义可以得出它的递推公式:
KaTeX parse error: No such environment: align at position 8: \begin{̲a̲l̲i̲g̲n̲}̲ \delta_{t+1}(i…
定义在时刻 t t t状态为 i i i的所有单个路径 ( i 1 , i 2 , . . . , i t − 1 , i ) (i_1, i_2,...,i_{t-1}, i) (i1,i2,...,it1,i)中概率最大的路径的第 t − 1 t-1 t1个节点为:
Ψ t ( i ) = arg ⁡ max ⁡ 1 ≤ j ≤ N [ δ t − 1 ( j ) a j i ] , i = 1 , 2 , . . . , N \Psi_t(i) = \arg \max_{1\le j \le N} [\delta_{t-1}(j) a_{ji}], \quad i=1,2,...,N Ψt(i)=arg1jNmax[δt1(j)aji],i=1,2,...,N

维特比算法:

输入:模型 λ = ( A , B , π ) \lambda = (A, B, \pi ) λ=(A,B,π),观测序列 O = ( o q , o 2 , . . . , o T ) O = (o_q, o_2,...,o_T) O=(oq,o2,...,oT)

输出:最优路径(状态序列) I ∗ = ( i 1 ∗ , i 2 ∗ , . . . i T ∗ ) I^*=(i_1^*, i_2^*,... i_T^*) I=(i1,i2,...iT)

(1) 初始化。
δ 1 ( i ) = π i b i ( o 1 ) , i = 1 , 2 , . . . , N Ψ 1 ( i ) = 0 , i = 1 , 2 , . . . , N \delta_1(i) = \pi_i b_i(o_1), \quad i=1,2,...,N \\ \Psi_1(i) = 0, \quad i=1,2,...,N δ1(i)=πibi(o1),i=1,2,...,NΨ1(i)=0,i=1,2,...,N

(2) 递推。对 t = 2 , 3 , . . . , T t=2,3,...,T t=2,3,...,T
δ t ( i ) = max ⁡ 1 ≤ j ≤ N [ δ t − 1 ( j ) a j i ] b i ( o t ) Ψ t ( i ) = arg ⁡ max ⁡ 1 ≤ j ≤ N [ δ t − 1 ( j ) a j i ] , i = 1 , 2 , . . . , N \delta_t(i) = \max_{1\le j \le N}[\delta_{t-1}(j) a_{ji}] b_i(o_{t}) \\ \Psi_t(i) = \arg \max_{1\le j \le N} [\delta_{t-1}(j) a_{ji}], \quad i=1,2,...,N δt(i)=1jNmax[δt1(j)aji]bi(ot)Ψt(i)=arg1jNmax[δt1(j)aji],i=1,2,...,N
(3) 终止。
P ∗ = max ⁡ 1 ≤ i ≤ N = δ T ( i ) i T ∗ = arg ⁡ max ⁡ 1 ≤ i ≤ N [ δ T ( i ) ] P^* = \max_{1 \le i \le N} = \delta_T(i) \\ i_T^* = \arg \max_{1 \le i \le N} [\delta_T(i)] P=1iNmax=δT(i)iT=arg1iNmax[δT(i)]
(4) 最优路径回溯。对 t = T − 1 , T − 2 , . . . , 1 t=T-1, T-2,...,1 t=T1,T2,...,1
i t ∗ = Ψ t + 1 ( i t + 1 ∗ ) i_t* = \Psi_{t+1}(i_{t+1}^*) it=Ψt+1(it+1)
获得最优路径 I ∗ = ( i 1 ∗ , i 2 ∗ , . . . i T ∗ ) I^*=(i_1^*, i_2^*,... i_T^*) I=(i1,i2,...iT)


  1. Rabiner, L. R. (1989). A tutorial on hidden Markov models and selected applications in speech recognition. Proceedings of the IEEE, 77(2), 257–286. ↩︎

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值