隐马尔科夫模型(HMM)学习笔记整理与思考

来源:互联网 发布:淘宝数据魔方架构 编辑:程序博客网 时间:2024/06/07 04:56
隐含马尔可夫模型是一个基于概率统计的模型。到目前为之,它一直被认为是实现快速精确的语音识别系统的最成功的方法。复杂的语音识别问题通过隐含马尔可夫模型能非常简单地被表述、解决。在学习和理解隐马尔科夫模型之前,我觉得需要理解一些基础性的内容以便理解;我把笔记整理成三个相关内容。1.动态规划   2.马尔科夫链   3.隐马尔科夫模型 *****1.动态规划*****动态规划的思想很早就被应用到了语音识别的数学模型中,比如动态时间规整(Dynamic Time Warping,简称DTW )。动态规划是在语音识别模型研究初期就提出来的比较基础的思想方法,HMM模型很多地方都是对这些思想的进一步思考。同时动态规划也是一种很好的寻优方法和迭代计算的思想方法。动态规划的思想非常简单:动态规划算法通常基于一个递推公式及一个或多个初始状态。当前子问题的解将由上一次子问题的解推出。这种简单的思想却在有些情况下极其有效,举个例子:问题:

平面上有4*4个格子,每个格子中放着一定数量的苹果。你从右上角的格子开始, 每一步只能向下走或是向左走,每次走到一个格子上就把格子里的苹果收集起来, 这样下去,你最多能收集到多少个苹果?

这里写图片描述
如果是遇到这样的问题大家会怎么解决呢?
最简单的办法就是找到从右上角到左下角的所有走法然后计算每一种走法可以拿到的苹果数,然后排列找到最大的那种走法。这种想法虽然简单但是计算太过暴力,用这种方法很难求到最佳的走法。
但是还有其他的方法可以解决这个问题,这就是动态规划。
这里我们可以设这里写图片描述
就是建造一个新的矩阵A,矩阵里的每一个值代表从起始点到达这个位置的最大值。每个位置的值按照题目的设置和它的前一步有关(上一格或者右一格)。
按照这个想法。我们可以从起始点开始:A14=2
A13只有一条路径到达,故而值为2+4=6;同理算出A24=9;
而A23的值取决于A13,A24,A13=max(A24,A13)+5=16;
依此向前推可以得到下图

这里写图片描述
就是用这种步步寻优的方法我们可以在建立好新的矩阵的时候一眼看出最佳的路径。
这种步步寻优的想法在后面的算法中会用到。

  ***2.马尔科夫链***  马尔科夫链是随机过程这个课的重要内容,也是隐马尔科夫模型的基础。  一阶马尔科夫链(HMM只用到了一阶马尔科夫链,阶数代表时刻T状态和之前状态的关系,一阶代表和前一个状态有关,二阶代表和前两个状态即T-1,T-2的状态有关)有两个特点:

1 系统在时刻t的状态只与时刻t-1处的状态相关;
(也称为无后效性)
P(qt=Sj|qt-1=Si,qt-2=Sk,…)= P(qt=Sj|qt-1=Si)

2 状态转移概率与时间无关;
(也称为齐次性或时齐性)
P(qt=Sj|qt-1=Si)= P(qk=Sj|qk-1=Si)

有三个系统参数

状态
初始向量
状态转移矩阵

举个例子:
这里写图片描述
这是一个红绿灯。把它看成一个马尔科夫链的话。把亮哪个颜色的灯看成一种状态。这个链的状态有三个红,黄,绿。初始向量就是t=1时亮的是哪个颜色灯的分别的概率。状态矩阵是从t变到t+1的时候从一种状态变成另一种状态的概率,在这个例子中转移矩阵很特殊可以列为
这里写图片描述

***3.隐马尔科夫模型***隐马尔可夫模型 (Hidden Markov Model) 是一种统计模型,用来描述一个含有隐含未知参数的马尔可夫过程。其难点是从可观察的参数中确定该过程的隐含参数,然后利用这些参数来作进一步的分析。隐马尔科夫模型有两条链,一个是马尔科夫链,一个是可观测序列。马尔科夫链序列上的状态是不可观察的所以叫做隐藏状态。下图是一个三个状态的隐马尔可夫模型状态转移图,其中x 表示隐含状态,y 表示可观察的输出,a 表示状态转换概率,b 表示输出概率。

这里写图片描述
隐马尔科夫模型有三个设定:(尽管这些假设是不现实的)

  假设1:马尔可夫假设(状态构成一阶马尔可夫链)
P(qt=Sj|qt-1=Si,qt-2=Sk,…)= P(qt=Sj|qt-1=Si)
  假设2:不动性假设(状态与具体时间无关)
P(qt=Sj|qt-1=Si)= P(qk=Sj|qk-1=Si)
  假设3:输出独立性假设(输出仅与当前状态有关)
P(O1,…,Ot|X1,…,Xt)=P(O1|X1)*P(O2|X2)…*P(O3|X3)
前两个假设就是马尔科夫链的假设。

HMM有五个参数

S:隐藏状态集合;
N:观察状态集合;
A:隐藏状态间的转移概率矩阵;
B:输出矩阵(即隐藏状态到输出状态的概率);
PI:初始概率分布(隐藏状态的初始概率分布);

HMM的五个参数都是数据统计的结果,以语音识别为例,每一个字都被看做一个隐藏状态。初始概率向量和隐藏转移概率矩阵都是从大量的文章统计出来的。观察状态就是语音信号的特征向量。HMM的识别方法就是一步步的链接,找出最有可能的链接。

这里写图片描述
例如我说出 ni shi shei 这几个音,我分别找到这几个音最有可能对应的汉字。然后尝试链接每一个音的汉字,例如你死谁,泥是谁。。。各种有可能的链接方式,然后找出它们之中可能性最大的那个。当然用机器来做这样的工作需要一些计算,但是我们凭直觉就可以找到最有可能的隐藏序列,你是谁。

说到这里大家会意识到动态规划的思想在解HMM时的重要性了。

现在如果面对一个HMM我们需要解决的有三个最重要的问题。
1 给定模型,求某个观察序列O的概率。

2 给定模型和观察序列O,求可能性最大的隐藏状态序列。(解码问题)

3 对于给定的观察序列O,调整HMM的参数,使观察序列出现的概率最大。(训练模型)

对于这三个问题都有相应的解决算法:
(1)前向算法(用于解决第一个问题)
就是求这里写图片描述
O为可观测序列,即O1=i,O2=j,…Ot=m,…
X表示HMM的五个重要参数(隐藏状态集合、观察状态集合、转移概率矩阵、输出矩阵、初始概率分布)。
S为隐藏状态。
P(O|X)就是说在在五个参数的限定条件下,O序列出现的概率。
后一步就是说在不同S序列情况下O序列出现的概率的累加等于O序列出现的概率。整个递推公式就是对贝叶斯公式的应用。

下一步我们设这里写图片描述
就是在满足O序列前i个观察状态o的情况下隐藏状态为Sk时的概率。
这个该怎么算,这正是对于动态规划的迭代思想的运用!
根据这个假设值我们可以找到递推公式这里写图片描述
然后我们知道C(1,Sk)=PI(Sk)*b(Sk,O1);
PI(Sk)为初始概率向量PI中Sk的概率,b(Sk,O1)为输出矩阵中对应的值。Akr为状态转移矩阵中的对应值。
由此我们可以一步步的建立一个新的S*S的矩阵。最后就可以知道
P(o|x)=C(T,S1)+C(T,S2)+C(T,S3)+…..+C(T,Sn)
T为O序列的长度。

这就是前向算法。它解决了第一个问题。

(2)维特比算法(解决第二个问题)
维特比算法和之前关于苹果的例子极其的相似,就是应用动态规划解决寻优的问题。
这里写图片描述
这里写图片描述
通过之前前向算法建立的C矩阵可以建立新的D矩阵,然后挑选D矩阵中每一行中最大值对应的状态列出。就可以知道S1,S2,S3。。。。这样就可以求到最大可能的S序列。

(3)后向算法(解决第三个问题的基础)
后向算法和前向算法一样,可以求解第一个问题。但是对于第一个问题后向算法明显的不如前向算法。首先是理解上更加别扭,因为马尔科夫链的后无效性,而且需要听完整个句子才可以计算。但是在训练的时候却有了不一样的作用。
后向算法设这里写图片描述
对i为任意状态有这里写图片描述
Ot为t时刻观测状态,qt为t时刻隐藏状态。λ为五个重要参数同上面的X。
迭代公式为这里写图片描述
后向算法和前向算法在定义的时候,大家可以发现隐藏状态在方程中处在不同的位置。后向算法是在t时刻,默认隐藏状态为确定值,O序列后面一部分( t到tmax的o状态)为确定状态的概率值。直接看迭代公式也有很多的别扭的地方。
现在把迭代公式拿出来推理一下。
这里写图片描述
好好想想,马尔科夫链是一个后项无关的结构。t时刻后的状态概率都是t时刻状态的子概率。
然后这里写图片描述

(4)前向后向算法(最后一个问题的解法)
训练HMM我们需要求出Aij即状态转移矩阵。可以清楚的知道Aij=P(qt=i,qt+1=j)/P(qt=i);
但是如我们不知道t时刻的转移矩阵我们怎么知道P(qt+1=j)呢,因为t+1时刻的隐藏状态只和t时刻的状态有关啊!这时,我们需要有另前后两种方法的结合避免我们在求概率时使用到t时刻的转移概率矩阵,这就是前向后向算法。(有人在这里会意识到HMM的时间无关性为什么我还要专门提出t时刻的转移概率这样的说法,每个时刻的转移概率矩阵应该是一样的啊。进一步如果转移矩阵是未知的我们一步都没法计算啊,这就是这个前向后向算法的高明之处。)
先定义两个中间量
第一个
这里写图片描述
这里α为前向算法的值,β为后向算法的值,qt为隐藏状态,b为输出矩阵中的对应值,O为观测序列,λ为五参数。
第二个
这里写图片描述
接下来
这里写图片描述
π就是新的初始概率。从公式上很容易理解。
a是新的转移矩阵中的相应值。公式上看可以理解为序列中ij连续出现的次数期望除以i状态出现的次数期望。
b是新的输出矩阵中的相应值。就是只取序列中Ot=k时的i的概率相加除i出现的次数的期望。

在算法的想法里转移矩阵aij的处理方式就像数值分析里构造迭代的方式很像。
整个算法也有EM算法的影子。
也有人把这个算法分解为这样
这里写图片描述
这里写图片描述
分为了E和M步来理解。
看来对于整个算法理解我也只是停留在表面,还需要进一步的理解。

0 0
原创粉丝点击