隐马尔科夫模型——学习算法
前言
隐马尔科夫模型有三个基本问题:概率计算问题,学习问题,预测问题。本博客介绍学习问题的监督学习算法和非监督学习算法(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}的估计:
a_{ij}=\frac{A_{ij}}{\sum_{j=1}^NA_{ij}} 其中, Aij A_{ij}代表样本中时刻t处于状态i时刻t+1处于状态j的频数。
2.观测状态 bj(k) b_{j}(k)的估计:
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算法详解
后续
还是那句话,数学,数学啊,得好好补数学了。。。。
隐马尔科夫模型——学习算法相关推荐
- 隐马尔科夫模型 (HMM) 算法介绍及代码实现
Table of Contents Hidden Markov Model (隐马尔科夫模型) 定义 基本问题 前向算法 算法流程 实现代码 后向算法 算法流程 实现代码 Viterbi算法 算法流程 ...
- 隐马尔科夫模型(HMM)算法的理解与超详细推导
今天看了徐亦达教授的HMM讲解,感觉有所收获,并将隐马尔科夫模型算法的推导整理了一下,帮助大家一起理解这个算法.首先我们通过一个股票的案例来引入这个算法,我们来看看这个股票行情和涨跌观测值的一个状态图 ...
- 《统计学习方法》第10章 隐马尔科夫模型 HMM算法 纯Python代码实现 + 前后向算法矩阵形式 + 课后习题答案
理论知识:<统计学习方法>第10章 隐马尔科夫模型 一.HMM算法矩阵写法 前向算法 P(O∣λ)=πTBo1ABo2ABo3⋯ABoT(1,1,1)TP(O| \lambda) = \p ...
- HMM隐马尔科夫模型 学习总结
隐马尔可夫模型(Hidden Markov Model,简称HMM)是结构最简单的动态贝叶斯网(dynamic Bayesian network),这是一种著名的有向图模型,主要用于时序数据建模,在语 ...
- 隐马尔科夫模型 Viterbi算法 Python实现
已知初始状态概率向量 pi,状态转移概率矩阵 P,发射概率矩阵 B,求观察序列为 O 的条件下状态序列为 Q 的概率.代码如下: def HMM_ProCond(pi, P, B, Q, O):Q, ...
- 隐马尔科夫模型c#语言算法实现,HMM学习最佳范例四:隐马尔科夫模型
四.隐马尔科夫模型(Hidden Markov Models) 1.定义(Definition of a hidden Markov model) 一个隐马尔科夫模型是一个三元组(pi, A, B). ...
- HMM学习笔记2 隐马尔科夫模型与前向算法
一 序 本系列文章摘自 52nlp(我爱自然语言处理: http://www.52nlp.cn/),原文链接在 HMM 学习最佳范例,有大佬做了二次整理,参见:https://blog.csdn.ne ...
- 隐马尔科夫模型C#语言算法实现
开发工具: Visual Studio v2010 .NET Framework 4 Client Profile 版本历史: V1.1 2011年06月09日 修正UMDHMM在Baum-Welch ...
- 【深度】从朴素贝叶斯到维特比算法:详解隐马尔科夫模型
详解隐马尔科夫模型 作者:David S. Batista 选自:机器之心 本文首先简要介绍朴素贝叶斯,再将其扩展到隐马尔科夫模型.我们不仅会讨论隐马尔科夫模型的基本原理,同时还从朴素贝叶斯的角度讨论 ...
最新文章
- 格式化verilog/systemverilog代码插件
- 用html CSS实现砸金蛋,css3+js 实现砸金蛋效果
- Linux下使用popen()执行shell命令
- 网页如何调用flash的方法
- java ListMapString,Object遍历的方法
- 关于如何获得网站集宿主网站集地址的问题
- 罗永浩推出新一代坚果手机,比AI亮眼的是AV能力
- Linux 命令(32)—— grep 命令
- SUSE Labs Con 2018有感
- Linux之特殊权限
- PHP 三联截骨,Steel骨盆三联截骨联合手术治疗大龄儿童发育性髋关节脱位疗效观察...
- 20181215《linux设备驱动开发详解》宋宝华 学习笔记(1)
- linux卸载+oracle客户端,官方的linux上卸载oracle步骤
- Linux 压测工具 stress 安装下载
- shel脚本基础系列(一)变量
- WebGIS开发入门
- 私域流量sop社群运营规划工作计划表格方案模板2022
- 11届蓝桥杯青少年组C++全国赛高级组
- OSCP-Pelican(Exhibitor、gcore提权)
- 红旗Linux的特点和应用范围,三大特性!红旗Linux Desktop 7体验
热门文章
- 八边形类 Octagon
- java学习(方法)
- Q版京剧脸谱来喽——小生
- 医疗和牙科3D打印的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
- 关于计算机游戏的英语读法,[计算机游戏用英语怎么说]电脑游戏用英语怎么说...
- 国产电机驱动芯片TMI8870应用在智能马桶翻盖/翻圈上
- 程序员面试、算法研究、编程艺术、红黑树、机器学习5大系列集锦(转)
- 二级域名三级域名设置方法
- matlab和ansys联合优化,MATLAB与HFSS联合建模与仿真优化详细介绍
- XV6操作系统make报错Makefile:192: *** recipe commences before first target. Stop. 的解决方法