前言

隐马尔科夫模型有三个基本问题:概率计算问题,学习问题,预测问题。本博客介绍学习问题的监督学习算法和非监督学习算法(EM算法)。阅读本文前请先学习基本概念。

什么是学习问题

学习问题是一直观测序列 O=(o1,o2,...,oT) O=(o_1,o_2,...,o_T),估计模型 λ=(A,B,π) \lambda=(A,B,\pi)参数,使得在该模型下观测序列概率 P(O|λ) P(O|\lambda)最大。

如果训练数据是观测序列和对应的状态序列,由监督学习实现;如果观测数据只有观测序列,由非监督学习实现。

监督学习方法

训练数据包括S个观测序列和与观测序列对应的状态序列对 {(O1,I1),(O2,I2),...,(OS,IS)} \{(O_1,I_1),(O_2,I_2),...,(O_S,I_S)\},利用极大似然估计法来估计隐马尔科夫模型参数。

首先,解释一下什么是极大似然估计。

极大似然估计

极大似然估计,又被称之为最大似然估计(Maximum Likelihood
Estimate,MLE),通俗地来说,就是利用已知样本结果信息,反推最有可能(最大概率)导致样本结果出现的模型参数。一句话总结:模型已定,参数未知。

对参数进行推断,称之为“似然”,得到最可能的模型参数,称之为“最大似然估计”

举一两个生活的例子(o( ̄︶ ̄)o):

  • 你在路上看到一个长发背影,第一反应这个人很大可能是个女生而不是男生。因为女生留长发的可能性要比男生大。
  • 你中午吃了海鲜然后拉肚子了,第一反应是中午吃海鲜过敏或者不卫生。

举一个比较专业的例子:(知乎上看到的)

  • 有一个箱子,里面只有黑白两种球,一共100个球,但黑白球各自数量不知。每次抽取一球然后放回重新抽取。重复试验100次后,发现有70次抽取到的是白球,剩下30次是黑球。问:箱子里白球的数量最可能是多少?
    从一个“门外汉”的角度,第一反应是70。从专业的数学角度,假设抽取了70次白球,30次黑球的概率用 P(样本结果|Model) P(样本结果|Model)表示,第i次抽样结果用 xi x_i表示,p表示一次抽样结果是白球的概率,则

    P(样本结果|Model)  =P(x1,x2,...,x100|Model)=P(x1|Model)P(x2|Model)...P(x100|Model=p70(1−p)30

    \begin {aligned} P(样本结果|Model)&=P(x_1,x_2,...,x_{100}|Model) \\\ &=P(x_1|Model)P(x_2|Model)...P(x_100|Model \\\ &=p^{70}(1-p)^{30} \end {aligned} 最后的 p70(1−p)30 p^{70}(1-p)^{30}就是我们得到的似然函数。似然函数最大时(即样本出现的概率最大),此时对应的p值就是我们要找的模型参数。对该似然函数求导,令导数为0,得到p对应值为0.7。

关于似然函数,需要知道:

  • 极大似然估计中采样需要的样本必须满足独立同分布假设。如本例中,每次抽取都是独立同分布的。
  • 极大似然估计是用来解决优化问题,它的核心是让所采样的样本出现概率最大。具体而言,先求出似然函数,后求导得到似然函数最大值,从而得到模型参数。

监督学习具体算法

1.转移概率 aij a_{ij}的估计:

aij=Aij∑Nj=1Aij

a_{ij}=\frac{A_{ij}}{\sum_{j=1}^NA_{ij}} 其中, Aij A_{ij}代表样本中时刻t处于状态i时刻t+1处于状态j的频数。
2.观测状态 bj(k) b_{j}(k)的估计:

bj(k)=Bjk∑Mk=1Bjk

b_j(k)=\frac{B_{jk}}{\sum_{k=1}^MB_{jk}} 其中, Bjk B_{jk}代表状态为j观测为k的频数。
3.初始状态概率 πi \pi_i的估计为S个样本中初始状态为 qi q_i的频率。

Baum-Welch算法(EM算法)

稍微说一下什么是拉格朗日乘子法

拉格朗日乘子法:将约束条件函数与原函数联立,从而求出使原函数取得极值的各个变量的解。

后面我就不详细写了,这位大神写的太好了隐马尔可夫模型之Baum-Welch算法详解

后续

还是那句话,数学,数学啊,得好好补数学了。。。。

隐马尔科夫模型——学习算法相关推荐

  1. 隐马尔科夫模型 (HMM) 算法介绍及代码实现

    Table of Contents Hidden Markov Model (隐马尔科夫模型) 定义 基本问题 前向算法 算法流程 实现代码 后向算法 算法流程 实现代码 Viterbi算法 算法流程 ...

  2. 隐马尔科夫模型(HMM)算法的理解与超详细推导

    今天看了徐亦达教授的HMM讲解,感觉有所收获,并将隐马尔科夫模型算法的推导整理了一下,帮助大家一起理解这个算法.首先我们通过一个股票的案例来引入这个算法,我们来看看这个股票行情和涨跌观测值的一个状态图 ...

  3. 《统计学习方法》第10章 隐马尔科夫模型 HMM算法 纯Python代码实现 + 前后向算法矩阵形式 + 课后习题答案

    理论知识:<统计学习方法>第10章 隐马尔科夫模型 一.HMM算法矩阵写法 前向算法 P(O∣λ)=πTBo1ABo2ABo3⋯ABoT(1,1,1)TP(O| \lambda) = \p ...

  4. HMM隐马尔科夫模型 学习总结

    隐马尔可夫模型(Hidden Markov Model,简称HMM)是结构最简单的动态贝叶斯网(dynamic Bayesian network),这是一种著名的有向图模型,主要用于时序数据建模,在语 ...

  5. 隐马尔科夫模型 Viterbi算法 Python实现

    已知初始状态概率向量 pi,状态转移概率矩阵 P,发射概率矩阵 B,求观察序列为 O 的条件下状态序列为 Q 的概率.代码如下: def HMM_ProCond(pi, P, B, Q, O):Q, ...

  6. 隐马尔科夫模型c#语言算法实现,HMM学习最佳范例四:隐马尔科夫模型

    四.隐马尔科夫模型(Hidden Markov Models) 1.定义(Definition of a hidden Markov model) 一个隐马尔科夫模型是一个三元组(pi, A, B). ...

  7. HMM学习笔记2 隐马尔科夫模型与前向算法

    一 序 本系列文章摘自 52nlp(我爱自然语言处理: http://www.52nlp.cn/),原文链接在 HMM 学习最佳范例,有大佬做了二次整理,参见:https://blog.csdn.ne ...

  8. 隐马尔科夫模型C#语言算法实现

    开发工具: Visual Studio v2010 .NET Framework 4 Client Profile 版本历史: V1.1 2011年06月09日 修正UMDHMM在Baum-Welch ...

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

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

最新文章

  1. 格式化verilog/systemverilog代码插件
  2. 用html CSS实现砸金蛋,css3+js 实现砸金蛋效果
  3. Linux下使用popen()执行shell命令
  4. 网页如何调用flash的方法
  5. java ListMapString,Object遍历的方法
  6. 关于如何获得网站集宿主网站集地址的问题
  7. 罗永浩推出新一代坚果手机,比AI亮眼的是AV能力
  8. Linux 命令(32)—— grep 命令
  9. SUSE Labs Con 2018有感
  10. Linux之特殊权限
  11. PHP 三联截骨,Steel骨盆三联截骨联合手术治疗大龄儿童发育性髋关节脱位疗效观察...
  12. 20181215《linux设备驱动开发详解》宋宝华 学习笔记(1)
  13. linux卸载+oracle客户端,官方的linux上卸载oracle步骤
  14. Linux 压测工具 stress 安装下载
  15. shel脚本基础系列(一)变量
  16. WebGIS开发入门
  17. 私域流量sop社群运营规划工作计划表格方案模板2022
  18. 11届蓝桥杯青少年组C++全国赛高级组
  19. OSCP-Pelican(Exhibitor、gcore提权)
  20. 红旗Linux的特点和应用范围,三大特性!红旗Linux Desktop 7体验

热门文章

  1. 八边形类 Octagon
  2. java学习(方法)
  3. Q版京剧脸谱来喽——小生
  4. 医疗和牙科3D打印的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  5. 关于计算机游戏的英语读法,[计算机游戏用英语怎么说]电脑游戏用英语怎么说...
  6. 国产电机驱动芯片TMI8870应用在智能马桶翻盖/翻圈上
  7. 程序员面试、算法研究、编程艺术、红黑树、机器学习5大系列集锦(转)
  8. 二级域名三级域名设置方法
  9. matlab和ansys联合优化,MATLAB与HFSS联合建模与仿真优化详细介绍
  10. XV6操作系统make报错Makefile:192: *** recipe commences before first target. Stop. 的解决方法