HMM算法详解(内含推导)

本文详细介绍了隐马尔科夫模型(HMM)的结构、参数及其在解决推断和参数估计问题上的应用。通过实例解释了HMM中的观测值与隐含状态的关系,并阐述了维特比算法、向前向后算法和EM算法在HMM中的作用,以及如何通过这些算法估计模型参数π、B和A。
摘要由CSDN通过智能技术生成


时序模型大致上分为(ML)版本和(DL)版本

ML:HMM和GRF

DL:RNN/LSTM

今天就讲解一下隐马尔科夫模型HMM算法

HMM结构

在这里插入图片描述
由上图可知观测值(x)和隐含状态(z)在这里举个例子说明 x x x z z z的关系
例子:假设现在有两枚硬币{A,B}分别有正反两面,这时有两个人:“小明”和”小华”现在将两个人隔开,“小明负责扔硬币”,“小华负责观察硬币的正反面”。但是小华是看不到小明是扔的A还是B,这里的可以观测到的正反面相当于HMM算法中的 x x x,扔的A或者B相当于状态 z z z,这也就是说由状态生成观测值,那么问题来了:

1、假设t时刻小华看到了小明扔的是正面,那么能不能确定这枚硬币是A还是B呢?(inference问题)

2、 t t t时刻小明扔了A硬币,那么 t + 1 t+1 t+1时刻小明会扔A还是B? t t t A硬币出现正反的概率是多少(参数估计问题)

3、能不能计算 p 正 , 反 , 正 , 正 , 饭 p{正,反,正,正,饭} p

假设我们计算词性标注的问题:

这里的词性就相当于单词的隐含状态 z z z,单词就相当于可观测值 x x x

那么问题1就是:句子中每个单词对应的词性是什么(动词,名词,代词)?

问题2:词性之间的转移关系是什么,每个词性输出的词之间有什么关系?

问题3:给定一组单词,判断它出现的概率

语音识别问题:

可观测值 x x x是一段长的波形,隐含状态 z z z是对应文字

问题1:每段波形对应的文字是什么?

问题2:文字与文字之间的转移关系是什么,文字与的波形之间的关系

问题3:给定一段语音波形,判断它出现的概率

这就是HMM最典型的三个问题,也就是说我们在做nlp任务时,像:词性标注,命名实体识别等等这些任务时,我们的可观测值一般是我们的输入,像句子,文章,音波等,我们的状态一般就是我们的目标:词性,实体,音波对应的文字

HMM参数

那么HMM的就是计算 z 1 z_1 z1 z 2 z_2 z2之间的关系, z z z x x x之间的关系,这两个关系也就是HMM的参数我们设置为 A A A B B B

那么 A A A是一个矩阵,如下图,每一行都对应一个状态 z z z其中的值表示下一状态出现的概率,例如下图这一行表示 z i z_i zi,第一个值表示下一个状态出现 z 1 z_1 z1的概率为 0.02 0.02 0.02,第二个值表示下一个状态出现 z 2 z_2 z2的概率为 0.03 。 0.03。 0.03因此我们称 A A A为:状态转移矩阵
在这里插入图片描述
B B B也是一个矩阵,也就是表示 z z z状态下生成 x x x的概率,如下图:
在这里插入图片描述
如上图,每一行都对应一个状态 z z z其中的值表示出现 x x x的概率,例如下图这一行表示 z i z_i zi,第一个值表示在状态 z i z_i zi下出现 x 1 x_1 x1的概率为 0.12 0.12 0.12,第二个值表示出现 x 2 x_2 x2的概率为$0.05.

在HMM中我们还设置了一个参数 π \pi π,是一个向量用来表示状态 z i z_i zi成为第一个状态的概率: π = { 0.02 , 0.05 , 0.06 , . . . , 0.08 } \pi=\{0.02,0.05,0.06,...,0.08\} π={ 0.02,0.05,0.06,...,0.08}: z 1 z_1 z1成为第一个状态的概率为(0.02),: z 2 z_2 z2成为第一个状态的概率为(0.05)以此类推。

所以在HMM中有三个参数 A , B , π A,B,\pi A,B,π

解决inference问题

给定模型找到最优的状态 z z z,给定模型也就是我们的参数 A , B , π A,B,\pi A,B,π已经训练好了,我们直接利用可观测值 x x x来进行反推状态 z z z现在有两种方法:

暴力求解

暴力求解:将所有可能性一一列出来,找到那个最优的解

计算过程:

x 1 , x 2 , x 3 , x 4 . . . x m x_1,x_2,x_3,x_4...x_m x1x2x3x4...xm对应的状态 z z z

一共n种状态

1、列出可能发生的所有状态序列:

在这里插入图片描述
一共n种状态,计算m个观测值x对应的 z z z,则一共有 n m n^m nm个序列

2、对每个序列利用A计算状态转移的概率

例如: p ( z 1 ) ⋅ p ( z 1 ∣ z 2 ) ⋅ p ( z 3 ∣ z 2 ) ⋅ p ( z 4 ∣ z 3 ) ⋅ . . . . p(z_1)\cdot p(z_1|z_2)\cdot p(z_3|z_2)\cdot p(z_4|z_3)\cdot.... p(z1)p(z1z2)p(z3z2)p(z4z3)....

3、再利用B计算每个状态生成对应 x x x的概率

例如: p ( x 1 ∣ z 1 ) ⋅ p ( x 2 ∣ z 2 ) ⋅ p ( x 3 ∣ z 3 ) ⋅ p ( x 4 ∣ z 4 ) ⋅ . . . . p(x_1|z_1)\cdot p(x_2|z_2)\cdot p(x_3|z_3)\cdot p(x_4|z_4)\cdot.... p(x1z1)p(x2z2)p(x3z3)p(x4z4)....

4、找到结果最大的那个序列

优点:
一定可以找到全局最优解

缺点:
很明显,计算量太大

维特比算法求解

对于1对1的转移关系的计算,维特比的计算方法还是比较好用的,维特比算法是典型的动态规划思想,如图
在这里插入图片描述
如上图在计算 x k + 1 x_{k+1} xk+1对应的 z z z时,要分计算: p ( z j + 1 ∣ z 2 ) ⋅ p ( x k + 1 ∣ z j + 1 ) p( z_{j+1}|z_2)\cdot p( x_{k+1}|z_{j+1}) p(zj+1z2)p(xk+1zj+1)

但是我们要求的是最优解

在这里我们假设 ϕ k ( i ) \phi_k(i) ϕk(i)表示 x k x_{k} xk时选择 z i z_i zi的最优的路径。例如 ϕ k ( 1 ) \phi_k(1) ϕk(1)指的是在 x k x_{k} xk时选择 z 1 z_1 z1最优的最优路径。那么 ϕ k + 1 ( i ) \phi_{k+1}(i) ϕk+1(i)的计算方式是就是在 x k + 1 x_{k+1} xk+1时选择时 z i z_i zi最好的路径:

ϕ k + 1 ( i ) = m a x   { ϕ k ( 1 ) ⋅ p ( z i ∣ z 1 ) ⋅ p ( x k + 1 ∣ z i ) ϕ k ( 2 ) ⋅ p ( z i ∣ z 2 ) ⋅ p ( x k + 1 ∣ z i ) ϕ k ( 3 ) ⋅ p ( z i ∣ z 3 ) ⋅ p ( x k + 1 ∣ z i ) ϕ k ( 4 ) ⋅ p ( z i ∣ z 4 ) ⋅ p ( x k + 1 ∣ z i ) ϕ k ( 5 ) ⋅ p ( z i ∣ z i ) ⋅ p ( x k + 1 ∣ z 5 ) . . . . \phi_{k+1}(i)=max\ \begin{cases}\phi_{k}(1)\cdot p( z_i|z_{1})\cdot p( x_{k+1}|z_{i})\\ \phi_{k}(2)\cdot p( z_i|z_{2})\cdot p( x_{k+1}|z_{i})\\ \phi_{k}(3)\cdot p( z_i|z_{3})\cdot p( x_{k+1}|z_{i})\\\phi_{k}(4)\cdot p( z_i|z_{4})\cdot p( x_{k+1}|z_{i})\\\phi_{k}(5)\cdot p( z_i|z_{i})\cdot p( x_{k+1}|z_{5})\\....\end{cases} ϕk+1(i)=max ϕk(1)p(ziz1)p(xk+1zi)ϕk(2)p(ziz2)p(xk+1zi)ϕk(3)p(ziz3)p(xk+1zi)ϕk(4)p(ziz4)p(xk+1z

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值