(九)统计学习方法 | 隐马尔可夫模型


1.隐马尔可夫模型

1.1 简介与定义

隐马尔可夫模型 隐马尔可夫模型是关于时序的概率模型,描述由一个隐藏的马尔可夫链随机生成不同观测的状态随机序列,再由各个状态生成一个观测从而产生观测随机序列的过程。隐藏的马尔可夫链随机生成的状态的序列,称为状态序列;每个状态生成一个观测,而由此产生的观测随机序列,称为观测序列。序列的每一个位置又可以看作是一个时刻。

隐马尔可夫模型由初始概率分布、状态转移概率分布以及观测概率分布确定。即:设 Q Q Q是所有可能的状态的集合, V V V是所有可能的观测的集合: Q = { q 1 , q 2 , . . . , q N } ,     V = { v 1 , v 2 , . . . , v M } Q=\{q_1,q_2,...,q_N\},\ \ \ V=\{v_1,v_2,...,v_M\} Q={q1,q2,...,qN},   V={v1,v2,...,vM}

其中, N N N是可能的状态数, M M M是可能的观测数。 I I I是长度为 T T T的状态序列, O O O是对应的观测序列: I = ( i 1 , i 2 , . . . , i T ) ,     O = ( o 1 , o 2 , . . . , o T ) I=(i_1,i_2,...,i_T),\ \ \ O=(o_1,o_2,...,o_T) I=(i1,i2,...,iT),   O=(o1,o2,...,oT)

A A A是状态转移矩阵: A = [ a i j ] N × N A=\left[a_{ij}\right]_{N×N} A=[aij]N×N

其中: a i j = P ( i t + 1 = q j ∣ i t = q i ) ,     i = 1 , 2 , . . . , N ;     j = 1 , 2 , . . . , N a_{ij}=P(i_{t+1}=q_j|i_t=q_i),\ \ \ i=1,2,...,N;\ \ \ j=1,2,...,N aij=P(it+1=qjit=qi),   i=1,2,...,N;   j=1,2,...,N

是在时刻 t t t处于状态 q i q_i qi的条件下再时刻 t + 1 t+1 t+1转移到状态 q j q_j qj的概率。 B B B是观测概率矩阵: B = [ b j ( k ) ] N × M B=\left[b_j(k)\right]_{N×M} B=[bj(k)]N×M

其中: b j ( k ) = P ( o t = v k ∣ i t = q j ) ,     k = 1 , 2 , . . . , M ;     j = 1 , 2 , . . . , N b_j(k)=P(o_t=v_k|i_t=q_j),\ \ \ k=1,2,...,M;\ \ \ j=1,2,...,N bj(k)=P(ot=vkit=qj),   k=1,2,...,M;   j=1,2,...,N

是在时刻 t t t处于状态 q j q_j qj的条件下生成观测 v k v_k vk的概率。 π \pi π是初始状态概率向量: π = ( π i ) \pi=(\pi_i) π=(πi)

其中: π i = P ( i 1 = q i ) ,     i = 1 , 2 , . . . , N \pi_i=P(i_1=q_i),\ \ \ i=1,2,...,N πi=P(i1=qi),   i=1,2,...,N

是时刻 t = 1 t=1 t=1处于状态 q i q_i qi的概率。隐马尔可夫模型由初始状态概率向量 π \pi π状态转移概率矩阵 A A A观测概率矩阵 B B B决定。 π \pi π A A A决定状态序列, B B B决定观测序列。因此,隐马尔可夫模型 λ \lambda λ可由以下表示: λ = ( A , B , π ) \lambda=(A,B,\pi) λ=(A,B,π)

状态转移矩阵 A A A和初始状态概率向量 π \pi π确定了隐藏的马尔可夫链,生成不可观测的状态序列。观测概率矩阵 B B B确定了如何从状态生成观测,与状态序列综合确定了如何产生观测序列。从定义可知,隐马尔可夫模型作了两个基本的假设:

(1)齐次马尔可夫性假设,即假设隐藏的马尔可夫链再任意时刻 t t t的状态只依赖于其前一时刻的状态,与其他时刻的状态及观测无关,也与时刻 t t t无关: P ( i t ∣ i t − 1 , o t − 1 , . . . , i 1 , o 1 ) = P ( i t ∣ i t − 1 ) ,     t = 1 , 2 , . . . , T P(i_t|i_{t-1},o_{t-1},...,i_1,o_1)=P(i_t|i_{t-1}),\ \ \ t=1,2,...,T P(itit1,ot1,...,i1,o1)=P(itit1),   t=1,2,...,T

(2)观测独立性假设,即假设任意时刻的观测只依赖于该时刻的马尔可夫链的状态,与其他观测及状态无关: P ( o t ∣ i T , o T , i T − 1 , o T − 1 , . . . , i t + 1 , o t + 1 , i t − 1 , o t − 1 , . . . , i 1 , o 1 ) = P ( o t ∣ i t ) P(o_t|i_T,o_T,i_{T-1},o_{T-1},...,i_{t+1},o_{t+1},i_{t-1},o_{t-1},...,i_1,o_1)=P(o_t|i_t) P(otiT,oT,iT1,oT1,...,it+1,ot+1,it1,ot1,...,i1,o1)=P(otit)

例题 假设有 4 4 4个盒子,每个盒子里都装有红、白两种颜色的球,盒子里的红、白球数如下:

在这里插入图片描述

现按照下面的方法抽球,产生一个球的颜色的观测序列:

  • 开始,从 4 4 4个盒子里以等概率随机选取 1 1 1个盒子,从这个盒子里随机抽出 1 1 1个球,记录其颜色后,放回;
  • 然后,从当前盒子随机转移到下一个盒子,规则是:如果当前盒子是 1 1 1,那么下一个盒子一定是盒子 2 2 2;如果当前盒子是 2 2 2 3 3 3,那么分别以概率 0.4 0.4 0.4 0.6 0.6 0.6转移到左边或右边的盒子;如果当前盒子是 4 4 4,那么各以 0.5 0.5 0.5的概率停留在盒子 4 4 4或转移到盒子 3 3 3
  • 确定转移的盒子后,再从这个盒子里随机抽出 1 1 1个球,记录其颜色,放回;
  • 如下下去,重复进行 5 5 5次,得到一个球的颜色的观测序列: O = ( 红 , 红 , 白 , 白 , 红 ) O=(红, 红,白,白,红) O=(,,,,)

在这个过程中,观察者只能观测到球的颜色的序列,观测不到球是从哪个盒子里取出的,即观测不到盒子的序列。在这个例子中有两个随机序列,一个是盒子的序列,一个是球的颜色的序列。前者是隐藏的,只有后者是可观测的。这是一个隐马尔可夫模型,根据所给条件可以明确状态集合、观测集合、序列长度。盒子对应状态,状态的集合是: Q = { 盒 子 1 , 盒 子 2 , 盒 子 3 , 盒 子 4 } ,     N = 4 Q=\{盒子1,盒子2,盒子3,盒子4\},\ \ \ N=4 Q={1,2,3,4},   N=4

球的颜色对应观测。观测的集合是: V = { 红 , 白 } ,     M = 2 V=\{红,白\},\ \ \ M=2 V={,},   M=2

状态序列和观测序列长度 T = 5 T=5 T=5。初始概率分布为: π = ( 0.25 , 0.25 , 0.25 , 0.25 ) T \pi=(0.25,0.25,0.25,0.25)^{\rm T} π=(0.25,0.25,0.25,0.25)T

状态转移概率分布为: A = [ 0 1 0 0 0.4 0 0.6 0 0 0.4 0 0.6 0 0 0.5 0.5 ] A=\begin{gathered} \begin{bmatrix} 0 & 1 & 0 & 0\\ 0.4 & 0 & 0.6 & 0\\ 0 & 0.4 & 0 & 0.6\\ 0 & 0 & 0.5 & 0.5 \end{bmatrix} \end{gathered} A=00.400100.4000.600.5000.60.5

观测概率分布为: B = [ 0.5 0.5 0.3 0.7 0.6 0.4 0.8 0.2 ] B=\begin{gathered} \begin{bmatrix} 0.5 & 0.5\\ 0.3 & 0.7\\ 0.6 & 0.4\\ 0.8 & 0.2 \\ \end{bmatrix} \end{gathered} B=0.50.30.60.80.50.70.40.2

1.2 观测序列的生成

根据隐马尔可夫模型定义,可以将一个长度为 T T T的观测序列 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,π),观测序列长度 T T T

输出 观测序列 O = ( o 1 , o 2 , . . . , o T ) O=(o_1,o_2,...,o_T) O=(o1,o2,...,oT)

(1)按照初始状态分布 π \pi π产生状态 i 1 i_1 i1

(2)令 t = 1 t=1 t=1

(3)按照状态 i t i_t it的观测概率分布 b i t ( k ) b_{i_t}(k) bit(k)生成 o t o_t ot

(4)按照状态 i t i_t it的状态转移概率分布状态 { a i t i t + 1 } \{a_{i_ti_{t+1}}\} {aitit+1}产生状态 i t + 1 i_{t+1} it+1 i t + 1 = 1 , 2 , . . . , N i_{t+1}=1,2,...,N it+1=1,2,...,N

(5)令 t = t + 1 t=t+1 t=t+1;如果 t < T t<T t<T,转向(3);否则,终止。


2. 隐马尔可夫模型的3个基本问题

隐马尔可夫模型有 3 3 3个基本问题:

(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),计算在模型 λ \lambda λ下观测序列 O O O出现的概率 P ( O ∣ λ ) P(O|\lambda) P(Oλ)

(2)学习问题 已知观测序列 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,π)参数,使得在该模型下观测序列概率 P ( O ∣ λ ) P(O|\lambda) P(Oλ)最大;

(3)预测问题 已知模型 λ = ( 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 ( I ∣ O ) P(I|O) P(IO)最大的状态序列 I = ( i 1 , i 2 , . . . , i T ) I=(i_1,i_2,...,i_T) I=(i1,i2,...,iT),。即给定观测序列,求最有可能的对应的状态序列。

2.1 概率计算方法

2.1.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),计算观测序列 O O O出现的概率 P ( O ∣ λ ) P(O|\lambda) P(Oλ)。最直接的方法是按概率公式直接计算。通过列举所有可能的长度为 T T T的状态序列 I = ( i 1 , i 2 , . . . , i T ) I=(i_1,i_2,...,i_T) I=(i1,i2,...,iT),求各个状态序列 I I I与观测序列 O = ( o 1 , o 2 , . . . , o T ) O=(o_1,o_2,...,o_T) O=(o1,o2,...,oT)的联合概率 P ( O , I ∣ λ ) P(O,I|\lambda) P(O,Iλ),然后对所有可能的状态序列求和,得到 P ( O ∣ λ ) P(O|\lambda) P(Oλ)。状态序列 I = ( i 1 , i 2 , . . . , i T ) I=(i_1,i_2,...,i_T) I=(i1,i2,...,iT)的概率是: P ( I ∣ λ ) = π i 1 a i 1 i 2 a i 2 i 3 . . . a i T − 1 i T P(I|\lambda)=\pi_{i_1}a_{i_1i_2}a_{i_2i_3}...a_{i_{T-1}i_T} P(Iλ)=πi1ai1i2ai2i3...aiT1iT

即初始概率乘以每次的转移概率。对固定的状态序列 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)的概率是: P ( O ∣ I , λ ) = b i 1 ( o 1 ) b i 2 ( o 2 ) . . . b i T ( o T ) P(O|I,\lambda)=b_{i_1}(o_1)b_{i_2}(o_2)...b_{i_T}(o_T) P(OI,λ)=bi1(o1)bi2(o2)...biT(oT)

即观测序列中每一项为状态序列中相应元素的概率。则 O O O I I I同时出现的联合概率为: P ( O , I ∣ λ ) = P ( O ∣ I , λ ) P ( I ∣ λ ) = π i 1 b i 1 ( o 1 ) a i 1 i 2 b i 2 ( o 2 ) a i 2 i 3 . . . a i T − 1 i T b i T ( o T ) \begin{aligned} P(O,I|\lambda)&=P(O|I,\lambda)P(I|\lambda)\\&=\pi_{i_1}b_{i_1}(o_1)a_{i_1i_2}b_{i_2}(o_2)a_{i_2i_3}...a_{i_{T-1}i_T}b_{i_T}(o_T) \end{aligned} P(O,Iλ)=P(OI,λ)P(Iλ)=πi1bi1(o1)ai1i2bi2(o2)ai2i3...aiT1iTbiT(oT)

然后,对所有可能的状态序列 I I I求和,得到观测序列 O O O的概率 P ( O ∣ λ ) P(O|\lambda) P(Oλ),即: P ( O ∣ λ ) = ∑ I P ( O ∣ I , λ ) P ( 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 2 i 3 . . . a i T − 1 i T b i T ( o T ) \begin{aligned} P(O|\lambda)&=\sum_IP(O|I,\lambda)P(I\lambda)\\&=\sum_{i_1,i_2,...,i_T}\pi_{i_1}b_{i_1}(o_1)a_{i_1i_2}b_{i_2}(o_2)a_{i_2i_3}...a_{i_{T-1}i_T}b_{i_T}(o_T) \end{aligned} P(Oλ)=IP(OI,λ)P(Iλ)=i1,i2,...,iTπi1bi1(o1)ai1i2bi2(o2)ai2i3...aiT1iTbiT(oT)

但是,上式的计算量很大,是 O ( T N T ) O(TN^{T}) O(TNT)阶的,这种算法是不可行的。

2.1.2 前向算法

前向概率 给定隐马尔可夫模型 λ \lambda λ,定义到时刻 t t t部分观测序列为 o 1 , o 2 , . . . , o T o_1,o_2,...,o_T o1,o2,...,oT且状态为 q i q_i qi的概率为前向概率,记作: α t ( i ) = P ( o 1 , o 2 , . . . o t , i t = q i ∣ λ ) \alpha_t(i)=P(o_1,o_2,...o_t,i_t=q_i|\lambda) αt(i)=P(o1,o2,...ot,it=qiλ)

可以递推地求得前向概率 α t ( i ) \alpha_t(i) αt(i)及观测序列概率 P ( O ∣ λ ) P(O|\lambda) P(Oλ)

观测序列概率的前向算法

输入 隐马尔可夫模型 λ \lambda λ,观测序列 O O O

输出 观测序列模型 P ( O ∣ λ ) P(O|\lambda) P(Oλ)

(1)初值: α 1 ( i ) = π i b i ( o 1 ) ,     i = 1 , 2 , . . . , N (1) \alpha_1(i)=\pi_ib_i(o_1),\ \ \ i=1,2,...,N\tag{1} α1(i)=πibi(o1),   i=1,2,...,N(1)

(2)递推,对 t = 1 , 2 , . . . , T − 1 t=1,2,...,T-1 t=1,2,...,T1 α t + 1 ( i ) = [ ∑ j = 1 N α t ( i ) a j i ] b i ( o t + 1 ) ,     i = 1 , 2 , . . . , N (2) \alpha_{t+1}(i)=\left[\sum_{j=1}^N\alpha_t(i)a_{ji}\right]b_i(o_{t+1}),\ \ \ i=1,2,...,N\tag{2} αt+1(i)=[j=1Nαt(i)aji]bi(ot+1),   i=1,2,...,N(2)

(3)终止: P ( O ∣ λ ) = ∑ i = 1 N α T ( i ) (3) P(O|\lambda)=\sum_{i=1}^N\alpha_T(i)\tag{3} P(Oλ)=i=1NαT(i)(3)

考虑盒子和球模型 λ = ( A , B , π ) \lambda=(A,B,\pi) λ=(A,B,π),状态集合 Q = { 1 , 2 , 3 } Q=\{1,2,3\} Q={1,2,3},观测集合 V = { 红 , 白 } V=\{红,白\} V={,} A = [ 0.5 0.2 0.3 0.3 0.5 0.2 0.2 0.3 0.5 ] ,     B = [ 0.5 0.5 0.4 0.6 0.7 0.3 ] ,     π = [ 0.2 0.4 0.4 ] \begin{gathered} A=\begin{bmatrix} 0.5 & 0.2 & 0.3\\ 0.3 & 0.5 & 0.2\\ 0.2 & 0.3 & 0.5 \end{bmatrix},\ \ \ B=\begin{bmatrix} 0.5 & 0.5\\ 0.4 & 0.6\\ 0.7 & 0.3 \end{bmatrix},\ \ \ \pi=\begin{bmatrix} 0.2\\ 0.4\\ 0.4 \end{bmatrix} \end{gathered} A=0.50.30.20.20.50.30.30.20.5,   B=0.50.40.70.50.60.3,   π=0.20.40.4

T = 3 T=3 T=3 O = ( 红 , 白 , 红 ) O=(红,白,红) O=(,,),用前向算法计算 P ( O ∣ λ ) P(O|\lambda) P(Oλ)

(1)计算初值: α 1 ( 1 ) = π 1 b 1 ( o 1 ) = 0.10 \alpha_1(1)=\pi_1b_1(o_1)=0.10 α1(1)=π1b1(o1)=0.10

α 1 ( 2 ) = π 2 b 2 ( o 1 ) = 0.16 \alpha_1(2)=\pi_2b_2(o_1)=0.16 α1(2)=π2b2(o1)=0.16

α 1 ( 3 ) = π 3 b 3 ( o 1 ) = 0.28 \alpha_1(3)=\pi_3b_3(o_1)=0.28 α1(3)=π3b3(o1)=0.28

(2)递推计算:
α 2 ( 1 ) = [ ∑ i = 1 3 α 1 ( i ) a i 1 ] b 1 ( o 2 ) = 0.07700 \alpha_2(1)=\left[\sum_{i=1}^3\alpha_1(i)a_{i1}\right]b_1(o_2)=0.07700 α2(1)=[i=13α1(i)ai1]b1(o2)=0.07700

α 2 ( 2 ) = [ ∑ i = 1 3 α 1 ( i ) a i 2 ] b 2 ( o 2 ) = 0.11040 \alpha_2(2)=\left[\sum_{i=1}^3\alpha_1(i)a_{i2}\right]b_2(o_2)=0.11040 α2(2)=[i=13α1(i)ai2]b2(o2)=0.11040

α 2 ( 3 ) = [ ∑ i = 1 3 α 1 ( i ) a i 3 ] b 3 ( o 2 ) = 0.06060 \alpha_2(3)=\left[\sum_{i=1}^3\alpha_1(i)a_{i3}\right]b_3(o_2)=0.06060 α2(3)=[i=13α1(i)ai3]b3(o2)=0.06060

α 3 ( 1 ) = [ ∑ i = 1 3 α 2 ( i ) a i 1 ] b 1 ( o 3 ) = 0.04187 \alpha_3(1)=\left[\sum_{i=1}^3\alpha_2(i)a_{i1}\right]b_1(o_3)=0.04187 α3(1)=[i=13α2(i)ai1]b1(o3)=0.04187

α 3 ( 2 ) = [ ∑ i = 1 3 α 2 ( i ) a i 2 ] b 2 ( o 3 ) = 0.03551 \alpha_3(2)=\left[\sum_{i=1}^3\alpha_2(i)a_{i2}\right]b_2(o_3)=0.03551 α3(2)=[i=13α2(i)ai2]b2(o3)=0.03551

α 3 ( 3 ) = [ ∑ i = 1 3 α 2 ( i ) a i 3 ] b 3 ( o 3 ) = 0.05284 \alpha_3(3)=\left[\sum_{i=1}^3\alpha_2(i)a_{i3}\right]b_3(o_3)=0.05284 α3(3)=[i=13α2(i)ai3]b3(o3)=0.05284

(3)终止: P ( O ∣ λ ) = ∑ i = 1 3 α 3 ( i ) = 0.13022 P(O|\lambda)=\sum_{i=1}^3\alpha_3(i)=0.13022 P(Oλ)=i=13α3(i)=0.13022

2.1.3 后向算法

后向概率 给定隐马尔可夫模型 λ \lambda λ,定义在时刻 t t t状态为 q i q_i qi的条件下,从 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)的概率为后向概率,记作: β t ( i ) = P ( o t + 1 , o t + 2 , . . . , o T ∣ i t = q i , λ ) \beta_t(i)=P(o_{t+1},o_{t+2},...,o_T|i_t=q_i,\lambda) βt(i)=P(ot+1,ot+2,...,oTit=qi,λ)

可以用递推的方法求得后向概率 β t ( i ) \beta_t(i) βt(i)及观测序列概率 P ( O ∣ λ ) P(O|\lambda) P(Oλ)

观测序列概率的后向算法

输入 隐马尔可夫模型 λ \lambda λ,观测序列 O O O

输出 观测序列模型 P ( O ∣ λ ) P(O|\lambda) P(Oλ)

(1) β T ( i ) = 1 ,     i = 1 , 2 , . . . , N (4) \beta_T(i)=1,\ \ \ i=1,2,...,N\tag{4} βT(i)=1,   i=1,2,...,N(4)

(2)对 t = T − 1 , T − 2 , . . . , 1 t=T-1,T-2,...,1 t=T1,T2,...,1 β t ( i ) = ∑ j = 1 N a i j b j ( o t + 1 ) β t + 1 ( j ) ,     i = 1 , 2 , . . . , N (5) \beta_t(i)=\sum_{j=1}^Na_{ij}b_j(o_{t+1})\beta_{t+1}(j),\ \ \ i=1,2,...,N\tag{5} βt(i)=j=1Naijbj(ot+1)βt+1(j),   i=1,2,...,N(5)

(3) P ( O ∣ λ ) = ∑ i = 1 N π i b i ( o 1 ) β 1 ( i ) (6) P(O|\lambda)=\sum_{i=1}^N\pi_ib_i(o_1)\beta_1(i)\tag{6} P(Oλ)=i=1Nπibi(o1)β1(i)(6)

2.2 学习算法

2.2.1 监督学习方法

假设已给训练数据包含 S S S个长度相同的观测序列和对应的状态序列 { ( O 1 , I 1 ) , ( O 2 , I 2 ) , . . . , ( O S , I S ) } \{(O_1,I_1),(O_2,I_2),...,(O_S,I_S)\} {(O1,I1),(O2,I2),...,(OS,IS)},那么可以利用极大似然估计法来估计隐马尔可夫模型的参数。

转移概率 a i j a_{ij} aij的估计 设样本中时刻 t t t处于状态 i i i时刻 t + 1 t+1 t+1转移到状态 j j j的频数为 A i j A_{ij} Aij,那么状态转移概率 a i j a_{ij} aij的估计是: a ^ i j = A i j ∑ i = 1 N A i j ,     i = 1 , 2 , . . . , N ;     j = 1 , 2 , . . . , N (7) \hat a_{ij}=\frac{A_{ij}}{\sum \limits_{i=1}^N}A_{ij},\ \ \ i=1,2,...,N;\ \ \ j=1,2,...,N\tag{7} a^ij=i=1NAijAij,   i=1,2,...,N;   j=1,2,...,N(7)

观测概率 b j ( k ) b_j(k) bj(k)的估计 设样本中状态为 j j j并观测为 k k k的频数是 B j k B_{jk} Bjk,那么状态为 j j j观测为 k k k的概率 b j k b_{jk} bjk的估计是: b ^ j ( k ) = B j k ∑ k = 1 M B j k ,     j = 1 , 2 , . . . , N ;     K = 1 , 2 , . . . , M (8) \hat b_j(k)=\frac{B_{jk}}{\sum\limits_{k=1}^MB_{jk}},\ \ \ j=1,2,...,N;\ \ \ K=1,2,...,M\tag{8} b^j(k)=k=1MBjkBjk,   j=1,2,...,N;   K=1,2,...,M(8)

初始状态概率 π i \pi_i πi的估计 π ^ i \hat\pi_i π^i S S S个样本中初始状态为 q i q_i qi的概率

2.2.2 Baum-Welch算法

假设给定训练数据只包含 S S S个长度为 T T T的观测序列 { O 1 , O 2 , . . . , O T } \{O_1,O_2,...,O_T\} {O1,O2,...,OT}而没有对应的状态序列,目标是学习马尔可夫模型 λ = ( A , B , π ) \lambda=(A,B,\pi) λ=(A,B,π)的参数。我们将观测序列数据看作观测数据 O O O,状态序列数据看作不可观测的隐数据 I I I,那么隐马尔可夫模型事实上是一个含有隐变量的概率模型: P ( O ∣ λ ) = ∑ I P ( O ∣ I , λ ) P ( I ∣ λ ) (9) P(O|\lambda)=\sum_IP(O|I,\lambda)P(I|\lambda)\tag{9} P(Oλ)=IP(OI,λ)P(Iλ)(9)

它的参数估计可以由 E M EM EM算法实现。

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

所有观测数据写成 O = ( o 1 , o 2 , . . . , o T ) O=(o_1,o_2,...,o_T) O=(o1,o2,...,oT),所有隐数据写成 I = ( i 1 , i 2 , . . . , i T ) I=(i_1,i_2,...,i_T) I=(i1,i2,...,iT),完全数据是 ( O , I ) = ( o 1 , o 2 , . . . , o T , i 1 , i 2 , . . . , i T ) (O,I)=(o_1,o_2,...,o_T,i_1,i_2,...,i_T) (O,I)=(o1,o2,...,oT,i1,i2,...,iT)。完全数据的对数似然函数是 log ⁡ P ( O , I ∣ λ ) \log P(O,I|\lambda) logP(O,Iλ)

EM算法的E步:求Q函数

Q ( λ , λ ‾ ) = ∑ I log ⁡ P ( O , I ∣ λ ) P ( O , I ∣ λ ‾ ) Q(\lambda,\overline\lambda)=\sum_I\log P(O,I|\lambda)P(O,I|\overline\lambda) Q(λ,λ)=IlogP(O,Iλ)P(O,Iλ)

其中 λ ‾ \overline\lambda λ是隐马尔可夫模型参数的当前估计值, λ \lambda λ是要极大化的隐马尔可夫模型参数。 P ( O , I ∣ λ ) = π i 1 b i 1 ( o 1 ) a i 1 i 2 b i 2 ( o 2 ) a i 2 i 3 . . . a i T − 1 i T b i T ( o T ) P(O,I|\lambda)=\pi_{i_1}b_{i_1}(o_1)a_{i_1i_2}b_{i_2}(o_2)a_{i_2i_3}...a_{i_{T-1}i_T}b_{i_T}(o_T) P(O,Iλ)=πi1bi1(o1)ai1i2bi2(o2)ai2i3...aiT1iTbiT(oT)

于是函数 Q ( λ , λ ‾ ) Q(\lambda,\overline\lambda) Q(λ,λ)可以写成: Q ( λ , λ ‾ ) = ∑ I log ⁡ π i 1 P ( O , I ∣ λ ‾ ) + ∑ I ( ∑ t = 1 T − 1 log ⁡ a i t i t + 1 ) P ( O , I ∣ λ ‾ ) + ∑ I ( ∑ t = 1 T log ⁡ b i t ( o t ) ) P ( O , I ∣ λ ‾ ) Q(\lambda,\overline\lambda)=\sum_I\log\pi_{i_1}P(O,I|\overline\lambda)+\sum_I\left(\sum_{t=1}^{T-1}\log a_{i_ti_{t+1}}\right)P(O,I|\overline\lambda)+\sum_I\left(\sum_{t=1}^T\log b_{i_t}(o_t)\right)P(O,I|\overline\lambda) Q(λ,λ)=Ilogπi1P(O,Iλ)+I(t=1T1logaitit+1)P(O,Iλ)+I(t=1Tlogbit(ot))P(O,Iλ)

式中求和都是对所有数据的序列总长度 T T T进行的。

EM算法的M步:极大化Q函数

对上式的三项分别极大化,得到: π i = P ( O , i 1 = i ∣ λ ‾ ) P ( O , λ ) \pi_i=\frac{P(O,i_1=i|\overline\lambda)}{P(O,\lambda)} πi=P(O,λ)P(O,i1=iλ)

a i j = ∑ t = 1 T − 1 P ( O , i t = i , i t + 1 = j ∣ λ ‾ ) ∑ t = 1 T − 1 P ( O , i t = i ∣ λ ‾ ) a_{ij}=\frac{\sum \limits_{t=1}^{T-1}P(O,i_t=i,i_{t+1}=j|\overline\lambda)}{\sum \limits_{t=1}^{T-1}P(O,i_t=i|\overline\lambda)} aij=t=1T1P(O,it=iλ)t=1T1P(O,it=i,it+1=jλ)

b j ( k ) = ∑ t = 1 T P ( O , i t = j ∣ λ ‾ ) I ( o t = v k ) ∑ t = 1 T P ( O , i t = j ∣ ‾ λ ) b_j(k)=\frac{\sum \limits_{t=1}^TP(O,i_t=j|\overline\lambda)I(o_t=v_k)}{\sum \limits_{t=1}^TP(O,i_t=j\overline|\lambda)} bj(k)=t=1TP(O,it=jλ)t=1TP(O,it=jλ)I(ot=vk)

2.2.3 Baum-Welch模型参数估计公式

Baum-Welch算法

输入 观测数据 O = ( o 1 , o 2 , . . . , o T ) O=(o_1,o_2,...,o_T) O=(o1,o2,...,oT)

输出 隐马尔可夫模型参数。

(1)初始化。对 n = 0 n=0 n=0,选取 a i j ( 0 ) a_{ij}^{(0)} aij(0) b j ( k ) ( 0 ) b_j(k)^{(0)} bj(k)(0) π i ( 0 ) \pi_i^{(0)} πi(0),得到模型 λ ( 0 ) = ( A ( 0 ) , B ( 0 ) , π ( 0 ) ) \lambda^{(0)}=(A^{(0)},B^{(0)},\pi^{(0)}) λ(0)=(A(0),B(0),π(0))

(2)递推。对 n = 1 , 2 , . . . n=1,2,... n=1,2,... a i j = ∑ t = 1 T − 1 P ( O , i t = i , i t + 1 = j ∣ λ ‾ ) ∑ t = 1 T − 1 P ( O , i t = i ∣ λ ‾ ) a_{ij}=\frac{\sum \limits_{t=1}^{T-1}P(O,i_t=i,i_{t+1}=j|\overline\lambda)}{\sum \limits_{t=1}^{T-1}P(O,i_t=i|\overline\lambda)} aij=t=1T1P(O,it=iλ)t=1T1P(O,it=i,it+1=jλ)

b j ( k ) = ∑ t = 1 T P ( O , i t = j ∣ λ ‾ ) I ( o t = v k ) ∑ t = 1 T P ( O , i t = j ∣ ‾ λ ) b_j(k)=\frac{\sum \limits_{t=1}^TP(O,i_t=j|\overline\lambda)I(o_t=v_k)}{\sum \limits_{t=1}^TP(O,i_t=j\overline|\lambda)} bj(k)=t=1TP(O,it=jλ)t=1TP(O,it=jλ)I(ot=vk)

π i = P ( O , i 1 = i ∣ λ ‾ ) P ( O , λ ) \pi_i=\frac{P(O,i_1=i|\overline\lambda)}{P(O,\lambda)} πi=P(O,λ)P(O,i1=iλ)

右端各值按观测 O = ( o 1 , o 2 , . . . , o T ) O=(o_1,o_2,...,o_T) O=(o1,o2,...,oT)和模型 λ ( n ) = ( A ( n ) , B ( n ) , π ( n ) ) \lambda^{(n)}=(A^{(n)},B^{(n)},\pi^{(n)}) λ(n)=(A(n),B(n),π(n))计算。

(3)终止。得到模型参数 λ ( n + 1 ) = ( A ( n + 1 ) , B ( n + 1 ) , π ( n + 1 ) ) \lambda^{(n+1)}=(A^{(n+1)},B^{(n+1)},\pi^{(n+1)}) λ(n+1)=(A(n+1),B(n+1),π(n+1))

2.3 预测算法

2.3.1 近似算法

近似算法的想法是,在每个时刻 t t t选择在该时刻最有可能出现的状态 i t ∗ i_t^* it,从而得到一个状态序列 I ∗ = ( i 1 ∗ , i 2 ∗ , . . . , i T ∗ ) I^*=(i_1^*,i_2^*,...,i_T^*) I=(i1,i2,...,iT),将它作为预测的结果。给定隐马尔可夫模型 λ \lambda λ和观测序列 O O O,在时刻 t t t处于状态 q i q_i qi的概率 γ t ( i ) \gamma_t(i) γt(i)是: γ t ( i ) = α t ( i ) β t ( i ) ∑ j = 1 N α t ( i ) β t ( i ) \gamma_t(i)=\frac{\alpha_t(i)\beta_t(i)}{\sum \limits_{j=1}^N\alpha_t(i)\beta_t(i)} γt(i)=j=1Nαt(i)βt(i)αt(i)βt(i)

在每一时刻 t t t最后可能的状态 i t ∗ i_t^* it是: i t ∗ = arg ⁡ max ⁡ 1 ≤ i ≤ N [ γ t ( i ) ] ,     t = 1 , 2 , . . . , T i_t^*=\arg\max_{1\leq i\leq N}[\gamma_t(i)],\ \ \ t=1,2,...,T it=arg1iNmax[γt(i)],   t=1,2,...,T

从而得到 I ∗ = ( i 1 ∗ , i 2 ∗ , . . . , i T ∗ ) I^*=(i_1^*,i_2^*,...,i_T^*) I=(i1,i2,...,iT)。近似算法的优点是计算简单,其缺点是不能保证预测的状态序列整体是最优可能的状态序列,因为预测的状态序列可能有实际不发生的部分。

2.3.2 维特比算法

维特比算法实际使用动态规划解隐马尔可夫模型预测问题,即用动态规划求概率最大路径。这时的路径对应着一个状态。首先导入两个变量 δ \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 ( 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}}P(i_t=i,i_{t-1},...,i_1,o_t,...,o_1|\lambda),\ \ \ i=1,2,...,N δt(i)=i1,i2,...,it1maxP(it=i,it1,...,i1,ot,...,o1λ),   i=1,2,...,N

由定义得到变量 δ \delta δ的递推公式: δ t + 1 ( i ) = max ⁡ i 1 , i 2 , . . . , i t − 1 P ( i t = i , i t − 1 , . . . , i 1 , o t , . . . , o 1 ∣ λ ) = max ⁡ 1 ≤ j ≤ N [ δ t ( j ) a j i ] b i ( o t + 1 ) ,     i = 1 , 2 , . . . , N ;     t = 1 , 2 , . . . , T − 1 \begin{aligned} \delta_{t+1}(i)&=\max_{i_1,i_2,...,i_{t-1}}P(i_t=i,i_{t-1},...,i_1,o_t,...,o_1|\lambda)\\&=\max_{1\leq j\leq N}[\delta_t(j)a_{ji}]b_i(o_{t+1}),\ \ \ i=1,2,...,N;\ \ \ t=1,2,...,T-1 \end{aligned} δt+1(i)=i1,i2,...,it1maxP(it=i,it1,...,i1,ot,...,o1λ)=1jNmax[δt(j)aji]bi(ot+1),   i=1,2,...,N;   t=1,2,...,T1

定义在时刻 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个结点为: Ψ ( i ) = arg ⁡ max ⁡ 1 ≤ j ≤ N [ δ t − 1 ( j ) a j i ] ,     i = 1 , 2 , . . . , N \Psi(i)=\arg\max_{1\leq j\leq N}[\delta_{t-1}(j)a_{ji}],\ \ \ i=1,2,...,N Ψ(i)=arg1jNmax[δt1(j)aji],   i=1,2,...,N

维特比算法

输入 模型 λ = ( 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)

输出 最优路径 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 \delta_1(i)=\pi_ib_i(o_1),\ \ \ i=1,2,...,N δ1(i)=πibi(o1),   i=1,2,...,N

Ψ 1 ( i ) = 0 ,     i = 1 , 2 , . . . , N \Psi_1(i)=0,\ \ \ 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 + 1 ) ,     i = 1 , 2 , . . . , N \delta_t(i)=\max_{1\leq j\leq N}[\delta_{t-1}(j)a_{ji}]b_i(o_{t+1}),\ \ \ i=1,2,...,N δt(i)=1jNmax[δt1(j)aji]bi(ot+1),   i=1,2,...,N

Ψ ( i ) = arg ⁡ max ⁡ 1 ≤ j ≤ N [ δ t − 1 ( j ) a j i ] ,     i = 1 , 2 , . . . , N \Psi(i)=\arg\max_{1\leq j\leq N}[\delta_{t-1}(j)a_{ji}],\ \ \ i=1,2,...,N Ψ(i)=arg1jNmax[δt1(j)aji],   i=1,2,...,N

(3)终止: P ∗ = max ⁡ 1 ≤ i ≤ N δ T ( i ) P^*=\max_{1\leq i\leq N}\delta_T(i) P=1iNmaxδT(i)

i T ∗ = arg ⁡ max ⁡ 1 ≤ i ≤ N [ δ T ( i ) ] i^*_T=\arg\max_{1\leq i\leq N}[\delta_T(i)] iT=arg1iNmax[δT(i)]

(3)最优路径回溯。对 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)初始化。在 t = 1 t=1 t=1时,对每个状态 i i i i = 1 , 2 , 3 i=1,2,3 i=1,2,3,求状态为 i i i观测 o 1 o_1 o1为红的概率,记此概率为 δ 1 ( i ) \delta_1(i) δ1(i),则: δ 1 ( i ) = π i b i ( o 1 ) = π i b i ( 红 ) ,     i = 1 , 2 , 3 \delta_1(i)=\pi_ib_i(o_1)=\pi_ib_i(红),\ \ \ i=1,2,3 δ1(i)=πibi(o1)=πibi(),   i=1,2,3

带入实际数据: δ 1 ( i ) = 0.10 ,     δ 2 ( i ) = 0.16 ,     δ 3 ( i ) = 0.28 \delta_1(i)=0.10,\ \ \ \delta_2(i)=0.16,\ \ \ \delta_3(i)=0.28 δ1(i)=0.10,   δ2(i)=0.16,   δ3(i)=0.28

Ψ 1 ( i ) = 0 \Psi_1(i)=0 Ψ1(i)=0 i = 1 , 2 , 3 i=1,2,3 i=1,2,3

(2)在 t = 2 t=2 t=2时,对每个状态 i i i i = 1 , 2 , 3 i=1,2,3 i=1,2,3,求在 t = 1 t=1 t=1时状态为 j j j观测为红并在 t = 2 t=2 t=2时状态为 i i i观测 o 2 o_2 o2为白的路径的最大概率,记次最大概率为 δ 2 ( i ) \delta_2(i) δ2(i),则: δ 2 ( i ) = max ⁡ 1 ≤ j ≤ 3 [ δ 1 ( j ) a j i ] b i ( o 2 ) \delta_2(i)=\max_{1\leq j\leq 3}[\delta_1(j)a_{ji}]b_i(o_2) δ2(i)=1j3max[δ1(j)aji]bi(o2)

同时,对每个状态 i i i i = 1 , 2 , 3 i=1,2,3 i=1,2,3,记录概率最大路径的前一个状态 j j j Ψ 2 ( i ) = arg ⁡ max ⁡ 1 ≤ j ≤ 3 [ δ 1 ( j ) a j i ] ,     i = 1 , 2 , 3 \Psi_2(i)=\arg\max_{1\leq j\leq3}[\delta_1(j)a_{ji}],\ \ \ i=1,2,3 Ψ2(i)=arg1j3max[δ1(j)aji],   i=1,2,3

计算: δ 2 ( 1 ) = max ⁡ 1 ≤ j ≤ 3 [ δ 1 ( j ) a j 1 ] b 1 ( o 2 ) = max ⁡ j { 0.10 × 0.5 , 0.16 × 0.3 , 0.28 × 0.2 } × 0.5 = 0.028 \begin{aligned} \delta_2(1)&=\max_{1\leq j\leq3}[\delta_1(j)a_{j1}]b_1(o_2)\\&=\max_j\{0.10×0.5,0.16×0.3,0.28×0.2\}×0.5\\&=0.028 \end{aligned} δ2(1)=1j3max[δ1(j)aj1]b1(o2)=jmax{0.10×0.5,0.16×0.3,0.28×0.2}×0.5=0.028

Ψ 2 ( 1 ) = arg ⁡ max ⁡ 1 ≤ j ≤ 3 [ δ 1 ( j ) a j 1 ] = arg ⁡ max ⁡ j { 0.10 × 0.5 , 0.16 × 0.3 , 0.28 × 0.2 } = 3 \begin{aligned} \Psi_2(1)&=\arg\max_{1\leq j\leq3}[\delta_1(j)a_{j1}]\\&=\arg\max_j\{0.10×0.5,0.16×0.3,0.28×0.2\}\\&=3 \end{aligned} Ψ2(1)=arg1j3max[δ1(j)aj1]=argjmax{0.10×0.5,0.16×0.3,0.28×0.2}=3

δ 2 ( 2 ) = max ⁡ 1 ≤ j ≤ 3 [ δ 1 ( j ) a j 2 ] b 2 ( o 2 ) = max ⁡ j { 0.10 × 0.2 , 0.16 × 0.5 , 0.28 × 0.3 } × 0.6 = 0.0504 \begin{aligned} \delta_2(2)&=\max_{1\leq j\leq3}[\delta_1(j)a_{j2}]b_2(o_2)\\&=\max_j\{0.10×0.2,0.16×0.5,0.28×0.3\}×0.6\\&=0.0504 \end{aligned} δ2(2)=1j3max[δ1(j)aj2]b2(o2)=jmax{0.10×0.2,0.16×0.5,0.28×0.3}×0.6=0.0504

Ψ 2 ( 2 ) = arg ⁡ max ⁡ 1 ≤ j ≤ 3 [ δ 1 ( j ) a j 2 ] = arg ⁡ max ⁡ j { 0.10 × 0.2 , 0.16 × 0.5 , 0.28 × 0.3 } = 3 \begin{aligned} \Psi_2(2)&=\arg\max_{1\leq j\leq3}[\delta_1(j)a_{j2}]\\&=\arg\max_j\{0.10×0.2,0.16×0.5,0.28×0.3\}\\&=3 \end{aligned} Ψ2(2)=arg1j3max[δ1(j)aj2]=argjmax{0.10×0.2,0.16×0.5,0.28×0.3}=3

δ 2 ( 3 ) = max ⁡ 1 ≤ j ≤ 3 [ δ 1 ( j ) a j 3 ] b 3 ( o 2 ) = max ⁡ j { 0.10 × 0.3 , 0.16 × 0.2 , 0.28 × 0.5 } × 0.3 = 0.042 \begin{aligned} \delta_2(3)&=\max_{1\leq j\leq3}[\delta_1(j)a_{j3}]b_3(o_2)\\&=\max_j\{0.10×0.3,0.16×0.2,0.28×0.5\}×0.3\\&=0.042 \end{aligned} δ2(3)=1j3max[δ1(j)aj3]b3(o2)=jmax{0.10×0.3,0.16×0.2,0.28×0.5}×0.3=0.042

Ψ 2 ( 3 ) = arg ⁡ max ⁡ 1 ≤ j ≤ 3 [ δ 1 ( j ) a j 3 ] = arg ⁡ max ⁡ j { 0.10 × 0.3 , 0.16 × 0.2 , 0.28 × 0.5 } = 3 \begin{aligned} \Psi_2(3)&=\arg\max_{1\leq j\leq3}[\delta_1(j)a_{j3}]\\&=\arg\max_j\{0.10×0.3,0.16×0.2,0.28×0.5\}\\&=3 \end{aligned} Ψ2(3)=arg1j3max[δ1(j)aj3]=argjmax{0.10×0.3,0.16×0.2,0.28×0.5}=3

同样,在 t = 3 t=3 t=3时, δ 3 ( 1 ) = 0.00756 ,     Ψ 3 ( 1 ) = 2 \delta_3(1)=0.00756,\ \ \ \Psi_3(1)=2 δ3(1)=0.00756,   Ψ3(1)=2

δ 3 ( 2 ) = 0.01008 ,     Ψ 3 ( 2 ) = 2 \delta_3(2)=0.01008,\ \ \ \Psi_3(2)=2 δ3(2)=0.01008,   Ψ3(2)=2

δ 3 ( 3 ) = 0.01470 ,     Ψ 3 ( 3 ) = 3 \delta_3(3)=0.01470,\ \ \ \Psi_3(3)=3 δ3(3)=0.01470,   Ψ3(3)=3

(3)以 P ∗ P^* P表示最优路径的概率,则: P ∗ = max ⁡ 1 ≤ i ≤ 3 δ 3 ( i ) = 0.0147 P^*=\max_{1\leq i\leq3}\delta_3(i)=0.0147 P=1i3maxδ3(i)=0.0147

最优路径的终点是 i 3 ∗ i_3^* i3 i 3 ∗ arg ⁡ max ⁡ i [ δ 3 ( i ) ] = 3 i_3^*\arg\max_i[\delta_3(i)]=3 i3argimax[δ3(i)]=3

(4)由最优路径的终点 i 3 ∗ i_3^* i3,逆向找到 i 1 ∗ i_1^* i1 i 2 ∗ i_2^* i2 在 t = 2 时 ,      i 2 ∗ = Ψ 3 ( i 3 ∗ ) = Ψ 3 ( 3 ) = 3 在t=2时,\ \ \ \ i_2^*=\Psi_3(i_3^*)=\Psi_3(3)=3 t=2,    i2=Ψ3(i3)=Ψ3(3)=3

在 t = 1 时 ,      i 1 ∗ = Ψ 2 ( i 2 ∗ ) = Ψ 2 ( 3 ) = 3 在t=1时,\ \ \ \ i_1^*=\Psi_2(i_2^*)=\Psi_2(3)=3 t=1,    i1=Ψ2(i2)=Ψ2(3)=3

于是求得最优路径,即最优状态序列 I ∗ = ( i 1 ∗ , i 2 ∗ , i 3 ∗ ) = ( 3 , 3 , 3 ) I^*=(i_1^*,i_2^*,i_3^*)=(3,3,3) I=(i1,i2,i3)=(3,3,3)


3. 隐马尔可夫模型总结

隐马尔可夫模型是关于时序的概率模型,描述一个隐藏的马尔可夫链随机生成不可观测的状态的序列,再由各个状态随机生成一个观测从而产生观测序列的过程。隐马尔可夫模型由初始状态向量 π \pi π、状态转移概率矩阵 A A A和观测概率矩阵 B B B决定。因此,隐马尔可夫模型可以写成 λ = ( A , B , π ) \lambda=(A,B,\pi) λ=(A,B,π)


参考

  1. 统计学习方法/李航著。—2版。—北京:清华大学出版社,2019(2019.6重印).


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值