HMM 学习笔记

参考资料

一文弄懂隐马尔科夫模型(HMM) :https://www.jianshu.com/p/635650db7deb

HMM超详细讲解+代码

https://blog.csdn.net/continueoo/article/details/77893587

B 站隐马尔可夫模型

https://www.bilibili.com/video/av40070295

手写笔记

image-20190220131726823
image-20190220131743423

知识点

HMM(以下内容来自《统计学习方法》和百度搜索“我爱自然语言处理 HMM”)

1、隐含状态不可观测,每一个隐含的状态生成一个观测;例子:隐含的状态:天气,可以观测到的是海藻。

2、生成模式(1)确定模式:状态转移是确定的,一个结点的入度和出度都是1;(2)非确定模式:出度的概率之和为 1;此时的状态转移概率可以用一个方阵表示;

关于假设,重要的一点是状态转移矩阵并不随时间的改变而改变****——****这个矩阵在整个系统的生命周期中是固定不变的。

3、马尔科夫过程、隐马尔可夫过程

隐马尔可夫过程三要素,一个 HMM (隐马尔科夫模型就是一个三元组):(1)初始状态概率向量(是一个向量)(2)状态转移概率矩阵(3)观测概率矩阵(行是状态,列是观测),也叫混淆矩阵

因此一个隐马尔科夫模型是在一个标准的马尔科夫过程中引入一组观察状态,以及其与隐藏状态间的一些概率关系。

4、一旦一个系统可以作为HMM被描述,就可以用来解决三个基本问题。

(1)模式识别问题:给定HMM求一个观察序列的概率(评估,概率计算问题);

在语音识别中这种类型的问题发生在当一大堆数目的马尔科夫模型被使用,并且每一个模型都对一个特殊的单词进行建模时。一个观察序列从一个发音单词中形成,并且通过寻找对于此观察序列最有可能的隐马尔科夫模型(HMM)识别这个单词。

使用前向算法(forward algorithm)。

我们使用Viterbi 算法(Viterbi algorithm)确定(搜索)已知观察序列及HMM下最可能的隐藏状态序列。

(2)模式识别问题:搜索最有可能生成一个观察序列的隐藏状态序列(预测状态,解码)。

给定观察序列搜索最可能的隐藏状态序列。考虑海藻和天气这个例子,一个盲人隐士只能感觉到海藻的状态,但是他更想知道天气的情况,天气状态在这里就是隐藏状态。

Viterbi算法(Viterbi algorithm)的另一广泛应用是自然语言处理中的词性标注。在词性标注中,句子中的单词是观察状态,词性(语法类别)是隐藏状态(注意对于许多单词,如wind,fish拥有不止一个词性)。对于每句话中的单词,通过搜索其最可能的隐藏状态,我们就可以在给定的上下文中找到每个单词最可能的词性标注。

SMO 其实也用到了动态规划。

维特比算法——用动态规划求解概率最大路径。

我们先来看概率计算问题

(1)方法1:穷举搜索:(把所有的隐藏的状态的条件概率进行积分,就知道了观测状态的概率了,这里的条件概率 = P(观测序列|隐含状态序列)。)

一种计算观察序列概率的方法是找到每一个可能的隐藏状态,并且将这些隐藏状态下的观察序列概率相加。

(2)方法2:我们使用前向算法来计算给定隐马尔科夫模型(HMM)后的一个观察序列的概率。它在计算中利用递归避免对网格所有路径进行穷举计算。

给定这种算法,可以直接用来确定对于已知的一个观察序列,在一些隐马尔科夫模型(HMMs)中哪一个HMM最好的描述了它——先用前向算法评估每一个(HMM),再选取其中概率最高的一个。

(3)第三个问题是给定观测序列生成一个HMM(学习)。

根据观察序列生成隐马尔科夫模型。

第三个问题,也是与HMM相关的问题中最难的,根据一个观察序列(来自于已知的集合),以及与其有关的一个隐藏状态集,估计一个最合适的隐马尔科夫模型(HMM),也就是确定对已知序列描述的最合适的(pi,A,B)三元组。

当矩阵A和B不能够直接被(估计)测量时,前向-后向算法(forward-backward algorithm)被用来进行学习(参数估计),这也是实际应用中常见的情况。

概率计算

1、前向概率(什么是前向概率)

2、观测序列概率的前向算法

《统计学习方法》 P177

(1)计算初值:因为观测序列是 O={红,白,红},第 1 个观测到的是“红”。

所以我们分别计算这个“红”来自盒子1、盒子2、盒子3的概率:

“红”来自“盒子1”的概率:;

“红”来自“盒子2”的概率:;

“红”来自“盒子3”的概率:;

说明:下标1表示时刻 1。

(2)递归地计算:

时刻2:第 2 个观测到的是“白”:

“白”来自盒子1的概率:因为第2次观测到盒子1可能来自3个盒子,因此

:表示上一步是盒子1,当前是盒子1,状态转移由1到1;

:表示上一步是盒子2,当前是盒子1,状态转移由2到1;

:表示上一步是盒子3,当前是盒子1,状态转移由3到1;

3 种方式都可以到 1 ,所以是相加,下一步是观测到白球,因此要乘以 ,故

“白”来自盒子2的概率:

“白”来自盒子3的概率:

时刻3:第 3 个观测到的是“红”

“红”来自盒子1的概率:

“红”来自盒子2的概率:

“红”来自盒子3的概率:

(3)终止:(只和最后的3 个概率有关,用加法)

6、预测:由观测序列计算隐含的状态序列的概率(解码问题)

使得条件概率 最大

方法1:穷举搜索:和概率计算问题的思路一样:穷举的意思是把所有的:通过列出所有可能的隐藏状态序列并且计算对于每个组合相应的观测序列的概率来找到最可能的隐藏状态序列。最可能的隐藏状态序列是使下面这个概率最大的组合:Pr(观察序列|隐藏状态的组合)。

7、学习问题(1)近似算法(2)维特比算法,

你可能感兴趣的:(HMM 学习笔记)