通过实例学习理解HMM建模

例子1-什么是马尔科夫过程

Markov process-马尔科夫过程

这个定义来自于【2】的翻译,一个马尔科夫过程被定义为一个随机过程,这个随机过程的当前状态出现的概率,只依赖于前一个状态(State),而与更早的状态无关。上述概念广义上也被称为一阶马尔科夫过程,顾名思义,广义上也有二阶和高阶的。另外从定义来看整个马尔科夫过程研究的核心就是状态(State),即状态的出现概率,和不同状态的转移概率。

Observable-State Markov Process-显式马尔科夫过程

还是来自【2】的例子,利用容器来比喻两个状态
在这里插入图片描述
这两个状态抽象的转移概率定义如下:
在这里插入图片描述
对上面的转换概率理解如下:假设前一个时刻是 m − 1 m-1 m1,当前时刻为 m m m,状态 S 1 S1 S1的自旋概率 p ( s 1 , m ∣ s 1 , m − 1 ) = 0.8 p(s_{1,m}|s_{1,m-1})=0.8 p(s1,ms1,m1)=0.8,状态 S 1 S1 S1切换到状态 S 2 S2 S2的概率 p ( s 2 , m ∣ s 1 , m − 1 ) = 0.2 p(s_{2,m}|s_{1,m-1})=0.2 p(s2,ms1,m1)=0.2,状态 S 1 S1 S1的转换概率之和是 1 1 1。同理状态 S 2 S2 S2的自旋概率 p ( s 2 , m ∣ s 2 , m − 1 ) = 0.6 p(s_{2,m}|s_{2,m-1})=0.6 p(s2,ms2,m1)=0.6,状态 S 2 S2 S2切换到状态 S 1 S1 S1的概率 p ( s 1 , m ∣ s 2 , m − 1 ) = 0.2 p(s_{1,m}|s_{2,m-1})=0.2 p(s1,ms2,m1)=0.2,状态 S 2 S2 S2的转换概率之和是 1 1 1。再回到前图中黑白球出现的顺序(包括即将掉出来的白球)为: 黑 − 黑 白 黑 白 黑 白 黑 黑 白 白 黑 白 黑 − 白 黑-黑白黑白黑白黑黑白白黑白黑-白 。第一个‘-’前的黑表示开始状态是从 S 1 S1 S1开始的,那么在一阶马尔科夫的假设前提下,两两转换事件不相关,所以可以认为是独立分布,利用联合概率分布的常识,这串颜色黑白球出现的概率为: P = p ( s 1 , m ∣ s 1 , m − 1 ) ∗ p ( s 2 , m ∣ s 1 , m − 1 ) ∗ . . . . ∗ p ( s 1 , m ∣ s 2 , m − 1 ) ∗ p ( s 2 , m ∣ s 1 , m − 1 ) P=p(s_{1,m}|s_{1,m-1})*p(s_{2,m}|s_{1,m-1})*....*p(s_{1,m}|s_{2,m-1})*p(s_{2,m}|s_{1,m-1}) P=p(s1,ms1,m1)p(s2,ms1,m1)....p(s1,ms2,m1)p(s2,ms1,m1)

Hidden-State Markov Process-隐式马尔科夫过程

在上图的基础上,如果状态 s t a t e state state内部也是一个随机过程,无法得到确定的结果,如下图:
在这里插入图片描述相对于显示,隐式随机过程增加了,即所谓的双内嵌式随机过程。同样的这次小球出现的顺序为: 白 − 黑 白 白 白 黑 白 黑 黑 白 白 黑 白 白 − 白 白-黑白白白黑白黑黑白白黑白白-白
但第一个白球是从状态2出来的,还是状态1出来的就不知道了,如果要求解上面黑白球出现的概率,两种情况都得考虑,首先以状态1为起始点并且自旋在状态1的路径下的黑白球出现概率概率可以表示为: P = P w ∣ s t a t e 1 ∗ p ( s 1 , m ∣ s 1 , m − 1 ) ∗ P b ∣ s t a t e 1 ∗ . . . . . P=P_{w|state1}*p(s_{1,m}|s_{1,m-1})*P_{b|state1}*..... P=Pwstate1p(s1,ms1,m1)Pbstate1.....
很显然上述过程穷举的话,是 2 n , 2 = s t a t e s   n u m b e r    ,   n = o u t p u t   n u m b e r 2^n, 2=states\ number\ \ , \ n=output\ number 2n,2=states number  , n=output number中组合的概率之和。而单条路径下的分布过程也比显式的多了一倍。

小结

通过对比可以看出隐藏状态是不能直接观测的,只能利用一个随机过程来建模。

例子2-Markov Chains 马尔科夫链

马尔科夫链其实就是对马尔科夫过程的一种抽象,具体的说即带有状态转移概率弧线的马尔科夫过程像一个链式手环而已。

ergodic Markov chains-遍历型

遍历型就是两两状态之间都存在转换通道(概率),还是利用来自【2】的图:
在这里插入图片描述
随着状态的增多,这种链式结果的转换概率弧线将是多到很难数的过来的地步,那么实际中什么情况下采用呢,假设天气预报,或者语言模型,都是不错的建模过程,如【3】所列举的遍历型链式结构:
在这里插入图片描述

left–right Markov chains-左右型(因果型)

铺垫了这么多,其实left–right Markov chains的结构才是语音识别中最常用的形式,如下图【2】:
在这里插入图片描述细节不展开,主要为了直观的感受一下这个模型。左右因果型的马尔科夫链,时间状态转移路线可以用trellis网格表示,对于理解概率的转移路径和前后向算法更加直观:
在这里插入图片描述

怎么理解HMM

上面这个trellis图应该是将HMM析构的最好的一张图了,或者更加形象的来说用下图:
在这里插入图片描述
没错,就像打地鼠游戏一样,每次从哪个洞口出来,出来的肥鼠还是瘦鼠,都是未知的。看似很迷惘,但仔细的看trellis网格,还是有规律可循的。

HMM的基本元素

下文提到的HMM都是左右型的train。在语音识别中,HMM一般定义为6个模型参数的合集【1】: M = { S , O , A , B , π , F } M= \{S,O,A,B,\pi,F\} M={S,O,A,B,π,F}

S-模型中状态的有限集合

假设有N个状态,可以定义为 S = { S i ∣ i = 1 , 2 , . . , N } S=\{S_i|i=1,2,..,N\} S={Sii=1,2,..,N},而且在某一个时刻 t t t,模型一定处于上述集合中的一个状态,定义为 s t ∈ ( S 1 , . . . S N ) s_t\in(S_1,...S_N) st(S1,...SN)。这个模型说明HMM属于一个有限状态机。

O-模型输出的观测值符号信合

或者说 O O O是每个状态对应的可能的观察值数目。假设有 M M M个观察值为 O 1 , . . . O M O_1,...O_M O1,...OM,定义为 o t ∈ ( O 1 , . . . O M ) o_t\in(O_1,...O_M) ot(O1,...OM)

A-状态转移概率矩阵

所有概率转移因子 a i j a_{ij} aij构成一个集合:
A = [ a 11 ⋯ a 1 N ⋮ ⋱ ⋮ a N 1 ⋯ a N N ] A=\begin{bmatrix} a_{11} & \cdots & a_{1N} \\ \vdots & \ddots & \vdots \\ a_{N1} & \cdots & a_{NN} \end{bmatrix} A=a11aN1a1NaNN
对于左右型的HMM, a i j = 0 , j > i a_{ij}=0, j>i aij=0,j>i,所以上述矩阵就变成上三角矩阵 A = [ a 11 ⋯ ⋯ a 1 N 0 a 22 ⋯ a 2 N ⋮ ⋯ ⋱ ⋮ 0 ⋯ 0 a N N ] A=\begin{bmatrix} a_{11} & \cdots & \cdots& a_{1N} \\ 0 & a_{22} & \cdots& a_{2N} \\ \vdots & \cdots& \ddots & \vdots \\ 0 & \cdots& 0 & a_{NN} \end{bmatrix} A=a1100a220a1Na2NaNN进一步如果是一阶HMM,矩阵中每行只有两个元素为非零值 A = [ a 11 a 12 ⋯ 0 0 a 22 a 23 0 ⋮ ⋯ ⋱ ⋮ 0 ⋯ 0 a N N ] A=\begin{bmatrix} a_{11} &a_{12} & \cdots& 0 \\ 0 & a_{22} & a_{23}& 0 \\ \vdots & \cdots& \ddots & \vdots \\ 0 & \cdots& 0 & a_{NN} \end{bmatrix} A=a1100a12a22a23000aNN

B-输出观测值概率的集合

B = b i j ( k ) B={b_{ij}(k)} B=bij(k),其中 b i j b_{ij} bij是从状态 S i S_i Si到状态 S j S_j Sj转移时观测值符号 k k k的输出概率,如果是语音建模的话就是,每一个Gaussian的输出概率。而根据B的分布可以将HMM分为离散型和连续型: 离 散 型 H M M : ∑ k b i j ( k ) = 1 连 续 型 H M M : ∫ − ∞ ∞ b i j ( k ) d k = 1 离散型 HMM:\sum_k b_{ij}(k)=1\\ 连续型 HMM:\int_{-\infty}^{\infty}b_{ij}(k) dk=1 HMM:kbij(k)=1HMM:bij(k)dk=1

π \pi π-系统初始化状态概率的集合

π = { π i } \pi=\{\pi_i\} π={πi}, π i \pi_i πi表示初始状态是 s i s_i si的概率,即 π i = P [ S 1 = s i ] , ( 1 ≤ i ≤ N ) ∑ π j = 1 \pi_i=P[S_1=s_i], (1\leq i\leq N) \\ \sum \pi_j =1 πi=P[S1=si],(1iN)πj=1在语音处理中,初始选取开始于某个状态 S 1 = s i S_1=s_i S1=si的概率。

F-系统终了状态的集合

这是专门为语音识别的模型定义的,广义模型里一般不定义终了集合

如何看待这些集合

HMM可以理解为由 π , A \pi, A π,A组成的马尔科夫链,负责产生状态序列;而由 B B B所描述的观察值序列,T为观察值的时间长度。对于孤立词识别的情况,需要为每个词建立一个HMM模型。首先要训练模型,然后令量化(特征提取)的语音信号 o 1 , o 2 , . . . o T o_1,o_2,...o_T o1,o2,...oT经过模型生成输出概率,输出概率最大的HMM对应的孤立词就是我们要得到的识别结果。

参考

1.语音信号处理,第三版,赵力 等,机械工业出版社
2.Advanced Digital Signal Processing and Noise Reduction, Fourth Edition by Saeed V. Vaseghi
3.Chapter A Hidden Markov Models from Speech and Language Processing by Jurafsky

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在使用MATLAB进行HMM时,我们需要学习观测数据序列。学习数据序列通常包括两个步骤:参数估计和型选择。 参数估计是指通过观测数据序列来估计隐藏状态序列的转移概率矩阵A、观测概率矩阵B和初始状态概率向量π。在MATLAB中,可以使用hmmtrain函数来进行参数估计。该函数需要提供观测数据序列以及初始参数的估计值,然后通过迭代算法来优化参数的估计值。最终得到的参数可以用于后续的HMM预测和分析。 型选择是指选择最合适的型来拟合观测数据序列。在MATLAB中,可以使用Model Selection工具箱来进行型选择。该工具箱提供了一系列的型评估标准,如赤池信息准则(AIC)和贝叶斯信息准则(BIC)等。通过对不同的型进行评估,并选择具有最小信息准则值的型作为最佳型。 在学习数据序列过程中,还需要注意选择合适的观测数据表示方式。通常,观测数据可以是连续型数据、离散型数据或符号型数据。在MATLAB中,可以使用不同的数据表示方式来处理不同类型的观测数据。例如,可以使用高斯混合型(GMM)来连续型观测数据,或者使用隐马尔可夫型(HMM)来离散型观测数据。 总之,在MATLAB中学习数据序列通常通过参数估计和型选择两个步骤来完成。这些步骤可以帮助我们理解并分析观测数据序列的特征,从而为后续的预测和决策提供有用的信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值