HMM隐马尔可夫模型详解
目录
关于什么是隐马尔可夫模型我想你看到的解释应该是酱紫的:
或者是这样子的:
一、什么是隐马尔可夫模型
二、隐马尔可夫模型要解决的问题
三、问题解决
1.概率计算问题:
2.学习问题:
3.预测问题:
关于什么是隐马尔可夫模型我想你看到的解释应该是酱紫的:
隐马尔科夫模型 (HMM)是一种统计学工具,在概率论与统计学中被广泛应用。它用于建模具有潜在未知状态的马尔可夫链,并通过观测数据推断出隐藏的状态序列。其核心挑战在于从观测数据中推断出隐藏的状态序列并基于这些估计进行后续分析和预测。这种数学工具在语音识别、自然语言处理等多个领域得到了广泛应用,并且在生物信息学和模式识别等领域也展现出显著的应用价值。
或者是这样子的:
隐式马尔可夫模型 是一种用于分析时序数据的概率工具。它通过隐藏的马尔可夫链生成不可见的状态序列,并通过每个状态对应生成观测数据的过程来描述观察序列的形成机制。
不必担心自己看不懂的知识或内容;也别过于纠结于无法完全理解的部分;这可能源于专业出版对定义的严格要求。因此,在阅读过程中出现暂时不解的情况是正常的;我喜欢博客上的博文链接或文章(博文),这些大神们的作品通常能够解答我在学习过程中遇到的根本问题;只要先了解他们的观点后去阅读相关的书籍或文献;就能全面掌握所需知识或信息了。
一、什么是隐马尔可夫模型
我们先用一个例子来说明一下什么是隐马尔可夫模型
这一实例起源于Yang Eninala博士在知乎平台上的问答内容https://www.zhihu.com/question/20962240/answer/33438846]
一个经典的案例就是投掷不同的多面形。假设我在手上拥有三个不同类型的骰子。其中第一个是我们日常使用的六面体(命名为D6),每个数字从1到6出现的概率均为1/6。第二个是一个四面形(命名为D4),四个面上的数字1到4各出现的概率都是相等的。第三个则是一个八面色体(命名为D8),其上标记的数字从1到8各出现的概率也相同。

假设我们开始掷骰子。首先从三个骰子中选择一个,在这种情况下每个骰子被选中的概率均等。接着我们投掷骰子并记录下出现的数值(范围在1至8之间)。不断重复这一过程将有助于生成一系列随机的结果序列。比如,在连续投掷十次后我们将可能会获得以下序列:1,6,3,5,2,7,3,5,2,4
这些数字被称作可见状态序列。然而,在隐马尔可夫模型中不仅存在一条可见的状态序列还存在一条隐藏的状态序列。例如在这个例子中隐藏的状态序相当于你使用的骰子序列比如在这一例子中的隐藏状态序列为D6,D8,D8,D6,D4,D8,D6,D6,D4,D8基于上述问题的研究基础之上形成了隐马尔可夫模型理论体系

马尔可夫链并非专门用于隐马尔科夫模型而生,并非其应用仅限于隐马尔科夫领域
我们再来看看马尔可夫链的定义过程:
马尔可夫过程的定义:
⑴设

是一个随机过程,如果在

在

时刻所处的状态为已知时,

以后的状态与它在时刻

若某状态与其过去的状态独立于,则称该状态具有马尔可夫性。(即当前状态的概率仅受前一状态的影响)。
⑵设

的状态空间为

,如果对于任意的

,任意的

,在条件

下,

的条件概率分布函数恰好等于其在条件

下的条件概率分布函数,即

则称

为马尔可夫过程。
基于通过数学表达式来描述定义(1),我们有P(t时刻的状态 | 前 t−1 时刻发生的情况) = P(t时刻的状态 | t−1 时刻发生的情况)
其实在HMM中
二、隐马尔可夫模型要解决的问题
*在提问题之前我们先来定义几个变量(重新看一下这个图的图例)

*几个矩阵的定义
|所有可能的状态集合

={

}|所有可能的观测集合

={

}|||
|---|---|---|---|
|T时刻的状态序列

=(

|i ∈Q)|T时刻的观测序列

=(

|o ∈V)|
|状态转移概率矩阵 

表示t时刻处于状态

转移至

的转化概率|观测概率矩阵 

表示处于状态

下生成观测

模型参数 λ(A,B,Π),其中 Π 表示初始状态的概率向量;A 代表状态转移的概率矩阵;B 是观测的概率矩阵;这些参数共同决定了隐藏的状态序列;而 B 则决定了观察到的序列
*马尔可夫链的两个假设
| (1)齐次马尔可夫假设: | 即t时刻的状态只受t-1时刻状态的影响 |
|---|---|
| (2)观测独立性假设: | 即任意时刻的观测只受该时刻所处状态的影响 |
*马尔可夫模型的三个基本问题
|(1)概率计算问题:|给定模型参数 λ(A,B,Π)和观测序列

=(

),计算在模型λ 下观测序列O出现的概率

|
|---|---|---|
|(2)学习问题:|给定观测序列

=(

),求参数λ(A,B,Π),这就是类似EM算法的问题了.||
|(3)预测问题:|给定参数 λ(A,B,Π)和观测序列

=(

),求隐含的状态序列

=(

).||
问题(1)属于条件概率类的问题。(2)为了解决该问题采用了Baum-Welch算法。该方法源于Expectation-Maximization(EM)算法的发展,在其中涉及到了极大似然估计的相关知识。本文将简要介绍EM算法的基本概念。对于极大似然估计方面的知识建议先补充相关基础后再深入研究。未来有机会我会撰写关于这一主题的详细博文。(3)构成了隐马尔可夫模型的核心内容。许多领域将隐马尔科夫模型的主要应用集中在问题(3)上。例如,在机器翻译中将中文转换为英文时每个单词都有多个可能的含义其词性的特点往往在识别过程中起到关键作用。初看起来似乎两者之间并无直接关联但它们之间确实存在某种潜在联系

=(

)很像呢!类似这样的还有很多.......
仅需了解HMM的基本概念时,达到这个水平已经足够。若对其实体结构感兴趣,请继续阅读。
三、问题解决
1.概率计算问题:
直接计算算法: 对所有可能存在的状态序列

=(

),表示出来,形成一个状态序列空间

{

},并求

,即基于模型

求空间D中全部状态序列下出现O的概率。
联合概率

变成

发生的条件下

发生的概率

乘以

,

发生的条件下O发生的概率
其中 1)

,

=

,


表示所有可能状态序列

故

对所有满足

的

求和得到


至此算法结束
前向算法: 直接计算算法很简单便捷,但是计算量很大,假设状态集合

有N个可选的状态,而状态序列

有t个节点则可选的状态序列空间

就有

个可选序列,这意味这求和项要求和

此轮次过后可知计算量极为有限的少。从而导致采用了前向算法:在每个节点处首先将N个状态分别乘以相应的转化率;接着将这些结果相加得到最终值。无需过分纠结于细节解释即可开始绘制流程图。
大概看一下 :


定义:

,表示时刻t,其部分观测序列为

,且状态等于

中的

故:
(1)初值:

即

遍历状态集合
(2)递推 for t =1 to T-1 
即对上一个节点的所以状态乘转化率后求和再乘本 节点的生成概率
(3)终止

对最后一节点的所有

求和
后向算法: 与前向算例相似,并非完全不同;其形状与前向算例相同,仅是方向相反

的位置换成

。
定义:

,表示

时刻状态为

的条件下,往后部分观测序列为

的概率
(1)初值:

(2)递推 for t=T-1 to 1

(3) 终止

完成三个关于概率计算的算法后,在验证或推导问题(2)和(3)的相关内容时,我们引入了必要的概率计算与期望分析。
一些概率与期望值的计算
1)给定模型

和观测序列

,在t时刻处于状态

的概率为:

由上述前向概率

和后向概率

的定义可知:

于是得到:

2)给定模型

和观测序列

,在t时刻状态

,且在t+1时刻处于状态

的概率为:


3)将

和

对各个时刻t求和,可以得到一些有用的期望:
①在观测序列

的条件下状态

出现的期望值:

②在观测序列

的条件下由状态

转移的期望值:

③在观测序列

的条件下由状态

转移到状态

的期望值:

注:上面几个应该有错,似乎忽略了各个时刻相交的部分,使得期望变大。
取1为例,在假设状态集合Q包含10个不同的状态下,并且在时间点T等于10时,在每个时间点t中(即每个时刻下),符号i出现的概率均相同。
则

=0.1,

=1,这是不可能存在的,
应该是

。
通项就是

但是

的分布总是乱七八糟的,没办法写出通项来。
2.学习问题:
学习问题就是给定观测序列

,求参数

映射到我们起初提到的骰子的例子大概就是知道了观测序列为

要求参数
1)A: t时刻选用骰子D4到t+1时刻选用骰子D6或D8的转换概率。
2)B: 任意时刻选用固定骰子后出现某个点数

的概率。
3)Π: 其实选择骰子D4、D6、D8的概率。
如果知道了隐藏的状态序列

,即是每个时刻都选用了哪个骰子的话,求参数

我们直接选用极大似然估计就好了,可是关键在于我们并不知道

属于哪一类任务。基于此,我们运用Baum-welch算法来进行推断工作;而这种算法实际上源自于EM算法的一种变形。
Baum-Welch算法:
为此提出的一种解决方法是针对HMM这一统计工具提出的解决方案。其中关键在于状态序列未知的情况下如何进行参数估计的问题。具体来说,在这种情况下我们面临的是一个含有隐变量的概率模型推断问题即已知观测序列O=(o1,o2,...,oT),我们需要估计出模型参数λ=(A,B,π),使得在给定这些参数的情况下观测序列的概率P(O|λ)达到最大值。由于状态序列未知因此这个问题可以通过优化模型参数来实现目标进而求解最优解的过程这就是为什么EM算法在这种情况下被广泛采用的原因之一。Baum-Welch算法则是针对隐马尔科夫模型学习问题中的核心挑战——存在不可观察的状态序列时如何进行参数估计所提出的经典解决方案它通过迭代更新的方式逐步逼近最优解从而实现了对模型中隐藏变量的有效建模与推断过程
基于Expectation-Maximization (EM) algorithm, 我们需要首先写出Q function. Q function represents the expected value of the complete data's log-likelihood under the conditional probability distribution of hidden variables given observed variables and model parameters.

当我们建立Q函数后,则需在其后续部分进行极大化处理。这也就意味着EM算法中的M步。在最大化的过程中,则需确保所采用的操作不会影响到最终结果。允许我们在最大化过程中对Q函数乘以或除以不影响最终结果的常数因子。值得注意的是,在Q函数中涉及的部分

这一概率值便是我们在概率计算问题中所关注的核心内容。对于固定的参数值而言这是一个常数项。因此我们可以将其乘积应用到原先设定的Q函数上从而使得Q函数得以简化形成新的形式:

为什么采取这种措施呢?是为了将后面的...中的有意义的概率计算公式直接套用到相关问题中去吗?
又因为完全数据可以写成这样:

于是Q函数可以写成:

当前观察到待估量恰好出现在三个项中。仅需各自对该三项进行最大化处理。接着直接最大化这一过程由于缺乏详细描述而显得不够完善。因此建议进一步优化该Q函数表达式。

可以看到,我们将三项中分别的对的求和进行了划分。由于隐变量

=(

)。原来的求和需要遍历所有

其取值范围,在完成求和运算后发现显然这是不可行的任务。改写后的方式是将遍历的空间进行了系统性划分,并且有效地实现了空间划分的目标。

部分改写后也融入到求和其中。比如第一项,对

的遍历等价于先固定状态

,使其分别取值所有可能的状态(共有N个可取的离散状态),而

仍然随意选取其值。这样就能将整个II空间划分为N个更小的子空间。然后将这N个子空间的结果相加起来就等价于直接对整个II空间进行计算的效果

进行遍历。
而且,改写之后

部分变的可以表示了。如果对

对于函数的三个组成部分而言,在进行极大值求解之后会发现, 上述推导出来的有意义的概率值能够用来表示. 这也即是指前文所述的内容.

函数进行修改的原因。
接下来极大化

,并求解满足目标最大化的参数A、B、

的值

用上面推导的公式有

,
表示给定模型

和观测序列

,在t=1时刻处于状态

的概率



表示对 (任意时刻由状态

转移到状态

的所有求和项) 比上 (任意时刻处于状态

的所有求和项)

表示对(任意时刻状态为

观测值为

的所有求和项) 比上 (任意时刻状态为

的所有求和项)
3.预测问题:
给定参数 λ(A,B,Π)和观测序列

=(

),求隐含的状态序列

=(

).
通过案例研究的方式,在已知条件下求解隐含的概率分布类型。
近似算法:
用公式表示就是



在每个时刻最可能隐藏的状态 
从而状态序列:

由于存在转移概率为0的相邻状态,改算法很不稳定
维比特算法:
维比特算法分两步
第一步
计算每一步的

值,即t时刻对每个状态求最大的

,并返回连接到当前状态的前一个最优状态。
始化


递推 

终止 

第二步:把T时刻的最优状态

,作为参数回溯寻求每一步的最优

[1] 李航.统计学习方法[M].北京:清华大学出版社,2012:155-184
[2] 如何用简单明了的方式详细阐述隐马尔可夫模型的概念?(Online)
[3] 个人经历分享:从EM算法到Baum-Welch算法(相亲记)[在线], <>
