深入理解机器学习——概率图模型(Probabilistic Graphical Model):隐马尔可夫模型(Hidden Markov Model,HMM)

分类目录:《深入理解机器学习》总目录


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

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

概率图模型(Probabilistic Graphical Model)是一类用图来表达变量相关关系的概率模型。它以图为表示工具,最常见的是用一个结点表示一个或一组随机变量,结点之间的边表示变量间的概率相关关系,即“变量关系图”。根据边的性质不同,概率图模型可大致分为两类:

  • 有向图模型/贝叶斯网(Bayesian Network):使用有向无环图表示变量间的依赖关系
  • 无向图模型/马尔可夫网(Markov Network):使用无向图表示变量间的相关关系

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

如下图所示,隐马尔可夫模型中的变量可分为两组,第一组是状态变量 { y 1 , y 2 , ⋯   , y n } \{y_1, y_2, \cdots, y_n\} { y1,y2,,yn},其中 y i ∈ Y y_i\in \mathcal{Y} yiY表示第 i i i时刻的系统状态,通常假定状态变量是隐藏的、不可被观测的,因此状态变量亦称隐变量(Hidden Variable)。第二组是观测变量 { x 1 , x 2 , ⋯   , x n } \{x_1, x_2, \cdots, x_n\} { x1,x2,,xn},其中 x i ∈ X x_i\in \mathcal{X} xiX表示第 i i i时刻的观测值。在隐马尔可夫模型中,系统通常在多个状态 { s 1 , s 2 , ⋯   , s N } \{s_1, s_2, \cdots, s_N\} { s1,s2,,sN}之间转换,因此状态变量 y i y_i yi的取值范围 Y \mathcal{Y} Y,即状态空间,通常是有 N N N个可能取值的离散空间。观测变量 x i x_i xi,可以是离散型也可以是连续型,为便于讨论,我们仅考虑离散型观测变量,并假定其取值范围 X \mathcal{X} X { o 1 , o 2 , ⋯   , o m } \{o_1, o_2, \cdots, o_m\} { o1,o2,,om}
隐马尔可夫模型图结构
上图中的箭头表示了变量间的依赖关系。在任一时刻,观测变量的取值仅依赖于状态变量,即 x t x_t xt y t y_t yt确定,与其他状态变量及观测变量的取值无关同时, t t t时刻的状态 y t y_t yt仅依赖于 t − 1 t-1 t1时刻的状态 y t − 1 y_{t-1} yt1,与其余 n − 2 n-2 n2个状态无关。这就是所谓的“马尔可夫链”(Markov Chain),即:系统下一时刻的状态仅由当前状态决定,不依赖于以往的任何状态。基于这种依赖关系,所有变量的联合概率分布为:
P ( x 1 , x 2 , ⋯   , x n , y n ) = P ( y 1 ) P ( x 1 ∣ y 1 ) ∏ i = 2 n P ( y i ∣ y i − 1 ) P ( x i ∣ y i ) P(x_1, x_2, \cdots, x_n, y_n)=P(y_1)P(x_1|y_1)\prod_{i=2}^nP(y_i|y_{i-1})P(x_i|y_i) P(x1,x2,,xn,yn)=P(y1)P(x1y1)i=2nP(yiyi1)P(xiyi)

除了结构信息,欲确定一个隐马尔可夫模型还需以下三组参数:

  • 状态转移概率:模型在各个状态间转换的概率,通常记为矩阵 A = [ a i , j ] N × N A=[a_{i, j}]_{N\times N} A=[ai,j]N×N,其中: a i , j = P ( y t + 1 = s j ∣ y t = s i ) , 1 ≤ i , j ≤ N a_{i, j}=P(y_{t+1}=s_j | y_t=s_i), 1\leq i, j\leq N ai,j=P(yt+1=sjyt=si),1i,jN表示在任意时刻 t t t,若状态为 s i s_i si,则在下一时刻状态为 s j s_j sj的概率。
  • 输出观测概率:模型根据当前状态获得各个观测值的概率,通常记为矩阵 B = [ b i , j ] N × M B=[b_{i, j}]_{N\times M} B=[bi,j]N×M其中: b i , j = P ( x t = o j ∣ y t = s i ) , 1 ≤ i ≤ N , 1 ≤ j ≤ M b_{i, j}=P(x_t=o_j | y_t=s_i), 1\leq i\leq N, 1\leq j\leq M bi,j=P(xt=ojyt=si),1iN,1jM表示在任意时刻 t t t,若状态为 s i s_i si,则观测值 o j o_j oj被获取的概率。
  • 初始状态概率:模型在初始时刻各状态出现的概率,通常记为 π = ( π 1 , π 2 , ⋯   , π N ) \pi=(\pi_1, \pi_2, \cdots, \pi_N) π=(π1,π2,,πN),其中: π i = P ( y 1 = s i ) , 1 ≤ i ≤ N \pi_i=P(y_1=s_i), 1\leq i\leq N πi=P(y1=si),1iN表示模型的初始状态为 s i s_i si的概率。

通过指定状态空间 Y \mathcal{Y} Y、观测空间 X \mathcal{X} X和上述三组参数,就能确定一个隐马尔可夫模型,通常用其参数 λ = [ A , B , π ] \lambda=[A, B, \pi] λ=[A,B,π]来指代。给定隐马尔可夫模型 λ \lambda λ,它按如下过程产生观测序列 { x 1 , x 2 , ⋯   , x n } \{x_1, x_2, \cdots, x_n\} { x1,x2,,xn}

  1. 设置 t = 1 t=1 t=1,并根据初始状态概率 π \pi π选择初始状态 y 1 y_1 y1
  2. 根据状态 y t y_t yt和输出观测概率 B B B选择观测变量取值 x t x_t xt
  3. 根据状态 y t y_t yt和状态转移矩阵 A A A转移模型状态,即确定 y t + 1 y_{t+1} yt+1
  4. t < n t<n t<n,设置 t = t + 1 t=t+1 t=t+1,并转到第2步,否则停止

其中 y t ∈ { s 1 , s 2 , ⋯   , s N } y_t\in\{s_1, s_2, \cdots, s_N\} yt{ s1,s2,,sN} x t ∈ { o 1 , o 2 , ⋯   , o N } x_t\in\{o_1, o_2, \cdots, o_N\} xt{ o1,o2,,oN}分别为第 t t t时刻的状态和观测值。

在实际应用中,人们常关注隐马尔可夫模型的三个基本问题:

  • 给定模型 λ = [ A , B , π ] \lambda=[A, B, \pi] λ=[A,B,π],如何有效计算其产生观测序列 x = { x 1 , x 2 , ⋯   , x n } x=\{x_1, x_2, \cdots, x_n\} x={ x1,x2,,xn}的概率 P ( x ∣ λ ) P(x|\lambda) P(xλ)。换言之,如何评估模型与观测序列之间的匹配程度。
  • 给定模型 λ = [ A , B , π ] \lambda=[A, B, \pi] λ=[A,B,π]和观测序列 x = { x 1 , x 2 , ⋯   , x n } x=\{x_1, x_2, \cdots, x_n\} x={ x1,x2,,xn},如何找到与此序列推断出隐藏的模型状态 y = { y 1 , y 2 , ⋯   , y n } y=\{y_1, y_2, \cdots, y_n\} y={ y1,y2,,yn}。换言之,如何根据观测序列推断出隐藏的模型状态。
  • 给定观测序列 x = { x 1 , x 2 , ⋯   , x n } x=\{x_1, x_2, \cdots, x_n\} x={ x1,x2,,xn},如何调整模型参数 λ = [ A , B , π ] \lambda=[A, B, \pi] λ=[A,B,π]使得该序列出现的概率 P ( x ∣ λ ) P(x|\lambda) P(xλ)最大。换言之,如何训练模型使其能最好地描述观测数据。

上述问题在现实应用中非常重要。例如许多任务需根据以往的观测序列 x = { x 1 , x 2 , ⋯   , x n } x=\{x_1, x_2, \cdots, x_n\} x={ x1,x2,,xn}来推测当前时刻最有可能的观测值 x n x_n xn,这显然可转化为求取概率 P ( x ∣ λ ) P(x|\lambda) P(xλ),即上述第一个问题;在语音识别等任务中,观测值为语音信号,隐藏状态为文字,目标就是根据观测信号来推断最有可能的状态序列(即对应的文字),即上述第二个问题;在大多数现实应用中,人工指定模型参数已变得越来越不可行,如何根据训练样本学得最优的模型参数,怡是上述第三个问题,值得庆幸的是,基于条件独立性,隐马尔可夫模型的这三个问题均能被高效求解。

参考文献:
[1] 周志华. 机器学习[M]. 清华大学出版社, 2016.

猜你喜欢

转载自blog.csdn.net/hy592070616/article/details/126541367