HMM 前向算法(Forward Algorithm)详细解释参考: http://www.52nlp.cn/hmm-learn-best-practices-five-forward-algorithm-1

http://www.52nlp.cn/hmm-learn-best-practices-five-forward-algorithm-2

http://www.52nlp.cn/hmm-learn-best-practices-five-forward-algorithm-3

http://www.52nlp.cn/hmm-learn-best-practices-five-forward-algorithm-4

后向算法(Backward Algorithm详细解释参考:http://www.52nlp.cn/hmm-learn-best-practices-seven-forward-backward-algorithm-1

http://www.52nlp.cn/hmm-learn-best-practices-seven-forward-backward-algorithm-2

http://www.52nlp.cn/hmm-learn-best-practices-seven-forward-backward-algorithm-3

http://www.52nlp.cn/hmm-learn-best-practices-seven-forward-backward-algorithm-4

http://www.52nlp.cn/hmm-learn-best-practices-seven-forward-backward-algorithm-5

HMM模型参数解是HMM模型使用中的最复杂的一个问题。

HMM模型参数求解概述

HMM模型参数求解根据已知的条件可以分为两种情况。

第一种情况较为简单,就是我们已知D个长度为T的观测序列和对应的隐藏状态序列,即是已知的,此时我们可以很容易的用最大似然来求解模型参数。

假设样本从隐藏状态转移到的频率计数是,那么状态转移矩阵求得为:

  , 

假设样本隐藏状态为且观测状态为的频率计数是,那么观测状态概率矩阵为:

  , 

假设所有样本中初始隐藏状态为的频率计数为C(i),那么初始概率分布为:

可见第一种情况下求解模型还是很简单的。但是在很多时候,我们无法得到HMM样本观察序列对应的隐藏序列,只有D个长度为T的观测序列,即是已知的,此时我们能不能求出合适的HMM模型参数呢?这就是我们的第二种情况,也是我们本文要讨论的重点。它的解法最常用的是鲍姆-韦尔奇算法,其实就是基于EM算法的求解,只不过鲍姆-韦尔奇算法出现的时代,EM算法还没有被抽象出来,所以我们本文还是说鲍姆-韦尔奇(Baun-Welch)算法。

Baum-Welch算法是为了解决HMM的参数估计问题而提出的,而且是没有标注也就是HMM的状态序列未知的参数估计问题。具体来说,就是已知观测序列O=(o1,o2,...,oT),估计模型参数λ=(A,B,π),使得在该模型下观测序列概率P(O|λ)最大。由于状态序列未知,因此这可以看做是一个含有隐变量的参数估计问题,解决这一问题的经典算法就是EM算法。Baum-Welch算法就是EM算法在隐马尔科夫模型学习中的具体体现。下面简单叙述一下该算法。

Baun-Welch算法原理

鲍姆-韦尔奇算法原理既然使用的就是EM算法的原理,那么我们需要在E步求出联合分布基于条件概率的期望,其中为当前的模型参数,然后再M步最大化这个期望,得到更新的模型参数λ。接着不停的进行EM迭代,直到模型参数的值收敛为止。

 首先来看看E步,当前模型参数为, 联合分布基于条件概率的期望表达式为:

在M步,我们极大化上式,然后得到更新后的模型参数如下:

通过不断的E步和M步的迭代,直到收敛。下面我们来看看鲍姆-韦尔奇算法的推导过程。

Baun-Welch算法的推导

我们的训练数据为,其中任意一个观测序列,其对应的未知的隐藏状态序列表示为:.

首先看鲍姆-韦尔奇算法的E步,我们需要先计算联合分布的表达式如下:

我们的E步得到的期望表达式为:

在M步我们要极大化上式。由于,而是常数,因此我们要极大化的式子等价于:

我们将上面的表达式带入我们的极大化式子,得到的表达式如下:

我们的隐藏模型参数,因此下面我们只需要对上式分别对A,B,Π求导即可得到我们更新的模型参数.

首先我们看看对模型参数Π的求导。由于Π只在上式中括号里的第一部分出现,因此我们对于Π的极大化式子为:

由于还满足,因此根据拉格朗日子乘法,我们得到要极大化的拉格朗日函数为:

其中,为拉格朗日系数。上式对求偏导数并令结果为0, 我们得到:

令i分别等于从1到N,从上式可以得到N个式子,对这N个式子求和可得:

从上两式消去,得到的表达式为:

由前向概率的定义可得:

因此最终我们在M步的迭代公式为:

现在我们来看看A的迭代公式求法。方法和Π的类似。由于A只在最大化函数式中括号里的第二部分出现,而这部分式子可以整理为:

由于还满足。和求解类似,我们可以用拉格朗日子乘法并对求导,并令结果为0,可以得到的迭代表达式为:

给定模型λ和观测序列O,在时刻t处于状态,且时刻t+1处于状态的概率记为:

可以由前向后向概率来表示为:

从而最终我们得到的表达式如下:

因此可得表达式:

有了的迭代公式,我们就可以迭代求解HMM模型参数了。

Baun-Welch算法流程总结

这里我们概括总结下鲍姆-韦尔奇算法的流程。

输入: D个观测序列样本

输出:HMM模型参数

1)随机初始化所有的

2) 对于每个样本,用前向后向算法计算

3)  更新模型参数:

4) 如果的值已经收敛,则算法结束,否则回到第2)步继续迭代。

    以上就是Baun-Welch算法的整个过程。

语音识别学习日志 2019-7-15 语音识别基础知识准备4 {Baun-Welch算法}相关推荐

  1. 语音识别学习日志 2019-7-17 语音识别基础知识准备6 {维特比算法(Viterbi Algorithm)}

    HMM 维特比算法(Viterbi Algorithm)详细解释参考:http://www.52nlp.cn/hmm-learn-best-practices-six-viterbi-algorith ...

  2. Premiere Pro CC 2019 Essential Training: The Basics Premiere Pro CC 2019基本培训:基础知识 Lynda课程中文字幕

    Premiere Pro CC 2019 Essential Training: The Basics 中文字幕 Premiere Pro CC 2019基本培训:基础知识 中文字幕Premiere ...

  3. window计算机日志分析详解,系统基础知识:筛选Windows日志与借助Windows日志分析故障...

    系统基础知识:筛选Windows日志与借助Windows日志分析故障 我们最关心的事情,一定是我们Windows 7系统的安全,我们学习Windows事件查看器的最终目的,也是希望通过WIndows事 ...

  4. 语音识别基础知识_语音识别_CTI论坛

    语音辨识基础知识 近 年 来 , 由 于 电 脑 在 软 件 上 的 长 足 进 步 , 类 似 电 视 影 集 霹 雳 游 侠 中 李 麦 克 与 霹 雳 车 伙 计 之 间 能 够 使 用 人 类 ...

  5. 语音识别学习日志 2019-7-16 语音识别基础知识准备5 {决策树算法(ID3、 C4.5、 CART)}

    决策树算法(ID3. C4.5. CART) 决策树的定义 决策树学习采用的是自顶向下的递归方法,其基本思想是以信息熵为度量构造一颗熵值下降最快的树,到叶子节点处,熵值为0.其具有可读性.分类速度快的 ...

  6. 语音识别学习日志 2019-7-14 语音识别基础知识准备3 {Kmean算法分析与HMM(Hidden Markov Model)模型}

    Kmean算法 聚类算法 对于"监督学习"(supervised learning),其训练样本是带有标记信息的,并且监督学习的目的是:对带有标记的数据集进行模型学习,从而便于对新 ...

  7. 语音识别学习日志 2019-7-13 语音识别基础知识准备 1{语音基础知识}

    线性预测 线性预测(linear prediction)根据随机信号过去的p个已知抽样值序列为Sn-1,Sn-2,-Sn-p,预测现时样值Sn的估计值的方法.预测公式是一个线性方程,所以这种预测称为线 ...

  8. 语音识别学习日志 2019-7-14 语音识别基础知识准备2 {EM算法与混合高斯模型(Gaussian mixture model, GMM)}

    https://blog.csdn.net/lin_limin/article/details/81048411会对GMM和EM做详细介绍 本文参考: http://www.ituring.com.c ...

  9. 语音识别学习日志 2018-7-19 语音识别基础知识准备(5)[Viterbi算法]

    Viterbi算法是一个通用的求序列最短距离的动态规划算法.HMM模型的解码可以用Viterbi算法完成,解码过程可以描述为给定HMM的模型和观测序列,求给定观测模型下最可能出现的状态序列. HMM最 ...

最新文章

  1. 第四章 DOM节点操作
  2. Serverless 工程实践 | 快速搭建 Kubeless 平台
  3. 【线程】线程基本函数
  4. 亲历阿里巴巴五轮面试分享
  5. Mysql --- 索引
  6. python打平处理嵌套list
  7. 求最大公约数欧几里得算法
  8. 整理arm的一些概念(ARM7、ARM9、ARM11、Cortex-A、Cortex-R、Cortex-M的区别)
  9. 统计学习方法第一章思维导图
  10. python机器学习记录4and5 支持向量机
  11. 《鸡啄米C++编程入门系列》系列技术文章整理收藏
  12. python:判断3个数不相等
  13. 【考研经验】双非二战山东大学计算机技术初试第二经验贴
  14. 调侃腾讯和360的小段子
  15. WSDM'23 | 工业界搜推广nlp论文整理
  16. FPGA niosII 视频笔记
  17. Apache关联Weblogic启动时爆错!libstdc++.so.5
  18. Android音乐播放器的设计与实现
  19. JavaScript:世界上最被误解的语言
  20. 视频教程-系统集成项目管理工程师考试历年真题讲解-软考

热门文章

  1. 怎么查看父子级目录linux,如何查找linux中特定父目录的所有文件?
  2. Linux命令终端提示符显示-bash-4.2#解决方法【转载】
  3. mysql修改密码1820_mysql5.7初始化密码报错ERROR1820(HY000):YoumustresetyourpasswordusingALTERUSERstateme...
  4. python excel操作库,可能是全网最完整的 Python 操作 Excel库总结!
  5. 【LeetCode笔记】301. 删除无效的括号(Java、DFS、字符串)
  6. linux 重定向 不换行,Ada:重定向到stdout时省略换行符(测试Put)
  7. python库路径_如何设置本地python库目录/ PYTHONPATH?
  8. pythonsuper多重继承_Python super()函数使用及多重继承
  9. 武汉大学信息管理学院java上机考试_java上机试题
  10. java保存文件到linux指定目录_怎么使用java编程实现linux下全部文件目录的遍历