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)最优路径回溯,求得最优路径

  

机器学习算法拾遗:(七)隐马尔科夫模型(前向后向算法、鲍姆-韦尔奇算法、维特比算法)相关推荐

  1. 隐马尔科夫模型(前向后向算法、鲍姆-韦尔奇算法、维特比算法)

    隐马尔科夫模型(前向后向算法.鲍姆-韦尔奇算法.维特比算法) 概率图模型是一类用图来表达变量相关关系的概率模型.它以图为表示工具,最常见的是用一个结点表示一个或一组随机变量,结点之间的变表是变量间的概 ...

  2. 机器学习算法总结(七)——隐马尔科夫模型(前向后向算法、鲍姆-韦尔奇算法、维特比算法)...

    概率图模型是一类用图来表达变量相关关系的概率模型.它以图为表示工具,最常见的是用一个结点表示一个或一组随机变量,结点之间的变表是变量间的概率相关关系.根据边的性质不同,可以将概率图模型分为两类:一类是 ...

  3. 隐马尔科夫模型-前向算法

    转载自  隐马尔科夫模型-前向算法 隐马尔科夫模型-前向算法 在该篇文章中讲了隐马尔科夫模型(HMM)一基本模型与三个基本问题 隐马尔科夫模型-基本模型与三个基本问题,这篇文章总结一下隐马尔科夫链(H ...

  4. 【深度】从朴素贝叶斯到维特比算法:详解隐马尔科夫模型

    详解隐马尔科夫模型 作者:David S. Batista 选自:机器之心 本文首先简要介绍朴素贝叶斯,再将其扩展到隐马尔科夫模型.我们不仅会讨论隐马尔科夫模型的基本原理,同时还从朴素贝叶斯的角度讨论 ...

  5. 【火炉炼AI】机器学习044-创建隐马尔科夫模型

    [火炉炼AI]机器学习044-创建隐马尔科夫模型 (本文所使用的Python库和版本号: Python 3.6, Numpy 1.14, scikit-learn 0.19, matplotlib 2 ...

  6. 【机器学习】【隐马尔可夫模型-3】后向算法:算法详解+示例讲解+Python实现

    0.前排提示 csdn有些数学公式编辑不出来,所以本博用容易书写的表达式来表示专业数学公式,如: (1)  在本博客中用α<T>(i)来表示 (2)在本博客中用[i=1, N]∑来表示 注 ...

  7. python地图匹配_基于隐马尔科夫模型(HMM)的地图匹配(Map-Matching)算法

    1. 摘要 本篇博客简单介绍下用隐马尔科夫模型(Hidden Markov Model, HMM)来解决地图匹配(Map-Matching)问题.转载请注明网址. 2. Map-Matching(MM ...

  8. 隐马尔科夫模型、三个基本问题、三个训练算法

    参考一篇"机器学习研究会"的文章与宗庆后的<统计自然语言模型>,督促自己回顾一下HMM模型知识为面试做准备. 这次学习会讲了隐马尔科夫链,这是一个特别常见的模型,在自然 ...

  9. 机器学习-- > 隐马尔科夫模型(HMM)

    博客内容将首发在微信公众号"跟我一起读论文啦啦",上面会定期分享机器学习.深度学习.数据挖掘.自然语言处理等高质量论文,欢迎关注! 本篇博文将详细总结隐马模型相关知识,理解该模型有 ...

最新文章

  1. 部署laravel报错:No supported encrypter found. The cipher and / or key length are invalid.
  2. Ubuntu 使用root 帐号开启 SSH 登录
  3. 10行Python代码自动清理电脑内重复文件
  4. 【maven】Missing artifact javax.jms:jms:jar:1.1:compile
  5. 文献学习(part80-B)--Do we Need Hundreds of Classifiers to Solve Real World Classification Problems?
  6. docker: Error response from daemon: driver failed programming external connectivity
  7. 初探EntityFramework——空EF设计器模型
  8. 使用vue开发一个双向展开的卷轴组件
  9. [Remoting FAQ]Loading a Remoting Host On IIS得到BadImageFormatException
  10. 潜安 | 分享最新最前沿的IT教程
  11. JavaScript通过style只能获取内联 状态的样式
  12. 上海大华条码称代码_上海大华条码秤简易说明书
  13. 非凡的键盘钢琴音源 XLN Audio Addictive Keys Complete 1.1.8 WiN-MAC
  14. godaddy购买域名
  15. 同时采集抖音里多个视频,并批量添加相同的背景图片
  16. 测角误差估计算法matlab,Harris角点检测 及 Matlab实验
  17. Unity录音并保存成wav文件或者byte[]字节数组
  18. 使用Hutool处理RSA等非对称加密
  19. 那段记忆中的声音:单式评书再现江湖背后的AI技术
  20. Android Base64的加密与解密

热门文章

  1. 液体效果,制作喷溅的液态裙子教程
  2. 爱普生Epson WF110彩色无线便携式打印机错误E-12维护箱已到使用寿命
  3. 四氧化三锰(CAS1317 35 7)的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  4. jadeclipse安装
  5. 抢椅子游戏java_年会互动游戏《抢凳子教案》
  6. 公钥密码学的基本原理
  7. 乐学偶得《零基础Python入门编程全栈量化AI》课程238课的详细完整代码怎么样实现?靠谱答案来啦啦啦╭(╯^╰)╮
  8. python是开源的.它可以被移植_免费搜尔雅网课答案的公众号
  9. 量子力学的群星闪耀时
  10. 服务器冗余电源维修图纸,服务器的冗余电源技术