《统计学习方法》——隐马尔可夫模型

    xiaoxiao2022-07-04  156

        隐马尔可夫模型(hidden Markov model,HMM)是可用于标注问题的统计学模型,描述由隐藏的马尔可夫链生成观测序列的过程,属于生成模型。

    10.1 隐马尔可夫模型的基本概念

    10.1.1 隐马尔可夫模型的定义

    定义10.1(隐马尔可夫模型) 隐马尔可夫模型是关于时序的概率模型,描述由一个隐藏的马尔可夫链随机生成不可观测的状态随机序列,再由各个状态生成一个观测从而产生观测随机序列的过程。隐藏的马尔可夫链随机生成的状态的序列,称为状态序列;每个状态生成一个观测,而由此产生的观测的随机序列,称为观测序列。序列的每个位置可以看作是一个时刻。     隐马尔可夫模型由初始概率分布、状态转移概率分布以及观测概率分布确定。隐马尔可夫模型的形式定义如下:     设 Q Q Q是所有可能的状态的集合, V V V是所有的可能的观测的集合: Q = { q 1 , q 2 , ⋯   , q N } ,   V = { v 1 , v 2 , ⋯   , v M } Q=\lbrace q_1,q_2,\cdots,q_N\rbrace,\ V=\lbrace v_1,v_2,\cdots,v_M \rbrace Q={q1,q2,,qN}, V={v1,v2,,vM}其中, M M M表示可能的状态数, N N N表示可能的观测数。    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,\cdots,i_T),\ O=(o_1,o_2,\cdots,o_T) I=(i1,i2,,iT), O=(o1,o2,,oT)      A A A状态转移概率矩阵: A = [ a i j ] M × N A=[a_{ij}]_{M\times N} A=[aij]M×N其中, a i j = P ( i t + 1 = q j ∣ i t = q i ) , i , j = 1 , 2 , ⋯   , N a_{ij}=P(i_{t+1}=q_j|i_t=q_i),i,j=1,2,\cdots,N aij=P(it+1=qjit=qi),i,j=1,2,,N其含义为从 t t t时刻状态为 q i q_i qi转移到 t + 1 t+1 t+1时刻状态为 q i + 1 的 概 率 。 q_{i+1}的概率。 qi+1      B B B观测概率矩阵: B = [ b j ( k ) ] N × M B=[b_j(k)]_{N\times 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,\cdots,M;\ j=1,2,\cdots,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)其中, π = P ( i 1 = q i ) , i = 1 , 2 , ⋯   , N \pi=P(i_1=q_i),i=1,2,\cdots,N π=P(i1=qi),i=1,2,,N表示初始时刻处于状态 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 、 B 、 π A、B、\pi ABπ称为隐马尔可夫模型的三要素。     状态转移概率模型 A A A与状态初始概率向量 π \pi π确定了隐藏的马尔可夫链,生成不可观测的状态序列。观测概率矩阵 B B B确定了如何从状态生成观测,与状态序列综合确定了如何产生观测序列。     隐马尔可夫模型做了以下两个基本假设: (1)齐次马尔可夫性假设,假设隐藏的马尔可夫链在任意时刻 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},\cdots,i_1,o_1)=P(i_t|i_{t-1}),t=1,2,\cdots,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 1 , o 1 ) = P ( o t ∣ i t ) P(o_t|i_T,o_T,i_{T-1},o_{T-1},\cdots,i_1,o_1)=P(o_t|i_t) P(otiT,oT,iT1,oT1,,i1,o1)=P(otit)

    10.1.2 观测序列的生成过程:

        根据隐马尔可夫模型的定义,可以将一个长度为 T T T的观测序列 O = ( o 1 , o 2 , ⋯   , o T ) O=(o_1,o_2,\cdots,o_T) O=(o1,o2,,oT)的生成过程描述如下: 算法10.1观测序列的生成: 输入:隐马尔可夫模型 λ = ( A , B , π ) \lambda=(A,B,\pi) λ=(A,B,π),观测序列长度T; 输出:观测序列 O = ( o 1 , o 2 , ⋯   , o T ) O=(o_1,o_2,\cdots,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) o(t); (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; (5)令 t = t + 1 t=t+1 t=t+1,如果 t < T t<T t<T,转步(3);否则,终止。

    10.2 概率计算算法

    10.2.1 直接计算法

        给定模型 λ = ( A , B , π ) \lambda=(A,B,\pi) λ=(A,B,π)和观测序列 O = ( o 1 , o 2 , ⋯   , o T ) O=(o_1,o_2,\cdots,o_T) O=(o1,o2,,oT),计算观测序列 O O O出现的概率 P ( O ∣ λ ) P(O|\lambda) P(Oλ)。直接计算的思路是:首先求状态序列 I = i 1 , i 2 , ⋯   , i T I={i_1,i_2,\cdots,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}\cdots a_{i_T-1i_T} P(Iλ)=πi1ai1i2ai2i3aiT1iT    对给定的状态序列 I I I,观测序列 O = ( o 1 , o 2 , ⋯   , o T ) O=(o_1,o_2,\cdots,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)=b_{i_1}(o_1)b_{i_2}(o_2)\cdots 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 ∣ λ ) P(O,I|\lambda)=P(O|I,\lambda)P(I|\lambda) P(O,Iλ)=P(OI,λ)P(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 ) ) =\pi_{i_1}b_{i_1}(o_1)a_{i_1i_2}b_{i_2}(o_2)\cdots a_{i_{T-1}i_{T}}b_{i_T}(o(T)) =πi1bi1(o1)ai1i2bi2(o2)aiT1iTbiT(o(T))因为要将所有的长度为 T T T的状态序列列举出来,状态共 N N N种,所以计算量是 O ( T N T ) O(TN^T) O(TNT)阶,这种算法不可行。

    10.2.2 前向算法

         定义10.2(前向概率) 给定隐马尔可夫模型 λ \lambda λ,定义到 t t t时刻部分观测序列为 o 1 , o 2 , ⋯   , o t o_1,o_2,\cdots,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,\dots,o_t,i_t=q_i|\lambda) αt(i)=P(o1,o2,,ot,it=qiλ)     算法10.2(观测序列概率的前向算法)      这个算法虽然从含义理解上可以认同,但是博主没能从数学的角度上找到一种说服自己的合理推导过程,望有想法者留下评论。 输入:隐马尔可夫模型 λ \lambda λ,观测序列 O O O; 输出:观测序列概率 P ( O ∣ λ ) P(O|\lambda) P(Oλ)。 (1)初值 α 1 ( i ) = P ( o 1 , i 1 = q i ∣ λ ) = π i b i ( o 1 ) , i = 1 , 2 , ⋯   , N \alpha_1(i)=P(o_1,i_1=q_i|\lambda)=\pi_ib_i(o_1),i=1,2,\cdots,N α1(i)=P(o1,i1=qiλ)=πibi(o1),i=1,2,,N (2)递推 α t + 1 ( i ) = ( ∑ j = 1 N α t ( j ) a j i ) b i ( o t + 1 ) , i = 1 , 2 , 3 , ⋯   , N \alpha_{t+1}(i)=(\sum_{j=1}^N\alpha_t(j)a_{ji})b_i(o_{t+1}),i=1,2,3,\cdots,N αt+1(i)=(j=1Nαt(j)aji)bi(ot+1)i=1,2,3,,N (3)终止 P ( O ∣ λ ) = ∑ i = 1 N α T ( i ) P(O|\lambda)=\sum_{i=1}^N\alpha_T(i) P(Oλ)=i=1NαT(i)     前向算法是基于状态序列的路径结构递推计算 P ( O ∣ λ ) P(O|\lambda) P(Oλ)的算法。这种算法所需的计算量大大降低,每一次计算直接引用前一时刻的计算结果,避免了重复计算。利用前向概率计算 P ( O ∣ λ ) P(O|\lambda) P(Oλ)的计算量是 O ( N 2 T ) O(N^2T) O(N2T),相比直接算法计算量已经大大降低。 从(2)到(3)的推导过程: α t + 1 ( i ) = P ( o 1 , o 2 , ⋯   , o t + 1 , i t + 1 = q i ∣ λ ) \alpha_{t+1}(i)=P(o_1,o_2,\cdots,o_{t+1},i_{t+1}=q_i|\lambda) αt+1(i)=P(o1,o2,,ot+1,it+1=qiλ) = ∑ j = 1 N P ( o 1 , o 2 , ⋯   , o t + 1 , i t = q j , i t + 1 = q i ∣ λ ) =\sum_{j=1}^NP(o_1,o_2,\cdots,o_{t+1},i_t=q_j,i_{t+1}=q_i|\lambda) =j=1NP(o1,o2,,ot+1,it=qj,it+1=qiλ) = ∑ j = 1 N P ( o 1 , o 2 , ⋯   , o t , i t = q j ) P ( o t + 1 , i t + 1 = q i ∣ o 1 , o 2 , ⋯   , o t , i t = q j ) =\sum_{j=1}^NP(o_1,o_2,\cdots,o_t,i_t=q_j)P(o_{t+1},i_{t+1}=q_i|o_1,o_2,\cdots,o_t,i_t=q_j) =j=1NP(o1,o2,,ot,it=qj)P(ot+1,it+1=qio1,o2,,ot,it=qj) = ∑ j = 1 N P ( o 1 , o 2 , ⋯   , o t , i t = q j ) P ( o t + 1 ∣ o 1 , o 2 , ⋯   , o t , i t = q j , i t + 1 = q i ) P ( i t + 1 = q i ∣ o 1 , o 2 , ⋯   , o t , i t = q j ) =\sum_{j=1}^NP(o_1,o_2,\cdots,o_t,i_t=q_j)P(o_{t+1}|o_1,o_2,\cdots,o_t,i_t=q_j,i_{t+1}=q_i)P(i_{t+1}=q_i|o_1,o_2,\cdots,o_t,i_t=q_j) =j=1NP(o1,o2,,ot,it=qj)P(ot+1o1,o2,,ot,it=qj,it+1=qi)P(it+1=qio1,o2,,ot,it=qj) = ∑ j = 1 N P ( o 1 , o 2 , ⋯   , o t , i t = q j ) P ( o t + 1 ∣ i t + 1 = q i ) P ( i t + 1 = q i ∣ i t = q j ) =\sum_{j=1}^NP(o_1,o_2,\cdots,o_t,i_t=q_j)P(o_{t+1}|i_{t+1}=q_i)P(i_{t+1}=q_i|i_t=q_j) =j=1NP(o1,o2,,ot,it=qj)P(ot+1it+1=qi)P(it+1=qiit=qj) = ( ∑ j = 1 N a j i α t ( j ) ) b i ( o t + 1 ) =(\sum_{j=1}^Na_{ji}\alpha_t(j))b_i(o_{t+1}) =(j=1Najiαt(j))bi(ot+1)

    10.2.3 后向算法

         定义10.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},\cdots,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},\cdots,o_T|i_t=q_i,\lambda) βt(i)=P(ot+1,ot+2,,oTit=qi,λ)     算法10.3(观测序列概率的后向算法) 输入:隐马尔可夫模型 λ \lambda λ,观测序列 O O O; 输出:输出:观测序列概率 P ( O ∣ λ ) P(O|\lambda) P(Oλ)。 (1) β T ( i ) = 1 , i = 1 , 2 , ⋯   , N \beta_T(i)=1,i=1,2,\cdots,N βT(i)=1i=1,2,,N (2)对 t = T − 1 , T − 2 , ⋯   , 1 t=T-1,T-2,\cdots,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 \beta_t(i)=\sum_{j=1}^N a_{ij}b_j(o_{t+1})\beta_{t+1}(j),i=1,2,\cdots,N βt(i)=j=1Naijbj(ot+1)βt+1(j)i=1,2,,N (3) P ( O ∣ λ ) = ∑ i = 1 N π i b i ( o 1 ) β 1 ( i ) P(O|\lambda)=\sum_{i=1}^N\pi_ib_i(o_1)\beta_1(i) P(Oλ)=i=1Nπibi(o1)β1(i) 从(2)到(3)的推导过程:???这部分推导存疑 β 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},\cdots,o_T|i_{t}=q_i) βt(i)=P(ot+1,ot+2,,oTit=qi) = ∑ j = 1 N P ( o t + 1 , o t + 2 , ⋯   , o T , i t + 1 = q j ∣ i t = q i ) =\sum_{j=1}^NP(o_{t+1},o_{t+2},\cdots,o_T,i_{t+1}=q_j|i_{t}=q_i) =j=1NP(ot+1,ot+2,,oT,it+1=qjit=qi) = ∑ j = 1 N P ( o t + 2 , ⋯   , o T ∣ i t + 1 = q j , i t = q i , o t + 1 ) P ( o t + 1 , i t + 1 = q j , i t = q i ) =\sum_{j=1}^NP(o_{t+2},\cdots,o_T|i_{t+1}=q_j,i_t=q_i,o_{t+1})P(o_{t+1},i_{t+1}=q_j,i_t=q_i) =j=1NP(ot+2,,oTit+1=qj,it=qi,ot+1)P(ot+1,it+1=qj,it=qi)

        利用前向概率和后向概率的定义可以将观测序列概率 P ( O ∣ λ ) = ∑ i = 1 N ∑ j = 1 N α t ( i ) a i j b j ( o t + 1 ) β t + 1 ( j ) ,    t = 1 , 2 , ⋯   , T − 1 P(O|\lambda)=\sum_{i=1}^N\sum_{j=1}^N \alpha_t(i)a_{ij}b_j(o_{t+1})\beta_{t+1}(j),\ \ t=1,2,\cdots,T-1 P(Oλ)=i=1Nj=1Nαt(i)aijbj(ot+1)βt+1(j),  t=1,2,,T1

    10.2.4 一些概率与期望值的计算

        利用前向概率和后向概率,可以得到关于单个状态和两个状态概率的计算公式。      1. 给定模型 λ \lambda λ和观测 O O O,在时刻 t t t 处于状态 q i q_i qi的概率,记作 γ t ( i ) = P ( i t = q i ∣ λ , O ) = P ( i t = q i , O ∣ λ ) P ( O ∣ λ ) \gamma_t(i)=P(i_t=q_i|\lambda,O)=\frac{P(i_t=q_i,O|\lambda)}{P(O|\lambda)} γt(i)=P(it=qiλ,O)=P(Oλ)P(it=qi,Oλ)通过前向概率 α t ( i ) \alpha_t(i) αt(i)和后向概率 β t ( i ) \beta_t(i) βt(i)的定义: α t ( i ) β t ( i ) = P ( i t = q t , O ∣ λ ) \alpha_t(i)\beta_t(i)=P(i_t=q_t,O|\lambda) αt(i)βt(i)=P(it=qt,Oλ)于是, γ t ( i ) = α t ( i ) β t ( i ) P ( O ∣ λ ) = α t ( i ) β t ( i ) ∑ j = 1 N α t ( j ) β t ( j ) \gamma_t(i)=\frac{\alpha_t(i)\beta_t(i)}{P(O|\lambda)}=\frac{\alpha_t(i)\beta_t(i)}{\sum_{j=1}^N\alpha_t(j)\beta_t(j)} γt(i)=P(Oλ)αt(i)βt(i)=j=1Nαt(j)βt(j)αt(i)βt(i)      2.给定模型 λ \lambda λ和观测 O O O,在时刻 t t t处于状态 q i q_i qi且在时刻 t + 1 t+1 t+1处于状态 q j q_j qj的概率,记作 ξ t ( i , j ) = P ( i t = q i , i t + 1 = q j ∣ O , λ ) \xi_t(i,j)=P(i_t=q_i,i_{t+1}=q_j|O,\lambda) ξt(i,j)=P(it=qi,it+1=qjO,λ)通过前向后向概率计算: ξ t ( i , j ) = P ( i t = q i , i t + 1 = q j , O ∣ λ ) P ( O ∣ λ ) = P ( i t = q i , i t + 1 = q j , O ∣ λ ) ∑ i = 1 N ∑ j = 1 N P ( i t = q i , i t + 1 = q j , O ∣ λ ) \xi_t(i,j)=\frac{P(i_t=q_i,i_{t+1}=q_j,O|\lambda)}{P(O|\lambda)}=\frac{P(i_t=q_i,i_{t+1}=q_j,O|\lambda)}{\sum_{i=1}^N\sum_{j=1}^NP(i_t=q_i,i_{t+1}=q_j,O|\lambda)} ξt(i,j)=P(Oλ)P(it=qi,it+1=qj,Oλ)=i=1Nj=1NP(it=qi,it+1=qj,Oλ)P(it=qi,it+1=qj,Oλ) P ( i t = q i , i t + 1 = q j , O ∣ λ ) = α t ( i ) a i j b j ( o t + 1 ) β t + 1 ( j ) P(i_t=q_i,i_{t+1}=q_j,O|\lambda)=\alpha_t(i)a_{ij}b_j(o_{t+1})\beta_{t+1}(j) P(it=qi,it+1=qj,Oλ)=αt(i)aijbj(ot+1)βt+1(j)所以 ξ t ( i , j ) = α 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 ) \xi_t(i,j)=\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)} ξt(i,j)=i=1Nj=1Nαt(i)aijbj(ot+1)βt+1(j)αt(i)aijbj(ot+1)βt+1(j)      3. 将 γ t ( i ) \gamma_t(i) γt(i) ξ t ( i , j ) \xi_t(i,j) ξt(i,j)对各个时刻 t t t求和,可以得到一些有用的期望值。    (1). 在观测 O O O下状态 I I I出现的期望值: ∑ t = 1 T γ t ( i ) \sum_{t=1}^T\gamma_t(i) t=1Tγt(i)    (2).在观测 O O O下由状态 i i i转移的期望值: ∑ t = 1 T − 1 γ t ( i ) \sum_{t=1}^{T-1}\gamma_t(i) t=1T1γt(i)    (3).在观测 O O O下由状态 i i i转移到状态 j j j的期望值: ∑ t = 1 T − 1 ξ t ( i , j ) \sum_{t=1}^{T-1}\xi_t(i,j) t=1T1ξt(i,j)

    10.3 学习算法

        隐马尔可夫模型的学习,根据训练数据是包括观测序列和对应的状态序列还是只有观测序列,可以分别由监督学习与无监督学习实现。

    10.3.1 监督学习方法

        假设已给的训练数据包括 S S S个长度相同的观测序列和对应的状态序列 { ( O 1 , I 1 ) , ( O 2 , I 2 ) , ⋯   , ( O S , I S ) } \lbrace(O_1,I_1),(O_2,I_2),\cdots,(O_S,I_S)\rbrace {(O1,I1),(O2,I2),,(OS,IS)},那么可以通过极大似然估计法来估计隐马尔可夫模型的参数。     1. 转移概率 a i j a_{ij} aij的估计

        2.观测概率 b j ( k ) b_j(k) bj(k)的估计

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

    10.3.2 Baum-Welch算法

        假设给定的数据集仅包含 S S S个长度为 T T T的观测序列 { O 1 , O 2 , ⋯   , O S } \lbrace O_1,O_2,\cdots,O_S\rbrace {O1,O2,,OS}而没有对应的状态序列,目标是学习隐马尔可夫模型 λ = ( A , B , π ) \lambda=(A,B,\pi) λ=(A,B,π)的参数。将观测序列数据作为观测数据 O O O,状态序列数据看作不可观测的隐数据 I I I,隐马尔可夫模型是一个含有隐变量的概率模型,符合使用EM算法的条件。 P ( O ∣ λ ) = ∑ I P ( O ∣ I , λ ) P ( I ∣ λ ) P(O|\lambda)=\sum_IP(O|I,\lambda)P(I|\lambda) P(Oλ)=IP(OI,λ)P(Iλ)     1. 确定完全数据的对数似然函数     所有观测数据写成 O = ( o 1 , o 2 , ⋯   , o T ) O=(o_1,o_2,\cdots,o_T) O=(o1,o2,,oT),所有隐数据写成 I = ( i 1 , i 2 , ⋯   , i T ) I=(i_1,i_2,\cdots,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,\cdots,o_T,i_1,i_2,\cdots,i_T) (O,I)=(o1,o2,,oT,i1,i2,,iT)。完全数据的对数似然函数是 l o g P ( O , I ∣ λ ) logP(O,I|\lambda) logP(O,Iλ).     2. EM算法的E步骤,求Q函数 Q ( λ , λ ‾ ) Q(\lambda,\overline\lambda) Q(λ,λ) Q ( λ , λ ‾ ) = ∑ I l o g P ( I , O ∣ λ ) P ( I ∣ O , λ ‾ ) = ∑ I l o g P ( I , O ∣ λ ) P ( I , O ∣ λ ‾ ) P ( O ∣ λ ‾ ) Q(\lambda,\overline\lambda)=\sum_IlogP(I,O|\lambda)P(I|O,\overline\lambda)=\sum_IlogP(I,O|\lambda)\frac{P(I,O|\overline\lambda)}{P(O|\overline\lambda)} Q(λ,λ)=IlogP(I,Oλ)P(IO,λ)=IlogP(I,Oλ)P(Oλ)P(I,Oλ)省略对 λ \lambda λ而言是常数项的 1 P ( O ∣ λ ‾ ) \frac{1}{P(O|\overline\lambda)} P(Oλ)1,最终的 Q Q Q函数为 Q ( λ , λ ‾ ) = ∑ I l o g P ( I , O ∣ λ ) P ( I , O ∣ λ ‾ ) Q(\lambda,\overline\lambda)=\sum_IlogP(I,O|\lambda)P(I,O|\overline\lambda) Q(λ,λ)=IlogP(I,Oλ)P(I,Oλ)其中, λ ‾ \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 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)\cdots a_{i_{T-1}i_T}b_{i_T}(o_T) P(O,Iλ)=πi1bi1(o1)ai1i2bi2(o2)aiT1iTbiT(oT)

    最新回复(0)