首先,如果我们知道观测序列以及其对应的状态序列 ,则可以直接通过频率计算初始状态概率 (π),状态转移概率 (A) ,以及生成观测概率 (B):

以  为例,统计状态序列中由状态 i 转换为 j 的个数  ,除以所有状态转移个数的和即可得到相应状态转移概率。

但是在语音识别的HMM模型中,我们往往没有观测状态对应的隐藏状态序列,此时应该如何求解参数呢?

有两种方法:Viterbi学习算法(硬对齐)、Baum-Welch学习算法(软对齐)

给定观测序列,求解参数使得最大

此时相较于文章开始的问题,状态序列未知,相当于是一个含有隐含变量的参数估计问题,这就需要EM算法了。

EM算法全称Expectation Maximization算法,即期望最大化算法。EM算法是机器学习十大方法之一, 由Arthur P. Dempster,Nan Laird和Donald Rubin 1977年正式提出,是一种在已知部分相关变量的情况下,估计未知变量的迭代算法。

EM的算法流程相对而言比较简单,其步骤如下:

step1 :初始化分布参数

step2 :重复E、M步骤直到收敛:

a) E步骤-期望值计算:根据参数的假设值,给出未知变量的期望估计,应用于缺失值。

b) M步骤-最大化计算:根据未知变量的估计值,给出当前的参数的极大似然估计。

1.Viterbi学习算法(硬对齐)

首先需要初始化一个HMM初始模型参数

算法步骤:

1)通过Viterbi算法求解最优路径。(硬对齐)

2)此时获得一个新的观测序列以及其对应的状态序列,则可以计算得到新的模型参数

3)重复1)2)直至收敛。

2.Baum-Welch学习算法(软对齐)

对于给定的隐藏状态 I 和观测状态 O ,求参数  的对数极大似然估计函数为:

给定模型  和观测变量 O,出现隐藏状态 I 的条件概率为:

则定义:Q函数是完全数据的对数似然函数关于给定模型参数和观测变量的前提下对隐变量的条件概率分布期望(E-step),接下来只需要对它极大化。

第一个  表示要求的极大化参数, 第二个  表示参数当前的估计值,每一次的迭代都是在求 Q函数的极大值。

其中后半部分:

在这里,对于估计参数来说分母就是常量了。

新的Q函数:

其中:

对Q函数进行对数展开得:

观察即可发现,括号内的三项即为我们想要求解的参数,其互相之间为加法,故求总体极大值,只需要分别最大化就可以了 (M-step) 。

以第一项为例:

在条件下求极值,拉格朗日乘子法!

再将求得参数带回Q函数迭代计算,参数变化很小时,结束迭代,返回参数

Viterbi学习算法称为硬对齐是因为在EM过程中,状态序列非0即1(即计算出的序列是固定的)。而Baum-Welch学习算法并未确定某一个具体的状态,而是计算其极大似然,一帧以一定的概率归属于某一状态,故称为软对齐。

HMM——参数学习问题(求解参数)相关推荐

  1. [云炬python3玩转机器学习笔记] 2-4批量学习、咋西安学习、参数学习和非参数学习

    机器学习的其他分类: 在线学习(online learining)和批量学习(离线学习 batch learning/offline learning): 批量学习(之前没有具体说明的话,都可以用批量 ...

  2. 【机器学习】隐马尔可夫模型及其三个基本问题(三)模型参数学习算法及python实现

    [机器学习]隐马尔可夫模型及其三个基本问题(三)模型参数学习算法及python实现 一.一些概率与期望值的计算 二.非监督学习方法(Baum-Welch算法) 三.python实现 隐马尔可夫模型参数 ...

  3. 【论文精读】时序逻辑推理之反向传播参数学习 Backpropagation for Parametric STL

    前言:借这里汇报一下毕业论文的进度,结构学习部分的论文和代码已经完成98%,现在回头搞参数学习发现现在掌握的方法都不能很好地契合毕设的整体结构.因此现在飞速地多看几篇,争取本周完工. 主要参考文献: ...

  4. 什么是迁移学习?迁移学习的超参数有哪些?

    什么是迁移学习?迁移学习的超参数有哪些? 目录 什么是迁移学习?迁移学习的超参数有哪些? 什么是迁移学习?

  5. FALCON组装参数学习

    FALCON组装参数学习 (2017-06-27 13:15:32) 转载▼   分类: 三代 ############################################ pa_DBsp ...

  6. Dubbo -- 系统学习 笔记 -- 示例 -- 参数验证

    Dubbo -- 系统学习 笔记 -- 目录 示例 想完整的运行起来,请参见:快速启动,这里只列出各种场景的配置方式 参数验证 参数验证功能是基于JSR303实现的,用户只需标识JSR303标准的验证 ...

  7. cnn 反向传播推导_深度学习中的参数梯度推导(三)下篇

    前言 在深度学习中的参数梯度推导(三)中篇里,我们总结了CNN的BP推导第一步:BP通过池化层时梯度的计算公式.本篇(下篇)则继续推导CNN相关的其他梯度计算公式. 注意:本文默认读者已具备深度学习上 ...

  8. linux下perl命令行参数,Perl One-Liners | Perl命令行学习1 -e参数

    注:本内容需要点的perl编程基础,最好是读过<perl语言入门>. 本系列是自己平常学习工作中的总结,每一个实例均为我为了讲解而设置的,自己试过的,如有错误,望能见谅 Perl 命令行参 ...

  9. oracle中sga的合理设置,oracle学习:SGA_MAX_SIZE参数设置

    oracle学习:SGA_MAX_SIZE参数设置 时间:2017-07-11 来源: SGA_MAX_SIZE这个参数顾名思义,它用来控制SGA 使用虚拟内存 的最大大小,这里的虚拟内存的含义可能会 ...

最新文章

  1. java web 调用hadoop_Java及Web程序调用hadoop2.6
  2. 九、中缀表达式转为后缀表达式
  3. python类的继承与多态_python类的继承和多态
  4. 关于c++中map插入元素的问题
  5. 数据挖掘与数据化运营实战. 3.8 用户(买家、卖家)分层模型
  6. java 线程 获取消息_获取java线程中信息
  7. epoll哪些触发模式_5.epoll的水平触发和边缘触发
  8. 滤波器设计(二)模拟到数字
  9. 在Debian下安装LAMP
  10. Spring-01-IOC控制反转/DI依赖注入
  11. ES6阮一峰笔记部分对象新增方法、字符串的扩展和新增方法
  12. 离散数学学习笔记——集合的符号表示
  13. Android 调用第三方地图类App (高德 百度 百度网页版)
  14. 动态页面抓取超级指南_减少页面重量的完整指南
  15. 盯盯拍CEO 罗勇现身云栖大会 畅谈车联网生态并发布全新产品mini3
  16. Redis为什么是单线程?高并发响应快?
  17. select 检索数据
  18. PYTHON-小白入门-学习顺序
  19. 阿里云大佬叮嘱我务必要科普这个 Elasticsearch API
  20. Unity 在设备上材质显示正常,但是Editor下材质显示为紫色

热门文章

  1. 读书笔记:跃迁,成为高手的技术
  2. c++处处有杀机,不小心就要掉坑里
  3. 生活风水系列(更避邪常识)之一
  4. 关于麒麟系统的兼容性问题
  5. 机智云代码移植_【机智云Gokit3测评】设备接入-步骤二:程序移植
  6. 智慧路灯合作伙伴生态大会(深圳站)
  7. 带你了解什么是中断以及外部中断案例分析
  8. 2048小游戏项目开发代码
  9. 数据挖掘中的 10 大算法
  10. 在ubunut 12.04 server 上部署 edx