隐马尔科夫模型

隐马尔科夫模型

机器学习最重要的任务,是根据一些已观察到的证据(例如训练样本)来对感兴趣的未知变量(例如类别标记)进行估计和推测。概率图模型提供了一种描述框架,将学习任务归结于计算变量的概率分布,在概率模型中,利用已知变量推测未知变量的分布称为推测。具体来说,假定所有关心的变量集合为Y,可观测变量的集合为O,其他变量的集合为R,“生成式”模型考虑联合概率分布P(Y,R,O),“判别式模型”考虑条件分布P(Y,R|O),给定以组观测变量值,推断就是由P(Y,R,O)或P(Y,R|O)得到条件概率分布P(Y|O)。

直接利用概率求和规则去消去变量R显然是不可行,因为即使每个变量仅有两种取值的简单问题,其复杂度也是,另一方面,属性变量之间往往存在复杂的联系。因此概率模型的学习,即基于训练来估计变量分布的参数往往相当困难。为了便于研究高效的推断和学习算法,需有一套能简洁紧凑地表达变量之间的关系。

概率图模型是一类用图表达变量相关关系的概率模型,它以图为表示工具,最常见的是用一个结点表示一个或一组随机变量,结点之间的边表示变量间的概率相关关系,即“变量关系图”,根据边的性质不同,概率图模型大致可分为良率:第一类是使用有向无环图表示变量间的依赖关系,称为有向图模型或贝叶斯网;第二类是使用无向图表示变量间的相关关系,称为无向图模型或马尔科夫网。

隐马尔科夫模型(HMM)是结构最简单的动态贝叶斯网,这是一种著名的有向图模型,主要用于时序数据建模,在语音识别、自然语言处理等领域有广泛应用。

一、隐马尔科夫模型的基本概念

1.隐马尔科夫模型的定义

隐马尔科夫模型是关于时序的概率模型,描述由一个隐藏的马尔科夫链随机生成不可观测的状态的随机序列,再由各个状态生成一个观测从而产生观测随机序列的过程。隐藏的马尔科夫链随机生成的状态序列,称为状态序列。每个状态生成一个观测,而由此产生的观测的随机序列,称为观测序列。序列的每一个位置又可以看作是一个时刻。

隐马尔科夫模型由初始概率分布、状态转移概率分布以及观测概率分布确定。

设是所有可能的状态的集合,V是所有可能的观测集合:

其中,N是可能的状态数,M是可能的观测数

是观测长度为T的状态序列,是对应的观测序列:

A是状态转移概率矩阵:

其中

是时刻处于状态的条件下载时刻转移到状态的概率
是观测概率矩阵:

其中

是初始状态概率向量:

其中

是时刻处状态的概率

隐马尔科夫模型由初始状态概率向量、状态转移概率矩阵和观测概率矩阵决定状态序列。其中决定状态序列,决定观测序列。因此,隐马尔科夫模型可以用三元符号表示。

称为隐马尔科夫三要素:
状态转态概率矩阵与初始状态概率向量确定了隐藏的马尔科夫链,生成不可观测的状态序列。观测概率矩阵确定了如何从状态生成观测,与状态序列综合确定了如何查产生观测序列。

隐马尔科夫模型作了两个基本假设:

  1. 齐次马尔科夫假设,假设隐藏的马尔科夫链在任意时刻t的状态值依赖于前一时刻的状态,与其他时刻的状态无关,也与时刻无关
  2. 观测独立性假设,即假设任意时刻的观测只依赖于该时刻的马尔科夫链的状态,与其他观测及状态无关。

下面看一个隐马尔科夫的例子
盒子与球模型假设有4个盒子,每个盒子里都装有红、白两种颜色的球,盒子里的红、白球数由表给出

盒子 1 2 3 4
红球数 5 3 6 8
白球数 5 7 4 2

按照下面的方法抽球,产生一个球的颜色的观测序列

  • 开始,从4个盒子里以等概率随机选取1个盒子,从这个盒子里随机抽出1个球,记录其颜色,放回:
  • 然后,从当前盒子随机转移到下一个盒子,规则是:如果当前盒子1,那么下一个盒子一定是2;如果当前盒子是2或3,那么分别概率0.4或0.6,转移到左边或右边的盒子;如果当前盒子是4,那么各自以0.5的概率停留在盒子4或者转移到盒子3
  • 确定转移的盒子后,再从这个盒子里随机抽取一个球,记录其颜色,放回
  • 如此下去,得到球的颜色观测序列

在这个过程中,观测者只能观测到球的颜色序列,观测不到球是从哪个盒子里取出的,即观测不到盒子的序列。

盒子对应状态,状态集合是

球的颜色对应观测序列,观测的集合是

初始概率分布为

状态概率分布为

观测概率分布为

2.观测序列生成过程

输入:隐马尔科夫模型,观测序列长度T
输出:观测序列

  1. 按照初始状态分布产生状态
  2. 按照状态的观测概率分布生成
  3. 按照状态的状态转移概率分布产生状态,
  4. 令,如果,转步3,否则终止。

3.隐马尔科夫3个基本问题

  1. 概率计算问题。给定模型和观测序列,计算在模型下观测出现的概率
  2. 学习问题。已知预测序列,估计模型参数,使得在该模型下观测序列概率最大,即用最大似然估计的方法估计参数
  3. 预测问题,也称解码(decoding)参数。已知模型和观测序列,求给定观测序列条件概率最大状态序列。即给定观测序列,求最有可能的对应的状态序列

二、概率计算算法

1.前向算法

前向概率给定隐马尔科夫模型,定义到时刻t部分观测序列为且状态为的概率为向前概率,记作

可以递推地求得前向概率及观测序列概率

算法
输入:隐马尔科夫模型,观测序列
输出:观测序列概率

  1. 初值
  2. 递推,对,
  3. 终止

案例考虑盒子和球模型,状态集合,观测集合


设,试用前向算法计算

  1. 计算初值
  2. 递推计算
    a_2(1) =\bigg[ \sum_{i=1}^3a_1(i)a_i1\bigg]b_1(o_2) = (0.10*0.5+0.16*0.3+0.28*0.2)*0.5 = 0.077 \\ a_2(2) = \bigg[\sum_{i=1}^3 a_1(i)a_{i2}\bigg]b_2(o_2) = (0.10*0.2+0.16*0.5+0,28*0.3)*0.6 = 0.1104 \\ a_2(3) = \bigg[\sum_{i=1}^3a_1(i)a_{i3}b_3(o_2)\bigg]=(0.10*0.3+0.16*0.2+0.28*0.5)*0.3 = 0.0606 \\ a_3(1) = \bigg[\sum_{i=1}^3a_2(i)a_{i2}\bigg]b_1(o_3) = (0.077*0.5+0.1104*0.3+0.0606*0.2)*0.5 = 0.4187 \\ a_3(2) = \bigg[\sum_{i=1}^3 a_2(i)a_{i2}\bigg]b_2(o_3) = (0.077*0.2+0.1104*0.5+0.0606*0.3)*0.4 = 0.3551 \\ a_3(3) = \bigg[\sum_{i=1}^3 a_2(i)a_{i3}\bigg]b_3(o_3) = (0.077*0.3+0.1104*0.2+0.0606*0.5)*0.7 = 0.05284
  3. 终止

2.后向算法

后向算法给定隐马尔科夫模型,定义在t时刻状态为的条件下,从的部分观测序列为的概率为后向概率,记作

可以引用递归的方法得到后向概率以及观测序列概率
算法
输入:隐马尔科夫模型,观测序列
输出:观测序列概率

  1. \beta_T(i) = 1,i =1,2,\dots,N
  2. 对 ,
隐马尔科夫模型_第1张图片
前后向概率的关系.png

利用前向概率和后向概率的定义可以将观测序列概率统一写成

3.一些概率与期望的计算

利用前向概率和后向概率,可以得到关于单个状态和两个状态概率的计算公式

(1) 给定模型和观测,在时刻t处于状态的概率

记为
可以通过前向后向概率计算

由向前概率和向后概率定义可知

于是得到

(2).给定模型和观测O,在时刻t处于状态且时刻处于状态的概率

记作

可以通过前向后向概率基色



所以

(3).将和对对各时刻t求和可以得到一些有用的概率

  1. 在观测O下状态i出现的期望
  2. 在观测O下状态i转移的期望
  3. 在观测O下状态i转移到状态j的期望

三、学习算法

隐马尔科夫模型的学习,根据训练数据包括预测序列和对应的状态序列还是只有预测序列,可分别由监督学习和无监督学习实现。

1.监督学习方法

假设已给训练数据包含S个长度相同的观测序列和对应的状态序列,那么可以利用极大似然估计法来看估计隐马尔科夫模型的参数

(1)转移概率的估计

设样本中时刻处于状态时刻转移到状态j的频数为,那么状态状态转移的概率的估计是

(2)观测概率的估计

设样本中状态为并观测为的频数是,那么状态为j观测为k的概率的估计是

(3)初始状态概率的估计为S个样本初始状态为的频率

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

2.Baum-Welch算法

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

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

(1)确定完全数据的对数似然函数

所有观测数据写成,所有隐数据写成。完全数据是。完全数据的对数似然函数是

(2)EM算法的E步,求Q函数


其中,是隐马尔科夫模型参数的当前估计值,是要极大化隐马尔科夫模型参数


于是函数可以写成
Q(\lambda,\bar \lambda) = \sum_I log\, \pi_{i_1}P(O,I|\bar \lambda) + \sum_I\bigg(\sum_{t=1}^{T-1}log \,a_{i_t,i_{t+1}}\bigg)P(O,I|\bar \lambda+\sum_I \bigg( \sum_{t=1}^T log \,b_{i_t}(o_t)\bigg) P(O,I|\bar \lambda)\space(1)

式中求和项都是对所有数据的序列总长度T进行的。

(3)EM算法的M步:极大化函数求模型参数A,B,

由于要极大化式(1)中但丢地出现在3个项中所以只需对各项分别极大化

  1. 式(1)的第一项可以写成

    注意到满足约束条件,利用拉格朗日橙子法,写出拉格朗日函数

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



    对i求和得到


  2. 式(1)的第二项可以写成

    应用约束条件的拉格朗日乘子法可以求出

3.式(1)的第3项为

同样用拉格朗日乘子法,约束条件,注意,只有在时的偏导才不为0,以表示

四、预测算法

1.近似算法

近似算法的想法是,在每个时刻t选择在该时刻最有可能出现的状态,从而得到一个状态序列,并将它作为预测的结果
给定隐马尔科夫模型和观测序列O,在时刻t处于状态的概率是

在每一时刻t最有可能的状态是

从而得到状态序列
近似算法的一个优点是计算简单,其缺点是不能保证预测状态整体上是最有可能的状态序列,因为预测的状态序列可能有实际不发生的部分。事实上,上述办法得到的状态序列中可能存在转移概率为0的相邻状态,即对某些时。尽管如此,近似算法仍然是有用的

2.维特比算法

维特比算法实际上是用动态规划(dynamic programming)解隐马尔科夫模型预测问题,即用动态规划求解概率最大路径(最优路径)。这时一条路径对应着一个状态序列。

根据动态规划原理,最优路径有这样的特性:如果最优路径在时刻t通过结点,那么这一条路径从结点到终点的部分路径,对于从到的所有可能的部分路径来说,必须是最优的。因为假如不是这样,那么从到就有另一条更好的部分路径存在,如果把它和从到达的部分路径连起来,就会形成一条比原来的路径更优的路径,这是矛盾的。依据这一原理,我们只需从时刻t=1开始,递推地计算时刻t状态为各部分路径的最大概率,直至得到时刻t=T状态为i各条路径的最大概括。时刻t=T的最大概率即为最优路径的概率,最优路径的终结点也同时得到,之后,为了找出最优路径的各个结点,从终结点开始,由后向前逐步得到结点,得到最优路径。这就是维特比算法

维特比算法
输入:模型和观测序列
输出:最优路径
1.初始化


2.递推,对

3.终止

4.最优路径回溯,对

求得最优路径

你可能感兴趣的:(隐马尔科夫模型)