HMM(1)

1.HMM介绍
   隐马尔可夫模型(HMM,Hidden Markov Model)可用于标注问题,在语音识别,NLP,生物信息,模式识别领域被证明是有效的算法。
    HMM是关于时序的概率模型,描述由一个隐藏的马尔可夫链生成不可观测的状态随机序列,再由各个状态生成观测随机序列的过程。
    隐马尔可夫模型随机生成的状态随机序列,称为状态序列;每个状态生成一个观测,由此生成的观测随机序列,称为观测序列,序列的每个位置可看作是一个时刻。图如下:
在这里插入图片描述
2.HMM的确定
   (1)HMM由初始概率分布 π \pi π,状态转移概率分布A以及观测概率分布B确定。
λ = ( A , B , π ) \lambda=(A, B, \pi) λ=(A,B,π)
   (2)HMM的参数
     Q是所有状态的集合,N是可能的状态数;
Q = { q 1 , q 2 , … q N } Q=\left\{q_{1}, q_{2}, \ldots q_{N}\right\} Q={q1,q2,qN}     V是所有可能的观测的集合,M是可能的观测数:
V = { v 1 , v 2 , … v M } V=\left\{v_{1}, v_{2}, \dots v_{M}\right\} V={v1,v2,vM}
     I是长度为T的状态序列,O是对应的观测序列:
I = { i 1 , i 2 , … i T } O = { o 1 , o 2 , … o T } I=\left\{i_{1}, i_{2}, \ldots i_{T}\right\} \quad O=\left\{o_{1}, o_{2}, \ldots o_{T}\right\} I={i1,i2,iT}O={o1,o2,oT}
     A是状态转移概率矩阵:
A = [ a i j ] N × N A=\left[a_{i j}\right]_{N \times N} A=[aij]N×N
        其中 a i j = P ( i t + 1 = q j ∣ i t = q i ) a_{i j}=P\left(i_{t+1}=q_{j} | i_{t}=q_{i}\right) aij=P(it+1=qjit=qi), a i j a_{i j} aij是在时刻t处于状态 q i q_{i} qi的条件下
     时刻t+1转移到状态 q j q_{j} qj的概率。
     B是观测概率转移矩阵:
B = [ b i k ] N × M B=\left[b_{i k}\right]_{N \times M} B=[bik]N×M
        其中, b i k = P ( o t = v k ∣ i t = q i ) b_{i k}=P\left(o_{t}=v_{k} | i_{t}=q_{i}\right) bik=P(ot=vkit=qi) b i k b_{i k} bik表示在时刻t处于状态 q i q_{i} qi条件
     下生成观测 v k v_k vk的概率。
      π \pi π是初始状态转移向量:
π = ( π i ) \pi=\left(\pi_{i}\right) π=(πi)
        其中, π i = P ( i 1 = q i ) \pi_{i}=P\left(i_{1}=q_{i}\right) πi=P(i1=qi), π i \pi_{i} πi是时刻t=1处于状态 q i q_i qi的概率。
   (3)HMM的参数总结
     HMM由初始概率分布 π \pi π(向量),状态转移概率分布A(矩阵)以及观测概率
    分布B(矩阵)确定, π \pi π和A决定状态序列,B决定观测序列。因此,HMM可以
    用三元符号表示,称为HMM三要素:
λ = ( A , B , π ) \lambda=(A, B, \pi) λ=(A,B,π)
3.HMM两个基本性质
   (1)齐次假设:
P ( i t ∣ i t − 1 , O t − 1 , i t − 2 , O t − 2 ⋯ i 1 , O 1 ) = P ( i t ∣ i t − 1 ) P\left(i_{t} | i_{t-1}, O_{t-1}, i_{t-2}, O_{t-2} \cdots i_{1}, O_{1}\right)=P\left(i_{t} | i_{t-1}\right) P(itit1,Ot1,it2,Ot2i1,O1)=P(itit1)
   (2)观测独立性假设:
P ( o t ∣ i T , o T , i T − 1 , o T − 1 ⋯ i 1 , o 1 ) = P ( o t ∣ i t ) P\left(o_{t} | i_{T}, o_{T}, i_{T-1}, o_{T-1} \cdots i_{1}, o_{1}\right)=P\left(o_{t} | i_{t}\right) P(otiT,oT,iT1,oT1i1,o1)=P(otit)
4.HMM举例:
   假设有3个盒子,编号为1,2,3,每个盒子都装有红白两种颜色的小球,数目如下:
在这里插入图片描述
   按照下面的方法抽取小球,得到球颜色的观测序列:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
4.HMM的三个基本问题
   (1)概率计算问题:前向-后向算法
    给定模型 λ = ( A , B , π ) \lambda=(A, B, \pi) λ=(A,B,π)和观测序列 O = { θ 1 , o 2 , … o T } O=\left\{\theta_{1}, o_{2}, \ldots o_{T}\right\} O={θ1,o2,oT},计算模型 λ \lambda λ下观测序列O出现的概率 P ( O ∣ λ ) \mathrm{P}(\mathrm{O} | \lambda) P(Oλ)
   (2)学习问题:Baum-Welch算法(状态未知)
    已知观测序列 O = { o 1 , o 2 , … o T } O=\left\{o_{1}, o_{2}, \dots o_{T}\right\} O={o1,o2,oT},估计模型 λ = ( A , B , π ) \lambda=(A, B, \pi) λ=(A,B,π)的参数,使得在该模型下观测序列 P ( O ∣ λ ) P(O | \lambda) P(Oλ)最大;
   (3)预测问题:Viterbi算法
    解码问题:已知模型 λ = ( A , B , π ) \lambda=(A, B, \pi) λ=(A,B,π)和观测序列 O = { o 1 , o 2 , … o T } O=\left\{o_{1}, o_{2}, \ldots o_{T}\right\} O={o1,o2,oT},求在给定观测序列条件概率 P ( I ∣ O , λ ) \mathrm{P}(\mathrm{I} | \mathrm{O}, \lambda) P(IO,λ)最大的状态序列I。
5.概率计算问题:
   (1)直接计算:
    按照概率公式,列举所有可能的长度为T的状态序列 I = { i 1 , i 2 , … i T } I=\left\{i_{1}, i_{2}, \ldots i_{T}\right\} I={i1,i2,iT},求各个状态序列 I I I与观测序列的 O = { o 1 , o 2 , … o T } O=\left\{o_{1}, o_{2}, \ldots o_{T}\right\} O={o1,o2,oT}的联合概率分布 P ( O , I ∣ λ ) \mathrm{P}(\mathrm{O}, \mathrm{I} | \lambda) P(O,Iλ),然后对所有可能的状态序列求和,从而得到 P ( O ∣ λ ) \mathrm{P}(\mathrm{O} | \lambda) P(Oλ)
    状态序列 I = { i 1 , i 2 , … i T } I=\left\{i_{1}, i_{2}, \ldots i_{T}\right\} I={i1,i2,iT}出现的概率是:
P ( I ∣ λ ) = π i 1 a i , i 2 a i 2 i 3 ⋯ a i 1 − 1 i 2 P(I | \lambda)=\pi_{i_{1}} a_{i, i_{2}} a_{i_{2} i_{3}} \cdots a_{i_{1-1} i_{2}} P(Iλ)=πi1ai,i2ai2i3ai11i2
    对固定状态序列 I I I,观测序列 O O O的概率是:
P ( O ∣ I , λ ) = b i σ 1 b i 2 o 2 ⋯ b i 1 o T P(O | I, \lambda)=b_{i \sigma_{1}} b_{i_{2} o_{2}} \cdots b_{i_{1} o_{T}} P(OI,λ)=biσ1bi2o2bi1oT
     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 T − 1 i T b i T o T P(O, I | \lambda)=P(O | I, \lambda) P(I | \lambda)=\pi_{i_{1}} b_{i_{1} o_{1}} a_{i_{1}i_2} b_{i_{2},o_{2}} \cdots a_{i_{T-1}i_{T}} b_{i_{T} o_{T}} P(O,Iλ)=P(OI,λ)P(Iλ)=πi1bi1o1ai1i2bi2,o2aiT1iTbiToT
    对所有可能的序列I求和,得到观测序列 O O O的概率
P ( O ∣ λ ) = ∑ I P ( O , I ∣ λ ) = ∑ I P ( O ∣ I , λ ) P ( I ∣ λ ) P(O | \lambda)=\sum_{I} P(O, I | \lambda)=\sum_{I} P(O | I, \lambda) P(I | \lambda) P(Oλ)=IP(O,Iλ)=IP(OI,λ)P(Iλ)
= ∑ i 1 , i 2 , ⋯   , i T π i 1 b i 1 , α 1 a i 1 i 2 b i 2 o 2 ⋯ a i 1 − 1 i 2 b i 1 o T =\sum_{i_{1}, i_{2}, \cdots, i_{T}} \pi_{i_{1}} b_{i_{1}, \alpha_{1}} a_{i_{1} i_{2}} b_{i_{2} o_{2}} \cdots a_{i_{1-1} i_{2}} b_{i_{1} o_{T}} =i1,i2,,iTπi1bi1,α1ai1i2bi2o2ai11i2bi1oT
    分析:加和符号中有 2 T 2T 2T个因子, I I I的遍历个数为 N T N^{T} NT,因此,时间复杂度为 O ( T N T ) \mathrm{O}\left(\mathrm{T} \mathrm{N}^{\mathrm{T}}\right) O(TNT),复杂度过高。
   (2)前向算法:
    定义概率-前向概率和后向概率
在这里插入图片描述
    给定 λ \lambda λ,定义到时刻 t t t部分观测序列是 o 1 , o 2 … o t o1,o2 \ldots o t o1,o2ot且状态为 q 1 \mathrm{q} 1 q1的概率称为前向概率,记作:
α t ( i ) = P ( o 1 , o 2 , ⋯ o t , i t = q i ∣ λ ) \alpha_{t}(i)=P\left(o_{1}, o_{2}, \cdots o_{t}, i_{t}=q_{i} | \lambda\right) αt(i)=P(o1,o2,ot,it=qiλ)
    初值: α 1 ( i ) = π i b i 0 \alpha_{1}(i)=\pi_{i} b_{i 0} α1(i)=πibi0
    递推:对于 t = 1 , 2 … T − 1 \mathrm{t}=1,2 \ldots \mathrm{T}-1 t=1,2T1
α t + 1 ( i ) = ( ∑ j = 1 N α t ( j ) a j i ) b i o t + 1 \alpha_{t+1}(i)=\left(\sum_{j=1}^{N} \alpha_{t}(j) a_{j i}\right) b_{i o_{t+1}} αt+1(i)=(j=1Nαt(j)aji)biot+1
    最终:
P ( O ∣ λ ) = ∑ i = 1 N α T ( i ) P(O | \lambda)=\sum_{i=1}^{N} \alpha_{T}(i) P(Oλ)=i=1NαT(i)
    举例:盒子球模型
    考察盒子球模型,计算观测向量O="红白红"出现的概率,参数如下:
在这里插入图片描述
    计算初值:
在这里插入图片描述
   (3)后向算法:
    初值:
β T ( i ) = 1 \beta_{T}(i)=1 βT(i)=1
    递推:对于 t = T − 1 , T − 2 … . 1 t=T-1, T-2 \ldots .1 t=T1,T2.1
β t ( i ) = ∑ j = 1 N ( a i j b j t + 1 β t + 1 ( j ) ) \beta_{t}(i)=\sum_{j=1}^{N}\left(a_{i j} b_{j_{t+1}} \beta_{t+1}(j)\right) βt(i)=j=1N(aijbjt+1βt+1(j))
    最终:
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πibio1β1(i)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值