前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >机器学习23:概率图--隐马尔可夫模型(HMM)

机器学习23:概率图--隐马尔可夫模型(HMM)

作者头像
用户5473628
发布2019-08-08 15:22:23
1.8K0
发布2019-08-08 15:22:23
举报
文章被收录于专栏:MiningAlgorithms

1,隐马尔可夫模型:

隐马尔可夫模型(HMM)是可用于标注问题的统计学习模型,描述由隐藏的马尔可夫链随机生成观测序列的过程,属于生成模型。

隐马尔可夫模型的两个基本假设:

1),齐次马尔科夫假设:隐藏的马尔科夫链在任意时刻t的状态只依赖于齐前一时刻的状态,其它时刻的状态及观测无关,也与时刻t无关;

2),观测独立性假设:任意时刻的观测只依赖于该时刻的马尔科夫状态,与其它观测及状态无关。

HMM 就是贝叶斯网络的一种——虽然它的名字里有和“马尔可夫网”一样的“马尔可夫”。对变量序列建模的贝叶斯网络又叫做动态贝叶斯网络。HMM就是最简单的动态贝叶斯网络。HMM模型在特征工程时用的多,单独作为模型时用得少,比如NLP中的标注问题等。与lstm极相似,最终的概率会收敛到均衡状态。

1.1,HMM 有三个基本问题:概率计算、学习、预测

1),概率计算问题(前向-后向算法):给定模型λ=(A,B,π)和观测序列Q={q1,q2,...,qT},计算模型λ下观测到序列Q出现的概 率P(Q|λ)。

1.1),首先介绍理论上可行但计算上不可行的直接计算法:

如果不是直接计算,还有什么办法可以算出一个观测序列出现的概率吗?当然有,那就是前向-后向算法。

前向—后向算法是一种动态规划算法。它分两条路径来计算观测序列概率,一条从前向后(前向),另一条从后向前(后向)。这两条路径,都可以分别计算观测序列出现的概率。

在实际应用中,选择其中之一来计算就可以。所以,前向-后向算法其实也可以被看作两个算法:前向算法和后向算法,它们可以分别用来求解。

1.2),前向算法:

1.3),后向算法:

2),学习问题(Bawm-Welch算法):已知观测序列Q={q1,q2,...,qT},估计模型λ=(A,B,π)的参数,使得在该模型下观测序列P(Q|λ)最大。

学习问题可分为监督问题和非监督问题:

2.1),若训练数据包含观测序列和状态序列,则HMM的学习问题非常简单,是监督学习算法。此时,直接利用大数定理的结论“频率的极限是概率”,直接给出HMM的参数估计;

2.2),若训练数据只包含观测序列,则HMM的学习问题需要使用EM算法求解,是非监督学习算法。此时,一般使用Baum-Welch算法。

极大化上述L函数,使用拉格朗日函数,FOC=0解方程组,分别可以求得π、a、b的值:

3),预测问题(近似算法,Viterbi算法):给定模型λ=(A,B,π)和观测序列Q={q1,q2,...,qT},求给定观测序列条件概率P(I|Q,λ) 最大的状态序列I。

3.1),近似算法:直接在每个时刻t时候最优可能的状态作为最终的预测状态,使用下列公式计算概率值。公式如下

3.2),Viterbi算法:Viterbi算法实际是用动态规划的思路求解HMM预测问题,求出概率最大的“路径”,每条“路径”对应一个状态序列。

HMM的常见应用主要用于进行特征提取的场景中或者数据标注的场景中。

2,隐马尔可夫模型应用:hmmlearn、GMM-HMM

2.1,hmmlearn:pip install hmmlearn

Hmmlearn实现了三种HMM模型类,按照观测状态是连续状态还是离散状态,可以分为两类。GaussianHMM和GMMHMM是连续观测状态的HMM模型,而MultinomialHMM是离散观测状态的模型;对于连续观测状态的HMM模型,GaussianHMM类假设观测状态符合高斯分布,而GMMHMM类则假设观测状态符合混合高斯分布。

2.2,GMM-HMM与DNN-HMM:

GMM和DNN都拟合一个观测序列的概率分布,然后作为HMM的观测状态概率矩阵B;从HMM指向GMM或DNN的箭头是指,HMM的某个状态的观察状态概率由某一个GMM或DNN的某一个输出节点决定;两者最主要的差别是利用了DNN 代替了 GMM 实现了观察状态概率输出;后验概率可以看作是监督学习中,根据观察值去求状态值,而DNN是有根据观察值去逆向传播的过程,属于监督学习;另外经过softmax输出,就能得到后验概率了。

在左图GMM-HMM 中,HMM 的观察概率由GMM 生成。一个状态 X 由一个 GMM表征,同时相邻的GMM 之间没有很强的相关性;GMM 作为生成模型,是可以直接生成似然概率P(Y| X),这个似然概率就是HMM 所需要的观察概率。

在第二张图 DNN-HMM 中,HMM 的观察概率由DNN 生成的后验概率P(X |Y)经贝叶斯公式转换得到。DNN的一个输出节点对应一个状态,由于 DNN 的输入是多帧,所以DNN 的建模具有很强的上下文信息,并且引入了非线性的效果,这在语音建模上有显著作用;DNN 作为判别模型,是直接对给定的观察序列Y 后状态的分布进行建模,也是监督学习,输出的是后验概率P(X |Y),需要转为似然概率P(X |Y)。

相同点:HMM 的状态初始概率和状态转移概率都不变,HMM 仍然是对时序进行建模。

3,code:

代码语言:javascript
复制
# https://github.com/Jesselinux/Mining-Algorithms
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-06-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 MiningAlgorithms 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档