《统计学习方法》——隐马尔可夫模型(上)

news2024/11/27 18:30:06

引言

隐马尔可夫模型(Hidden Markov Model,HMM)是描述隐藏的马尔可夫链随机生成观测数据过程的模型。

前置知识

马尔可夫链

马尔可夫链(Markov chain)又称离散时间马尔可夫链,使用 t t t来表示时刻,用 X t X_t Xt来表示在时刻 t t t链的状态,假定所有可能状态组成的有限集合 S \cal S S称为状态空间

马尔可夫链为状态空间中从一个状态到另一个状态的转换的随机过程。

在马尔可夫链的每一步,根据概率分布,可以从一个状态变到另一个状态,也可以保存当前状态。状态的概率叫做转移,状态改变的概率相关的概率就转移概率

描述当前状态为 i i i,下一个状态为 j j j的转移概率 p i j p_{ij} pij定义为:
p i j = P ( X t + 1 = j ∣ X t = i ) , i , j ∈ S p_{ij} =P(X_{t+1}=j|X_t=i), \qquad i,j \in \cal S pij=P(Xt+1=jXt=i),i,jS
马尔可夫链的核心假设是,只要时刻 t t t的状态为 i i i,不论过去发生了什么,也不论链是如何到达状态 i i i的,下一个时刻转移到状态 j j j的概率就一定是状态转移概率 p i j p_{ij} pij。即,该过程要求具备“无记忆”的性质:下一状态的概率分布只能由当前状态决定,与时间序列上它前面的事件无关。这种无记忆性称为马尔可夫性质。在数学上表示为:
P ( X t + 1 = j ∣ X t = i , X t − 1 = i n − 1 , ⋯   , X 0 = i 0 ) = P ( X t + 1 = j ∣ X t = i ) = p i j P(X_{t+1}=j|X_t=i,X_{t-1}=i_{n-1},\cdots,X_0=i_0) = P(X_{t+1}=j|X_t=i)=p_{ij} P(Xt+1=jXt=i,Xt1=in1,,X0=i0)=P(Xt+1=jXt=i)=pij
转移概率 P i j P_{ij} Pij一定是非负的,且和为1:
∑ j p i j = 1 \sum_j p_{ij} = 1 jpij=1
下一个状态可能和当前状态一样,即状态没有发生变化,我们也认为状态发生了一次特殊的转移(自身转移)。

总结一下,一个马尔可夫链模型由以下特征确定:

  1. 状态集合 S \cal S S
  2. 可能发生状态转移 ( i , j ) (i,j) (i,j)的集合,即由所有 p i j > 0 p_{ij} > 0 pij>0 ( i , j ) (i,j) (i,j)组成;
  3. p i j p_{ij} pij的取值为正;

马尔可夫链可以由转移概率矩阵所刻画,它是一个简单的二元矩阵,其第 i i i行第 j j j列的元素为 p i j p_{ij} pij,假设共有 m m m个状态:
[ p 11 p 12 ⋯ p 1 m p 21 p 22 ⋯ p 2 m ⋮ ⋮ ⋮ ⋮ p m 1 p m 2 ⋯ p m m ] \begin{bmatrix} p_{11} & p_{12} & \cdots & p_{1m} \\ p_{21} & p_{22} & \cdots & p_{2m} \\ \vdots & \vdots & \vdots & \vdots \\ p_{m1} & p_{m2} & \cdots & p_{mm} \\ \end{bmatrix} p11p21pm1p12p22pm2p1mp2mpmm
也可以用转移概率图表示马尔可夫链,图中用节点表示状态,连接节点的(有向)弧线表示可能发生的转移,将 p i j p_{ij} pij的数值标记在相应的弧线旁边。

比如下面来自维基百科的一个例子,它表示一个具有两个状态转换的马尔可夫链:

在这里插入图片描述

图p1 马尔可夫链的例子 来自维基百科

概率图模型

概率图模型(probabilistic graphical models)是概率分布的图形表示,它非常方便我们分析模型的性质,尤其是条件独立性质。
和我们数据结构中学的图一样,一个图由节点、节点间的边组成。概率图模型中,每个节点表示一个随机变量,边表示这些变量之间的概率关系,缺失的边表示条件独立假设。

概率图主要分为两大类:有向图模型,也称为贝叶斯网络(实际上和贝叶斯关系不大);无向图模型,也称为马尔可夫随机场(名字也没那么直观)。

这里主要简单介绍下有向图模型,因为HMM可以通过它进行表示。它的一些概念有助于后面的公式推理。

首先介绍下 条件独立(conditional independence, CI) 的概念。
我们先来回顾下独立的概念,假设有两个随机变量 a , b a,b a,b相互独立的话,有
p ( a , b ) = p ( a ) p ( b ) p(a,b)= p(a)p(b) p(a,b)=p(a)p(b)
如果此时求给定 b b b的条件下 a a a的概率:
p ( a ∣ b ) = p ( a , b ) p ( b ) = p ( a ) p ( b ) p ( b ) = p ( a ) (p1) p(a|b) = \frac{p(a,b)}{p(b)} = \frac{p(a)p(b)}{p(b)} = p(a) \tag{p1} p(ab)=p(b)p(a,b)=p(b)p(a)p(b)=p(a)(p1)
即不管 b b b的取值如何,都不影响 a a a发生的概率。也可以说 a a a条件独立于 b b b

现在假设有三个变量 a , b , c a,b,c a,b,c,假设给定 b , c b,c b,c的条件下 a a a的条件分布不依赖于 b b b的值,即
p ( a ∣ b , c ) = p ( a ∣ c ) (p2) p(a|b,c) = p(a|c) \tag{p2} p(ab,c)=p(ac)(p2)
也就是说,在给定 c c c的条件下 a a a条件独立于 b b b。在给定 c c c的条件下, b b b作为条件的取值不会影响 p ( a ∣ c ) p(a|c) p(ac)

我们考虑将 p ( a , b ∣ c ) p(a,b|c) p(a,bc)展开:
p ( a , b ∣ c ) = p ( a ∣ b , c ) p ( b ∣ c ) = p ( a ∣ c ) p ( b ∣ c ) (p3) p(a,b|c) = p(a|b,c)p(b|c) = p(a|c)p(b|c) \tag{p3} p(a,bc)=p(ab,c)p(bc)=p(ac)p(bc)(p3)

( p 2 ) (p2) (p2) ( p 3 ) (p3) (p3)都是在这种情况下条件独立的不同描述。
注意条件独立中的条件二字,比如这里都是在以 c c c为条件的前提下,而且是对于 c c c的所有取值都成立。
记为
a   ⊥   b   ∣   c a \,\bot \,b \,|\, c abc
表示给定 c c c的条件下 a a a v v v条件独立。

我们以此为基础再来看下马尔可夫链,假设 x t + 1   ⊥   x 1 : t − 1   ∣   x t x_{t+1} \,\bot \,x_{1:t-1} \, | \, x_t xt+1x1:t1xt,即下一时刻仅依赖于当前时刻,和所有的之前时刻无关,这就是(一阶)马尔可夫假设。

基于该假设,结合链式法则, x 1 : N x_{1:N} x1:N的联合概率分布可以写成:
p ( x 1 : N ) = p ( x 1 ) ∏ t = 2 N p ( x t ∣ x 1 : t − 1 ) = p ( x 1 ) ∏ t = 2 N p ( x t ∣ x t − 1 ) (p4) p(x_{1:N})=p(x_1)\prod_{t=2}^N p(x_t|x_{1:t-1}) = p(x_1)\prod _{t=2}^N p(x_t|x_{t-1}) \tag{p4} p(x1:N)=p(x1)t=2Np(xtx1:t1)=p(x1)t=2Np(xtxt1)(p4)
这就是一阶马尔可夫链。这里说的一阶是什么意思?说的 x t x_t xt仅依赖于 x t − 1 x_{t-1} xt1,如果是二阶,则依赖于 x t − 1 , x t − 2 x_{t-1},x_{t-2} xt1,xt2。相当于假设要弱一点,但带来的复杂性也高一点。那最强的假设是什么,贝叶斯假设,所有的 x t x_t xt之间是相互独立的。

前面说概率图模型是概率分布的图形表示,那么它如何表示概率分布呢?

考虑三个变量 a , b , c a,b,c a,b,c的联合分布 p ( a , b , c ) p(a,b,c) p(a,b,c),此时我们不对这些变量做出任何的假设,通过概率的乘积规则,可以将联合概率分布写成:
p ( a , b , c ) = p ( c ∣ a , b ) p ( a , b ) = p ( c ∣ a , b ) p ( b ∣ a ) p ( a ) (p5) p(a,b,c)=p(c|a,b)p(a,b)=p(c|a,b)p(b|a)p(a) \tag{p5} p(a,b,c)=p(ca,b)p(a,b)=p(ca,b)p(ba)p(a)(p5)
此时,我们引入图模型来表示上面等式的右侧。首先我们为每个随机变量引入一个节点,然后为每个节点关联上式右侧对应的条件概率,然后,对于每个条件概率分布,我们在图中添加一个链接(箭头),箭头的起点是条件概率中条件的随机变量对应的节点。结果就是图p2中的图。
在这里插入图片描述

图p2 有向图模型的例子

可以看到,这个图描述了联合概率分布 p ( a , b , c ) p(a,b,c) p(a,b,c)在所有随机变量上能分解成一组因子的乘积的方式,每个因子只依赖于随机变量的一个子集。
比如对于因子 p ( a ) p(a) p(a),没有输入的链接,也就没有箭头指向它。而对于因子 p ( c ∣ a , b ) p(c|a,b) p(ca,b),存在从节点 a , b a,b a,b到节点 c c c的链接。
这里我们说节点 a a a是节点 b b b的父节点,节点 b b b是节点 a a a的子节点。这种关系和数据结构中的图一致。

这里要注意的是,我们隐式地选择了一种顺序来分解 p 5 p5 p5,不同的顺序会对应不同的分解方式,也得到不同的图表示。

我们看到,在图的所有节点上定义的联合概率分布由每个节点上的条件概率分布的乘积表示,每个条件Giallo分布的条件都是图中节点的父节点所对应的变量。因此,对于一个有 K K K个节点的图,联合概率为:
p ( x ) = ∏ k = 1 K p ( x k ∣ p a k ) (p6) p(\pmb x) = \prod_{k=1}^K p(x_k|pa_k) \tag{p6} p(x)=k=1Kp(xkpak)(p6)
其中 p a k pa_k pak表示 x K x_K xK的父节点的集合; x = { x 1 , ⋯   , x K } \pmb x=\{x_1,\cdots,x_K\} x={x1,,xK}。这个公式非常重要,表示有向图模型的联合概率的分解(factorization)属性。图中每个节点还可以关联一个变量的集合。

有向图的独立性质

有了这些概念,下面我们来看条件独立相关的图表示,我们以三个变量 a , b , c a,b,c a,b,c的图模型为例。
三个变量 a , b , c a,b,c a,b,c之间的有向图连接对应三个经典的例子,我们先来看第一个。如图p3所示:
在这里插入图片描述

图p3

根据 ( p 6 ) (p6) (p6),我们可以写出这个图的联合概率分布:
p ( a , b , c ) = p ( c ) p ( a ∣ c ) p ( b ∣ c ) (p7) p(a,b,c) = p(c)p(a|c)p(b|c) \tag{p7} p(a,b,c)=p(c)p(ac)p(bc)(p7)

该结构为同父结构,即节点 a , b a,b a,b存在相同的父节点 a a a。当父节点 c c c被观测到时, a , b a,b a,b条件独立。

考虑没有变量是观测变量的情形,即我们通过对 ( p 7 ) (p7) (p7)两边进行积分或求和的方式,来考察 a a a b b b是否为相互独立的,即
p ( a , b ) = ∑ c p ( c ) p ( a ∣ c ) p ( b ∣ c ) (p8) p(a,b) =\sum_c p(c)p(a|c)p(b|c) \tag{p8} p(a,b)=cp(c)p(ac)p(bc)(p8)
这通常不能分解为乘积 p ( a ) p ( b ) p(a)p(b) p(a)p(b)的形式,因此我们说:

a ⊥̸   b   ∣   ∅ a \not \bot \, b \,|\, \empty ab

这里 ∅ \empty 表示空集,符号 ⊥̸ \not \bot 表示条件独立性质不总是成立。

现在假设我们以变量 c c c为条件(或者说观测到变量 c c c,即 c c c取了特定值,不再是一个随机变量),得到的图如p4所示。

在这里插入图片描述

图p4

我们为上图中的节点添加阴影部分,如节点 c c c所示,表示它被观测到了。

我们可以写成给定 c c c的条件下, a a a b b b的条件概率分布,并结合 ( p 7 ) (p7) (p7)
p ( a , b ∣ c ) = p ( a , b , c ) p ( c ) = p ( c ) p ( a ∣ c ) p ( b ∣ c ) p ( c ) = p ( a ∣ c ) p ( b ∣ c ) p(a,b|c) = \frac{p(a,b,c)}{p(c)} = \frac{p(c)p(a|c)p(b|c) }{p(c)} = p(a|c)p(b|c) p(a,bc)=p(c)p(a,b,c)=p(c)p(c)p(ac)p(bc)=p(ac)p(bc)
因此,我们可以得到条件独立性质(回顾 ( p 3 ) (p3) (p3)):

a   ⊥   b   ∣   c a \,\bot \,b \,|\, c abc
这里节点 c c c被关于关于从节点 a a a经过节点 c c c到节点 b b b路径的尾到尾(tail-to-tail),因为节点与两个箭头的尾部相连。
这样的一个连接节点 a a a和节点 b b b的路径的存在(从箭头头部到尾部的路径是通的)使得节点相互依赖。
然而,当我们观测到节点 c c c,或者说以 c c c为条件时,被当做条件的节点 c c c阻隔了从 a a a b b b的路径,使得 a a a b b b变成(条件)独立了。

路径的阻隔表示条件独立!

我们再来看第二个例子,如图p5所示:

在这里插入图片描述

图p5

该结构称为顺序结构。当 c c c被观测到时, a , b a,b a,b条件独立。

这幅图的联合概率分布通过 ( p 6 ) (p6) (p6)得到,形式为:
p ( a , b , c ) = p ( a ) p ( c ∣ a ) p ( b ∣ c ) (p9) p(a,b,c) = p(a) p(c|a)p(b|c) \tag{p9} p(a,b,c)=p(a)p(ca)p(bc)(p9)
与之前一样,我们对 c c c积分或求和来考察 a a a b b b是否互相独立:
p ( a , b ) = p ( a ) ∑ c p ( c ∣ a ) p ( b ∣ c ) p(a,b) = p(a) \sum_c p(c|a) p(b|c) p(a,b)=p(a)cp(ca)p(bc)
这一般也不能分解为 p ( a ) p ( b ) p(a)p(b) p(a)p(b),因此
a ⊥̸   b   ∣   ∅ a \not \bot \, b \,|\, \empty ab
现在以节点 c c c为条件,再利用公式 ( p 9 ) (p9) (p9)
p ( a , b ∣ c ) = p ( a , b , c ) p ( c ) = p ( a ) p ( c ∣ a ) p ( b ∣ c ) p ( c ) = p ( a , c ) p ( b ∣ c ) p ( c ) = p ( a ∣ c ) p ( b ∣ c ) \begin{aligned} p(a,b|c) &= \frac{p(a,b,c)}{p(c)} \\ &= \frac{p(a) p(c|a)p(b|c)}{p(c)} \\ &= \frac{p(a,c)p(b|c)}{p(c)} \\ &= p(a|c)p(b|c) \end{aligned} p(a,bc)=p(c)p(a,b,c)=p(c)p(a)p(ca)p(bc)=p(c)p(a,c)p(bc)=p(ac)p(bc)
我们再次得到了条件独立性质:
a   ⊥   b   ∣   c a \,\bot \,b \,|\, c abc
节点 c c c被称为关于从节点 a a a到节点 b b b的路径的头到尾(head-to-tail)。这样的一个连接节点 a a a和节点 b b b的路径的存在使得节点相互依赖。如果我们观测节点 c c c,如图p6所示,这个观测阻隔了从 a a a b b b的路径,因此我们得到了条件独立性质。

在这里插入图片描述

图p6

最后,我们考虑第三个例子,也是最难理解的例子。如图p7所示:

在这里插入图片描述

图p7

V型结构,也称冲状撞结构。当 c c c未被观测,或者说 c c c未知的情况下, a , b a,b a,b相互独立。当 c c c被观测到, a , b a,b a,b必不独立。

这里提到了给定和未知。基于条件概率 p ( A ∣ B ) p(A|B) p(AB),指事件 A A A在事件 B B B已经发生条件下的发生概率。事件 B B B是已经发生的,即给定的、观测到的;事件 A A A的发生是以概率形式表现的, A A A是否发生是未知的。

同样,我们可以得到联合概率分布:
p ( a , b , c ) = p ( a ) p ( b ) p ( c ∣ a , b ) (p10) p(a,b,c)=p(a)p(b)p(c|a,b) \tag{p10} p(a,b,c)=p(a)p(b)p(ca,b)(p10)
对上式两侧关于 c c c积分或求和,得到:
p ( a , b ) = p ( a ) p ( b ) p(a,b)=p(a)p(b) p(a,b)=p(a)p(b)
因为 p ( c ∣ a , b ) p(c|a,b) p(ca,b)是关于 c c c的条件分布,也是一种概率分布,对 c c c求和或积分结果为 1 1 1

这样,我们得到了和之前不一样的结果,当没有变量被观测时, a a a b b b是独立的。我们可以把这个结果写成:
a   ⊥   b   ∣   ∅ a \,\bot \,b \,|\, \empty ab

在这里插入图片描述

图p8

那么,假设我们还是以 c c c为条件,如图p8所示,有:
p ( a , b ∣ c ) = p ( a , b , c ) p ( c ) = p ( a ) p ( b ) p ( c ∣ a , b ) p ( c ) p(a,b|c) = \frac{p(a,b,c)}{p(c)} = \frac{p(a)p(b)p(c|a,b)}{p(c)} p(a,bc)=p(c)p(a,b,c)=p(c)p(a)p(b)p(ca,b)
这通常也不能分解为 p ( a ) p ( b ) p(a)p(b) p(a)p(b),因此,
a   ⊥̸   b   ∣   c a \,\not \bot \,b \,|\, c abc
图形上来看,我们说节点 c c c关于从 a a a b b b的路径是头到头(head-to-head)。当 c c c没有被观测到时,它阻隔了路径,使得变量 a a a b b b是相互独立的。当以 c c c为条件时,路径被解除阻隔,使得 a a a b b b相互依赖了。

特别地,我们考虑下图p9这种情形。是V型结构的延伸,其中新节点 d d d是节点 c c c的孩子节点,但该结构中仅 d d d被观测到,那么 a a a b b b也会被解除阻隔。其实,不仅是 c c c的直接孩子节点 d d d,当 c c c c c c的任意后继(descendant)节点被观测到,都会使得 a a a b b b解除阻隔。

在这里插入图片描述

图p9

怎么证明呢?

我们还是先写出概率分布:
p ( a , b , c , d ) = p ( a ) p ( b ) p ( c ∣ a , b ) p ( d ∣ c ) p(a,b,c,d) = p(a)p(b)p(c|a,b)p(d|c) p(a,b,c,d)=p(a)p(b)p(ca,b)p(dc)

假设观测到 d d d,我们考虑 a , b a,b a,b是否是条件独立的。
p ( a , b ∣ d ) = ∑ c p ( a , b , c ∣ d ) = ∑ c p ( a , b , c , d ) p ( d ) = ∑ c p ( a ) p ( b ) p ( c ∣ a , b ) p ( d ∣ c ) p ( d ) = ∑ c p ( a ) p ( b ) p ( c ∣ a , b ) p ( d ∣ c , a , b ) p ( d ) = ∑ c p ( a ) p ( b ) p ( d , c ∣ a , b ) p ( d ) = p ( a ) p ( b ) p ( d ∣ a , b ) p ( d ) ≠ p ( a ) p ( b ) \begin{aligned} p(a,b|d) &= \sum_c p(a,b,c|d) \\ &= \sum_c \frac{p(a,b,c,d)}{p(d)} \\ &= \sum_c \frac{ p(a)p(b)p(c|a,b)p(d|c)}{p(d)} \\ &= \sum_c \frac{ p(a)p(b)p(c|a,b)p(d|c,a,b)}{p(d)} \\ &= \sum_c \frac{ p(a)p(b)p(d,c|a,b)}{p(d)} \\ &= \frac{ p(a)p(b)p(d|a,b)}{p(d)} \\ &\neq p(a)p(b) \end{aligned} p(a,bd)=cp(a,b,cd)=cp(d)p(a,b,c,d)=cp(d)p(a)p(b)p(ca,b)p(dc)=cp(d)p(a)p(b)p(ca,b)p(dc,a,b)=cp(d)p(a)p(b)p(d,ca,b)=p(d)p(a)p(b)p(da,b)=p(a)p(b)

这里用到了 d , c , a d,c,a d,c,a d , c , b d,c,b d,c,b满足上面描述的顺序结构,即 p ( d ∣ a , b , c ) = p ( d ∣ c ) p(d|a,b,c)=p(d|c) p(da,b,c)=p(dc)

我们再考虑相反的情况,假设未观测到 d d d,有:
p ( a , b , c , d ) = p ( a ) p ( b ) p ( c ∣ a , b ) p ( d ∣ c ) p(a,b,c,d)= p(a)p(b)p(c|a,b)p(d|c) p(a,b,c,d)=p(a)p(b)p(ca,b)p(dc)
对上式两侧关于 d d d积分或求和,得到:
p ( a , b , c ) = p ( a ) p ( b ) p ( c ∣ a , b ) p(a,b,c) = p(a)p(b)p(c|a,b) p(a,b,c)=p(a)p(b)p(ca,b)
再关于 c c c积分或求和:
p ( a , b ) = p ( a ) p ( b ) p(a,b)=p(a)p(b) p(a,b)=p(a)p(b)

同样,当没有变量被观测到时有:

a   ⊥   b   ∣   ∅ a \,\bot \,b \,|\, \empty ab

可以看到在未观测到 d d d的情况下, a , b a,b a,b还是互相独立的。这和节点 c c c的性质是一样的。反之,在观测到 d d d的情况下,联合概率不能分解成 p ( a ) p ( b ) p(a)p(b) p(a)p(b)

我们可以以一个例子来简单理解,假设你家装了一个偷窃报警器,当家里遭窃或地震都有可能触发这个偷窃报警器响,而当报警器响的情况下,邻居听到后可能给你打电话。

在这里插入图片描述

图p10

地震与否不会被你家是否遭窃影响。这里也假设小偷不管有没有地震,都不影响他进行偷窃。此时,这两个事件在报警响未被观测到的情况下,就是独立的。

假设你正在外度假,邻居给你打电话说你家报警器响了。那么从邻居打电话这个事件我们可以得到警报响这个事件发生了。

最后,我们总结成一个图:

在这里插入图片描述

图p11

再重申一次,若 a a a b b b的路径被阻隔,说明它们是(条件)独立的。

基于上面的三个例子,下面我们引入一个非常重要的概念D-划分(D-Separation),也称为有向分离,或D-分离。

D-划分

图模型的一个重要且优雅的特征是,联合概率分布的条件独立性可以直接从图中读出来,不用进行任何计算。完成这件事的一般框架就是d-划分,d表示有向。

考虑一个一般的有向图,其中 A , B , C A,B,C A,B,C是任意无交集的节点集合。我们考虑从 A A A中任意节点到 B B B中任意节点的所有可能的路径,我们说这样的路径被阻隔,如果它包含一个节点满足下面两个性质中的任意一个:

  • 路径上的箭头以头到尾或尾到尾的方式交汇于这个节点,且这个节点在集合 C C C中;
  • 箭头以头到头的方式交汇于这个节点,且这个节点和它的所有后继都不在集合 C C C中;

如果所有的路径都被阻隔,我们说 C C C A A A B B B中d-划分开,且图中所有变量上的联合概率分布都满足 A   ⊥   B   ∣   C A \, \bot \, B \, | \, C ABC

在这里插入图片描述

图p12

如图p12所示。尾到尾是红线表示,头到尾是黑线表示,都交汇于集合 C C C中;而头到头方式交汇的节点,不在集合 C C C中。

我们再通过一个例子来理解一下,例子来自PRML。

在这里插入图片描述

图p13 来自PRML

在p13左图中,从 a a a b b b的路径是通的,首先对于 a → e → f a \rightarrow e \rightarrow f aef的路径,这是一个头到头结构,虽然 e e e未被观测到,但 e e e的后继 c c c被观测到,因此这条路径是通的,然后对于 e → f → b e \rightarrow f \rightarrow b efb的路径,这是尾到尾结构,且 f f f没有被观测到,没有被 f f f阻隔;

在p13右图中,从 a a a b b b的路径被节点 e e e f f f阻隔,对于 a → e → f a \rightarrow e \rightarrow f aef的路径, e e e e e e的后继没有被观测到(没有在条件集合中), a a a f f f是被阻隔的;同时对于 e → f → b e \rightarrow f \rightarrow b efb来说,是一个尾到尾结构,且 f f f被观测到。因此使用这幅图进行分解的任何概率分布都满足条件独立性质 a   ⊥   b   ∣   f a \, \bot \, b \, | \, f abf

下面我们来看如何用概率图来表示隐马尔科夫模型。

隐马尔可夫模型图示

假设针对顺序观测数据,基于一阶马尔可夫假设,即每个观测只与最近的一次观测有关,我们就得到了一阶马尔科夫链(马尔科夫模型), N N N次观测的序列的联合分布为:
p ( x 1 : N ) = p ( x 1 ) ∏ t = 2 N p ( x t ∣ x 1 : t − 1 ) = p ( x 1 ) ∏ t = 2 N p ( x t ∣ x t − 1 ) p(x_{1:N})=p(x_1)\prod_{t=2}^N p(x_t|x_{1:t-1}) = p(x_1)\prod _{t=2}^N p(x_t|x_{t-1}) p(x1:N)=p(x1)t=2Np(xtx1:t1)=p(x1)t=2Np(xtxt1)
该一阶马尔可夫链用概率图表示如图p14所示:

在这里插入图片描述

图p14

再进一步,如果引入额外的潜在变量 z n z_n zn,假设潜在变量也构成了马尔可夫链,得到的图结构称为状态空间结构(state space model),如图p15所示。它满足下面的条件独立性质,即在给定 z n z_n zn的条件下, z n − 1 z_{n-1} zn1 z n + 1 z_{n+1} zn+1是独立的,有:
z n + 1   ⊥   z n − 1   ∣   z n (p11) z_{n+1} \, \bot \, z_{n-1}\, | \,z_n \tag{p11} zn+1zn1zn(p11)
在这里插入图片描述

图p15

这个模型的联合概率分布为
p ( x 1 , ⋯   , x N , z 1 , ⋯   , z N ) = p ( z 1 ) [ ∏ t = 2 N p ( z t ∣ z t − 1 ) ] ∏ t = 1 N p ( x t ∣ z t ) (p12) p(x_1,\cdots,x_N,z_1,\cdots,z_N) = p(z_1)\left[\prod_{t=2}^N p(z_t|z_{t-1}) \right] \prod_{t=1}^N p(x_t|z_t) \tag{p12} p(x1,,xN,z1,,zN)=p(z1)[t=2Np(ztzt1)]t=1Np(xtzt)(p12)
根据d-划分准则,我们看到总存在一个路径通过潜在变量连接了任意两个观测变量 x n x_n xn x m x_m xm,并且这个路径永远不会被阻隔。对于观测变量 x n + 1 x_{n+1} xn+1来说,给定所有之间的观测,条件概率分布 p ( x n + 1 ∣ x 1 : n ) p(x_{n+1}|x_{1:n}) p(xn+1x1:n)不会表现出任何的条件独立性,因为对 x n + 1 x_{n+1} xn+1的预测依赖于所有之前的观测。

对于顺序数据来说,如果潜在变量是离散的,那么这个图描述的就是隐马尔可夫模型。

隐马尔可夫模型的基本概念

隐马尔可夫模型的定义

定义 10.1(隐马尔可夫模型) 隐马尔可夫模型是关于时序的概率模型,描述由一个隐藏的马尔可夫链随机生成不可观测的状态随机序列(状态序列,state sequence),然后由每个状态生成一个观测从而产生随机观测序列(observation sequence)的过程。序列的每一个位置又可以看作是一个时刻。

隐马尔可夫模型由初始概率分布、状态转移概率分布以及观测概率分布确定,模型概率图示如图1所示,模型的形式定义为:

在这里插入图片描述

图1 HMM的概率图

Q Q Q是所有可能的状态的集合, V V V是所有可能的观测的集合:
Q = { q 1 , q 2 , ⋯   , q N } , V = { v 1 , v 2 , ⋯   , v M } Q=\{q_1,q_2,\cdots,q_N\},\qquad V=\{v_1,v_2,\cdots,v_M\} Q={q1,q2,,qN},V={v1,v2,,vM}
其中 N N N是可能的状态数, M M M是可能的观测数。

I I I是长度为 T T T的状态序列, O O O是对应的观测序列,由于一个状态生成一个观测,所以它们的长度是相同的:
I = ( i 1 , i 2 , ⋯   , i T ) , O = ( o 1 , o 2 , ⋯   , o T ) I=(i_1,i_2,\cdots,i_T),\qquad O=(o_1,o_2,\cdots,o_T) I=(i1,i2,,iT),O=(o1,o2,,oT)
A A A是状态转移概率矩阵:
A = [ a i j ] N × N (10.1) A=[a_{ij}]_{N\times N} \tag{10.1} A=[aij]N×N(10.1)
其中,
a i j = P ( i t + 1 = q j ∣ i t = q i ) , i = 1 , 2 , ⋯   , N ; j = 1 , 2 , ⋯   , N (10.2) a_{ij} = P(i_{t+1}=q_j|i_t=q_i),\quad i=1,2,\cdots,N;\quad j=1,2,\cdots,N \tag{10.2} aij=P(it+1=qjit=qi),i=1,2,,N;j=1,2,,N(10.2)
表示时刻 t t t处于状态 q i q_i qi的条件下,在时刻 t + 1 t+1 t+1转移到状态 q j q_j qj的概率。

B B B是观测概率矩阵:
B = [ b j ( k ) ] N × M (10.3) B=[b_j(k)]_{N \times M} \tag{10.3} B=[bj(k)]N×M(10.3)
其中,
b j ( k ) = P ( o t = v k ∣ i t = q j ) , k = 1 , 2 , ⋯   , M ; j = 1 , 2 , ⋯   , N (10.4) b_j(k) = P(o_t=v_k|i_t=q_j),\quad k=1,2,\cdots,M;\quad j=1,2,\cdots,N \tag{10.4} bj(k)=P(ot=vkit=qj),k=1,2,,M;j=1,2,,N(10.4)
这个表示可能不好理解,类似 a i j a_{ij} aij,下标表示状态,那么这里用括号表示观测。

表示时刻 t t t处于状态 q j q_j qj的条件下,生成观测 v k v_k vk的概率。 b j ( k ) b_j(k) bj(k)只涉及到当前时刻 t t t

π \pi π是初始状态概率向量:
π = ( π i ) (10.5) \pi = (\pi_i) \tag{10.5} π=(πi)(10.5)
其中,
π i = P ( i 1 = q i ) , i = 1 , 2 , ⋯   , N (10.6) \pi_i = P(i_1=q_i),\quad i=1,2,\cdots,N \tag{10.6} πi=P(i1=qi),i=1,2,,N(10.6)
还是用下标表示状态,但符号变成了 π \pi π,表示时刻 t = 1 t=1 t=1处于状态 q i q_i qi的概率,所以是初始概率。

上面的符号有点多,记不住没关系,后面碰到的时候多回顾几次就好了。

HMM由初始状态概率向量 π \pi π、状态转移概率矩阵 A A A和观测概率矩阵 B B B决定。 π \pi π A A A决定状态序列, B B B决定观测序列。因此,隐马尔可夫模型 λ \lambda λ可用三元符号表示,
λ = ( A , B , π ) (10.7) \lambda=(A,B,\pi) \tag{10.7} λ=(A,B,π)(10.7)
A , B , π A,B,\pi A,B,π称为隐马尔可夫模型的三要素。

A和 π \pi π确定了隐藏的马尔可夫链,生成不可观测的状态序列。观测概率矩阵 B B B确定了如何从状态生成观测。

从定义可知,隐马尔可夫模型作了两个基本假设:

(1) 齐次马尔可夫性假设,即假设隐藏的马尔可夫链在任意时刻 t t t状态只依赖于其前一时刻的状态,与其他时刻的状态及观测无关,也与时刻 t t t无关:
P ( i t ∣ i t − 1 , o t − 1 , ⋯   , i 1 , o 1 ) = P ( i t ∣ i t − 1 ) , t = 1 , 2 , ⋯   , T (10.8) P(i_t|i_{t-1},o_{t-1},\cdots,i_1,o_1) = P(i_t|i_{t-1}),\quad t=1,2,\cdots,T \tag{10.8} P(itit1,ot1,,i1,o1)=P(itit1)t=1,2,,T(10.8)
齐次指的是,任何时刻的状态转移概率与时刻 t t t无关,都是一样的。

(2) 观测独立假设,即假设任意时刻的观测只依赖于该时刻的马尔可夫链的状态,与其他观测及状态无关:
P ( o t ∣ i T , o T , i T − 1 , o T − 1 , ⋯   , i t + 1 , o t + 1 , i t , i t − 1 , o t − 1 , ⋯   , i 1 , o 1 ) = P ( o t ∣ i t ) (10.9) P(o_t|i_T,o_T,i_{T-1},o_{T-1},\cdots,i_{t+1},o_{t+1},i_t,i_{t-1},o_{t-1},\cdots,i_1,o_1) = P(o_t|i_t) \tag{10.9} P(otiT,oT,iT1,oT1,,it+1,ot+1,it,it1,ot1,,i1,o1)=P(otit)(10.9)

隐马尔可夫模型可用于标注,此时状态就对应要标注的标签(标记)。标注问题的标记是隐藏的、未知的,已知的是观测到的(单词)序列。

例 10.1(盒子和球模型) 假设有4个盒子,每个盒子里都装有红、白两种颜色的球。该例子主要是描述了初始概率分布 π \pi π,状态转移概率分布 A A A和观测概率分布 B B B。具体可以查阅书上的内容。

观测序列的生成过程

可以将一个长度为 T T T的观测序列 O = ( o 1 , o 2 , ⋯   , o T ) O=(o_1,o_2,\cdots,o_T) O=(o1,o2,,oT)的生成过程描述如下。

算法10.1(观测序列的生成)

输入:隐马尔可夫模型 λ = ( A , B , π ) \lambda=(A,B,\pi) λ=(A,B,π),观测序列长度 T T T

输出:观测序列 O = ( o 1 , o 2 , ⋯   , o T ) O=(o_1,o_2,\cdots,o_T) O=(o1,o2,,oT)

(1) 安装初始状态分布 π \pi π产生状态 i 1 i_1 i1

(2) 令 t = 1 t=1 t=1

(3) 按照状态 i t i_t it的观测概率分布 b i t ( k ) b_{i_t}(k) bit(k)生成 o t = v k o_t=v_k ot=vk

(4) 按照状态 i t i_t it的状态转移概率分布 { a i t , i t + 1 } \{a_{i_t,i_{t+1}}\} {ait,it+1}产生状态 i t + 1 i_{t+1} it+1

(5) 令 t = t + 1 t=t+1 t=t+1;如果 t < T t < T t<T,转步(3);否则,终止。

隐马尔可夫模型的3个基本问题

隐马尔可夫模型由3个基本问题:

(1) 概率计算问题。给定模型 λ = ( A , B , π ) \lambda=(A,B,\pi) λ=(A,B,π)和观测序列 O = ( o 1 , o 2 , ⋯   , o T ) O=(o_1,o_2,\cdots,o_T) O=(o1,o2,,oT),计算在模型 λ \lambda λ下观测序列 O O O出现的概率 P ( O ∣ λ ) P(O|\lambda) P(Oλ)

(2) 学习问题。已知观测序列 O = ( o 1 , o 2 , ⋯   , o T ) O=(o_1,o_2,\cdots,o_T) O=(o1,o2,,oT),估计模型 λ = ( A , B , π ) \lambda=(A,B,\pi) λ=(A,B,π)参数,使得在该模型下观测序列概率 P ( O ∣ λ ) P(O|\lambda) P(Oλ)最大。即用极大似然估计法估计参数。

(3) 预测问题,也称为解码问题。已知模型 λ = ( A , B , π ) \lambda=(A,B,\pi) λ=(A,B,π)和观测序列 O = ( o 1 , o 2 , ⋯   , o T ) O=(o_1,o_2,\cdots,o_T) O=(o1,o2,,oT),求对给定观测序列条件概率 P ( I ∣ O ) P(I|O) P(IO)最大的状态序列 I = ( i 1 , i 2 , ⋯   , i T ) I=(i_1,i_2,\cdots,i_T) I=(i1,i2,,iT)。即给定观测序列,求对应的最有可能的状态序列。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/533416.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

( 位运算 ) 338. 比特位计数 ——【Leetcode每日一题】

❓338. 比特位计数 难度&#xff1a;简单 给你一个整数 n &#xff0c;对于 0 < i < n 中的每个 i &#xff0c;计算其二进制表示中 1 的个数 &#xff0c;返回一个长度为 n 1 的数组 ans 作为答案。 示例 1&#xff1a; 输入&#xff1a;n 2 输出&#xff1a;[0,1,…

JavaScript变量声明

声明变量三个var let和const 1.首先var先排除&#xff0c;老派写法&#xff0c;问题很多&#xff0c;可以淘汰掉… 2.const优先&#xff0c;尽量使用const,原因&#xff1a; &#xff08;1&#xff09;const语义化更好 &#xff08;2&#xff09;很多变量声明的时候就知道它不会…

中本聪思想精髓难以领悟?Web3实际上还在“幻想”之中?

Web3概念是不错&#xff0c;有人说它是下一代互联网&#xff0c;有人说它是NFT和元宇宙等未来应用的基础设施。然而理论炒得火热&#xff0c;但却仍不见像ChatGPT一样能引爆市场的杀手级应用出现。 原因在于&#xff0c;当前的Web3概念是对中本聪思想的不断概括和提炼&#xff…

21 KVM管理虚拟机-在线修改虚拟机配置

文章目录 21 KVM管理虚拟机-在线修改虚拟机配置21.1 概述21.2 操作步骤 21 KVM管理虚拟机-在线修改虚拟机配置 21.1 概述 虚拟机创建之后用户可以修改虚拟机的配置信息&#xff0c;称为在线修改虚拟机配置。在线修改配置以后&#xff0c;新的虚拟机配置文件会被持久化&#x…

高通410 随身WIFI刷入Debian系统(玩法合集)

引言 刚接触到这个项目是在b站上&#xff0c;刷到一位UP主的视频&#xff1a;https://b23.tv/xAFWiTF 其实现了在搭载高通410芯片的随身WIFI烧录linux系统&#xff0c;并在上面部署了chatGPT-Next网站服务。 本人参考的教程链接和其教程所有工具&#xff1a;https://pan.bai…

域名历史查询-免费批量域名历史快照注册时间查询软件

域名历史查询 域名历史查询是指通过查询工具&#xff0c;查询一个域名在过去的历史记录&#xff0c;包括注册时间、过期时间、更改记录、备案信息、WHOIS信息、IP记录、Alexa排名、流量统计等方面。通过查询域名的历史信息&#xff0c;研究者可以了解域名过去的状态&#xff0…

Map与Set中的两大实现类✌

map与set中的两大实现类 map和setSet的两种常用形态Map的两种常用形态实战&#x1f4aa; map和set 哈希表&#xff08;hashMap&#xff09;和 集合 (Set)是数据结构中比较常用的一部分&#xff0c;他们的特性通常可以解决很多问题&#xff0c;这两个数据结构是同根生&#xff…

Python开发之实现SG滤波

Python开发之实现SG滤波 1 SG滤波2 借助Python中的scipy.signal库实现SG滤波3 手动代码实现SG滤波 前言&#xff1a;主要介绍SG滤波的Python实现&#xff0c;顺带介绍SG滤波的实现原理。 1 SG滤波 Savitzky-Golay滤波器&#xff08;通常简称为S-G滤波器&#xff09;最初由Savi…

一百一十六、Zeppelin——Zeppelin0.9.0连接ClickHouse21.9.5.16(亲测有效,附步骤截图)

版本&#xff1a;Zeppelin0.9.0 ClickHouse21.9.5.16 1.目标&#xff1a;Zeppelin连上clickhouse&#xff0c;可以把clickhouse中的数据做可视化展示 2.参考文件&#xff1a;如何基于zeppelin JDBC Interpreter进行jdbc数据源的可视化交互分析 http://t.csdn.cn/DGH…

数智融合 | 美格智能助力AIGC产业迈向新未来

5月11日&#xff0c;在2023 “高通&美格智能物联网技术开放日”深圳站活动上&#xff0c;美格智能副总经理金海斌以《数智引领 融合创新》为题分享了5GAIoT技术赋能的价值展望。 ▲美格智能副总经理 金海斌 ▌算力&#xff1a;数字经济时代的“石油” 今年&#xff0c;由C…

Spring Boot 拦截器

Spring Boot 拦截器介绍 Spring Boot 拦截器是 AOP 的一种实现&#xff0c;专门拦截对控制层的请求&#xff0c;主要应用于判断用户权限&#xff0c;拦截webSocket请求。SpringBoot中的拦截器实现和spring mvc 中是一样的&#xff0c;它的大致流程是&#xff0c;先自己定义一个…

软件测试注意面试官的常规“套路”

一、自我介绍 这里就不过多阐述了&#xff0c;相信很多小伙伴都有。 二、灵活问题 1、大概说说之前公司的测试流程。 2、测试报告有哪些内容? 3、如何保证用例的覆盖度? 4、什么是测试用例,什么是测试脚本?两者的关系&#xff1f; 5、Bug的级别&#xff0c;按照什么划…

使用Simulink中的MATLAB Function模块存在的bug

为什么simulink中的MATLAB Function 模块需要按Ctrl+C才能中断程序??? 否则就会像这样一直是正在运行!!需要按Ctrl+C才能中断循环!!神奇的是每次需要按Ctrl+C才可运行simulink程序?? 再次打开Simulink中MATLAB function模块会出现以下bug: function [qr, qr_a, qr…

【Android Jetpack】新一代导航管理——Navigation

前言 不知道小伙伴们是否注意到&#xff0c;用AS创建一个默认的新项目后&#xff0c;MainActivity已经有了很大的不同&#xff0c;最大的区别就是新增加了两个Fragment&#xff0c;同时我们注意到这两个Fragment之间跳转的时候并没有使用之前FragmentTransaction这种形式&…

Nginx基本使用以及部署前端项目

前言 最近学习了一下Nginx&#xff0c;整理了一个博客&#xff0c;主要参考的是狂神说的b站视频教程&#xff0c;文章链接如下&#xff1a;狂神说Nginx快速入门 一、下载、启动Nginx 1.下载Nginx 到Nginx官方选择自己电脑适用的稳定版本下载&#xff0c;我下载的的windows版…

Web Components

1、前期回顾 JavaScript沙箱 1.1、什么是沙箱 在计算机安全中&#xff0c;沙箱&#xff08;Sandbox&#xff09;是一种用于隔离正在运行程序的安全机制&#xff0c;通常用于执行未经测试或者不受信任的程序或代码&#xff0c;它会为待执行的程序创建一个独立的执行环境&#x…

图解LeetCode——206. 反转链表

一、题目 给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反转后的链表。 二、示例 2.1> 示例 1&#xff1a; 【输入】head [1,2,3,4,5] 【输出】[5,4,3,2,1] 2.2> 示例 2&#xff1a; 【输入】head [1,2] 【输出】[2,1] 2.3> 示例 3&#…

六级备考32天|CET-6|分数分布|题型分布|翻译·贴春联·CCTV·印章|16:30~17:47

目录 英语六级总分&#xff1a;710分 一、英语六级作文 二、听力部分 248.5分 三、阅读理解35% 248.5分 四、翻译部分 汉译英 15% 106.5分 五、做题技巧 写作和翻译需要重点强化练习&#xff01; 六、积累 英语六级总分&#xff1a;710分 一、英语六级作文 说明&…

HTTP第13讲——HTTP的实体数据

数据类型与编码 在 TCP/IP 协议栈里&#xff0c;传输数据基本上都是“headerbody”的格式。但 TCP、UDP 因为是传输层的协议&#xff0c;它们不会关心 body 数据是什么&#xff0c;只要把数据发送到对方就算是完成了任务。 而 HTTP 协议则不同&#xff0c;它是应用层的协议&am…

pytorch实战11:基于pytorch简单实现DCGAN

基于pytorch简单实现DCGAN 前言 ​ 最近会把一些简单的CV领域的架构进行复现&#xff0c;完整的代码在最后。 本系列必须的基础 ​ python基础知识、CNN原理知识、pytorch基础知识 本系列的目的 ​ 一是帮助自己巩固知识点&#xff1b; ​ 二是自己实现一次&#xff0c;可以发…