1. HMM的概念

  • 时序概率模型,生产不可观测的状态序列和观测序列

定义

λ=(A,B,π)\lambda = (A, B ,\pi)

  • Q= 状态集合={q1,q2,...,qN}\{ q_1, q_2, ... ,q_N\}……….N:状态数
  • V= 可能的观测集合= {v1,v2,...,vM}\{v_1,v_2, ... , v_M\}………. M:观测数
  • I=长度为T的状态序列=(i1,i2,i3,......,iT)(i_1,i_2,i_3,......,i_T)
  • O=对应的观测序列=(o1,o2,......,oT)(o_1,o_2, ...... ,o_T)

  • A = 状态转移矩阵

    A=[aij]N∗NA=[a_{ij}]_{N*N}

    其中 aij=P(it+1=qj|it=qi)a_{ij}=P(i_{t+1}=q_j | i_t=q_i) ,,,,,,,,, i=1,…,N; j=1,….,N
    t时刻处于状态qiq_i的条件转移到t+1时刻状态q_j的概率

  • B= 观测概率矩阵

    B=[bj(k)]N∗MB=[b_j(k)]_{N*M}

其中bj(k)=P(ot=vk|it=qj)...........k=1,2,3,...M;j=1,2......,Nb_j(k) = P(o_t=v_k | i_t=q_j) ........... k=1,2,3,...M; j=1,2......,N
t时刻处于状态qjq_j的条件下的观测vkv_k的概率

  • π\pi 是初始状态概率向量:

π=π(πi)\pi = \pi(\pi_i)

t=1t=1时刻处于状态qiq_i的概率


2. HMM的建模假设

  • 齐次马尔科夫性假设

P(it|it−1,ot−1,......,i1,o1)=P(it|it−1)P(i_t | i_{t-1},o_{t-1},......,i_1,o_1) = P(i_t|i_{t-1}) ……….. t=1,2,3,...,Tt=1,2,3,...,T

  • 观测独立假设

P(ot|iT,oT,....,i1,oi)=P(ot|it)P(o_t| i_T,o_T,....,i_1,o_i) = P(o_t|i_t)

例子

P173


3. HMM模型的三个基本问题

  • 概率计算问题:
    给定模型 λ=(A,B,π)\lambda = (A,B,\pi)和观测序列 O=(o1,...,oT)O=(o_1,...,o_T),计算模型 λ\lambda 下的观测序列OO 出现的概率 P(O|λ)P(O|\lambda)

  • 学习问题:
    已知观测序列O=(o1,...,oT)O=(o_1,...,o_T), 估计模型λ=(A,B,π)\lambda = (A,B,\pi) 的参数,使得在该模型下观测序列概率 P(O|λ)P(O|\lambda); 极大似然估计的方法

  • 预测问题
    已知模型λ=(A,B,π)\lambda = (A,B,\pi)和观测序列O=(o1,...,oT)O=(o_1,...,o_T) ;求给定观测序列条件概率 P(I|O)P(I|O) 最大的状态序列 I=(ii,i2,...,iT)I=(i_i,i_2, ... , i_T); 给定观测序列,求最可能的状态序列


4. 概率计算问题

已知: λ=(A,B,π)\lambda = (A,B,\pi)和观测序列 O=(o1,...,oT)O=(o_1,...,o_T),
求解: λ\lambda 下的观测序列OO 出现的概率 P(O|λ)P(O|\lambda)

直接计算

  1. 状态序列 I={i1,i2,...,iT}I=\{i_1,i_2,...,i_T\}的概率是

    P(I|λ)=πi1ai1i2ai2i3....aiT−1iTP(I|\lambda) = \pi_{i_1}a_{i_1 i_2} a_{i_2 i_3} .... a_{i_{T-1} i_T}

  2. 对于固定的状态序列 I={i1,i2,...,iT}I=\{i_1,i_2,...,i_T\}下, 观测序列 O=(o1,...,oT)O=(o_1, ... ,o_T)的概率是 P(O|I,λ)P(O|I,\lambda)

    P(O|I,λ)=bi1(o1)bi2(o2)...biT(oT)P(O|I, \lambda) = b_{i_1}(o_1)b_{i_2}(o_2) ... b_{i_T}(o_T)

  3. O 和 I 的联合概率

    P(O|I,λ)=P(O|I,λ)P(I|λ)P(O|I,\lambda) = P(O|I,\lambda) P(I|\lambda)
    =πi1bi1(o1)ai1i2bi2(o2)...aiT−1biT(oT)=\pi_{i_1} b_{i_1}(o_1)a_{i_1 i_2} b_{i_2}(o_2)... a_{i_{T-1}}b_{i_T}(o_T)

  4. 对所有的可能的状态序列II求和, 得到观测序列 O的概率 P(O|λ)P(O|\lambda)

    P(O|λ)=∑IP(O|I,λ)P(I|λ)P(O|\lambda) = \sum \limits_I P(O|I,\lambda)P(I|\lambda)
    =∑i1,i2,...,iTπi1bi1(o1)ai1i2bi2(o2)...aiT−1biT(oT)=\sum \limits_{i_1,i_2,...,i_T} \pi_{i_1} b_{i_1}(o_1)a_{i_1 i_2} b_{i_2}(o_2)... a_{i_{T-1}}b_{i_T}(o_T)

  5. 计算复杂度: O(TNT)O(TN^T)


5. 前向算法

前向概率

  • 已知:λ\lambda
  • 定义:时刻 tt 部分观测序列为 o1,o2,...,oto_1,o_2,...,o_t 且状态为 qiq_i 的概率 为前向概率

αt(i)=P(o1,o2,...,ot,it=qi|λ)\alpha_t(i) = P(o_1,o_2,...,o_t, i_t=q_i|\lambda)

前向算法

  • 输入: 隐马尔科夫模型 λ\lambda;观测序列 OO;
  • 输出:观测序列的概率 P(O|λ)P(O|\lambda)

    1. 初值:

      α1(i)=πibi(oi)\alpha_1(i) = \pi_ib_i(o_i)……… i=1,2,…,N

    2. 递推: t=1,2,…,T-1

      αt+1(i)=[∑j=1Nαt(j)αji]bj(ot+1)\alpha_{t+1}(i) = [\sum \limits_{j=1}^N \alpha_t(j) \alpha_{ji}]b_j(o_{t+1})

    3. 终止

      p(O|λ)=∑Ni=1αT(i)p(O|\lambda) = \sum_{i=1}^N \alpha_T(i)

结论

  • 每次应用前一个时刻的计算结果

复杂度

O(N2T)O(N^2T)


6 .后向算法

前向概率

  • 已知:λ\lambda
  • 定义:时刻 tt 部分观测序列为 o1,o2,...,oto_1,o_2,...,o_t 且状态为 qiq_i 的概率 为前向概率

    αt(i)=P(o1,o2,...,ot,it=qi|λ)\alpha_t(i) = P(o_1,o_2,...,o_t, i_t=q_i|\lambda)

后向概率

  • 已知:λ\lambda
  • 定义:定义时刻tt下状态为qiq_i条件下,从 t+1t+1到TT部分观测序列为ot+1,ot+2,...,oTo_{t+1},o_{t+2},...,o_T的概率是后向概率

    βt(i)=P(ot+1,ot+2,...,oT|it=qt,λ)\beta_t(i) = P(o_{t+1},o_{t+2}, ... ,o_T| i_t = q_t ,\lambda)

后向算法

  • 输入: 隐马尔科夫模型 λ\lambda;观测序列 OO;
  • 输出:观测序列的概率 P(O|λ)P(O|\lambda)

步骤1:

βT(i)=1\beta_T(i)=1 ……. i=1,2,…,N

步骤2:对于 t=T−1,T−2,...,1t= T-1,T-2,...,1

βt(i)=∑j=1Naijbj(ot+1)βt+1(j)\beta_t(i) = \sum \limits_{j=1}^N a_{ij} b_j(o_{t+1})\beta_{t+1}(j)……….. i=1, 2, 3, …, N

步骤3:

P(O|λ)=∑Ni=1πibi(oi)βi(i)P(O|\lambda) = \sum_{i=1}^N \pi_i b_i(o_i)\beta_i(i)


7. HMM的概率与期望

* 给定 λ\lambda 和观测 O,在 tt 时刻处于qiq_i 的概率

γt(i)=P(it=qi|O,λ)\gamma_t(i) = P(i_t = q_i | O,\lambda)

γt(i)=P(it=qi|O,λ)=P(it=qi,O|λ)P(O|λ)\gamma_t(i) = P(i_t = q_i | O, \lambda) = \frac{P(i_t=q_i, O| \lambda)}{P(O| \lambda)}

  因为:

αt(i)βt(i)=P(it=qi,O|λ)\alpha_t(i) \beta_t(i) = P(i_t = q_i ,O| \lambda)

=>

γi(t)=αt(i)βt(i)P(O|λ)=αt(i)βt(i)∑j=1Nαt(i)βt(j)\gamma_i(t) = \frac{\alpha_t(i)\beta_t(i)}{P(O|\lambda)} = \frac{\alpha_t(i)\beta_t(i)}{\sum \limits_{j=1}^N {\alpha_t(i)\beta_t(j)}}

* 给定模型 λ\lambda 和观测 OO, 在时刻 tt 处于状态 qiq_i 且在时刻 t+1t+1 处于qjq_j 的概率

ξt(i,j)=P(it=qi,it+1=qj|O,λ)\xi_t(i ,j) = P(i_t=q_i,i_{t+1}=q_j | O,\lambda)

前向后向概率计算 =>

ξt(i,j)=P(it=qi,it+1=qj,O|λ)P(O|λ)=P(it=qi,it+1=qj,O|λ)∑i=1N∑j=1NP(it=qi,it+1=qj,O|λ)\xi_t(i ,j) =\frac{P(i_t=q_i, i_{t+1} = q_j, O | \lambda)}{P(O| \lambda)} =\frac{P(i_t=q_i, i_{t+1} = q_j, O | \lambda)}{\sum\limits _{i=1}^N \sum\limits_{j=1}^NP(i_t=q_i,i_{t+1}=q_j ,O |\lambda)}
=αt(i)aijbj(Ot+1)βt+1(j)∑i=1N∑j=1Nαt(i)aijbj(ot+1)βt+1(j)= \frac{\alpha_t(i) a_{ij} b_j(O_{t+1})\beta_{t+1}(j)}{\sum\limits_{i=1}^N \sum\limits_{j=1}^N \alpha_t(i)a_{ij} b_j(o_{t+1}) \beta_{t+1}(j)}

* 期望

  1. 在观测O下状态 ii 出现的期望

    ∑Tt=1γt(i)\sum_{t=1}^T \gamma_t(i)

  2. 在观测O下由状态 ii 转移的期望值

    ∑t=1T−1γt(i)\sum\limits_{t=1}^{T-1}\gamma_t(i)

  3. 在观测O下,由状态ii 转移到 状态 jj的期望值

    ∑t=1T−1ξt(i,j)\sum\limits_{t=1}^{T-1}\xi_t(i ,j)

机器学习:HMM:基础相关推荐

  1. 大福利!Google机器学习零基础在线课程发布,免费!有中文版!

    作者 | Leo 新的学习资源来了!刚刚,谷歌上线了人工智能学习网站 Learn with Google AI,并推出了机器学习在线课程,免费!而且还有中文版! 传送门: "机器学习速成课程 ...

  2. 为什么用Go编写机器学习的基础架构,而不是Python?

    2020-02-14 12:35:39 全文共2626字,预计学习时长8分钟 来源:blog.sina Python是机器学习项目中最流行的语言,这点是毋庸置疑的. 虽然像R语言.C++和Julia这 ...

  3. 干货|机器学习零基础?不要怕,吴恩达课程笔记第三周!逻辑回归与正则

    吴恩达Coursera机器学习课系列笔记 课程笔记|吴恩达Coursera机器学习 Week1 笔记-机器学习基础 干货|机器学习零基础?不要怕,吴恩达机器学习课程笔记2-多元线性回归 1 Logis ...

  4. WAIC | 九章云极方磊:Hypernets——自动化机器学习的基础框架

    在 WAIC 2021 AI 开发者论坛上,九章云极 DataCanvas 董事长方磊发表主题演讲<Hypernets:自动化机器学习的基础框架>,在演讲中,他主要介绍了 Hypernet ...

  5. ​为什么用Go编写机器学习的基础架构,而不是Python?

    全文共2626字,预计学习时长8分钟 来源:blog.sina Python是机器学习项目中最流行的语言,这点是毋庸置疑的. 虽然像R语言.C++和Julia这样的程序语言有其特有的使用群体与用例,使 ...

  6. 微软剑桥研究院院长Christopher Bishop:机器学习的基础是什么?

    大数据文摘授权转载自微软研究院Al头条 我们正处在人工智能革命的过程中,越来越多的人开始认识到人工智能的强大力量.在这篇访谈中,微软剑桥研究院院长Christopher Bishop博士将为大家介绍现 ...

  7. AI 应用研究 “淹没” 基础研究现象明显,应加强人工智能机器学习的基础研究

    文章目录 一.前言 二.主要内容 三.总结 一.前言 从下棋的 AlphaGo 到预测蛋白质结构的 AlphaFold,从画画的 DALL·E 2 到聊天的 ChatGPT,这些或曾红极一时,或正风头 ...

  8. 机器学习线性代数基础

    机器学习线性代数基础 线性代数作为数学的一个分支,广泛用于科学和工程中.然而,因为线性代数主要是面向连续数学,而非离散数学,所以很多计算机科学家很少接触它.握好线性代数对于理解和从事机器学习算法相关工 ...

  9. 机器学习的基础图表!

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:Alan Morrison,编译:机器之心 四大会计师事务所之一的 ...

  10. 收藏 | 机器学习的基础图表

    来源:机器之心本文约3400字,建议阅读10+分钟本文为你介绍机器学习的基本概念原理和常见算法. 四大会计师事务所之一的普华永道(PwC)发布了多份解读机器学习基础的图表,其中介绍了机器学习的基本概念 ...

最新文章

  1. boost::math::skew_normal用法的测试程序
  2. 数列分段II(信息学奥赛一本通-T1436)
  3. 【linux】kali 创建应用程序桌面图标(以burpsuite为例)
  4. POJ 2031 Building a Space Station
  5. 单片机魔法编程百度云_[2020][欧美][喜剧][魔法教母]高清资源百度云,高清1080P资源在线!...
  6. Thinkpad p15 gen1安装双系统遇到的问题
  7. ConceptDraw使用Rapid Draw简化流程图教程指南
  8. [转载]CAST-CONVERT两个函数进行类型转换时的异同点
  9. HTML5期末大作业:我的家乡网站设计——我的家乡-绿城之都-南宁(9页) HTML+CSS+JavaScript 大学生简单个人静态HTML网页设计作品
  10. Android -结束当前activity并返回上一个activity
  11. keil设置c语言字体大小,Keil uVision4怎么放大字体?放大字体和关键字标注颜色方法介绍...
  12. if else python格式_python 基本的if_else使用
  13. 计算机数据恢复试题,数据恢复半期考试试题答案.doc
  14. 请求示例curl获取电商商品详情数据API接口,批量采集
  15. SpringCloud Netflix的核心组件
  16. 服务器内存 知乎_内存的差距——服务器内存和普通PC内存的区别
  17. Nginx+Keepalived+LVS集群实战
  18. android校园通软件论文,基于Android平台的校园通掌上系统的设计与实现
  19. 大众点评成立推广事业部,帮助本地商户建立高效创新的营销体系
  20. 电脑蓝屏该如何给电脑重装系统

热门文章

  1. 强强联合!蚂蚁金服与新炬网络战略合作,共同致力于国产数据库的技术推广和生态建设
  2. 吴恩达深度学习——人脸识别与神经风格转换
  3. linux+电音制作软件,如何在Linux DAW上愉快的使用常见的FX插件?
  4. 数学建模:传染病模型
  5. 小程序实现扫描二维码带着参数跳转到另外一个页面,实现对mysql数据库访问,并通过表格形式实现
  6. Unity3D 游戏资源提取工具
  7. Unity3D实现AB包加载资源
  8. 《算法图解》---笔记
  9. LitePal的使用——Android开源数据库
  10. drools规则引擎介绍