马尔可夫链与隐马尔可夫模型


前言

最近学习语音信号处理的课程,涉及到隐马尔可夫模型。之前学习过马尔可夫模型的知识,但是涉及的不多,理解也不深。这次趁着这次学习机会,整理了一下对马尔可夫模型的理解。本文主要侧重定性理解,轻公式推导。


一、马尔可夫链

马尔可夫链,因安德烈•马尔可夫(A.A.Markov)得名,是指具有马尔可夫性质的离散时间随机过程。马尔可夫性质是指,下一个状态只与当前状态有关,而与之前的状态无关。
下面举一个例子。
假设小明假期第二天晚饭吃什么只跟前一天晚饭吃什么有关,具体的有关关系如下:(其中首列表示前一天吃什么,首行表示第二天吃什么)

白菜(2)玉米(2)辣椒(2)
白菜(1)0.20.40.4
玉米(1)0.30.20.5
辣椒 (1)0.50.350.15

比如,小明前一天吃了白菜,第二天相换换口味,再吃白菜的概率就比较小,只有0.2(1,1),想吃玉米和辣椒的概率分别为0.4(1,2),0.4(1,3);而若小明第一天吃的辣椒,可能太辣了,第二天再吃辣椒的概率会更小,只有0.15(3,3)。
对于小明每天吃的什么,我们就称之为状态。以上表格所列的小明每天吃的东西之间的关系,写成矩阵形式,就称为状态转移矩阵
对于小明的假期第一天,假如他的喜好比较平均,他吃什么的概率都是差不多的,假设吃白菜玉米和辣椒的概率分别为:

0.330.330.34

称该向量为初始概率分布
则由初始概率分布和概率转移矩阵,就可以推断出整个假期小明每天吃什么的概率了。
以上的例子中,“小明每天吃什么”这个随机过程,就遵循马尔可夫模型。

二、隐马尔可夫模型

1. 参数说明

对于上面的例子,假如现在我们不知道小明每天吃的什么了,只知道小明每天吃的口味是甜的或者是辣的。但我们知道口味和吃什么东西之间的关系,这个关系如下:(首行表示当天吃的口味,首列表示当天吃的东西是什么)

甜的辣的
白菜10
玉米10
辣椒0.050.95

比如,如果小明当天吃了白菜,那么有1的概率他吃的口味是甜的;如果当天吃的是辣椒,那么有0.95的概率他吃的是辣的,一次类推……
以上我们观测到的口味和吃什么东西之间的关系,写成矩阵形式,就称为观测概率矩阵,也称为发射矩阵。
上述的例子中,“小明每天吃什么”遵循马尔可夫模型,但是“小明每天吃什么”这个状态对于我们来说是不可观测的,也就是我们不能直接知道。而我们可以知道的(可以观测的)是小明每天吃的口味是辣的还是甜的。而我们可以观测到的口味和实际状态之间存在对应关系(观测概率矩阵)。这就是隐马尔可夫模型(HMM)。
综上所述,隐马尔可夫模型有三个关键参数:状态转移矩阵A,观测概率矩阵B,初始概率分布 π \pi π
可以表示为:
A = [ a i j ] N × N A = [a_{ij}]_{N \times N} A=[aij]N×N
B = [ b i j ] N × M B = [b_{ij}]_{N \times M} B=[bij]N×M
π = [ π i ] N \pi =[\pi _i]_N π=[πi]N
其中,N表示隐变量的状态数量,也就是隐藏的状态数量。M表示观测变量的取值数量。
设状态为Z,其取值为 k i k_i ki;设观测变量为X,其取值为 u i u_i ui,则:
a i j = P ( z t + 1 = k j ∣ z t = k i ) a_{ij}= P(z_{t+1}=k_j|z_t=k_i) aij=P(zt+1=kjzt=ki)
b i j = P ( x t = u j ∣ z t = k i ) b_{ij}= P(x_{t}=u_j|z_t=k_i) bij=P(xt=ujzt=ki)
π i = P ( z 1 = k i ) \pi_i = P(z_1=k_i) πi=P(z1=ki)

在我们上面的例子中,“隐藏的状态”指小明每天吃什么,这个状态有三个,所以N=3;观测变量为小明的口味,有两种,所以M=2;所以上面所述的例子中:
A = 0.2 0.4 0.4 0.3 0.2 0.5 0.5 0.35 0.15 A = \begin{matrix} 0.2 &0.4 &0.4\\ 0.3&0.2&0.5\\ 0.5&0.35&0.15 \end{matrix} A=0.20.30.50.40.20.350.40.50.15
B = 1 0 1 0 0.05 0.95 B = \begin{matrix} 1 &0 \\ 1&0\\ 0.05&0.95 \end{matrix} B=110.05000.95
π = 0.33 0.33 0.34 \pi = \begin{matrix} 0.33 &0.33&0.34 \end{matrix} π=0.330.330.34

2. 三个基本问题

用参数 λ = ( π , A , B ) \lambda = (\pi , A, B) λ=(π,A,B)来表示隐马尔可夫模型。
设状态序列为 Z = ( z 1 , z 2 , . . . , z T ) Z = (z_1,z_2,...,z_T) Z=(z1,z2,...,zT)
设观测序列为 X = ( x 1 , x 2 , . . . , x T ) X = (x_1,x_2,...,x_T) X=(x1,x2,...,xT)
HMM的基本问题可以分为三种:

1.评估问题(概率计算问题)

给定参数 λ = ( π , A , B ) \lambda = (\pi , A, B) λ=(π,A,B),观测序列 X = ( x 1 , x 2 , . . . , x T ) X = (x_1,x_2,...,x_T) X=(x1,x2,...,xT),计算观测序列 X X X的条件概率 P ( X ∣ λ ) P(X|\lambda) P(Xλ)。可以将此问题视为给定模型与给定观测序列之间的匹配程度。
计算该概率可以通过前向——后向算法求解(Forward-Backward)。

2.解码问题

给定参数 λ = ( π , A , B ) \lambda = (\pi , A, B) λ=(π,A,B),观测序列 X = ( x 1 , x 2 , . . . , x T ) X = (x_1,x_2,...,x_T) X=(x1,x2,...,xT),求可能性最大的状态序列 Z = ( z 1 , z 2 , . . . , z T ) Z = (z_1,z_2,...,z_T) Z=(z1,z2,...,zT)。解码问题对应语音信号处理中的语音识别任务。
计算该序列可以用维特比算法求解。

3.学习问题(参数估计问题)

给定观测序列 X X X,反推参数 λ = ( π , A , B ) \lambda = (\pi , A, B) λ=(π,A,B),使得 P ( X ∣ λ ) P(X|\lambda) P(Xλ)最大。


总结

过些天再补充记录一下。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值