机器学习算法拾遗:(七)隐马尔科夫模型(前向后向算法、鲍姆-韦尔奇算法、维特比算法)
1、隐马尔科夫模型HMM
隐马尔科夫模型的图结构如下
从上图中主要有两个信息:一是观测变量xi 仅仅与与之对应的状态变量yi 有关;二是当前的状态变量yi 仅仅与它的前一个状态变量yi-1 有关。
隐马尔科夫模型是由初始概率分布,状态转移概率分布,以及观测概率分布确定的。设Q是所有可能的状态的集合,V是所有可能的观测的集合(注意:这里的状态集合和观测集合中的个数和序列的长度T是不一样的,每个时间端的状态和观测值都是依照概率生成的,也就意味着在一个序列里面会存在状态和观测值相同的情况)。具体集合表达式如下,其中N是可能的状态数,M是可能的观测数:
假设此时存在一个长度为T的序列,I为其状态序列,O为其观测序列(在HMM模型中每个序列都会包含状态序列和观测序列),序列的表达式如下:
在这里我们引入三组参数来描述我们的模型:
状态转移概率矩阵,,状态转移概率矩阵A的表达式如下(矩阵的维度和状态集合的个数是一样的)
其中aij 描述的是在t 时刻从状态qi 转移到t+1 时刻的状态qj 的概率,其条件概率表达式如下
观测概率矩阵,观测概率矩阵B的表达式如下(矩阵的行数和状态集合的个数相等,列数和观测集合的个数相等)
其中bj(k) 描述的是在t 时刻处于状态qj 的条件下生成观测值vk 的概率(在某一时刻下,从状态输出观测值的可能性有k种),其表达式如下
初始状态概率,初始状态概率π 的表达式如下(整个模型的入口是从确定状态i1 开始的,因此需要初始化该值)
其中πi 就是在t = 1 时刻处于状态qi 的概率
给出了上述三个参数之后,隐马尔科夫模型λ 就可以用它们来表示
在隐马尔科夫模型中作出了两个假设来简化模型:
1)齐次马尔科夫性假设,即假设隐藏的马尔科夫链在任意时刻t 的状态只和前一时刻状态有关,与其他时刻的状态无关(而在深度模型中都会假设和前面多个时刻的状态有关,如LSTM;或者和之前的所有状态相关,如RNN。事实上很多应用场景中都不止是和前一个状态相关),这也就简化了模型的复杂度,因此我们可以获得如下的表达式
2)观测独立性假设,即假设任意时刻的观测只依赖于该时刻的马尔科夫链的状态,与其他观测和状态无关,因此可以获得如下表达式
结合上面两个假设,我们可以将我们的模型中所有变量的联合概率分布给出,这就是所谓的 “马尔科夫链”
当确定了模型的三个参数后,我们可以按照如下规则生成观测值序列
输入的是HMM的模型λ=(A, B, π),观测序列的长度T
输出是观测序列O={o1, o2, ... oT}
生成的过程如下:
1)根据初始状态概率分布π,生成隐藏状态i1
2) 令 t = 1
3)按照隐藏状态it 的观测状态分布生成观察状态ot
4)按照隐藏状态it 的状态转移概率分布产生隐藏状态it+1
5)令t = t + 1;如果t < T,则转至第3 步,否则终止。所有的ot 一起形成观测序列O={o1, o2, ...oT}
隐马尔科夫模型的三个基本问题
1) 评估观察序列概率。即给定模型λ = (A, B, π)和观测序列O={o1, o2,... oT},计算在模型λ下观测序列O出现的概率P(O|λ)。这个问题的求解需要用到基于动态规划的前向后向算法。
2)模型参数学习问题。即给定观测序列O={o1, o2,... oT},估计模型λ=(A, B π)的参数,使该模型下观测序列的条件概率P(O|λ)最大。这个问题的求解需要用到基于EM算法的鲍姆-韦尔奇算法。
3)预测问题,也称为解码问题。即给定模型λ=(A, B, π)和观测序列O={o1, o2,... oT},求给定观测序列条件下,最可能出现的对应的状态序列,这个问题的求解需要用到基于动态规划的维特比算法。
4、维特比算法
维特比算法是一种预测算法,在给定了模型参数λ和观测序列O的前提下去预测最可能出现的状态序列。关于隐马尔科夫模型预测的算法除了维特比算法之外,还有一种近似算法。
近似算法:近似算法的核心思想是在每个时刻t选择在该时刻最有可能出现的状态it*,从而得到一个近似状态序列。这种算法的优点是算法简单易理解,缺点是每次都是求解局部最优(贪心原则),不能保证全局最优。具体算法流程如下:
给定模型λ和观测序列O,在t 时刻的状态qi 的概率为(在前向后向算法中有推导):
在每一时刻t 最有可能的状态it* 是
这样就可以得到近似的状态序列
维特比算法和前向后向算法一样,也是利用动态规划来解隐马尔科夫的预测问题。在前向后向算法中是对t 时刻转移到t+1 时刻的所有可能的状态相加,因为是求边缘概率 P(O|π);而在维特比算法中是对t 时刻转移到t+1 时刻的状态求最大概率,即求最大的P(O, S|π)(注意:在这里求t 时刻的最大值也是和t - 1的时刻相关联的。无关的化只是贪心法)。
首先定义两个变量δ和Ψ。定义在时刻t 状态为i 的所有单个路径中概率最大值(这里事实上就是前向算法中的前向概率的最大值)
由定义可得变量δ的递推公式
定义在时刻t 状态为i 的所有单个路径中概率最大的路径的第i -1 个节点(在这里和前一时刻关联起来)
维特比算法的具体过程如下:
1)初始化
2)递归
3)终止
4)最优路径回溯,求得最优路径
机器学习算法拾遗:(七)隐马尔科夫模型(前向后向算法、鲍姆-韦尔奇算法、维特比算法)相关推荐
- 隐马尔科夫模型(前向后向算法、鲍姆-韦尔奇算法、维特比算法)
隐马尔科夫模型(前向后向算法.鲍姆-韦尔奇算法.维特比算法) 概率图模型是一类用图来表达变量相关关系的概率模型.它以图为表示工具,最常见的是用一个结点表示一个或一组随机变量,结点之间的变表是变量间的概 ...
- 机器学习算法总结(七)——隐马尔科夫模型(前向后向算法、鲍姆-韦尔奇算法、维特比算法)...
概率图模型是一类用图来表达变量相关关系的概率模型.它以图为表示工具,最常见的是用一个结点表示一个或一组随机变量,结点之间的变表是变量间的概率相关关系.根据边的性质不同,可以将概率图模型分为两类:一类是 ...
- 隐马尔科夫模型-前向算法
转载自 隐马尔科夫模型-前向算法 隐马尔科夫模型-前向算法 在该篇文章中讲了隐马尔科夫模型(HMM)一基本模型与三个基本问题 隐马尔科夫模型-基本模型与三个基本问题,这篇文章总结一下隐马尔科夫链(H ...
- 【深度】从朴素贝叶斯到维特比算法:详解隐马尔科夫模型
详解隐马尔科夫模型 作者:David S. Batista 选自:机器之心 本文首先简要介绍朴素贝叶斯,再将其扩展到隐马尔科夫模型.我们不仅会讨论隐马尔科夫模型的基本原理,同时还从朴素贝叶斯的角度讨论 ...
- 【火炉炼AI】机器学习044-创建隐马尔科夫模型
[火炉炼AI]机器学习044-创建隐马尔科夫模型 (本文所使用的Python库和版本号: Python 3.6, Numpy 1.14, scikit-learn 0.19, matplotlib 2 ...
- 【机器学习】【隐马尔可夫模型-3】后向算法:算法详解+示例讲解+Python实现
0.前排提示 csdn有些数学公式编辑不出来,所以本博用容易书写的表达式来表示专业数学公式,如: (1) 在本博客中用α<T>(i)来表示 (2)在本博客中用[i=1, N]∑来表示 注 ...
- python地图匹配_基于隐马尔科夫模型(HMM)的地图匹配(Map-Matching)算法
1. 摘要 本篇博客简单介绍下用隐马尔科夫模型(Hidden Markov Model, HMM)来解决地图匹配(Map-Matching)问题.转载请注明网址. 2. Map-Matching(MM ...
- 隐马尔科夫模型、三个基本问题、三个训练算法
参考一篇"机器学习研究会"的文章与宗庆后的<统计自然语言模型>,督促自己回顾一下HMM模型知识为面试做准备. 这次学习会讲了隐马尔科夫链,这是一个特别常见的模型,在自然 ...
- 机器学习-- > 隐马尔科夫模型(HMM)
博客内容将首发在微信公众号"跟我一起读论文啦啦",上面会定期分享机器学习.深度学习.数据挖掘.自然语言处理等高质量论文,欢迎关注! 本篇博文将详细总结隐马模型相关知识,理解该模型有 ...
最新文章
- 部署laravel报错:No supported encrypter found. The cipher and / or key length are invalid.
- Ubuntu 使用root 帐号开启 SSH 登录
- 10行Python代码自动清理电脑内重复文件
- 【maven】Missing artifact javax.jms:jms:jar:1.1:compile
- 文献学习(part80-B)--Do we Need Hundreds of Classifiers to Solve Real World Classification Problems?
- docker: Error response from daemon: driver failed programming external connectivity
- 初探EntityFramework——空EF设计器模型
- 使用vue开发一个双向展开的卷轴组件
- [Remoting FAQ]Loading a Remoting Host On IIS得到BadImageFormatException
- 潜安 | 分享最新最前沿的IT教程
- JavaScript通过style只能获取内联 状态的样式
- 上海大华条码称代码_上海大华条码秤简易说明书
- 非凡的键盘钢琴音源 XLN Audio Addictive Keys Complete 1.1.8 WiN-MAC
- godaddy购买域名
- 同时采集抖音里多个视频,并批量添加相同的背景图片
- 测角误差估计算法matlab,Harris角点检测 及 Matlab实验
- Unity录音并保存成wav文件或者byte[]字节数组
- 使用Hutool处理RSA等非对称加密
- 那段记忆中的声音:单式评书再现江湖背后的AI技术
- Android Base64的加密与解密
热门文章
- 液体效果,制作喷溅的液态裙子教程
- 爱普生Epson WF110彩色无线便携式打印机错误E-12维护箱已到使用寿命
- 四氧化三锰(CAS1317 35 7)的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
- jadeclipse安装
- 抢椅子游戏java_年会互动游戏《抢凳子教案》
- 公钥密码学的基本原理
- 乐学偶得《零基础Python入门编程全栈量化AI》课程238课的详细完整代码怎么样实现?靠谱答案来啦啦啦╭(╯^╰)╮
- python是开源的.它可以被移植_免费搜尔雅网课答案的公众号
- 量子力学的群星闪耀时
- 服务器冗余电源维修图纸,服务器的冗余电源技术