在我们通常考虑的问题,都是希望假设数据之间是独立的,但有这样一类数据,他们之间有很明显的时序关系,比如天气预报,文字输入等,当把模型建立成独立时,无疑损失了很多有价值的信息。因此我们需要一些模型将时序关系表征在模型里,得到对数据更加准确地描述。HMM和LDS是其中相当经典的模型,在各自领域都有大量应用。
读者可以去我的github阅读一份将HMM用于NER识别的代码,欢迎star,欢迎fork
HMM
马尔可夫模型的缺陷
处理顺序数据的最简单的?式是忽略顺序的性质,将观测看做独?同分布。然?,这种?法?法利?数据中的顺序模式,例如序列中距离较近的观测之间的相关性。例如,假设我们观测?个?值变量,这个?值变量表?某?天是否下?。给定这个变量的?系列观测,我们希望预测下?天是否会下?。如果我们将所有的数据都看成独?同分布的,那么我们能够从数据中得到的唯?的信息就是?天的相对频率。然?,在实际?活中,我们知道天?经常会呈现出持续若?天的趋势。因此,观测到今天是否下?对于预测明天是否下?会有极?的帮助。
【statistic|隐马尔科夫模型(HMM)与线性动态系统(LDS)】为了在概率模型中表?这种效果,我们需要放松独?同分布的假设。完成这件事的?种最简单的?式是考虑马尔科夫模型(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∏N?p(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∑N?p(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∏N?p(zn?∣zn?1?)]n=1∏N?p(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 ∑k?Ajk?=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∏K?j=1∏K?Ajkzn?1,j?znk??
初始潜在结点 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∏K?p(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,j?znk?]=zn?1?,zn?∑?ξ(zn?1?,zn?)zn?1,j?znk??
带入联合分布的表达式:
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∑N?j=1∑K?k=1∑K?ξ(zn?1,j?,znk?)lnAjk?+n=1∑N?k=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∏n?cm?
因此:
α ( 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∏n?cm?)α (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?1?max?lnp(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 } cn?N(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?Kn?C)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[zn?zn?1T?]=V n?Jn?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[zn?znT?]=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∑N?lnp(zn?∣zn?1?,A,Γ)+n=1∑N?lnp(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(θ,θ旧)=?21?ln∣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[z1?z1T?]?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?1?ln∣Γ∣?EZ∣θ旧?[21?n=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∑N?E[zn?zn?1T?])(n=2∑N?E[zn?1?zn?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?11?n=2∑N?{E[zn?znT?]?A新E[zn?znT?]?E[zn?znT?](A新)T?A新E[zn?znT?](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)=??2N?ln∣Σ∣?EZ∣θ旧?[21?n=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∑N?E[zn?][znT?])(n=1∑N?E[zn?znT?])?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} Σ新=N1?n=1∑N?{E[xn?xnT?]?C新E[xn?znT?]?Exn?[znT?](C新)T?C新E[zn?znT?](C新)T
推荐阅读
- Machine|scikit-learn-分类模型评价标准
- AI|bert实现端到端继续预训练
- 数学|matlab三维山峰/山脉/山地曲面数据图
- Deep|Caffe——整体结构剖析
- Deep|Caffe——环境安装和配置(CPU)
- Deep|Caffe——模型解析
- machine|LightGBM参数介绍
- Python|Python怎么控制浮点数保留几位小数
- deep|强化学习--信赖域系方法(TRPO、PPO(附适合初学者阅读的完整PPO代码连接))