隐马尔可夫模型 | 赛尔笔记

栏目: 编程工具 · 发布时间: 7年前

内容简介:说到一.马尔可夫模型(Markov模型)

隐马尔可夫模型 (HMM) 是可用于标注问题的统计学习模型,描述由隐藏的马尔可夫链随机生成观测序列的过程,属于 生成模型

说到 隐马尔可夫模型 (HMM) ,我们先来了解下 马尔可夫模型(Markov模型) ,Markov模型是一种统计模型,广泛地应用在语音识别,词性自动标注,音字转换,概率文法等各个自然语言处理的应用领域。

一.马尔可夫模型(Markov模型)

隐马尔可夫模型 | 赛尔笔记 是随机变量序列,其中每个随机变量的取值在有限集 隐马尔可夫模型 | 赛尔笔记 ,称为状态空间。Markov特征是:

  • 有限历史假设 隐马尔可夫模型 | 赛尔笔记

  • 时间不变性 隐马尔可夫模型 | 赛尔笔记

如果 隐马尔可夫模型 | 赛尔笔记 具有这些特征,那么这个随机变量序列称为一个马尔可夫过程(链)。

Markov的形式化表示:一个马尔可夫模型是一个三元组 隐马尔可夫模型 | 赛尔笔记 ,其中 隐马尔可夫模型 | 赛尔笔记 是状态的集合, 隐马尔可夫模型 | 赛尔笔记 是初始状态的概率, 隐马尔可夫模型 | 赛尔笔记 是状态间的转移概率。具体例子用图形表示如下,

隐马尔可夫模型 | 赛尔笔记

相应的 隐马尔可夫模型 | 赛尔笔记 分别是,

隐马尔可夫模型 | 赛尔笔记

隐马尔可夫模型 与马尔可夫模型 不同的是各个状态(或者状态转移弧)都有一个输出,但是状态是不可见的

最简单的情形:不同的状态只能有不同的输出,

隐马尔可夫模型 | 赛尔笔记

增加一点灵活性:不同的状态,可以输出相同的输出,

隐马尔可夫模型 | 赛尔笔记

再增加一点灵活性:输出在状态转移中进行,

隐马尔可夫模型 | 赛尔笔记

最大的灵活性:在状态转移中以特定的概率分布输出,

隐马尔可夫模型 | 赛尔笔记

这就得到了我们要讲的 隐马尔可夫模型

二. 隐马尔可夫模型 (HMM)

1.HMM的形式化定义

HMM是一个五元组 隐马尔可夫模型 | 赛尔笔记 ,其中 隐马尔可夫模型 | 赛尔笔记 是状态的集合, 隐马尔可夫模型 | 赛尔笔记 是输出字符的集合, 隐马尔可夫模型 | 赛尔笔记 是初始状态的概率, 隐马尔可夫模型 | 赛尔笔记 是状态转移的概率, 隐马尔可夫模型 | 赛尔笔记 是状态转移时输出字符的概率。

一个HMM的例子用图形表示如下,

隐马尔可夫模型 | 赛尔笔记

2. 隐马尔可夫模型 的三个基本问题

  • 评估问题 :给定一个模型  隐马尔可夫模型 | 赛尔笔记 ,如何高效地计算某一输出字符序列的概率 隐马尔可夫模型 | 赛尔笔记

  • 解码问题 :给定一个输出字符序列 隐马尔可夫模型 | 赛尔笔记 ,和一个模型 隐马尔可夫模型 | 赛尔笔记 ,如何确定产生这一序列概率最大的状态序列 隐马尔可夫模型 | 赛尔笔记

  • 学习问题 :给定一个输出字符的序列 隐马尔可夫模型 | 赛尔笔记 ,如何调整模型的参数使得产生这一序列的概率最大?

3. 评估问题的解法

隐马尔可夫模型 | 赛尔笔记

已知 隐马尔可夫模型 | 赛尔笔记隐马尔可夫模型 | 赛尔笔记 ,计算 隐马尔可夫模型 | 赛尔笔记 ?我们先来化简一下 隐马尔可夫模型 | 赛尔笔记

隐马尔可夫模型 | 赛尔笔记

  • 方案一:直接计算法

隐马尔可夫模型 | 赛尔笔记

穷举所有可能的 隐马尔可夫模型 | 赛尔笔记 的情况,求和得到 隐马尔可夫模型 | 赛尔笔记 ,但是时间复杂度太高,为 隐马尔可夫模型 | 赛尔笔记

  • 方案二:前向算法(Forward algorithm)

隐马尔可夫模型 | 赛尔笔记

使用动态规划使得算法更高效,定义一个 前向变量 表示到时刻 隐马尔可夫模型 | 赛尔笔记 部分观测序列为 隐马尔可夫模型 | 赛尔笔记 且状态为 隐马尔可夫模型 | 赛尔笔记 的概率为向前概率,记为 隐马尔可夫模型 | 赛尔笔记 ,即

隐马尔可夫模型 | 赛尔笔记

则可以递推得到,

隐马尔可夫模型 | 赛尔笔记

前向过程算法 如下,

隐马尔可夫模型 | 赛尔笔记

一个简单的前向过程例子如下,

隐马尔可夫模型 | 赛尔笔记

  • 方案三:向后算法(backward algorithm)

同样的道理,我们定义在时刻 隐马尔可夫模型 | 赛尔笔记 状态为 隐马尔可夫模型 | 赛尔笔记 的条件下,从 隐马尔可夫模型 | 赛尔笔记隐马尔可夫模型 | 赛尔笔记 的部分观测序列为 隐马尔可夫模型 | 赛尔笔记 的概率为后向概率,记作 隐马尔可夫模型 | 赛尔笔记 ,即

隐马尔可夫模型 | 赛尔笔记

直接采用递推即可得到后向算法。

后向算法 过程如下,

  • 1. 初始化

隐马尔可夫模型 | 赛尔笔记

  • 2. 推导

隐马尔可夫模型 | 赛尔笔记

  • 3. 总和

隐马尔可夫模型 | 赛尔笔记

4. 解码问题的解法

隐马尔可夫模型 | 赛尔笔记

给定一个输出字符序列 隐马尔可夫模型 | 赛尔笔记 ,和一个模型 隐马尔可夫模型 | 赛尔笔记 ,如何确定产生这一序列概率最大的状态序列?

隐马尔可夫模型 | 赛尔笔记

我们定义 隐马尔可夫模型 | 赛尔笔记 表示为在 隐马尔可夫模型 | 赛尔笔记 时刻到达状态 隐马尔可夫模型 | 赛尔笔记 ,输出字符 隐马尔可夫模型 | 赛尔笔记 时,输出前面 隐马尔可夫模型 | 赛尔笔记 个字符的最可能路径的概率,

隐马尔可夫模型 | 赛尔笔记

则有

隐马尔可夫模型 | 赛尔笔记

这样我们就得到了 维特比算法(Viterbi Algorithm), 算法过程如下:

隐马尔可夫模型 | 赛尔笔记

一个简单的viterbi算法举例如下,

隐马尔可夫模型 | 赛尔笔记

5.  学习问题解法

隐马尔可夫模型 | 赛尔笔记

给定一个输出字符的序列 隐马尔可夫模型 | 赛尔笔记 ,如何调整模型的参数使得产生这一序列的概率最大?

隐马尔可夫模型 | 赛尔笔记

隐马尔可夫模型 的学习,根据训练数据是包括观测数据和对应的状态序列还是只有观测序列,可以分为有监督学习和无监督学习,其中无监督的学习即是利用EM算法思想的Baum-Welch算法。

  • 方案一:有监督学习

假设训练数据包含 隐马尔可夫模型 | 赛尔笔记 个长度相同的观测序列和对应的状态序列 隐马尔可夫模型 | 赛尔笔记那么可以利用 极大似然估计法 来估计 隐马尔可夫模型 的参数 隐马尔可夫模型 | 赛尔笔记 ,具体估计方法如下:

  • 1. 转移概率 隐马尔可夫模型 | 赛尔笔记 的估计

设样本中时刻 隐马尔可夫模型 | 赛尔笔记 处于状态 隐马尔可夫模型 | 赛尔笔记 时刻 隐马尔可夫模型 | 赛尔笔记 处于状态 隐马尔可夫模型 | 赛尔笔记 的频数为 隐马尔可夫模型 | 赛尔笔记 ,那么状态转移概率 隐马尔可夫模型 | 赛尔笔记 的估计是

隐马尔可夫模型 | 赛尔笔记

  • 2. 观测概率 隐马尔可夫模型 | 赛尔笔记 的估计

设样本中状态为 隐马尔可夫模型 | 赛尔笔记 并观测为 隐马尔可夫模型 | 赛尔笔记 的频数是 隐马尔可夫模型 | 赛尔笔记 ,那么状态为 隐马尔可夫模型 | 赛尔笔记 观测为 隐马尔可夫模型 | 赛尔笔记 的概率 隐马尔可夫模型 | 赛尔笔记 的估计是

隐马尔可夫模型 | 赛尔笔记

  • 3. 初始状态概率 隐马尔可夫模型 | 赛尔笔记 的估计 隐马尔可夫模型 | 赛尔笔记隐马尔可夫模型 | 赛尔笔记 个样本中初始状态为 隐马尔可夫模型 | 赛尔笔记 的概率

由于监督学习的方法需要使用训练数据,而人工标注的代价往往很高,有时会采用非监督学习的方法。

  • 方案二:无监督学习——Baum-Welch算法

假设给定的训练数据只包含 隐马尔可夫模型 | 赛尔笔记 个长度为 隐马尔可夫模型 | 赛尔笔记 的观测序列 而没有对应的状态序列 隐马尔可夫模型 | 赛尔笔记 ,目标是学习 隐马尔可夫模型 隐马尔可夫模型 | 赛尔笔记 的参数。我们将观测序列数据看做观测数据 隐马尔可夫模型 | 赛尔笔记状态序列数据看做不可观测数据 隐马尔可夫模型 | 赛尔笔记 ,那么 隐马尔可夫模型 事实上是一个包含隐变量的概率模型

隐马尔可夫模型 | 赛尔笔记

它的参数学习可以由EM算法实现。

(算法推导过程)

(1) 确定完全数据的对数似然函数所有观测数据写成 隐马尔可夫模型 | 赛尔笔记所有的隐数据写成 隐马尔可夫模型 | 赛尔笔记 ,完全数据是 隐马尔可夫模型 | 赛尔笔记 。完全数据的对数似然函数是 隐马尔可夫模型 | 赛尔笔记

(2) EM算法的E步:求 隐马尔可夫模型 | 赛尔笔记 函数的 隐马尔可夫模型 | 赛尔笔记

隐马尔可夫模型 | 赛尔笔记

其中 隐马尔可夫模型 | 赛尔笔记 隐马尔可夫模型 参数的当前估计值, 隐马尔可夫模型 | 赛尔笔记 是要极大化的 隐马尔可夫模型 参数。因为,

隐马尔可夫模型 | 赛尔笔记

所以 隐马尔可夫模型 | 赛尔笔记 函数可以拆分写成

隐马尔可夫模型 | 赛尔笔记

式中求和都是对所有训练数据的序列总长度 隐马尔可夫模型 | 赛尔笔记 进行的。

(3) EM算法的M步:极大化 隐马尔可夫模型 | 赛尔笔记 函数 隐马尔可夫模型 | 赛尔笔记 ,求模型参数 隐马尔可夫模型 | 赛尔笔记

由于要极大化的参数在 隐马尔可夫模型 | 赛尔笔记 函数式子中单独的出现在三个项中,所以只需要对各项分别极大化。第一项可以写成,

隐马尔可夫模型 | 赛尔笔记

注意到 隐马尔可夫模型 | 赛尔笔记 满足 隐马尔可夫模型 | 赛尔笔记 ,利用拉格朗日乘子法,写出拉格朗日函数

隐马尔可夫模型 | 赛尔笔记

对其求导数并令结果为0,

隐马尔可夫模型 | 赛尔笔记

得到

隐马尔可夫模型 | 赛尔笔记

隐马尔可夫模型 | 赛尔笔记 求和得到 隐马尔可夫模型 | 赛尔笔记  

隐马尔可夫模型 | 赛尔笔记

再代入上式子得到,

隐马尔可夫模型 | 赛尔笔记

第二项可以写成

隐马尔可夫模型 | 赛尔笔记

类似于第一项,利用具有约束条件 隐马尔可夫模型 | 赛尔笔记 的拉格朗日乘子法恶意求出

隐马尔可夫模型 | 赛尔笔记

第三项可以写成,

隐马尔可夫模型 | 赛尔笔记

同样利用拉格朗日乘子法,约束条件是 隐马尔可夫模型 | 赛尔笔记 ,注意只有在 隐马尔可夫模型 | 赛尔笔记隐马尔可夫模型 | 赛尔笔记隐马尔可夫模型 | 赛尔笔记 的偏导数才不为0,以 隐马尔可夫模型 | 赛尔笔记 表示,得到,

隐马尔可夫模型 | 赛尔笔记

-----

为了简便,我们使用一下式子简化, 给定模型 隐马尔可夫模型 | 赛尔笔记 和观测 隐马尔可夫模型 | 赛尔笔记 ,在时刻 隐马尔可夫模型 | 赛尔笔记 处于状态 隐马尔可夫模型 | 赛尔笔记 的概率记 隐马尔可夫模型 | 赛尔笔记

有如下公式:

隐马尔可夫模型 | 赛尔笔记

给定模型 隐马尔可夫模型 | 赛尔笔记 和观测 隐马尔可夫模型 | 赛尔笔记 ,在时刻 隐马尔可夫模型 | 赛尔笔记 处于状态 隐马尔可夫模型 | 赛尔笔记 的概率记 :

隐马尔可夫模型 | 赛尔笔记

有如下推倒:

隐马尔可夫模型 | 赛尔笔记

我们结合上文以及EM算法可以推导如下公式

隐马尔可夫模型 | 赛尔笔记

Baum-Welch算法过程:

输入:观测数据 隐马尔可夫模型 | 赛尔笔记

输出: 隐马尔可夫模型 参数 隐马尔可夫模型 | 赛尔笔记

1. 初始化。对 隐马尔可夫模型 | 赛尔笔记 ,选取 隐马尔可夫模型 | 赛尔笔记 得到模型 隐马尔可夫模型 | 赛尔笔记

2. 递推。对 隐马尔可夫模型 | 赛尔笔记

隐马尔可夫模型 | 赛尔笔记

3. 终止。得到模型参数 隐马尔可夫模型 | 赛尔笔记


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Data Mining

Data Mining

Jiawei Han、Micheline Kamber、Jian Pei / Morgan Kaufmann / 2011-7-6 / USD 74.95

The increasing volume of data in modern business and science calls for more complex and sophisticated tools. Although advances in data mining technology have made extensive data collection much easier......一起来看看 《Data Mining》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

MD5 加密
MD5 加密

MD5 加密工具

SHA 加密
SHA 加密

SHA 加密工具