语音识别学习日志 2019-7-15 语音识别基础知识准备4 {Baun-Welch算法}
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算法}相关推荐
- 语音识别学习日志 2019-7-17 语音识别基础知识准备6 {维特比算法(Viterbi Algorithm)}
HMM 维特比算法(Viterbi Algorithm)详细解释参考:http://www.52nlp.cn/hmm-learn-best-practices-six-viterbi-algorith ...
- 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 ...
- window计算机日志分析详解,系统基础知识:筛选Windows日志与借助Windows日志分析故障...
系统基础知识:筛选Windows日志与借助Windows日志分析故障 我们最关心的事情,一定是我们Windows 7系统的安全,我们学习Windows事件查看器的最终目的,也是希望通过WIndows事 ...
- 语音识别基础知识_语音识别_CTI论坛
语音辨识基础知识 近 年 来 , 由 于 电 脑 在 软 件 上 的 长 足 进 步 , 类 似 电 视 影 集 霹 雳 游 侠 中 李 麦 克 与 霹 雳 车 伙 计 之 间 能 够 使 用 人 类 ...
- 语音识别学习日志 2019-7-16 语音识别基础知识准备5 {决策树算法(ID3、 C4.5、 CART)}
决策树算法(ID3. C4.5. CART) 决策树的定义 决策树学习采用的是自顶向下的递归方法,其基本思想是以信息熵为度量构造一颗熵值下降最快的树,到叶子节点处,熵值为0.其具有可读性.分类速度快的 ...
- 语音识别学习日志 2019-7-14 语音识别基础知识准备3 {Kmean算法分析与HMM(Hidden Markov Model)模型}
Kmean算法 聚类算法 对于"监督学习"(supervised learning),其训练样本是带有标记信息的,并且监督学习的目的是:对带有标记的数据集进行模型学习,从而便于对新 ...
- 语音识别学习日志 2019-7-13 语音识别基础知识准备 1{语音基础知识}
线性预测 线性预测(linear prediction)根据随机信号过去的p个已知抽样值序列为Sn-1,Sn-2,-Sn-p,预测现时样值Sn的估计值的方法.预测公式是一个线性方程,所以这种预测称为线 ...
- 语音识别学习日志 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 ...
- 语音识别学习日志 2018-7-19 语音识别基础知识准备(5)[Viterbi算法]
Viterbi算法是一个通用的求序列最短距离的动态规划算法.HMM模型的解码可以用Viterbi算法完成,解码过程可以描述为给定HMM的模型和观测序列,求给定观测模型下最可能出现的状态序列. HMM最 ...
最新文章
- 第四章 DOM节点操作
- Serverless 工程实践 | 快速搭建 Kubeless 平台
- 【线程】线程基本函数
- 亲历阿里巴巴五轮面试分享
- Mysql --- 索引
- python打平处理嵌套list
- 求最大公约数欧几里得算法
- 整理arm的一些概念(ARM7、ARM9、ARM11、Cortex-A、Cortex-R、Cortex-M的区别)
- 统计学习方法第一章思维导图
- python机器学习记录4and5 支持向量机
- 《鸡啄米C++编程入门系列》系列技术文章整理收藏
- python:判断3个数不相等
- 【考研经验】双非二战山东大学计算机技术初试第二经验贴
- 调侃腾讯和360的小段子
- WSDM'23 | 工业界搜推广nlp论文整理
- FPGA niosII 视频笔记
- Apache关联Weblogic启动时爆错!libstdc++.so.5
- Android音乐播放器的设计与实现
- JavaScript:世界上最被误解的语言
- 视频教程-系统集成项目管理工程师考试历年真题讲解-软考
热门文章
- 怎么查看父子级目录linux,如何查找linux中特定父目录的所有文件?
- Linux命令终端提示符显示-bash-4.2#解决方法【转载】
- mysql修改密码1820_mysql5.7初始化密码报错ERROR1820(HY000):YoumustresetyourpasswordusingALTERUSERstateme...
- python excel操作库,可能是全网最完整的 Python 操作 Excel库总结!
- 【LeetCode笔记】301. 删除无效的括号(Java、DFS、字符串)
- linux 重定向 不换行,Ada:重定向到stdout时省略换行符(测试Put)
- python库路径_如何设置本地python库目录/ PYTHONPATH?
- pythonsuper多重继承_Python super()函数使用及多重继承
- 武汉大学信息管理学院java上机考试_java上机试题
- java保存文件到linux指定目录_怎么使用java编程实现linux下全部文件目录的遍历