HMM(隐马尔科夫模型)

HMM模型基础

隐马尔科夫模型(Hidden Markov Model,以下简称HMM)是比较经典的机器学习模型了,它在语言识别,自然语言处理,模式识别等领域得到广泛的应用。当然,随着目前深度学习的崛起,尤其是RNN,LSTM等神经网络序列模型的火热,HMM的地位有所下降。但是作为一个经典的模型,学习HMM的模型和对应算法,对我们解决问题建模的能力提高以及算法思路的拓展还是很好的。本文是HMM系列的第一篇,关注于HMM模型的基础。

首先我们来看看什么样的问题解决可以用HMM模型。使用HMM模型时我们的问题一般有这两个特征:

有了这两个特征,那么这个问题一般可以用HMM模型来尝试解决。这样的问题在实际生活中是很多的。比如:我现在在打字写博客,我在键盘上敲出来的一系列字符就是观测序列,而我实际想写的一段话就是隐藏序列,输入法的任务就是从敲入的一系列字符尽可能的猜测我要写的一段话,并把最可能的词语放在最前面让我选择,这就可以看做一个HMM模型了。再举一个,我在和你说话,我发出的一串连续的声音就是观测序列,而我实际要表达的一段话就是状态序列,你大脑的任务,就是从这一串连续的声音中判断出我最可能要表达的话的内容。

从这些例子中,我们可以发现,HMM模型可以无处不在。但是上面的描述还不精确,下面我们用精确的数学符号来表述我们的HMM模型。

对于HMM模型,首先我们假设QQ是所有可能的隐藏状态的集合,VV是所有可能的观测状态的集合,即:

Q = q 1 , q 2 , . . . , q N , V = v 1 , v 2 , . . . v M Q = {q_1,q_2,…,q_N},V={v_1,v_2,…v_M}Q =q 1 ​,q 2 ​,…,q N ​,V =v 1 ​,v 2 ​,…v M ​

其中,N是可能的隐藏状态数,M是所有的可能的观察状态数。

对于一个长度为T的序列,II对应的状态序列, O是对应的观察序列,即:

I = { i 1 , i 2 , ⋯ , i T } , O = { o 1 , o 2 , ⋯ , o T } I = {i_1,i_2,\cdots,i_T},\ O={o_1,o_2,\cdots,o_T}I ={i 1 ​,i 2 ​,⋯,i T ​},O ={o 1 ​,o 2 ​,⋯,o T ​}

其中,任意一个隐藏状态it∈Qit∈Q,任意一个观察状态ot∈Vot∈V

HMM模型做了两个很重要的假设如下:

一个HMM模型,可以由隐藏状态初始概率分布∏ \prod ∏, 状态转移概率矩阵A和观测状态概率矩阵B决定。∏ \prod ∏,A决定状态序列,B决定观测序列。因此,HMM模型可以由一个三元组λ表示如下:
λ = ( A , B , ∏ ) \lambda = (A,B,\prod)λ=(A ,B ,∏)

下面我们用一个简单的实例来描述上面抽象出的HMM模型。这是一个盒子与球的模型,例子来源于李航的《统计学习方法》。

假设我们有3个盒子,每个盒子里都有红色和白色两种球,这三个盒子里球的数量分别是:

盒子123红球数547白球数563

如下所示,从方框中抽出球。开始时,从第一个盒子抽球的概率为0.2,从第二个盒子抽球的概率为0.4,从第三个盒子抽球的概率为0.4。在以这种概率抽出球后,将球放回原处。然后从当前框转到下一个框来画球。规则是:如果当前框是第一个框,则以0.5的概率继续第一个框,以0.2的概率转到第二个框,以0.3的概率转到第三个框。如果当前框是第二个框,则继续第二个框的概率为0.5,转到第一个框的概率为0.3,转到第三个框的概率为0.2。如果当前长方体是第三个长方体,则继续第三个长方体的概率为0.5,继续第一个长方体的概率为0.2,继续第二个长方体的概率为0.3。这样继续下去,直到你重复三次,得到一个球的颜色的观察序列:

[En]

Draw the ball from the box as follows. At the beginning, the probability of drawing the ball from the first box is 0.2, the probability of drawing the ball from the second box is 0.4, and the probability of drawing the ball from the third box is 0.4. After drawing the ball at this probability, put the ball back. Then transfer from the current box to the next box to draw the ball. The rule is: if the current box is the first box, continue with the first box with a probability of 0.5, go to the second box with a probability of 0.2 and go to the third box with a probability of 0.3. If the current box is the second box, the probability is 0.5 to continue with the second box, 0.3 to go to the first box and 0.2 to the third box. If the current box is the third box, the probability is 0.5 to continue with the third box, 0.2 to the first box and 0.3 to the second box. Go on like this until you repeat it three times to get an observation sequence of the color of a ball:

O = { 红 , 白 , 红 } O = {红,白,红}O ={红,白,红}

注意,在这个过程中,观察者只能看到球的颜色序列,而看不到球是从哪个盒子里移走的。

[En]

Note that in this process, the observer can only see the color sequence of the ball, but can not see which box the ball was removed from.

那么按照我们上一节HMM模型的定义,我们的观察集合是:
V = { 红 , 白 } , M = 2 V={红,白}, \ M=2 V ={红,白},M =2

我们的状态集合是:
Q = { 盒 子 1 , 盒 子 2 , 盒 子 3 } , N = 3 Q = {盒子1,盒子2,盒子3}, \ N=3 Q ={盒子1 ,盒子2 ,盒子3 },N =3

观测序列和状态序列的长度为3.5%。

[En]

The length of observation sequence and state sequence is 3. 5%.

初始状态分布为:
∏ = ( 0.2 , 0.4 , 0.4 ) T \prod = (0.2,0.4,0.4)^T ∏=(0 .2 ,0 .4 ,0 .4 )T

状态转移概率分布矩阵为:

[En]

The state transition probability distribution matrix is:

A = { 0.5 0.2 0.3 0.3 0.5 0.2 0.2 0.3 0.5 } A = \left{\begin{matrix} 0.5 & 0.2 & 0.3\ 0.3 & 0.5 & 0.2 \ 0.2 & 0.3 & 0.5 \end{matrix}\right}A =⎩⎨⎧​0 .5 0 .3 0 .2 ​0 .2 0 .5 0 .3 ​0 .3 0 .2 0 .5 ​⎭⎬⎫​

观测状态概率矩阵为:
B = { 0.5 0.5 0.4 0.6 0.7 0.3 } B = \left{ \begin{matrix} 0.5 & 0.5 \ 0.4 & 0.6 \ 0.7 & 0.3 \end{matrix}\right}B =⎩⎨⎧​0 .5 0 .4 0 .7 ​0 .5 0 .6 0 .3 ​⎭⎬⎫​

从上一节的例子,我们也可以抽象出HMM观测序列生成的过程。

输入的是HMM的模型λ=(A,B,∏ \prod ∏),观测序列的长度T
输出是观测序列O = o 1 , o 2 , . . . o T O={o_1,o_2,…o_T}O =o 1 ​,o 2 ​,…o T ​
生成的过程如下:

所有的ot一起形成观测序列O = o 1 , o 2 , . . . o T O={o_1,o_2,…o_T}O =o 1 ​,o 2 ​,…o T ​

HMM模型一共有三个经典的问题需要解决:

Original: https://blog.csdn.net/qq_44766883/article/details/111295078
Author: 迷雾总会解
Title: HMM(隐马尔科夫模型)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/524555/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球