在我们通常考虑的问题,都是希望假设数据之间是独立的,但有这样一类数据,他们之间有很明显的时序关系,比如天气预报,文字输入等,当把模型建立成独立时,无疑损失了很多有价值的信息。因此我们需要一些模型将时序关系表征在模型里,得到对数据更加准确地描述。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=2∏Np(xn∣x1,…,xn−1)
如果我们现在假设右侧的每个条件概率分布只与最近的⼀次观测有关,⽽独⽴于其他所有之前的观测,那么我们就得到了⼀阶马尔科夫链(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=2∑Np(xn∣xn−1)
虽然这⽐独⽴的模型要⼀般⼀些,但是仍然⾮常受限。对于许多顺序的观测来说,我们预计若⼲个连续观测的数据的趋势会为下⼀次预测提供重要的信息。⼀种让更早的观测产⽣影响的⽅法是使⽤⾼阶的马尔科夫链。如果我们允许预测除了与当前观测有关以外,还与当前观测的前⼀次观测有关,那么我们就得到了⼆阶马尔科夫链。然⽽,这种增长的灵活性是有代价的,因为现在模型中参数的数量要多得多。假设观测是具有K个状态的离散变量,那么⼀阶马尔科夫链中的条件概率分布 p ( x n ∣ x n − 1 ) p \left( \boldsymbol { x } _ { n } | \boldsymbol { x } _ { n - 1 } \right) p(xn∣xn−1)由K -1个参数指定,每个参数都对应于 x n − 1 x_{n-1} xn−1的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(xn∣xn−M,…,xn−1)构建。如果变量是离散变量,且条件概率分布使⽤⼀般的条件概率表的形式表⽰,那么这种模型中参数的数量为 K M ( K − 1 ) K^M(K-1) KM(K−1)。
隐马尔可夫模型
假设我们希望构造任意阶数的不受马尔科夫假设限制的序列模型,同时能够使⽤较少数量的⾃由参数确定。我们可以引⼊额外的潜在变量来使得更丰富的⼀类模型能够从简单的成分中构建,正如我们在第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+1⊥zn−1∣zn
于是可以得到观测变量和潜变量的联合分布:
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=2∏Np(zn∣zn−1)]n=1∏Np(xn∣zn)
使⽤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+1∣x1,…,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(zn∣zn−1)对前⼀个潜在变量
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)
Ajk≡p(znk=1∣zn−1,j=1)。由于它们是概率值,因此满⾜
0
≤
A
j
k
≤
1
0 \le A_{jk} \le 1
0≤Ajk≤1且
∑
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(zn∣zn−1,A)=k=1∏Kj=1∏KAjkzn−1,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)
πk≡p(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=1∏Kπ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(xn∣zn,ϕ)由⼀个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(xn∣zn,ϕ)=k=1∏Kp(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∣θ)=Z∑p(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(θ,θ旧)=Z∑p(Z∣X,θ旧)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)ξ(zn−1,zn)=p(zn∣X,θ旧)=p(zn−1,zn∣X,θ旧)
⽤
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)
ξ(zn−1,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) &= \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) &= \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)ξ(zn−1,j,znk)=E[znk]=zn∑γ(zn)znk=E[zn−1,jznk]=zn−1,zn∑ξ(zn−1,zn)zn−1,jznk
带入联合分布的表达式:
Q
(
θ
,
θ
旧
)
=
∑
k
=
1
K
γ
(
z
1
k
)
ln
π
k
+
∑
n
=
1
N
∑
j
=
1
K
∑
k
=
1
K
ξ
(
z
n
−
1
,
j
,
z
n
k
)
ln
A
j
k
+
∑
n
=
1
N
∑
k
=
1
K
γ
(
z
n
k
)
ln
p
(
x
n
∣
ϕ
k
)
\begin{aligned} Q \left( \boldsymbol { \theta } , \boldsymbol { \theta } ^ { 旧} \right) = & \sum _ { k = 1 } ^ { K } \gamma \left( z _ { 1 k } \right) \ln \pi _ { k } + \sum _ { n = 1 } ^ { N } \sum _ { j = 1 } ^ { K } \sum _ { k = 1 } ^ { K } \xi \left( z _ { n - 1 , j } , z _ { n k } \right) \ln A _ { j k } \\ & + \sum _ { n = 1 } ^ { N } \sum _ { k = 1 } ^ { K } \gamma \left( z _ { n k } \right) \ln p \left( \boldsymbol { x } _ { n } | \phi _ { k } \right) \end{aligned}
Q(θ,θ旧)=k=1∑Kγ(z1k)lnπk+n=1∑Nj=1∑Kk=1∑Kξ(zn−1,j,znk)lnAjk+n=1∑Nk=1∑Kγ(znk)lnp(xn∣ϕk)
所以能高效求
γ
(
z
n
)
\gamma \left( \boldsymbol { z } _ { n } \right)
γ(zn)和
ξ
(
z
n
−
1
,
z
n
)
\xi \left( \boldsymbol { z } _ { n - 1 } , \boldsymbol { z } _ { n } \right)
ξ(zn−1,zn)是E步的核心。
下面来详述如何求
γ
(
z
n
)
\gamma(z_n)
γ(zn)以及
ξ
(
z
n
−
1
,
z
n
)
\xi \left( \boldsymbol { z } _ { n - 1 } , \boldsymbol { z } _ { n } \right)
ξ(zn−1,zn)
首先,我们很容易通过D-划分知道数据的条件独立性满足以下性质:
p
(
X
∣
z
n
)
=
p
(
x
1
,
…
,
x
n
∣
z
n
)
p
(
x
n
+
1
,
…
,
x
N
∣
z
n
)
p ( \boldsymbol { X } | \boldsymbol { z } _ { n } ) = p \left( \boldsymbol { x } _ { 1 } , \ldots , \boldsymbol { x } _ { n } | \boldsymbol { z } _ { n } \right) p \left( \boldsymbol { x } _ { n + 1 } , \ldots , \boldsymbol { x } _ { N } | \boldsymbol { z } _ { n } \right)
p(X∣zn)=p(x1,…,xn∣zn)p(xn+1,…,xN∣zn)
p
(
x
1
,
…
,
x
n
−
1
∣
x
n
,
z
n
)
=
p
(
x
1
,
…
,
x
n
−
1
∣
z
n
)
p \left( \boldsymbol { x } _ { 1 } , \ldots , \boldsymbol { x } _ { n - 1 } | \boldsymbol { x } _ { n } , \boldsymbol { z } _ { n } \right) = p \left( \boldsymbol { x } _ { 1 } , \ldots , \boldsymbol { x } _ { n - 1 } | \boldsymbol { z } _ { n } \right)
p(x1,…,xn−1∣xn,zn)=p(x1,…,xn−1∣zn)
p
(
x
1
,
…
,
x
n
−
1
∣
z
n
−
1
,
z
n
)
=
p
(
x
1
,
…
,
x
n
−
1
∣
z
n
−
1
)
p \left( \boldsymbol { x } _ { 1 } , \ldots , \boldsymbol { x } _ { n - 1 } | \boldsymbol { z } _ { n - 1 } , \boldsymbol { z } _ { n } \right) = p \left( \boldsymbol { x } _ { 1 } , \ldots , \boldsymbol { x } _ { n - 1 } | \boldsymbol { z } _ { n - 1 } \right)
p(x1,…,xn−1∣zn−1,zn)=p(x1,…,xn−1∣zn−1)
p
(
x
n
+
1
,
…
,
x
N
∣
z
n
,
z
n
+
1
)
=
p
(
x
n
+
1
,
…
,
x
N
∣
z
n
+
1
)
p \left( \boldsymbol { x } _ { n + 1 } , \ldots , \boldsymbol { x } _ { N } | \boldsymbol { z } _ { n } , \boldsymbol { z } _ { n + 1 } \right) = p \left( \boldsymbol { x } _ { n + 1 } , \ldots , \boldsymbol { x } _ { N } | \boldsymbol { z } _ { n + 1 } \right)
p(xn+1,…,xN∣zn,zn+1)=p(xn+1,…,xN∣zn+1)
p
(
x
n
+
2
,
…
,
x
N
∣
z
n
+
1
,
x
n
+
1
)
=
p
(
x
n
+
2
,
…
,
x
N
∣
z
n
+
1
)
p \left( \boldsymbol { x } _ { n + 2 } , \ldots , \boldsymbol { x } _ { N } | \boldsymbol { z } _ { n + 1 } , \boldsymbol { x } _ { n + 1 } \right) = p \left( \boldsymbol { x } _ { n + 2 } , \ldots , \boldsymbol { x } _ { N } | \boldsymbol { z } _ { n + 1 } \right)
p(xn+2,…,xN∣zn+1,xn+1)=p(xn+2,…,xN∣zn+1)
p
(
X
∣
z
n
−
1
,
z
n
)
=
p
(
x
1
,
…
,
x
n
−
1
∣
z
n
−
1
)
p
(
x
n
∣
z
n
)
p
(
x
n
+
1
,
…
,
x
N
∣
z
n
)
p ( \boldsymbol { X } | \boldsymbol { z } _ { n - 1 } , \boldsymbol { z } _ { n } ) = p \left( \boldsymbol { x } _ { 1 } , \ldots , \boldsymbol { x } _ { n - 1 } | \boldsymbol { z } _ { n - 1 } \right) p \left( \boldsymbol { x } _ { n } | \boldsymbol { z } _ { n } \right) p \left( \boldsymbol { x } _ { n + 1 } , \ldots , \boldsymbol { x } _ { N } | \boldsymbol { z } _ { n } \right)
p(X∣zn−1,zn)=p(x1,…,xn−1∣zn−1)p(xn∣zn)p(xn+1,…,xN∣zn)
p
(
x
N
+
1
∣
X
,
z
N
+
1
)
=
p
(
x
N
+
1
∣
z
N
+
1
)
p
(
z
N
+
1
∣
z
N
,
X
)
=
p
(
z
N
+
1
,
z
N
)
\begin{aligned} p \left( \boldsymbol { x } _ { N + 1 } | \boldsymbol { X } , \boldsymbol { z } _ { N + 1 } \right) & = p \left( \boldsymbol { x } _ { N + 1 } | \boldsymbol { z } _ { N + 1 } \right) \\ p \left( \boldsymbol { z } _ { N + 1 } | \boldsymbol { z } _ { N } , \boldsymbol { X } \right) & = p \left( \boldsymbol { z } _ { N + 1 } , \boldsymbol { z } _ { N } \right) \end{aligned}
p(xN+1∣X,zN+1)p(zN+1∣zN,X)=p(xN+1∣zN+1)=p(zN+1,zN)
首先计算
γ
(
z
n
k
)
\gamma (z_{nk})
γ(znk):
回顾
γ
(
z
n
)
\gamma(z_n)
γ(zn)的定义, 我们有
γ
(
z
n
)
=
p
(
z
n
∣
X
)
=
p
(
X
∣
z
n
)
p
(
z
n
)
p
(
X
)
\gamma \left( \boldsymbol { z } _ { n } \right) = p \left( \boldsymbol { z } _ { n } | \boldsymbol { X } \right) = \frac { p ( \boldsymbol { X } | \boldsymbol { z } _ { n } ) p \left( \boldsymbol { z } _ { n } \right) } { p ( \boldsymbol { X } ) }
γ(zn)=p(zn∣X)=p(X)p(X∣zn)p(zn)
我们利用条件独立性容易得:
γ
(
z
n
)
=
p
(
x
1
,
…
,
x
n
,
z
n
)
p
(
x
n
+
1
,
…
,
x
N
∣
z
n
)
p
(
X
)
=
α
(
z
n
)
β
(
z
n
)
p
(
X
)
\gamma \left( \boldsymbol { z } _ { n } \right) = \frac { p \left( \boldsymbol { x } _ { 1 } , \ldots , \boldsymbol { x } _ { n } , \boldsymbol { z } _ { n } \right) p \left( \boldsymbol { x } _ { n + 1 } , \ldots , \boldsymbol { x } _ { N } | \boldsymbol { z } _ { n } \right) } { p ( \boldsymbol { X } ) } = \frac { \alpha \left( \boldsymbol { z } _ { n } \right) \beta \left( \boldsymbol { z } _ { n } \right) } { p ( \boldsymbol { X } ) }
γ(zn)=p(X)p(x1,…,xn,zn)p(xn+1,…,xN∣zn)=p(X)α(zn)β(zn)
所以,我们的核心转而放在求
α
(
z
n
)
\alpha(z_n)
α(zn)以及
β
(
z
n
)
\beta(z_n)
β(zn)上面。
我们很容易发现
α
(
z
n
)
\alpha(z_n)
α(zn)有如下性质:
α
(
z
n
)
=
p
(
x
1
,
…
,
x
n
,
z
n
)
=
p
(
x
1
,
…
,
x
n
∣
z
n
)
p
(
z
n
)
=
p
(
x
n
∣
z
n
)
p
(
x
1
,
…
,
x
n
−
1
∣
z
n
)
p
(
z
n
)
=
p
(
x
n
∣
z
n
)
p
(
x
1
,
…
,
x
n
−
1
,
z
n
)
=
p
(
x
n
∣
z
n
)
∑
z
n
−
1
p
(
x
1
,
…
,
x
n
−
1
,
z
n
−
1
,
z
n
)
=
p
(
x
n
∣
z
n
)
∑
z
n
−
1
p
(
x
1
,
…
,
x
n
−
1
,
z
n
∣
z
n
−
1
)
p
(
z
n
−
1
)
=
p
(
x
n
∣
z
n
)
∑
z
n
−
1
p
(
x
1
,
…
,
x
n
−
1
∣
z
n
−
1
)
p
(
z
n
∣
z
n
−
1
)
p
(
z
n
−
1
)
=
p
(
x
n
∣
z
n
)
∑
z
n
−
1
p
(
x
1
,
…
,
x
n
−
1
,
z
n
−
1
)
p
(
z
n
∣
z
n
−
1
)
\begin{aligned} \alpha \left( \boldsymbol { z } _ { n } \right) & = p \left( \boldsymbol { x } _ { 1 } , \ldots , \boldsymbol { x } _ { n } , \boldsymbol { z } _ { n } \right) \\ & = p \left( \boldsymbol { x } _ { 1 } , \ldots , \boldsymbol { x } _ { n } | \boldsymbol { z } _ { n } \right) p \left( \boldsymbol { z } _ { n } \right) \\ & = p \left( \boldsymbol { x } _ { n } | \boldsymbol { z } _ { n } \right) p \left( \boldsymbol { x } _ { 1 } , \ldots , \boldsymbol { x } _ { n - 1 } | \boldsymbol { z } _ { n } \right) p \left( \boldsymbol { z } _ { n } \right) \\ & = p \left( \boldsymbol { x } _ { n } | \boldsymbol { z } _ { n } \right) p \left( \boldsymbol { x } _ { 1 } , \ldots , \boldsymbol { x } _ { n - 1 } , \boldsymbol { z } _ { n } \right) \\ & = p \left( \boldsymbol { x } _ { n } | \boldsymbol { z } _ { n } \right) \sum _ { \boldsymbol { z } _ { n - 1 } } p \left( \boldsymbol { x } _ { 1 } , \ldots , \boldsymbol { x } _ { n - 1 } , \boldsymbol { z } _ { n - 1 } , \boldsymbol { z } _ { n } \right) \\ &= p \left( \boldsymbol { x } _ { n } | \boldsymbol { z } _ { n } \right) \sum _ { \boldsymbol { z } _ { n - 1 } } p \left( \boldsymbol { x } _ { 1 } , \ldots , \boldsymbol { x } _ { n - 1 } , \boldsymbol { z } _ { n } | \boldsymbol { z } _ { n - 1 } \right) p \left( \boldsymbol { z } _ { n - 1 } \right)\\ &= p \left( \boldsymbol { x } _ { n } | \boldsymbol { z } _ { n } \right) \sum _ { \boldsymbol { z } _ { n - 1 } } p \left( \boldsymbol { x } _ { 1 } , \ldots , \boldsymbol { x } _ { n - 1 } | \boldsymbol { z } _ { n - 1 } \right) p \left( \boldsymbol { z } _ { n } | \boldsymbol { z } _ { n - 1 } \right) p \left( \boldsymbol { z } _ { n - 1 } \right)\\ &= p \left( \boldsymbol { x } _ { n } | \boldsymbol { z } _ { n } \right) \sum _ { \boldsymbol { z } _ { n - 1 } } p \left( \boldsymbol { x } _ { 1 } , \ldots , \boldsymbol { x } _ { n - 1 } , \boldsymbol { z } _ { n - 1 } \right) p \left( \boldsymbol { z } _ { n } | \boldsymbol { z } _ { n - 1 } \right)\end{aligned}
α(zn)=p(x1,…,xn,zn)=p(x1,…,xn∣zn)p(zn)=p(xn∣zn)p(x1,…,xn−1∣zn)p(zn)=p(xn∣zn)p(x1,…,xn−1,zn)=p(xn∣zn)zn−1∑p(x1,…,xn−1,zn−1,zn)=p(xn∣zn)zn−1∑p(x1,…,xn−1,zn∣zn−1)p(zn−1)=p(xn∣zn)zn−1∑p(x1,…,xn−1∣zn−1)p(zn∣zn−1)p(zn−1)=p(xn∣zn)zn−1∑p(x1,…,xn−1,zn−1)p(zn∣zn−1)
所以
α
(
z
n
)
\alpha(z_n)
α(zn)有如下递推关系:
α
(
z
n
)
=
p
(
x
n
∣
z
n
)
∑
z
n
−
1
α
(
z
n
−
1
)
p
(
z
n
∣
z
n
−
1
)
\alpha \left( \boldsymbol { z } _ { n } \right) = p \left( \boldsymbol { x } _ { n } | \boldsymbol { z } _ { n } \right) \sum _ { \boldsymbol { z } _ { n - 1 } } \alpha \left( \boldsymbol { z } _ { n - 1 } \right) p \left( \boldsymbol { z } _ { n } | \boldsymbol { z } _ { n - 1 } \right)
α(zn)=p(xn∣zn)zn−1∑α(zn−1)p(zn∣zn−1)
同理
β
(
z
n
)
\beta(z_n)
β(zn)也有递推关系:
β
(
z
n
)
=
∑
z
n
+
1
β
(
z
n
+
1
)
p
(
x
n
+
1
∣
z
n
+
1
)
p
(
z
n
+
1
∣
z
n
)
\beta \left( \boldsymbol { z } _ { n } \right) = \sum _ { \boldsymbol { z } _ { n + 1 } } \beta \left( \boldsymbol { z } _ { n + 1 } \right) p \left( \boldsymbol { x } _ { n + 1 } | \boldsymbol { z } _ { n + 1 } \right) p \left( \boldsymbol { z } _ { n + 1 } | \boldsymbol { z } _ { n } \right)
β(zn)=zn+1∑β(zn+1)p(xn+1∣zn+1)p(zn+1∣zn)
如此,我们就能够高效地求解
α
(
z
n
)
\alpha(z_n)
α(zn)与
β
(
z
n
)
\beta(z_n)
β(zn),进而求出
γ
(
z
n
)
\gamma(z_n)
γ(zn)
缩放因子
在我们能够在实际应⽤中使⽤前向后向算法之前, 有⼀件事情必须强调,
α
(
z
n
)
\alpha(z_n)
α(zn)很快就会指数地趋近于零。 因此我们使⽤重新缩放的
α
(
z
n
)
\alpha(z_n)
α(zn)和
β
(
z
n
)
\beta(z_n)
β(zn)来计算,它们的值保持与单位长度在同⼀个量级上。正如我们将看到的那样,当我们在EM算法中使⽤这些缩放的量时,对应的缩放因⼦会消去。
我们考虑:
α
^
(
z
n
)
=
p
(
z
n
∣
x
1
,
…
,
x
n
)
=
α
(
z
n
)
p
(
x
1
,
…
,
x
n
)
\widehat { \alpha } \left( \boldsymbol { z } _ { n } \right) = p \left( \boldsymbol { z } _ { n } | \boldsymbol { x } _ { 1 } , \ldots , \boldsymbol { x } _ { n } \right) = \frac { \alpha \left( \boldsymbol { z } _ { n } \right) } { p \left( \boldsymbol { x } _ { 1 } , \ldots , \boldsymbol { x } _ { n } \right) }
α
(zn)=p(zn∣x1,…,xn)=p(x1,…,xn)α(zn)
令:
c
n
=
p
(
x
n
∣
x
1
,
…
,
x
n
−
1
)
c _ { n } = p \left( \boldsymbol { x } _ { n } | \boldsymbol { x } _ { 1 } , \ldots , \boldsymbol { x } _ { n - 1 } \right)
cn=p(xn∣x1,…,xn−1)
根据乘积规则,我们有:
p
(
x
1
,
…
,
x
n
)
=
∏
m
=
1
n
c
m
p \left( \boldsymbol { x } _ { 1 } , \ldots , \boldsymbol { x } _ { n } \right) = \prod _ { m = 1 } ^ { n } c _ { m }
p(x1,…,xn)=m=1∏ncm
因此:
α
(
z
n
)
=
p
(
z
n
∣
x
1
,
…
,
x
n
)
p
(
x
1
,
…
,
x
n
)
=
(
∏
m
=
1
n
c
m
)
α
^
(
z
n
)
\alpha \left( \boldsymbol { z } _ { n } \right) = p \left( \boldsymbol { z } _ { n } | \boldsymbol { x } _ { 1 } , \ldots , \boldsymbol { x } _ { n } \right) p \left( \boldsymbol { x } _ { 1 } , \ldots , \boldsymbol { x } _ { n } \right) = \left( \prod _ { m = 1 } ^ { n } c _ { m } \right) \widehat { \alpha } \left( \boldsymbol { z } _ { n } \right)
α(zn)=p(zn∣x1,…,xn)p(x1,…,xn)=(m=1∏ncm)α
(zn)
然后我们可以将
α
\alpha
α的递归⽅程(13.36)转化为
α
^
\widehat { \alpha }
α
的递归⽅程,形式为
c
n
α
^
(
z
n
)
=
p
(
x
n
∣
z
n
)
∑
z
n
−
1
α
^
(
z
n
−
1
)
p
(
z
n
∣
z
n
−
1
)
c _ { n } \widehat { \alpha } \left( \boldsymbol { z } _ { n } \right) = p \left( \boldsymbol { x } _ { n } | \boldsymbol { z } _ { n } \right) \sum _ { \boldsymbol { z } _ { n - 1 } } \widehat { \alpha } \left( \boldsymbol { z } _ { n - 1 } \right) p \left( \boldsymbol { z } _ { n } | \boldsymbol { z } _ { n - 1 } \right)
cnα
(zn)=p(xn∣zn)zn−1∑α
(zn−1)p(zn∣zn−1)
同理:
c
n
+
1
β
^
(
z
n
)
=
∑
z
n
+
1
β
^
(
z
n
+
1
)
p
(
x
n
+
1
∣
z
n
+
1
)
p
(
z
n
+
1
∣
z
n
)
c _ { n + 1 } \widehat { \beta } \left( \boldsymbol { z } _ { n } \right) = \sum _ { \boldsymbol { z } _ { n + 1 } } \widehat { \beta } \left( \boldsymbol { z } _ { n + 1 } \right) p \left( \boldsymbol { x } _ { n + 1 } | \boldsymbol { z } _ { n + 1 } \right) p \left( \boldsymbol { z } _ { n + 1 } | \boldsymbol { z } _ { n } \right)
cn+1β
(zn)=zn+1∑β
(zn+1)p(xn+1∣zn+1)p(zn+1∣zn)
我们看到所求的边缘概率为
γ
(
z
n
)
=
α
^
(
z
n
)
β
^
(
z
n
)
\gamma \left( \boldsymbol { z } _ { n } \right) = \widehat { \alpha } \left( \boldsymbol { z } _ { n } \right) \widehat { \beta } \left( \boldsymbol { z } _ { n } \right)
γ(zn)=α
(zn)β
(zn)
ξ
(
z
n
−
1
,
z
n
)
=
c
n
−
1
α
^
(
z
n
−
1
)
p
(
x
n
∣
z
n
)
p
(
z
n
∣
z
n
−
1
)
β
^
(
z
n
)
\xi \left( \boldsymbol { z } _ { n - 1 } , \boldsymbol { z } _ { n } \right) = c _ { n } ^ { - 1 } \widehat { \alpha } \left( \boldsymbol { z } _ { n - 1 } \right) p \left( \boldsymbol { x } _ { n } | \boldsymbol { z } _ { n } \right) p \left( \boldsymbol { z } _ { n } | \boldsymbol { z } _ { n - 1 } \right) \widehat { \beta } \left( \boldsymbol { z } _ { n } \right)
ξ(zn−1,zn)=cn−1α
(zn−1)p(xn∣zn)p(zn∣zn−1)β
(zn)
利用动态规划高效求解极大似然估计
在隐马尔可夫模型的许多应⽤中,潜在变量有许多有意义的直观意义,因此对于给定的观测序列,我们常常感兴趣的是寻找概率最⾼的隐含状态序列。例如,在语⾳识别中,对于⼀个给定的声⾳观测序列,我们可能希望找到概率最⼤的⾳素序列。在实际应⽤中,我们通常感兴趣的是寻找最可能的状态序列(sequence),这可以使⽤最⼤加和算法⾼效地求出,这个算法在隐马尔科夫模型中被称为维特⽐算法。
事实上,我们很容易注意到,最优路径具有如下特性:如果最优路径在时刻n通过
z
n
∗
z_n^*
zn∗。那么从这个点到终点的路径必须是最优的。
我们考虑:
ω
(
z
n
)
=
max
z
1
,
…
,
z
n
−
1
ln
p
(
x
1
,
…
,
x
n
,
z
1
,
…
,
z
n
)
\omega \left( z _ { n } \right) = \max _ { z _ { 1 } , \ldots , z _ { n - 1 } } \ln p \left( \boldsymbol { x } _ { 1 } , \ldots , \boldsymbol { x } _ { n } , \boldsymbol { z } _ { 1 } , \ldots , \boldsymbol { z } _ { n } \right)
ω(zn)=z1,…,zn−1maxlnp(x1,…,xn,z1,…,zn)
其表达含义为在第n步固定为
z
n
z_n
zn的情况下的前n项对数似然
显然最优解满足
P
∗
=
max
1
≤
i
≤
N
ω
(
z
N
i
)
P^* =\max_{1\le i\le N}\omega(z_{Ni})
P∗=max1≤i≤Nω(zNi),
z
N
∗
=
arg
max
i
ω
(
z
N
i
)
z_N^*=\arg\max_{i}\omega(z_{Ni})
zN∗=argmaxiω(zNi)
另外我们需要具体求出
{
z
1
,
.
.
.
,
z
N
}
\{z_1,...,z_N\}
{z1,...,zN}序列:
事实上我们有:假设定义在时刻n的状态为i的路径中概率最大的n-1个节点为
ϕ
n
−
1
(
i
)
\phi_{n-1}(i)
ϕn−1(i)
ϕ
n
−
1
(
i
)
=
arg
max
j
[
ω
(
z
n
−
1
,
j
)
A
j
i
]
\phi_{n-1}(i) = \arg\max_j[\omega( z_{n-1,j})A_{ji}]
ϕn−1(i)=argjmax[ω(zn−1,j)Aji]
于是,我们可以求出每个时刻的潜变量:
z
n
−
1
∗
=
ϕ
n
−
1
(
z
n
∗
)
z_{n-1}^* = \phi_{n-1}(z_n^*)
zn−1∗=ϕn−1(zn∗)
LDS
基本概念
对于顺序数据来说,之前的概率图描述了两个重要的模型。如果潜在变量是离散的,那么我们得到了隐马尔科夫模型(hidden Markov model)或者HMM(Elliott et al., 1995)。注意,HMM中的观测变量可以是离散的或者是连续的,并且可以使⽤许多不同的条件概率分布进⾏建模。如果潜在变量和观测变量都是⾼斯变量(结点的条件概率分布对于⽗结点的依赖是线性⾼斯的形式),那么我们就得到了线性动态系统(linear dynamical system。
为了说明线性动态系统的概念,让我们考虑下⾯这个简单的例⼦,它经常在实际问题中出现。假设我们希望使⽤⼀个有噪声的传感器测量⼀个未知量z的值,传感器返回⼀个观测值x,表⽰z的值加上⼀个零均值的⾼斯噪声。给定⼀个单次的测量,我们关于z的最好的猜测是假设z = x。然⽽,我们可以通过取多次测量然后求平均的⽅法提⾼我们对z的估计效果,因为随机噪声项倾向于彼此抵消。现在,让我们将情况变得更复杂。假设我们希望测量⼀个随着时间变化的量z。我们可以对进⾏常规的测量x,从⽽我们得到了 x 1 , … , x N \boldsymbol { x } _ { 1 } , \dots , \boldsymbol { x } _ { N } x1,…,xN,我们希望找到对应的 z 1 , … , z N z _ { 1 } , \dots , \mathcal { z } _ { N } z1,…,zN。如果我们简单地对测量求平均,那么由于随机噪声产⽣的误差会被消去,但是不幸的是我们会仅仅得到⼀个单⼀的平均估计,对z的变化进⾏了平均,从⽽引⼊了⼀种新的误差。
线性动态系统模型
模型假设:
p
(
z
n
∣
z
n
−
1
)
=
N
(
z
n
∣
A
z
n
−
1
,
Γ
)
p
(
x
n
∣
z
n
)
=
N
(
x
n
∣
C
z
n
,
Σ
)
p
(
z
1
)
=
N
(
z
1
∣
μ
0
,
P
0
)
\begin{aligned} p \left( \boldsymbol { z } _ { n } | \boldsymbol { z } _ { n - 1 } \right) & = \mathcal { N } \left( \boldsymbol { z } _ { n } | \boldsymbol { A } \boldsymbol { z } _ { n - 1 } , \boldsymbol { \Gamma } \right) \\ p \left( \boldsymbol { x } _ { n } | \boldsymbol { z } _ { n } \right) & = \mathcal { N } \left( \boldsymbol { x } _ { n } | \boldsymbol { C z } _ { n } , \boldsymbol { \Sigma } \right)\\p \left( z _ { 1 } \right) &= \mathcal { N } \left( z _ { 1 } | \mu _ { 0 } , P _ { 0 } \right) \end{aligned}
p(zn∣zn−1)p(xn∣zn)p(z1)=N(zn∣Azn−1,Γ)=N(xn∣Czn,Σ)=N(z1∣μ0,P0)
因此,参数为
θ
=
{
A
,
Γ
,
C
,
Σ
,
μ
0
,
P
0
}
\boldsymbol { \theta } = \left\{ \boldsymbol { A } , \boldsymbol { \Gamma } , \boldsymbol { C } , \boldsymbol { \Sigma } , \boldsymbol { \mu } _ { 0 } , \boldsymbol { P } _ { 0 } \right\}
θ={A,Γ,C,Σ,μ0,P0}
线性动态系统的推断:
我们希望考虑
p
(
z
n
∣
x
1
,
…
,
x
n
)
p \left( \boldsymbol { z } _ { n } | \boldsymbol { x } _ { 1 } , \ldots , \boldsymbol { x } _ { n } \right)
p(zn∣x1,…,xn)
我们不妨将其记作
α
^
(
z
n
)
=
N
(
z
n
∣
μ
n
,
V
n
)
\widehat { \alpha } \left( z _ { n } \right) = \mathcal { N } \left( z _ { n } | \boldsymbol { \mu } _ { n } , \boldsymbol { V } _ { n } \right)
α
(zn)=N(zn∣μn,Vn)
由于缩放变量
α
^
(
z
n
)
\widehat { \alpha } \left( z _ { n } \right)
α
(zn)传播公式完全相同,因此我们有:
c
n
N
(
z
n
∣
μ
n
,
V
n
)
=
N
(
x
n
∣
C
z
n
,
Σ
)
∫
N
(
z
n
∣
A
z
n
−
1
,
Γ
)
N
(
z
n
−
1
∣
μ
n
−
1
,
V
n
−
1
)
d
z
n
−
1
c _ { n } \mathcal { N } \left( \boldsymbol { z } _ { n } | \boldsymbol { \mu } _ { n } , \boldsymbol { V } _ { n } \right) = \mathcal { N } \left( \boldsymbol { x } _ { n } | \boldsymbol { C } \boldsymbol { z } _ { n } , \mathbf { \Sigma } \right)\int \mathcal { N } \left( \boldsymbol { z } _ { n } | \boldsymbol { A } \boldsymbol { z } _ { n - 1 } , \mathbf { \Gamma } \right) \mathcal { N } \left( \boldsymbol { z } _ { n - 1 } | \boldsymbol { \mu } _ { n - 1 } , \boldsymbol { V } _ { n - 1 } \right) \mathrm { d } \boldsymbol { z } _ { n - 1 }
cnN(zn∣μn,Vn)=N(xn∣Czn,Σ)∫N(zn∣Azn−1,Γ)N(zn−1∣μn−1,Vn−1)dzn−1
因此,我们有:
μ
n
=
A
μ
n
−
1
+
K
n
(
x
n
−
C
A
μ
n
−
1
)
\boldsymbol { \mu } _ { n } = \boldsymbol { A } \boldsymbol { \mu } _ { n - 1 } + \boldsymbol { K } _ { n } \left( \boldsymbol { x } _ { n } - \boldsymbol { C A } \boldsymbol { \mu } _ { n - 1 } \right)
μn=Aμn−1+Kn(xn−CAμn−1)
V
n
=
(
I
−
K
n
C
)
P
n
−
1
\boldsymbol { V } _ { n } = \left( \boldsymbol { I } - \boldsymbol { K } _ { n } \boldsymbol { C } \right) \boldsymbol { P } _ { n - 1 }
Vn=(I−KnC)Pn−1
后向传播一般考虑
γ
(
z
n
)
=
α
^
(
z
n
)
β
^
(
z
n
)
\gamma \left( \boldsymbol { z } _ { n } \right) = \widehat { \alpha } \left( \boldsymbol { z } _ { n } \right) \widehat { \beta } \left( \boldsymbol { z } _ { n } \right)
γ(zn)=α
(zn)β
(zn)
γ
(
z
n
)
=
α
^
(
z
n
)
β
^
(
z
n
)
=
N
(
z
n
∣
μ
^
n
,
V
^
n
)
\gamma \left( \boldsymbol { z } _ { n } \right) = \widehat { \alpha } \left( \boldsymbol { z } _ { n } \right) \widehat { \beta } \left( \boldsymbol { z } _ { n } \right) = \mathcal { N } \left( \boldsymbol { z } _ { n } | \widehat { \boldsymbol { \mu } } _ { n } , \widehat { \boldsymbol { V } } _ { n } \right)
γ(zn)=α
(zn)β
(zn)=N(zn∣μ
n,V
n)
我们有如下递推关系:
μ
^
n
=
μ
n
+
J
n
(
μ
^
n
+
1
+
A
μ
n
)
\widehat { \boldsymbol { \mu } } _ { n } = \boldsymbol { \mu } _ { n } + \boldsymbol { J } _ { n } \left( \widehat { \boldsymbol { \mu } } _ { n + 1 } + \boldsymbol { A } \boldsymbol { \mu } _ { n } \right)
μ
n=μn+Jn(μ
n+1+Aμn)
V
^
n
=
V
n
+
J
n
(
V
^
n
+
1
−
P
n
)
J
n
T
\widehat { \boldsymbol { V } } _ { n } = \boldsymbol { V } _ { n } + \boldsymbol { J } _ { n } \left( \widehat { \boldsymbol { V } } _ { n + 1 } - \boldsymbol { P } _ { n } \right) \boldsymbol { J } _ { n } ^ { T }
V
n=Vn+Jn(V
n+1−Pn)JnT
我们很容易得到
p
(
Z
∣
X
,
θ
旧
)
p ( Z | X , \theta ^ { 旧} )
p(Z∣X,θ旧),进而,我们有
E
[
z
n
]
=
μ
^
n
\mathbb { E } \left[ z _ { n } \right] = \widehat { \mu } _ { n }
E[zn]=μ
n
E
[
z
n
z
n
−
1
T
]
=
V
^
n
J
n
−
1
T
+
μ
^
n
μ
^
n
−
1
T
\mathbb { E } \left[ \boldsymbol { z } _ { n } \boldsymbol { z } _ { n - 1 } ^ { T } \right] = \widehat { \boldsymbol { V } } _ { n } \boldsymbol { J } _ { n - 1 } ^ { T } + \widehat { \boldsymbol { \mu } } _ { n } \widehat { \boldsymbol { \mu } } _ { n - 1 } ^ { T }
E[znzn−1T]=V
nJn−1T+μ
nμ
n−1T
E
[
z
n
z
n
T
]
=
V
^
n
+
μ
^
n
μ
^
n
T
\mathbb { E } \left[ \boldsymbol { z } _ { n } \boldsymbol { z } _ { n } ^ { T } \right] = \widehat { \boldsymbol { V } } _ { n } + \widehat { \boldsymbol { \mu } } _ { n } \widehat { \boldsymbol { \mu } } _ { n } ^ { T }
E[znznT]=V
n+μ
nμ
nT
线性动态模型的参数估计
很自然,我们要用EM算法来求解这个问题:
完全数据的联合似然为:
ln
p
(
X
,
Z
∣
θ
)
=
ln
p
(
z
1
∣
μ
0
,
P
0
)
+
∑
n
=
2
N
ln
p
(
z
n
∣
z
n
−
1
,
A
,
Γ
)
+
∑
n
=
1
N
ln
p
(
x
n
∣
z
n
,
C
,
Σ
)
\begin{aligned} \ln p ( \boldsymbol { X } , Z | \boldsymbol { \theta } ) &= \ln p \left( \boldsymbol { z } _ { 1 } | \boldsymbol { \mu } _ { 0 } , \boldsymbol { P } _ { 0 } \right) + \sum _ { n = 2 } ^ { N } \ln p \left( \boldsymbol { z } _ { n } | \boldsymbol { z } _ { n - 1 } , \boldsymbol { A } , \boldsymbol { \Gamma } \right) \\ & + \sum _ { n = 1 } ^ { N } \ln p \left( \boldsymbol { x } _ { n } | \boldsymbol { z } _ { n } , \boldsymbol { C } , \boldsymbol { \Sigma } \right) \end{aligned}
lnp(X,Z∣θ)=lnp(z1∣μ0,P0)+n=2∑Nlnp(zn∣zn−1,A,Γ)+n=1∑Nlnp(xn∣zn,C,Σ)
Q ( θ , θ 旧 ) = E Z ∣ θ 旧 [ ln p ( X , Z ∣ θ ) ] Q \left( \boldsymbol { \theta } , \boldsymbol { \theta } ^ { 旧 } \right) = \mathbb { E } _ { Z | \boldsymbol { \theta } ^ { 旧 } }[ \ln p ( \boldsymbol { X } , Z | \boldsymbol { \theta } ) ] Q(θ,θ旧)=EZ∣θ旧[lnp(X,Z∣θ)]
⾸先考虑参数
μ
0
\mu_0
μ0和
P
0
P_0
P0
我们有:
Q
(
θ
,
θ
旧
)
=
−
1
2
ln
∣
P
0
∣
−
E
Z
∣
θ
旧
[
1
2
(
z
1
−
μ
0
)
T
P
0
−
1
(
z
1
−
μ
0
)
]
+
常
数
Q \left( \boldsymbol { \theta } , \boldsymbol { \theta } ^ { 旧 } \right) = - \frac { 1 } { 2 } \ln \left| \boldsymbol { P } _ { 0 } \right| - \mathbb { E } _ { Z \left| \boldsymbol { \theta } ^ { 旧} \right. } \left[ \frac { 1 } { 2 } \left( \boldsymbol { z } _ { 1 } - \boldsymbol { \mu } _ { 0 } \right) ^ { T } \boldsymbol { P } _ { 0 } ^ { - 1 } \left( \boldsymbol { z } _ { 1 } - \boldsymbol { \mu } _ { 0 } \right) \right] + 常数
Q(θ,θ旧)=−21ln∣P0∣−EZ∣θ旧[21(z1−μ0)TP0−1(z1−μ0)]+常数
μ
0
新
=
E
[
z
1
]
\mu_0^{新}= \mathbb { E } \left[ z _ { 1 } \right]
μ0新=E[z1]
V
0
新
=
E
[
z
1
z
1
T
]
−
E
[
z
1
]
E
[
z
1
T
]
V_0^{新}= \mathbb { E } \left[ \boldsymbol { z } _ { 1 } \boldsymbol { z } _ { 1 } ^ { T } \right] - \mathbb { E } \left[ \boldsymbol { z } _ { 1 } \right] \mathbb { E } \left[ \boldsymbol { z } _ { 1 } ^ { T } \right]
V0新=E[z1z1T]−E[z1]E[z1T]
类似地可以得到其他参数 θ = { A , Γ , C , Σ } \boldsymbol { \theta } = \left\{ \boldsymbol { A } , \boldsymbol { \Gamma } , \boldsymbol { C } , \boldsymbol { \Sigma }\right\} θ={A,Γ,C,Σ} 的估计
Q
(
θ
,
θ
旧
)
=
−
N
−
1
2
ln
∣
Γ
∣
−
E
Z
∣
θ
旧
[
1
2
∑
n
=
2
N
(
z
n
−
A
z
n
−
1
)
T
Γ
−
1
(
z
n
−
A
z
n
−
1
)
]
+
常
数
\begin{aligned} Q \left( \boldsymbol { \theta } , \boldsymbol { \theta } ^ { 旧 } \right) & = - \frac { N - 1 } { 2 } \ln | \boldsymbol { \Gamma } | - \mathbb { E } _ { Z \left| \boldsymbol { \theta } ^ { 旧} \right. } \left[ \frac { 1 } { 2 } \sum _ { n = 2 } ^ { N } \left( \boldsymbol { z } _ { n } - \boldsymbol { A } \boldsymbol { z } _ { n - 1 } \right) ^ { T } \mathbf { \Gamma } ^ { - 1 } \left( \boldsymbol { z } _ { n } - \boldsymbol { A } \boldsymbol { z } _ { n - 1 } \right) \right] \end{aligned} + 常数
Q(θ,θ旧)=−2N−1ln∣Γ∣−EZ∣θ旧[21n=2∑N(zn−Azn−1)TΓ−1(zn−Azn−1)]+常数
我们可以求出
A
A
A和
Γ
\Gamma
Γ的似然解:
A
新
=
(
∑
n
=
2
N
E
[
z
n
z
n
−
1
T
]
)
(
∑
n
=
2
N
E
[
z
n
−
1
z
n
−
1
T
]
)
−
1
A^{新} = \left( \sum _ { n = 2 } ^ { N } \mathbb { E } \left[ z _ { n } z _ { n - 1 } ^ { T } \right] \right) \left( \sum _ { n = 2 } ^ { N } \mathbb { E } \left[ z _ { n - 1 } z _ { n - 1 } ^ { T } \right] \right) ^ { - 1 }
A新=(n=2∑NE[znzn−1T])(n=2∑NE[zn−1zn−1T])−1
Γ
新
=
1
N
−
1
∑
n
=
2
N
{
E
[
z
n
z
n
T
]
−
A
新
E
[
z
n
z
n
T
]
−
E
[
z
n
z
n
T
]
(
A
新
)
T
−
A
新
E
[
z
n
z
n
T
]
(
A
新
)
T
\Gamma^{新}=\frac { 1 } { N - 1 } \sum _ { n = 2 } ^ { N } \left\{ \mathbb { E } \left[ \boldsymbol { z } _ { n } \boldsymbol { z } _ { n } ^ { T } \right]\right.-A^{新}\mathbb { E } \left[ \boldsymbol { z } _ { n } \boldsymbol { z } _ { n } ^ { T } \right]-\mathbb { E } \left[ \boldsymbol { z } _ { n } \boldsymbol { z } _ { n } ^ { T } \right](A^{新})^{T}-A^{新}\mathbb { E } \left[ \boldsymbol { z } _ { n } \boldsymbol { z } _ { n } ^ { T } \right](A^{新})^{T}
Γ新=N−11n=2∑N{E[znznT]−A新E[znznT]−E[znznT](A新)T−A新E[znznT](A新)T
以及:
Q
(
θ
,
θ
∥
H
)
=
−
N
2
ln
∣
Σ
∣
−
E
Z
∣
θ
旧
[
1
2
∑
n
=
1
N
(
x
n
−
C
z
n
)
T
Σ
−
1
(
x
n
−
C
z
n
)
]
\begin{aligned} Q \left( \boldsymbol { \theta } , \boldsymbol { \theta } ^ { \| \mathrm { H } } \right) = & - \frac { N } { 2 } \ln | \boldsymbol { \Sigma } | - \mathbb { E } _ { Z \left| \boldsymbol { \theta } ^ { 旧 } \right. } \left[ \frac { 1 } { 2 } \sum _ { n = 1 } ^ { N } \left( \boldsymbol { x } _ { n } - \boldsymbol { C } \boldsymbol { z } _ { n } \right) ^ { T } \boldsymbol { \Sigma } ^ { - 1 } \left( \boldsymbol { x } _ { n } - \boldsymbol { C } \boldsymbol { z } _ { n } \right) \right] \end{aligned}
Q(θ,θ∥H)=−2Nln∣Σ∣−EZ∣θ旧[21n=1∑N(xn−Czn)TΣ−1(xn−Czn)]
我们可以求出
C
C
C和
Σ
\Sigma
Σ的近似解:
C
新
=
(
∑
n
=
1
N
E
[
z
n
]
[
z
n
T
]
)
(
∑
n
=
1
N
E
[
z
n
z
n
T
]
)
−
1
C^{新}= \left( \sum _ { n = 1 } ^ { N } \mathbb { E } [z _ { n }]\left[ z _ { n } ^ { T } \right] \right) \left( \sum _ { n = 1 } ^ { N } \mathbb { E } \left[ z _ { n } z _ { n } ^ { T } \right] \right) ^ { - 1 }
C新=(n=1∑NE[zn][znT])(n=1∑NE[znznT])−1
Σ
新
=
1
N
∑
n
=
1
N
{
E
[
x
n
x
n
T
]
−
C
新
E
[
x
n
z
n
T
]
−
E
x
n
[
z
n
T
]
(
C
新
)
T
−
C
新
E
[
z
n
z
n
T
]
(
C
新
)
T
\Sigma^{新}=\frac { 1 } { N } \sum _ { n = 1 } ^ { N } \left\{ \mathbb { E } \left[ \boldsymbol { x } _ { n } \boldsymbol { x } _ { n } ^ { T } \right]\right.-C^{新}\mathbb { E } \left[ \boldsymbol { x} _ { n } \boldsymbol { z } _ { n } ^ { T } \right]-\mathbb { E }\boldsymbol { x } _ { n } \left[ \boldsymbol { z } _ { n } ^ { T } \right](C^{新})^{T}-C^{新}\mathbb { E } \left[ \boldsymbol { z } _ { n } \boldsymbol { z } _ { n } ^ { T } \right](C^{新})^{T}
Σ新=N1n=1∑N{E[xnxnT]−C新E[xnznT]−Exn[znT](C新)T−C新E[znznT](C新)T