隐马尔科夫模型(HMM)

HMM是生成模型,根据HMM,可以计算 P(O,I) 的联合概率,其中 O 是观测序列, I 是隐藏序列。HMM中三个典型问题:1.概率计算问题 2.模型参数估计问题 3.预测问题

首先,隐马尔科夫模型里有两条假设:

  1. 假设一:
    隐藏的马尔科夫链在任意时刻 t 的状态只依赖前一时刻的状态

  2. 假设二:
    任意时刻的观测只依赖于该时刻的隐状态

由此,引出隐马尔科夫模型的三个重要参数: π,A,B

  • π 是初始状态概率向量, πi=P(i1=qi) 是t=1时刻,隐状态为 qi 的概率。

  • A 是状态转移概率矩阵,假设状态数是 N ,那么 A N×N 的矩阵,其中 aij=P(it=qj|it1=qi) 表示时刻t-1的状态为 qi 的条件下,时刻t的状态为 qj 的概率。

  • B 是观测概率矩阵,假设观测数是 M ,那么 B N×M 的矩阵,其中 bj(k)=P(ot=vk|it=qj) 表示时刻t为状态 qj 的条件下,生成观测 vk 的概率。

隐马尔科夫模型由初始概率矩阵 π 、状态转移概率矩阵 A 和观测概率矩阵 B 决定。 π A 决定状态序列, B 决定观测序列。 π,A,B 称为隐马尔科夫模型的三要素。


隐马尔科夫模型的三个基本问题

  1. 概率计算问题。给定模型参数 λ=(π,A,B) 和观测序列 O=(o1,o2,...,oT) ,计算 P(O|λ)

    扫描二维码关注公众号,回复: 813347 查看本文章
  2. 学习问题。已知观测序列 O=(o1,o2,...,oT) ,求解模型参数 λ=(π,A,B) 使得在该模型参数下, P(O|λ) 最大

  3. 预测问题。给定模型参数 λ=(π,A,B) 和观测序列 O=(o1,o2,...,oT) ,求解使得 P(I|O) 最大的状态序列 I=(i1,i2,...,iT)


问题1:概率计算问题
用前向算法或者后向算法求解。

  • 前向算法
    定义前向概率, αit=P(o1,o2,...,ot,it=qi) 。可以通过递推法求解观测序列概率 P(O|λ)
    观测序列概率计算的前向算法步骤如下:
    输入:隐马尔科夫模型 λ ,观测序列 O
    输出:观测序列概率 P(O|λ)
    step1: 初始化前向概率
    αi1=πibi(o1) , i=1,2,…,N
    step2:递推求解各个时刻的 αit
    αit=j=Nj=1αjt1ajibi(ot) t=2,3,...,Ti=1,2,...,N
    step3:求得目标观测序列概率 P(O|λ)
    P(O|λ)=iαiT

在step2递推过程中,可以理解为, t 时刻的状态 i 可以由前面时刻任意状态转换而来。

  • 后向算法
    定义后向概率, βit=P(ot+1,ot+2,...,oT|it=qi) 。可以通过递推法求解观测序列概率 P(O|λ)
    观测序列概率计算的后向算法步骤如下:
    输入:隐马尔科夫模型 λ ,观测序列 O
    输出:观测序列概率 P(O|λ)
    step1:初始化后向概率
    βiT=1,i=1,2,...,N
    step2:递推求解各个时刻的 βit
    βit=jβjt+1aijbj(ot+1) t=T1,T2,...,1i=1,2,...,N
    step3:求得目标观测序列概率 P(O|λ)
    P(O|λ)=jπjβj1bj(o1)

条件概率意味着给定某某,求其他的概率。当反向递推时,只要意识到给定状态 i ,可以由它转移到任意概率 j 即可。


我们先讲解问题三:预测问题
给定模型参数 λ=(π,A,B) 和观测序列 O=(o1,o2,...,oT) ,求解使得 P(I|O) 最大的状态序列 I=(i1,i2,...,iT)
用维特比算法求解。
维特比算法是用动态规划思想来求解隐马尔科夫模型预测问题的。我们需要求解使得 P(I|O) 最大的状态序列 I=(i1,i2,...,iT) ,那么从初始时刻到任意时刻,其对应的状态序列和观测序列的联合概率必须是最大的。
简单来说,我们想找到从A到B的最长路径,途径C。如果A到B的最长路径是 l ,那么 lAC 一定是从A到C最长的路径,否则我们可以用更长的 lAC 来代替,那么此时和 l 是最长路径矛盾了。因此我们知道对于部分路径,它必须是最长的。根据这一原理,我们可以递推地求解。

定义: γit=maxP(i1,i2,...,it=qi,o1,o2,...,ot)
可以递推
γit+1=max1jNγjtajibi(ot+1)
定义 t 时刻状态为 i 单个路径概率最大的前一个节点是
pathit=argmax1jNγjt1aji

维特比算法具体步骤:
输入:隐马尔科夫模型 λ ,观测序列 O
输出:最优路径 I
step1:初始化
γi1=πibi(o1) , i=1,2,...,N
pathi1=0 , i=1,2,...,N
step2:递推
γit=max1jNγjt1ajibi(ot) , i=1,2,...,N
pathit=argmax1jNγjt1aji
step3:
P=maxiγiT
iT=argmaxiγiT
step4:最优路径回溯: t=T1,T2,...,1
it=pathit+1t+1


问题2:学习算法
已知观测序列 O=(o1,o2,...,oT) ,求解模型参数 λ=(π,A,B) 使得在该模型参数下, P(O|λ) 最大

  • 监督学习算法
    这里写图片描述

  • 非监督学习算法—-Baum-Welch算法(EM算法)
    第一步:确定完全数据的对数似然函数
    这里写图片描述
    第二步:E步,写出Q函数
    我们写出Q函数之后后面就要对它进行极大化,也就是说EM算法的M步骤。既然是最大化,那么只要保证不影响最终的结果,对Q函数进行对于最大化来说没有影响的常数因子乘除是可以的。为什么要这么做呢?这是为了后面将概率计算问题中有意义的一些概率计算公式直接套进去。
    这里写图片描述
    step3:M步,极大化Q函数
    这里写图片描述
    这里写图片描述
    这里写图片描述
    这里写图片描述

这里写图片描述

这里写图片描述
这里写图片描述

猜你喜欢

转载自blog.csdn.net/yqmind/article/details/78901446