统计学习方法读书笔记第十章:隐马尔科夫模型
统计学习方法读书笔记第十章:隐马尔科夫模型
统计学习方法读书笔记第十章:隐马尔科夫模型
隐马尔科夫模型是可用于标注问题的统计学模型,描述由隐藏的马尔科夫链随机生成观测序列的过程,属于生成模型。
隐马尔科夫模型的基本概念
-
隐马尔科夫模型的定义
隐马尔科夫模型 隐马尔科夫模型是关于时序的概率模型,描述有一个隐藏的马尔科夫链随机生成不可观测的状态随机序列,再由各个状态生成一个观测而产生观测随机序列的过程。隐藏的马尔科夫链随机生成的状态的序列,称为状态序列;每个状态生成一个观测,而由此产生的观测的随机序列,称为观测序列。序列的每一个位置又可以看作是一个时刻。
隐马尔科夫模型由初始概率分布、状态转移概率分布以及观测概率分布确定。应马尔科夫模型的形式定义如下:
设是所有可能的状态的集合,是所有可能的观测的集合。
其中,是可能的状态数,是可能的观测数。
是长度为的状态序列,是对应的观测序列。
是状态转移概率矩阵:
其中,
是在时刻处于状态的条件下在时刻转移到状态的概率。
是观测概率矩阵:
其中,
是在时刻处于状态的条件下生成观测的概率。
是初始状态概率向量:
其中,
是时刻处于状态的概率。
隐马尔科夫模型由初始状态概率向量、状态转移概率矩阵和观测概率矩阵决定。和决定状态序列,决定观测序列。因此,隐马尔科夫模型可以用三原符号表示,即
,,称为隐马尔科夫模型的三要素。
状态转移概率矩阵与初始状态概率向量确定了隐藏的马尔科夫链,生成不可观测的状态序列。观测概率矩阵确定了如何从状态生成观测,与状态序列综合确定了如何产生观测序列。
从定义可知,隐马尔科夫模型作了两个基本假设:
(1) 齐次马尔科夫性假设,即假设隐藏的马尔科夫链在任意时刻的状态只依赖于其前一时刻的状态,与其他时刻的状态及观测无关,也与时刻无关。
(2) 观测独立性假设,即假设任意时刻的观测只依赖于该时刻的马尔科夫链的状态,与其他观测及状态无关。
隐马尔科夫模型可以用于标注,这时状态对应着标记。标注问题是给定观测的序列预测其对应的标记序列。可以假设标注问题的数据是由隐马尔科夫模型生成的。这样我们可以利用隐马尔科夫模型的学习与预测算法进行标注。 -
观测序列的生成过程
根据马尔科夫模型的定义,可以将一个长度为的观测序列的生成过程描述如下:
算法1(观测序列的生成)
输入:隐马尔科夫模型,观测序列长度;
输出:观测序列。
(1) 按照初始状态分布产生状态;
(2) 令;
(3) 按照状态的观测概率分布生成;
(4) 按照状态的状态转移概率分布产生状态;
(5) 令;如果,转步(3);否则,终止。 -
隐马尔科夫模型的3个基本问题
隐马尔科夫模型有3个基本为题:
(1) 概率模型问题。给定模型和观测序列,计算在模型KaTeX parse error: Expected 'EOF', got '\ambda' at position 1: \̲a̲m̲b̲d̲a̲下观测序列出现的概率。
(2) 学习问题。已知观测序列,估计模型参数的参数,使得在该模型下观测序列概率最大。即用极大似然估计的方法估计参数。
(3) 预测问题,也称为解码问题。已知模型和序列,求给定观测序列条件概率最大的状态序列。即给定观测序列,求最有可能的对应的状态序列。
概率计算算法
本节介绍计算观测序列概率的前向与后向算法。先介绍概念上可行但计算上不可行的直接计算法。
- 直接计算法
给定模型和观测序列,计算观测序列出现的概率。最直接的方法是按概率公式直接计算。通过列举所有可能的长度为的状态序列,求各个状态序列与观测序列的联合概率,然后对所有可能的状态序列求和,得到。
状态序列的概率是
对固定的状态序列,观测序列的概率是
和同时出现的联合概率为
然后,对所有可能的状态序列求和,得到观测序列的概率,即
但是,利用上式计算量很大,是阶的,这种算法不可行。
下面介绍计算观测序列概率的有效算法:前向-后向算法。 - 前向算法
前向概率 给定隐马尔科夫模型,定义到时刻部分观测序列为且状态为的概率为前向概率,记作
可以递推地求得前向概率及观测序列概率。
观测序列概率的前向算法
输入:隐马尔科夫模型,观测序列;
输出:观测序列概率。
(1) 初值
(2) 递推 对,
(3) 终止
前向算法,步骤(1)初始化前向概率,是初始时刻的状态和观测的联合概率。步骤(2)是前向概率的递推公式,计算到时刻部分观测序列为且在时刻处于状态的前向概率,如下图所示。在(2)式的方括弧里,既然是到时刻观测到并在时刻处于状态的前向概率,那么乘积就是到时刻观测到并在时刻处于状态而在时刻到达状态的联合概率。对这个乘积在时刻的所有可能的个状态求和,其结果就是到时刻观测为并在时刻处于状态的联合概率。方括弧里的值与观测概率的乘积恰好是时刻观测到并在时刻处于状态的前向概率。步骤(3)给出的计算公式。因为
所以
如下图所示,前向算法实际是基于“状态序列的路径结构”递推计算的算法。前向算法高效的关键是其局部计算前向概率,然后利用路径结构将前向概率“递推”到全局,得到。具体地,在时刻,计算的个值;在各个时刻,计算的个值,并且每个的计算利用前一时刻个。减少计算量的原因在于每一次计算直接引用前一个时刻的计算结果,避免重复计算。这样,利用前向概率计算的计算量是阶的,而不是直接计算的阶。
- 后向算法
后向概率 给定隐马尔科夫模型,定义在时刻状态为的条件下,从到的部分观测序列为的概率为后向概率,记作
可以利用递推的方法求得后向概率及观测序列概率。
观测序列概率的后向算法
输入:隐马尔科夫模型,观测序列;
输出:观测序列概率。
(1)
(2) 对
(3)
步骤(1)初始化后向概率,对最终时刻的所有状态规定。步骤是后向概率的递推公式。如下图所示,为了计算在时刻状态为条件下时刻之后的观测序列的后向概率,只需要考虑在时刻所有可能的个状态的转移概率(即项),以及在此状态下的观测的观测概率(即项),然后考虑状态之后的观测序列的后向概率(即项)。步骤(3)求的思路与步骤(2)一致,只是初始概率代替转移概率。
利用前向概率和后向概率的定义可以将观测序列概率统一写成
此式当和时分别为前向概率计算公式和后向概率计算公式。
- 一些概率与期望值的计算
利用前向概率和后向概率,可以得到关于单个状态和两个状态概率的计算公式。
- 给定模型和观测,在时刻处于状态的概率。记
可以通过前向后向概率计算。事实上,
由前向概率和后向概率定义可知:
于是得到:
- 给定模型和观测,在时刻处于状态且在时刻处于状态的概率。记
可以通过前向后向概率计算:
而
所以
- 将和对各个时刻求和,可以得到一些有用的期望值:
(1) 在观测下状态出现的期望值
(2) 在观测下由状态转移的期望值
(3) 在观测下由状态转移到状态的期望值
学习算法
隐马尔科夫模型的学习,根据训练数据是包括观测序列和对应的状态序列还是只有观测序列,可以分别由监督学习与非监督学习实现。本节首先介绍监督学习算法,而后介绍非监督学习算法--Baum-Welch算法(也就是EM算法)。
- 监督学习方法
假设已给训练数据包含个长度相同的观测序列和对应的状态序列,那么可以用极大似然估计法来估计隐马尔科夫模型的参数。具体方法如下:
- 转移概率的估计
设样本中时刻处于状态时刻转移到状态的频数为,那么状态转移概率的估计是
- 观测概率的估计
设样本中状态为并观测为的频数是,那么状态为观测为的概率的估计是
- 初始状态概率的估计为个样本中初始状态为的频率。
由于监督学习需要使用训练数据,而人工标准训练数据往往代价很高,有时就会利用非监督学习的方法。
- Baum-Welch算法
假设给定训练数据只包含个长度为的观测序列而没有对应的状态序列,目标是学习隐马尔科夫模型的参数。我们将观测序列数据看作观测数据,状态序列数据看作不可观测的隐数据,那么隐马尔科夫模型事实上是一个含有隐变量的概率模型
它的参数学习可以由EM算法实现。
- 确定完全数据的对数似然函数
所有观测数据写成,所有隐数据写成,完全数据是。完全数据的对数似然函数是。 - EM算法的E步:求Q函数
其中,是隐马尔科夫模型参数的当前估计值,是要极大化的隐马尔科夫模型参数。
于是Q函数可以写成:
式中求和都是对所有训练数据的序列长度进行的。 - EM算法的M步:极大化Q函数求模型参数,,
由于要极大化的参数在式(34)中单独地出现在3个项中,所以只需对各项分别极大化。
(1) 式(34)的第1项可以写成:
注意到满足约束条件,利用拉格朗日乘子法,写出拉格朗日函数:
对其求偏导数并令结果为0
得
对求和得到
带入式(35)即得
(2) 式(34)的第2项可以写成
类似第1项,应用具有约束条件的拉格朗日乘子法可以求出
(3) 式(34)的第3项为
同样用拉格朗日乘子法,约束条件是。注意,只有在时对的偏导数才不为0,以表示。求得
- Baum-Welch模型参数估计公式
将式(36)~式(38)中的各概率分别用,表示,则可将相应的公式写成:
其中,,分别由式(24)及式(26)给出。式(39)~式(41)就是Baum-Welch算法,它是EM算法在隐马尔科夫模型学习中的具体实现,由Baum和Welch提出。
算法4(Baum-Welch算法)
输入:观测数据;
输出:隐马尔科夫模型参数。
(1) 初始化
对,选取,,,得到模型。
(2) 递推。对,
右端各值按观测和模型计算。式中,由式(24)和式(26)给出。
(3) 终止。得到模型参数。
预测算法
下面介绍隐马尔科夫模型预测的两种算法:近似算法与维特比算法。
-
近似算法
近似算法的想法是,在每个时刻选择在该时刻最有可能出现的状态,从而得到一个状态序列,将它作为预测的结果。
给定隐马尔科夫模型和观测序列,在时刻处于状态的概率是
在每一时刻最有可能的状态是
从而得到状态序列。
近似算法的优点是计算简单,其缺点是不能保证预测的状态序列整体是最有可能的状态序列,因为预测的状态序列可能有实际不发生的部分。事实上,上述方法得到的状态序列中有可能存在转移概率为0的相邻专题,即对某些,,时。尽管如此,近似算法仍然是有用的。 -
维特比算法
维特比算法实际是动态规划解隐马尔科夫模型预测问题,即用动态规划求概率最大路径(最优路径)。这时一条路径对应着一个状态序列。
根据动态规划原理,最优路径具有这样的特性:如果最优路径在时刻通过结点,那么这一路径从结点到终点的部分路径,对于从到的所有可能的部分路径来说,必须是最优的。因为加入不是这样,那么从到就有另一条更好的部分路径存在,如果把它和从到的部分路径连接起来,就会形成一条比原来的路径更优的路径,这是矛盾的,依据这一原理,我们只需从时刻开始,递推地计算在时刻状态为的各条部分路径的最大概率,直到得到时刻状态为的各条路径的最大概率。时刻的最大概率即为最优路径的概率,最优路径的终结点也同时得到。之后,为了找出最优路径的各个结点,从终结点开始,由后向前逐步求得结点,得到最优路径。这就是维特比算法。
首先导入两个变量和。定义在时刻状态为的所有单个路径中概率最大值为
由定义可得变量的递推公式:
定义在时刻状态为的所有单个路径中概率最大的路径的第个结点为
下面介绍维特比算法。
算法5(维特比算法)
输入:模型和观测;
输出:最优路径。
(1) 初始化
(2) 递推。对
(3) 终止
(4) 最优路径回溯。对
求得最优路径。