隐马尔科夫模型(HMM)与线性动态系统(LDS)

在我们通常考虑的问题,都是希望假设数据之间是独立的,但有这样一类数据,他们之间有很明显的时序关系,比如天气预报,文字输入等,当把模型建立成独立时,无疑损失了很多有价值的信息。因此我们需要一些模型将时序关系表征在模型里,得到对数据更加准确地描述。HMM和LDS是其中相当经典的模型,在各自领域都有大量应用。
读者可以去我的github阅读一份将HMM用于NER识别的代码,欢迎star,欢迎fork

HMM

马尔可夫模型的缺陷

处理顺序数据的最简单的⽅式是忽略顺序的性质,将观测看做独⽴同分布。然⽽,这种⽅法⽆法利⽤数据中的顺序模式,例如序列中距离较近的观测之间的相关性。例如,假设我们观测⼀个⼆值变量,这个⼆值变量表⽰某⼀天是否下⾬。给定这个变量的⼀系列观测,我们希望预测下⼀天是否会下⾬。如果我们将所有的数据都看成独⽴同分布的,那么我们能够从数据中得到的唯⼀的信息就是⾬天的相对频率。然⽽,在实际⽣活中,我们知道天⽓经常会呈现出持续若⼲天的趋势。因此,观测到今天是否下⾬对于预测明天是否下⾬会有极⼤的帮助。

为了在概率模型中表⽰这种效果,我们需要放松独⽴同分布的假设。完成这件事的⼀种最简单的⽅式是考虑马尔科夫模型(Markov model)。⾸先我们注意到,不失⼀般性,我们可以使⽤概率的乘积规则来表⽰观测序列的联合概率分布,形式为
p ( x 1 , … , x N ) = p ( x 1 ) ∏ n = 2 N p ( x n ∣ x 1 , … , x n − 1 ) p \left( \boldsymbol { x } _ { 1 } , \ldots , \boldsymbol { x } _ { N } \right) = p \left( \boldsymbol { x } _ { 1 } \right) \prod _ { n = 2 } ^ { N } p \left( \boldsymbol { x } _ { n } | \boldsymbol { x } _ { 1 } , \ldots , \boldsymbol { x } _ { n - 1 } \right) p(x1,,xN)=p(x1)n=2Np(xnx1,,xn1)

如果我们现在假设右侧的每个条件概率分布只与最近的⼀次观测有关,⽽独⽴于其他所有之前的观测,那么我们就得到了⼀阶马尔科夫链(first-order Markov chain)。这个模型中,N次观测的序列的联合概率分布为
p ( x 1 , … , x N ) = p ( x 1 ) ∑ n = 2 N p ( x n ∣ x n − 1 ) p \left( \boldsymbol { x } _ { 1 } , \ldots , \boldsymbol { x } _ { N } \right) = p \left( \boldsymbol { x } _ { 1 } \right) \sum _ { n = 2 } ^ { N } p \left( \boldsymbol { x } _ { n } | \boldsymbol { x } _ { n - 1 } \right) p(x1,,xN)=p(x1)n=2Np(xnxn1)

虽然这⽐独⽴的模型要⼀般⼀些,但是仍然⾮常受限。对于许多顺序的观测来说,我们预计若⼲个连续观测的数据的趋势会为下⼀次预测提供重要的信息。⼀种让更早的观测产⽣影响的⽅法是使⽤⾼阶的马尔科夫链。如果我们允许预测除了与当前观测有关以外,还与当前观测的前⼀次观测有关,那么我们就得到了⼆阶马尔科夫链。然⽽,这种增长的灵活性是有代价的,因为现在模型中参数的数量要多得多。假设观测是具有K个状态的离散变量,那么⼀阶马尔科夫链中的条件概率分布 p ( x n ∣ x n − 1 ) p \left( \boldsymbol { x } _ { n } | \boldsymbol { x } _ { n - 1 } \right) p(xnxn1)由K -1个参数指定,每个参数都对应于 x n − 1 x_{n-1} xn1的K个状态,因此参数的总数为K(K - 1)。现在假设我们将模型推⼴到M阶马尔科夫链,从⽽联合概率分布由条件概率分布 p ( x n ∣ x n − M , … , x n − 1 ) p \left( \boldsymbol { x } _ { n } | \boldsymbol { x } _ { n - M } , \ldots , \boldsymbol { x } _ { n - 1 } \right) p(xnxnM,,xn1)构建。如果变量是离散变量,且条件概率分布使⽤⼀般的条件概率表的形式表⽰,那么这种模型中参数的数量为 K M ( K − 1 ) K^M(K-1) KM(K1)

隐马尔可夫模型

假设我们希望构造任意阶数的不受马尔科夫假设限制的序列模型,同时能够使⽤较少数量的⾃由参数确定。我们可以引⼊额外的潜在变量来使得更丰富的⼀类模型能够从简单的成分中构建,正如我们在第9章讨论混合概率分布和第12章讨论连续潜在变量模型时所做的那样。对于每个观测 x n x_n xn,我们引⼊⼀个对应的潜在变量 z n z_n zn(类型或维度可能与观测变量不同)。我们现在假设潜在变量构成了马尔科夫链,得到的图结构被称为状态空间模型(state space model),它满⾜下⾯的关键的条件独⽴性质,即给定 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 z _ { n + 1 } \perp z _ { n - 1 } \left| z _ { n }\right. zn+1zn1zn
于是可以得到观测变量和潜变量的联合分布:
p ( x 1 , … , x N , z 1 , … , z N ) = p ( z 1 ) [ ∏ n = 2 N p ( z n ∣ z n − 1 ) ] ∏ n = 1 N p ( x n ∣ z n ) p \left( \boldsymbol { x } _ { 1 } , \ldots , \boldsymbol { x } _ { N } , \boldsymbol { z } _ { 1 } , \ldots , \boldsymbol { z } _ { N } \right) = p \left( \boldsymbol { z } _ { 1 } \right) \left[ \prod _ { n = 2 } ^ { N } p \left( \boldsymbol { z } _ { n } | \boldsymbol { z } _ { n - 1 } \right) \right] \prod _ { n = 1 } ^ { N } p \left( \boldsymbol { x } _ { n } | \boldsymbol { z } _ { n } \right) p(x1,,xN,z1,,zN)=p(z1)[n=2Np(znzn1)]n=1Np(xnzn)
使⽤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 , … , x n ) p \left( \boldsymbol { x } _ { n + 1 } | \boldsymbol { x } _ { 1 } , \ldots , \boldsymbol { x } _ { n } \right) p(xn+1x1,,xn)不会表现出任何的条件独⽴性,因此我们对xn+1的预测依赖于所有之前的观测。
对于顺序数据来说。如果潜在变量是离散的,那么我们得到了隐马尔科夫模型(hidden Markov model)或者HMM(Elliott et al., 1995)。注意,HMM中的观测变量可以是离散的或者是连续的,并且可以使⽤许多不同的条件概率分布进⾏建模。如果潜在变量和观测变量都是⾼斯变量(结点的条件概率分布对于⽗结点的依赖是线性⾼斯的形式),那么我们就得到了线性动态系统(linear dynamical system)。

潜在变量是离散的服从多项分布的变量 z n z_n zn,描述了那个混合分量⽤于⽣成对应的观测 x n x_n xn。⽐较⽅便的做法是使⽤1-of-K表⽰⽅法。 我们现在让 z n z_n zn的概率分布通过条件概率分布 p ( z n ∣ z n − 1 ) p \left( z _ { n } | { z } _ { n - 1 } \right) p(znzn1)对前⼀个潜在变量 z n 1 z_{n_1} zn1产⽣依赖。由于潜在变量是K维⼆值变量,因此条件概率分布对应于数字组成的表格,记作A,它的元素被称为转移概率(transition probabilities)。元素为 A j k ≡ p ( z n k = 1 ∣ z n − 1 , j = 1 ) A _ { j k } \equiv p \left( z _ { n k } = 1 | z _ { n - 1 , j } = 1 \right) Ajkp(znk=1zn1,j=1)。由于它们是概率值,因此满⾜ 0 ≤ A j k ≤ 1 0 \le A_{jk} \le 1 0Ajk1
∑ k A j k = 1 \sum _ { k } A _ { j k } = 1 kAjk=1,从⽽矩阵A有K(K -1)个独⽴的参数。
这样,我们可以显式地将条件概率分布写成
p ( z n ∣ z n − 1 , A ) = ∏ k = 1 K ∏ j = 1 K A j k z n − 1 , j z n k p \left( z _ { n } | z _ { n - 1 } , A \right) = \prod _ { k = 1 } ^ { K } \prod _ { j = 1 } ^ { K } A _ { j k } ^ { z _ { n - 1 , j } z _ { n k } } p(znzn1,A)=k=1Kj=1KAjkzn1,jznk

初始潜在结点 z 1 z_1 z1很特别,因为它没有⽗结点,因此它的边缘概率分布 p ( z 1 ) p(z_1) p(z1)由⼀个概率向
π \pi π表⽰,元素为 π k ≡ p ( z 1 k = 1 ) \pi _ { k } \equiv p \left( z _ { 1 k } = 1 \right) πkp(z1k=1),即
p ( z 1 ∣ π ) = ∏ k = 1 K π k z 1 k p \left( z _ { 1 } | \pi \right) = \prod _ { k = 1 } ^ { K } \pi _ { k } ^ { z _ { 1 k } } p(z1π)=k=1Kπkz1k

可以通过定义观测变量的条件概率分布p(xn j zn;ϕ)来确定⼀个概率模型,其中ϕ是控制概率分布的参数集合。这些条件概率被称为发射概率(emission probabilities),可以是⾼斯分布(x是连续变量),也可以是条件概率表格(x是离散变量)。由于 x n x_n xn是观测值,因此对于⼀个给定的ϕ值,概率分布 p ( x n ∣ z n , ϕ ) p \left( \boldsymbol { x } _ { n } | \boldsymbol { z } _ { n } , \boldsymbol { \phi } \right) p(xnzn,ϕ)由⼀个K维的向量组成,对应于⼆值向量 z n z_n zn的K个可能的状态。我们可以将发射概率表⽰为

p ( x n ∣ z n , ϕ ) = ∏ k = 1 K p ( x n ∣ ϕ k ) z n k p \left( \boldsymbol { x } _ { n } | \boldsymbol { z } _ { n } , \boldsymbol { \phi } \right) = \prod _ { k = 1 } ^ { K } p \left( \boldsymbol { x } _ { n } | \boldsymbol { \phi } _ { k } \right) ^ { z _ { n k } } p(xnzn,ϕ)=k=1Kp(xnϕk)znk

我们将注意⼒集中在同质的(homogeneous)模型上,其中所有控制潜在变量的条件概率分布都共享相同的参数 A A A,类似地所有发射概率分布都共享相同的参数 ϕ \phi ϕ

马尔可夫模型参数的确立

如果我们观测到⼀个数据集 X = { x 1 , … , ∣ x N } \boldsymbol { X } = \left\{ \boldsymbol { x } _ { 1 } , \ldots , | \boldsymbol { x } _ { N } \right\} X={ x1,,xN},那么我们可以使⽤最⼤似然法确定HMM的参数。似然函数通过对联合概率分布中的潜在变量进⾏求和的⽅式得到,即
p ( X ∣ θ ) = ∑ Z p ( X , Z ∣ θ ) p ( \boldsymbol { X } | \boldsymbol { \theta } ) = \sum _ { Z } p ( \boldsymbol { X } , Z | \boldsymbol { \theta } ) p(Xθ)=Zp(X,Zθ)
很自然地,我们希望用EM算法求参数地极大似然。
Q ( θ , θ 旧 ) = ∑ Z p ( Z ∣ X , θ 旧 ) ln ⁡ p ( X , Z ∣ θ ) Q \left( \boldsymbol { \theta } , \boldsymbol { \theta } ^ { 旧 } \right) = \sum _ { Z } p ( Z | \boldsymbol { X } , \boldsymbol { \theta } ^ { 旧 } ) \ln p ( \boldsymbol { X } , \boldsymbol { Z } | \boldsymbol { \theta } ) Q(θ,θ)=Zp(ZX,θ)lnp(X,Zθ)
为了方便,我们引入两个符号:(注意这两个都是向量)
γ ( z n ) = p ( z n ∣ X , θ 旧 ) ξ ( z n − 1 , z n ) = p ( z n − 1 , z n ∣ X , θ 旧 ) \begin{aligned} \gamma \left( \boldsymbol { z } _ { n } \right) & = p \left( \boldsymbol { z } _ { n } | \boldsymbol { X } , \boldsymbol { \theta } ^ { 旧 } \right) \\ \xi \left( \boldsymbol { z } _ { n - 1 } , \boldsymbol { z } _ { n } \right) & = p \left( \boldsymbol { z } _ { n - 1 } , \boldsymbol { z } _ { n } | \boldsymbol { X } , \boldsymbol { \theta } ^ { 旧 } \right) \end{aligned} γ(zn)ξ(zn1,zn)=p(znX,θ)=p(zn1,znX,θ)
z n k z_{nk} znk来表⽰ z n k = 1 z_{nk}= 1 znk=1的条件概率,类似地使⽤ ξ ( z n − 1 , j , z n k ) \xi \left( z _ { n - 1 , j } , z _ { n k } \right) ξ(zn1,j,znk)来表⽰后⾯介绍的另⼀个概率。
γ ( z n k ) = E [ z n k ] = ∑ z n γ ( z n ) z n k ξ ( z n − 1 , j , z n k ) = E [ z n − 1 , j z n k ] = ∑ z n − 1 , z n ξ ( z n − 1 , z n ) z n − 1 , j z n k \begin{aligned} \gamma \left( z _ { n k } \right) &amp;= \mathbb { E } \left[ z _ { n k } \right] = \sum _ { z _ { n } } \gamma ( z_n ) z _ { n k }\\ \xi \left( z _ { n - 1 , j } , z _ { n k } \right) &amp;= \mathbb { E } \left[ z _ { n - 1 , j } z _ { n k } \right] = \sum _ { z _ { n - 1 } , z _ { n } } \xi \left( z _ { n - 1 } , z _ { n } \right) z _ { n - 1 , j } z _ { n k }\end{aligned} γ(znk)ξ(zn1,j,znk)=E[znk]=znγ(zn)znk=E[zn1,j<

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值