第九讲:因子分析(Factor analysis)

如果有一个多个高斯模型混合(a mixture of several Gaussians)而来的数据集 x ( i ) R n x^{(i)} ∈ R^n ,那么就可以用期望最大化算法(EM algorithm)来对这个混合模型(mixture model)进行拟合。这种情况下,对于有充足数据(sufficient data)的问题,我们通常假设可以从数据中识别出多个高斯模型结构(multiple-Gaussian structure)。例如,如果我们的训练样本集合规模(training set size) m 远远大于(significantly larger than)数据的维度(dimension) n,就符合这种情况。
然后来考虑一下反过来的情况,也就是 n 远远大于 m,即 n ≫ m。在这样的问题中,就可能用单独一个高斯模型来对数据建模都很难,更不用说多个高斯模型的混合模型了。由于 m 个数据点所张开(span)的只是一个 n 维空间 R n R^n 的低维度子空间(low-dimensional subspace),如果用高斯模型(Gaussian)对数据进行建模,然后还是用常规的最大似然估计(usual maximum likelihood estimators)来估计(estimate)平均值(mean)和方差(covariance),得到的则是:

μ = 1 m i = 1 m x ( i ) Σ = 1 m i = 1 m ( x ( i ) μ ) ( x ( i ) μ ) T , \begin{aligned} \mu&=\frac1m\sum_{i=1}^mx^{(i)}\\ \Sigma&=\frac1m\sum_{i=1}^m(x^{(i)}-\mu)(x^{(i)}-\mu)^T, \end{aligned}

我们会发现这里的 Σ Σ 是一个奇异(singular)矩阵。这也就意味着其逆矩阵 Σ 1 Σ^{−1} 不存在,而 1 / Σ 1 / 2 = 1 / 0 1/|Σ|^{1/2} = 1/0 。 但这几个变量都还是需要的,要用来计算一个多元高斯分布(multivariate Gaussian distribution)的常规密度函数(usual density)。还可以用另外一种方法来讲述清楚这个难题,也就是对参数(parameters)的最大似然估计(maximum likelihood estimates)会产生一个高斯分布(Gaussian),其概率分布在由样本数据1所张成的仿射空间(affine space)中,对应着一个奇异的协方差矩阵(singular covariance matrix)。

通常情况下,除非 m 比 n 大出相当多(some reasonable amount),否则最大似然估计(maximum likelihood estimates)得到的均值(mean)和方差(covariance)都会很差(quite poor)。尽管如此,我们还是希望能用已有的数据,拟合出一个合理(reasonable)的高斯模型(Gaussian model),而且还希望能识别出数据中的某些有意义的协方差结构(covariance structure)。那这可怎么办呢?

在接下来的这一部分内容里,我们首先回顾一下对 Σ Σ 的两个可能的约束(possible restrictions),这两个约束条件能让我们使用小规模数据来拟合 Σ Σ ,但都不能就我们的问题给出让人满意的解(satisfactory solution)。然后接下来我们要讨论一下高斯模型的一些特点,这些后面会用得上,具体来说也就是如何找到高斯模型的边界和条件分布。最后,我们会讲一下因子分析模型(factor analysis model),以及对应的期望最大化算法(EM algorithm)。

1 Σ Σ 的约束条件(Restriction)

如果我们没有充足的数据来拟合一个完整的协方差矩阵(covariance matrix),就可以对矩阵空间 Σ Σ 给出某些约束条件(restrictions)。例如,我们可以选择去拟合一个对角(diagonal)的协方差矩阵 Σ Σ 。这样,读者很容易就能验证这样的一个协方差矩阵的最大似然估计(maximum likelihood estimate)可以由对角矩阵(diagonal matrix) Σ Σ 满足:

Σ j j = 1 m i = 1 m ( x j ( i ) μ j ) 2 . \begin{aligned} \Sigma_{jj}=\frac1m\sum_{i=1}^m(x^{(i)}_j-\mu_j)^2. \end{aligned}

因此, Σ j j Σ_{jj} 就是对数据中第 j 个坐标位置的方差值的经验估计(empirical estimate)。

回忆一下,高斯模型的密度的形状是椭圆形的。对角线矩阵 Σ Σ 对应的就是椭圆长轴(major axes)对齐(axis- aligned)的高斯模型。

有时候,我们还要对这个协方差矩阵(covariance matrix)给出进一步的约束,不仅设为对角的(major axes),还要求所有对角元素(diagonal entries)都相等。这时候,就有 Σ = σ 2 I Σ = σ^2I ,其中 σ 2 σ^2 是我们控制的参数。对这个 σ 2 σ^2 的最大似然估计则为:

σ 2 = 1 m n j = 1 n i = 1 m ( x j ( i ) μ j ) 2 . \begin{aligned} \sigma^2=\frac1{mn}\sum_{j=1}^n\sum_{i=1}^m(x^{(i)}_j-\mu_j)^2. \end{aligned}

这种模型对应的是密度函数为圆形轮廓的高斯模型(在二维空间也就是平面中是圆形,在更高维度当中就是球(spheres)或者超球体(hyperspheres))。

如果我们对数据要拟合一个完整的,不受约束的(unconstrained)协方差矩阵 Σ Σ ,就必须满足 m n + 1 m ≥ n + 1 ,这样才使得对 Σ Σ 的最大似然估计不是奇异矩阵(singular matrix)。在上面提到的两个约束条件之下,只要 m 2 m ≥ 2 ,我们就能获得非奇异的(non-singular) Σ Σ

然而,将 Σ Σ 限定为对角矩阵,也就意味着对数据中不同坐标(coordinates)的 x i x_i x j x_j 建模都将是不相关的(uncorrelated),且互相独立(independent)。通常,还是从样本数据里面获得某些有趣的相关信息结构比较好。如果使用上面对 Σ Σ 的某一种约束,就可能没办法获取这些信息了。在本章讲义里面,我们会提到因子分析模型(factor analysis model),这个模型使用的参数比对角矩阵 Σ Σ 更多,而且能从数据中获得某些相关性信息(captures some correlations),但也不能对完整的协方差矩阵(full covariance matrix)进行拟合。

2 多重高斯模型(Gaussians )的边界(Marginal)和条件(Conditional)

在讲解因子分析(factor analysis)之前,我们要先说一下一个联合多元高斯分布(joint multivariate Gaussian distribution)下的随机变量(random variables)的条件(conditional)和边界(marginal)分布(distributions)。

假如我们有一个值为向量的随机变量(vector-valued random variable):

x = [ x 1 x 2 ] \begin{aligned} x=\begin{bmatrix} x_1\\x_2\end{bmatrix} \end{aligned}

其中 x 1 R r x_1 ∈ R^r , x 2 R s x_2 ∈ R^s ,因此 x R r + s x ∈ R^{r+s} 。设 x N ( μ , Σ ) x ∼ N(μ,Σ) , 即以 μ μ Σ Σ 为参数的正态分布,则这两个参数为:

μ = [ μ 1 μ 2 ] , Σ = [ Σ 11 Σ 12 Σ 21 Σ 22 ] . \begin{aligned} \mu=\begin{bmatrix} \mu_1\\\mu_2\end{bmatrix},\Sigma=\begin{bmatrix} \Sigma_{11}&\Sigma_{12}\\\Sigma_{21}&\Sigma_{22}\end{bmatrix}. \end{aligned}

其中, μ 1 R r μ_1 ∈ R^r , μ 2 R s μ_2 ∈ R^s , Σ 11 R r × r Σ_{11} ∈ R^{r×r} , Σ 12 R r × s Σ_{12} ∈ R^{r×s} ,以此类推。由于协方差矩阵(covariance matrices)是对称的(symmetric),所以有 Σ 12 = Σ 21 T Σ_{12} = Σ^T_{21} .

基于我们的假设, x 1 x_1 x 2 x_2 联合多元高斯分布(jointly multivariate Gaussian)。 那么 x 1 x_1 的边界分布是什么?不难看出 x 1 x_1 的期望 E [ x 1 ] = μ 1 E[x_1] = μ1 ,而协方差 C o v ( x 1 ) = E [ ( x 1 μ 1 ) ( x 1 μ 1 ) ] = Σ 11 Cov(x_1) = E[(x_1 − μ_1)(x_1 − μ_1)] = Σ_{11} 。接下来为了验证后面这一项成立,要用 x 1 x_1 x 2 x_2 的联合方差的概念:

C o v ( x ) = Σ = [ Σ 11 Σ 12 Σ 21 Σ 22 ] = E [ ( x μ ) ( x μ ) T ] = E [ ( x 1 μ 1 x 1 μ 1 ) ( x 1 μ 1 x 1 μ 1 ) T ] = E [ ( x 1 μ 1 ) ( x 1 μ 1 ) T ( x 1 μ 1 ) ( x 2 μ 2 ) T ( x 2 μ 2 ) ( x 1 μ 1 ) T ( x 2 μ 2 ) ( x 2 μ 2 ) T ] . \begin{aligned} Cov(x)&=\Sigma\\ &=\begin{bmatrix} \Sigma_{11}&\Sigma_{12}\\\Sigma_{21}&\Sigma_{22}\end{bmatrix}\\ &=E[(x-\mu)(x-\mu)^T]\\ &=E\begin{bmatrix}\binom{x_1 − μ_1}{x_1 − μ_1} \binom{x_1 − μ_1}{x_1 − μ_1} ^T\end{bmatrix}\\ &=E\begin{bmatrix}(x_1 − μ_1)(x_1 − μ_1)^T&(x_1 − μ_1)(x_2 − μ_2)^T\\ (x_2 − μ_2)(x_1 − μ_1)^T&(x_2 − μ_2)(x_2 − μ_2)^T\end{bmatrix}. \end{aligned}

在上面的最后两行中,匹配(Matching)矩阵的左上方子阵(upper-left sub blocks),就可以得到结果了。

高斯分布的边界分布(marginal distributions)本身也是高斯分布,所以我们就可以给出一个正态分布 x 1 N ( μ 1 , Σ 11 ) x_1 ∼ N (μ_1, Σ_{11}) 来作为 x 1 x_1 的边界分布(marginal distributions)。

此外,我们还可以提出另一个问题,给定 x 2 x_2 的情况下 x 1 x_1 的条件分布是什么呢?通过参考多元高斯分布的定义,就能得到这个条件分布 x 1 x 2 N ( μ 1 2 , Σ 1 2 ) x_1|x_2 ∼ N (μ_{1|2}, Σ_{1|2}) 为:

(1) μ 1 2 = μ 1 + Σ 12 Σ 22 1 ( x 2 μ 2 ) Σ 1 2 = Σ 11 Σ 12 Σ 22 1 Σ 21 \begin{aligned} \mu_{1|2}&= \mu_1+\Sigma_{12}\Sigma^{-1}_{22}(x_2-\mu_2)\tag{1}\\ \Sigma_{1|2}&=\Sigma_{11}-\Sigma_{12}\Sigma_{22}^{-1}\Sigma_{21} \end{aligned}

在下一节对因子分析模型(factor analysis model)的讲解中,上面这些公式就很有用了,可以帮助寻找高斯分布的条件和边界分布(conditional and marginal distributions)。

3 因子分析模型(Factor analysis model)

在因子分析模型(factor analysis model)中,我们制定在 (x, z) 上的一个联合分布,如下所示,其中 z R k z ∈ R^k 是一个潜在随机变量(latent random variable):

z N ( 0 , I ) x z N ( μ + Λ z , Ψ ) \begin{aligned} z&\thicksim N(0,I)\\ x|z&\thicksim N(\mu +\varLambda z,\varPsi ) \end{aligned}

上面的式子中,我们这个模型中的参数是向量 μ R n μ ∈ R^n ,矩阵 Λ R n × k Λ ∈ R^{n×k} ,以及一个对角矩阵 Ψ R n × n Ψ ∈ R^{n×n} 。k 的值通常都选择比 n 小一点的。

这样,我们就设想每个数据点 x ( i ) x^{(i)} 都是通过在一个 k k 维度的多元高斯分布 z ( i ) z^{(i)} 中取样获得的。然后,通过计算 μ + Λ z ( i ) μ+Λz^{(i)} ,就可以映射到实数域 R n R^n 中的一个 k k 维仿射空间(k-dimensional affine space),在 μ + Λ z ( i ) μ + Λz^{(i)} 上加上协方差 Ψ Ψ 作为噪音,就得到了 x ( i ) x^{(i)}

反过来,咱们也就可以来定义因子分析模型(factor analysis model),使用下面的设定:

z N ( 0 , I ) ϵ N ( 0 , Ψ ) x = μ + Λ z + ϵ \begin{aligned} z&\thicksim N(0,I)\\ \epsilon&\thicksim N(0,\varPsi )\\ x&=\mu+\varLambda z+\epsilon \end{aligned}

其中的 ε ε z z 是互相独立的。

然后咱们来确切地看看这个模型定义的分布(distribution our)。其中,随机变量 z z x x 有一个联合高斯分布(joint Gaussian distribution):

[ x 1 x 2 ] N ( μ z x , Σ ) . \begin{aligned} \begin{bmatrix} x_1\\x_2\end{bmatrix}\thicksim N(\mu_{zx},\Sigma). \end{aligned}

然后咱们要找到 μ z x μ_{zx} Σ Σ .

我们知道 z z 的期望 E [ z ] = 0 E[z] = 0 ,这是因为 z z 服从的是均值为 0 的正态分布 z N ( 0 , I ) z ∼ N(0,I) 。 此外我们还知道:

E [ x ] = E [ μ + Λ z , ϵ ] = μ + Λ E [ z ] + E [ ϵ ] = μ \begin{aligned} E[x]&= E[\mu +\varLambda z,\epsilon ]\\ &=\mu+\varLambda E[z]+E[\epsilon]\\ &=\mu\end{aligned}

综合以上这些条件,就得到了:

μ z x = [ 0 μ ] \begin{aligned} \mu_{zx}=\begin{bmatrix} \vec{0}\\\mu\end{bmatrix} \end{aligned}

下一步就是要找出 Σ Σ ,我们需要计算出 Σ z z = E [ ( z E [ z ] ) ( z E [ z ] ) T ] Σ_{zz} = E[(z − E[z])(z − E[z])^T ] (矩阵 Σ Σ 的左上部分(upper-left block)), Σ z x = E [ ( z E [ z ] ) ( x E [ x ] ) T ] Σ_{zx} = E[(z − E[z])(x − E[x])^T ] (右上部分(upper-right block)),以及 E [ ( x E [ x ] ) ( x E [ x ] ) T ] E[(x − E[x])(x − E[x])^T ] (右下部分(lower-right block))。

由于 z z 是一个正态分布 z N ( 0 , I ) z ∼ N (0, I) ,很容易就能知道 Σ z z = C o v ( z ) = I Σ_{zz} = Cov(z) = I 。另外:

E [ ( z E [ z ] ) ( x E [ x ] ) T ] = E [ z ( μ + Λ z + ϵ μ ) T ] = E [ z z T ] Λ T + E [ z ϵ T ] = Λ T \begin{aligned} E[(z−E[z])(x−E[x])^T ]&=E[z(\mu+\varLambda z+\epsilon-\mu)^T] \\ &=E[zz^T]\varLambda^T+E[z\epsilon^T]\\&=\varLambda^T \end{aligned}

在上面的最后一步中,使用到了结论 E [ z z T ] = C o v ( z ) E[zz^T ] = Cov(z) (因为 z 的均值为 0),而且 E [ z ε T ] = E [ z ] E [ ε T ] = 0 E[zε^T ] = E[z]E[ε^T ] = 0) (因为 z z ε ε 相互独立,因此乘积(product)的期望(expectation)等于期望的乘积)。

同样的方法,我们可以用下面的方法来找到 Σ x x Σ_{xx}

E [ ( x E [ x ] ) ( x E [ x ] ) T ] = E [ ( μ + Λ z + ϵ μ ) ( μ + Λ z + ϵ μ ) T ] = E [ Λ z z T Λ T + ϵ z T Λ T + Λ z ϵ T + ϵ ϵ T ] = Λ E [ z z T ] Λ T + E [ ϵ ϵ T ] = Λ Λ T + Ψ . \begin{aligned} E[(x−E[x])(x−E[x])^T ]&=E[(\mu+\varLambda z+\epsilon-\mu)(\mu+\Lambda z+\epsilon-\mu)^T] \\ &=E[\Lambda zz^T\varLambda^T+\epsilon z^T\Lambda^T+\Lambda z\epsilon ^T + \epsilon \epsilon ^T]\\&=\Lambda E[zz^T]\Lambda^T+E[\epsilon\epsilon^T]\\&=\Lambda\Lambda^T+\Psi. \end{aligned}

把上面这些综合到一起,就得到了:

(3) [ z x ] N ( [ 0 μ ] , [ I Λ T Λ Λ Λ T + Ψ ] ) . \begin{aligned} \begin{bmatrix} z\\x\end{bmatrix}\thicksim N\left(\begin{bmatrix} \vec{0}\\\mu\end{bmatrix},\begin{bmatrix} I &\Lambda^T\\\Lambda & \Lambda\Lambda^T+\Psi\end{bmatrix}\right).\tag{3} \end{aligned}

因此,我们还能发现 x x 的边界分布(marginal distribution)为 x N ( μ , Λ Λ T + Ψ ) x ∼ N(μ,ΛΛ^T +Ψ) 。所以,给定一个训练样本集合 { x ( i ) ; i = 1 , . . . , m } \{x^{(i)}; i = 1, ..., m\} ,参数(parameters)的最大似然估计函数的对数函数(log likelihood),就可以写为:

( μ , Λ , Ψ ) = log i = 1 m 1 ( 2 π ) n / 2 Λ Λ T + Ψ exp ( 1 2 ( x ( i ) μ ) T ( Λ Λ T + Ψ ) 1 ( x ( i ) μ ) ) \begin{aligned} \ell(\mu,\Lambda,\Psi)=\log\prod_{i=1}^m\frac{1}{(2\pi)^{n/2}|\Lambda\Lambda^T+\Psi|}\exp\left( -\frac12(x^{(i)}-\mu)^T(\Lambda\Lambda^T+\Psi)^{-1}(x^{(i)}-\mu)\right) \end{aligned}

为了进行最大似然估计,我们就要最大化上面这个关于参数的函数。但确切地对上面这个方程式进行最大化,是很难的,不信你自己试试哈,而且我们都知道没有算法能够以封闭形式(closed-form)来实现这个最大化。所以,我们就改用期望最大化算法(EM algorithm)。下一节里面,咱们就来推导一下针对因子分析模型(factor analysis)的期望最大化算法(EM)。

4 针对因子分析模型(factor analysis)的期望最大化算法(EM)

E s t e p E-step 步骤的推导很简单。只需要计算出来 Q i ( z ( i ) ) = p ( z ( i ) x ( i ) ; μ , Λ , Ψ ) Q_i(z^{(i)}) = p(z^{(i)}|x^{(i)}; μ, Λ, Ψ) 。把等式(3) 当中给出的分布代入到方程(1-2),来找出一个高斯分布的条件分布,我们就能发现 z ( i ) x ( i ) ; μ , Λ , Ψ N ( μ z ( i ) x ( i ) , Σ z ( i ) x ( i ) ) z^{(i)}|x^{(i)}; μ, Λ, Ψ ∼ N (μ_{z^{(i)}|x^{(i)}} , Σ_{z^{(i)}|x^{(i)}} ) ,其中:

μ z ( i ) x ( i ) = Λ T ( Λ Λ T + Ψ ) 1 ( x ( i ) μ ) , Σ z ( i ) x ( i ) = I Λ T ( Λ Λ T + Ψ ) 1 Λ . \begin{aligned} μ_{z^{(i)}|x^{(i)}}&=\Lambda ^T(\Lambda\Lambda^T+\Psi)^{-1}(x^{(i)}-\mu),\\ \Sigma_{z^{(i)}|x^{(i)}}&=I-\Lambda ^T(\Lambda\Lambda^T+\Psi)^{-1}\Lambda. \end{aligned}

所以,通过对 μ z ( i ) x ( i ) μ_{z^{(i)}|x^{(i)}} Σ z ( i ) x ( i ) \Sigma_{z^{(i)}|x^{(i)}} ,进行这样的定义,就能得到:

Q i ( z ( i ) ) = 1 ( 2 π ) k / 2 Σ z ( i ) x ( i ) 1 / 2 exp ( 1 2 ( z ( i ) μ z ( i ) x ( i ) ) T Σ z ( i ) x ( i ) 1 ( z ( i ) μ z ( i ) x ( i ) ) ) \begin{aligned} Q_i(z^{(i)})=\frac{1}{(2\pi)^{k/2}|\Sigma_{z^{(i)}|x^{(i)}}|^{1/2}}\exp\left( -\frac12(z^{(i)}-μ_{z^{(i)}|x^{(i)}})^T\Sigma_{z^{(i)}|x^{(i)}}^{-1}(z^{(i)}-μ_{z^{(i)}|x^{(i)}})\right) \end{aligned}

接下来就是 M s t e p M-step 步骤了。这里需要去最大化下面这个关于参数 μ , Λ , Ψ μ, Λ, Ψ 的函数值:

(4) i = 1 m z ( i ) Q i ( z ( i ) ) log p ( x ( i ) , z ( i ) ; μ , Λ , Ψ ) Q i ( z ( i ) ) d z ( i ) \begin{aligned} \sum_{i=1}^m\int_{z^{(i)}}Q_i(z^{(i)})\log\frac{p(x^{(i)},z^{(i)}; μ, Λ, Ψ)}{Q_i(z^{(i)})}dz^{(i)}\tag{4} \end{aligned}

我们在本文中仅仅对 Λ Λ 进行优化,关于 μ μ Ψ Ψ 的更新就作为练习留给读者自己进行推导了。

把等式(4) 简化成下面的形式:
i = 1 m z ( i ) Q i ( z ( i ) ) [ log p ( x ( i ) z ( i ) ; μ , Λ , Ψ ) + log p ( z ( i ) log Q i ( z ( i ) ) Q i ( z ( i ) ) ] d z ( i ) = i = 1 m E z ( i ) Q i [ log p ( x ( i ) z ( i ) ; μ , Λ , Ψ ) + log p ( z ( i ) ) log Q i ( z ( i ) ) ] \begin{aligned} \sum_{i=1}^m&\int_{z^{(i)}}Q_i(z^{(i)})[\log{p(x^{(i)}|z^{(i)}; μ, Λ, Ψ)}+\log p(z^{(i)}-\log Q_i(z^{(i)}){Q_i(z^{(i)})}]dz^{(i)} \\&=\sum_{i=1}^mE_{z^{(i)}\thicksim Q_i}[\log p(x^{(i)}|z^{(i)};\mu,\Lambda,\Psi)+\log p(z^{(i)})-\log{Q_i(z^{(i)})}] \end{aligned}

上面的等式中,“ z ( i ) Q i z^{(i)} ∼ Q_i ” 这个下标(subscript),表示的意思是这个期望是关于从 Q i Q_i 中取得的 z ( i ) z^{(i)} 的。在后续的推导过程中,如果没有歧义的情况下,我们就会把这个下标省略掉。删除掉这些不依赖参数的项目后,我们就发现只需要最大化:

i = 1 m E [ log p ( x ( i ) z ( i ) ; μ , Λ , Ψ ) ] = i = 1 m E [ log 1 ( 2 π ) n / 2 Ψ 1 / 2 exp ( 1 2 ( x ( i ) μ Λ z ( i ) ) T Ψ 1 ( x ( i ) μ Λ z ( i ) ) ) ] = i = 1 m E [ 1 2 log Ψ n 2 log ( 2 π ) 1 2 ( x ( i ) μ Λ z ( i ) ) T Ψ 1 ( x ( i ) μ Λ z ( i ) ) ] \begin{aligned} \sum_{i=1}^m&E[\log p(x^{(i)}|z^{(i)};\mu,\Lambda,\Psi)]\\ &=\sum_{i=1}^mE\left[\log\frac{1}{(2\pi)^{n/2}|\Psi|^{1/2}}\exp\left( -\frac12(x^{(i)}-μ-\Lambda z^{(i)})^T\Psi^{-1}(x^{(i)}-μ-\Lambda z^{(i)})\right)\right]\\ &=\sum_{i=1}^mE\left[-\frac12\log|\Psi|-\frac n2\log(2\pi)-\frac12(x^{(i)}-μ-\Lambda z^{(i)})^T\Psi^{-1}(x^{(i)}-μ-\Lambda z^{(i)})\right] \end{aligned}

我们先对上面的函数进行关于 Λ Λ 的最大化。可见只有最后的一项依赖 Λ Λ 。求导数,同时利用下面几个结论: t r a = a ( f o r a R ) , t r A B = t r B A , A t r A B A T C = C A B + C T A B tr a = a (for a ∈ R), tr AB = tr BA, ∇_Atr ABA^T C = CAB + C^T AB ,就能得到:

Λ i = 1 m E [ 1 2 ( x ( i ) μ Λ z ( i ) ) T Ψ 1 ( x ( i ) μ Λ z ( i ) ) ] = i = 1 m Λ E [ t r 1 2 z ( i ) T Λ T Ψ 1 Λ z ( i ) + t r z ( i ) T Λ T Ψ 1 ( x ( i ) μ ) ] = i = 1 m Λ E [ t r 1 2 Λ T Ψ 1 Λ z ( i ) z ( i ) T + t r Λ T Ψ 1 ( x ( i ) μ ) z ( i ) T ] = i = 1 m E [ Ψ 1 Λ z ( i ) z ( i ) T + Ψ 1 ( x ( i ) μ ) z ( i ) T ] \begin{aligned} \nabla_\Lambda&\sum_{i=1}^m-E\left[ \frac12(x^{(i)}-μ-\Lambda z^{(i)})^T\Psi^{-1}(x^{(i)}-μ-\Lambda z^{(i)})\right]\\ &=\sum_{i=1}^m\nabla_\Lambda E\left[ -tr\frac12{z^{(i)}}^T\Lambda^T\Psi^{-1}\Lambda z^{(i)}+tr{z^{(i)}}^T\Lambda^T\Psi^{-1}(x^{(i)}-μ)\right]\\ &=\sum_{i=1}^m\nabla_\Lambda E\left[ -tr\frac12\Lambda^T\Psi^{-1}\Lambda z^{(i)}{z^{(i)}}^T+tr\Lambda^T\Psi^{-1}(x^{(i)}-μ){z^{(i)}}^T\right]\\ &=\sum_{i=1}^mE\left[ -\Psi^{-1}\Lambda z^{(i)}{z^{(i)}}^T+\Psi^{-1}(x^{(i)}-μ){z^{(i)}}^T\right] \end{aligned}

设置导数为 0,然后简化,就能得到:

i = 1 m Λ E z ( i ) Q i [ z ( i ) z ( i ) T ] = i = 1 m ( x ( i ) μ ) E z ( i ) Q i [ z ( i ) T ] \begin{aligned} \sum_{i=1}^m\Lambda E_{z^{(i)}\thicksim Q_i}[z^{(i)}{z^{(i)}}^T]=\sum_{i=1}^m(x^{(i)}-μ)E_{z^{(i)}\thicksim Q_i}[{z^{(i)}}^T] \end{aligned}

接下来,求解 Λ Λ ,就能得到:

Λ = ( i = 1 m ( x ( i ) μ ) E z ( i ) Q i [ z ( i ) T ] ) ( i = 1 m E z ( i ) Q i [ z ( i ) z ( i ) T ] ) 1 \begin{aligned} \Lambda=\left(\sum_{i=1}^m(x^{(i)}-μ)E_{z^{(i)}\thicksim Q_i}[{z^{(i)}}^T]\right)\left(\sum_{i=1}^mE_{z^{(i)}\thicksim Q_i}[z^{(i)}{z^{(i)}}^T]\right)^{-1} \end{aligned}

有一个很有意思的地方需要注意,上面这个等式和用最小二乘线性回归(least squares regression)推出的正则方程(normal equation)有密切关系:

θ T = ( y T X ) ( X T X ) 1 \begin{aligned} “\theta^T=(y^TX)(X^TX)^{-1}” \end{aligned}

与之类似,这里的 x x 是一个关于 z z (以及噪音 noise)的线性方程。考虑在 E s t e p E-step 步骤中对 z z 已经给出了猜测,接下来就可以尝试来对与 x x z z 相关的未知线性量(unknown linearity) Λ Λ 进行估计。接下来不出意料,我们就会得到某种类似正则方程的结果。然而,这个还是和利用对 z z 的“最佳猜测(best guesses)” 进行最小二乘算法有一个很大的区别的;这一点我们很快就会看到了。

为了完成 M s t e p M-step 步骤的更新,接下来我们要解出等式(7) 当中的期望值(values of the expectations)。由于我们定义 Q i Q_i 是均值(mean)为 μ z ( i ) x ( i ) μ_{z^{(i)}|x^{(i)}} ,协方差(covariance)为 Σ z ( i ) x ( i ) \Sigma_{z^{(i)}|x^{(i)}} 的一个高斯分布,所以很容易能得到:

E z ( i ) Q i [ z ( i ) T ] = μ z ( i ) x ( i ) T \begin{aligned} E_{z^{(i)}\thicksim Q_i}[{z^{(i)}}^T]=μ_{z^{(i)}|x^{(i)}}^T \end{aligned}

E z ( i ) Q i [ z ( i ) z ( i ) T ] = μ z ( i ) x ( i ) μ z ( i ) x ( i ) T + Σ z ( i ) x ( i ) \begin{aligned} E_{z^{(i)}\thicksim Q_i}[z^{(i)}{z^{(i)}}^T]=μ_{z^{(i)}|x^{(i)}}μ_{z^{(i)}|x^{(i)}}^T+\Sigma_{z^{(i)}|x^{(i)}} \end{aligned}

上面第二个等式的推导依赖于下面这个事实:对于一个随机变量 Y Y ,协方差 C o v ( Y ) = E [ Y Y T ] E [ Y ] E [ Y ] T Cov(Y ) = E[Y Y^ T ]−E[Y ]E[Y ]^T ,所以 E [ Y Y T ] = E [ Y ] E [ Y ] T + C o v ( Y ) E[Y Y ^T ] = E[Y ]E[Y ]^T +Cov(Y) 。把这个代入到等式(7),就得到了 M s t e p M-step 步骤中 Λ 的更新规则:

Λ = ( i = 1 m ( x ( i ) μ ) μ z ( i ) x ( i ) T ) ( i = 1 m μ z ( i ) x ( i ) μ z ( i ) x ( i ) T + Σ z ( i ) x ( i ) ) 1 \begin{aligned} \Lambda=\left(\sum_{i=1}^m(x^{(i)}-μ)μ_{z^{(i)}|x^{(i)}}^T\right)\left(\sum_{i=1}^mμ_{z^{(i)}|x^{(i)}}μ_{z^{(i)}|x^{(i)}}^T+\Sigma_{z^{(i)}|x^{(i)}}\right)^{-1} \end{aligned}

上面这个等式中,要特别注意等号右边这一侧的 Σ z ( i ) x ( i ) \Sigma_{z^{(i)}|x^{(i)}} 。这是一个根据 z ( i ) z^{(i)} 给出的 x ( i ) x^{(i)} 后验分布(posterior distribution) p ( z ( i ) x ( i ) ) p(z^{(i)}|x^{(i)}) 的协方差,而在 M s t e p M-step 步骤中必须要考虑到在这个后验分布中 z ( i ) z^{(i)} 的不确定性(uncertainty)。推导 EM 算法的一个常见错误就是在 E s t e p E-step 步骤进行假设,只需要算出潜在随机变量(latent random variable) z z 的期望 E [ z ] E[z] ,然后把这个值放到 M s t e p M-step 步骤当中 z z 出现的每个地方来进行优化(optimization)。当然,这能解决简单问题,例如高斯混合模型(mixture of Gaussians),在因子模型的推导过程中,就同时需要 E [ z z T ] E [ z ] E[zz^T ] 和 E[z] ;而我们已经知道, E [ z z T ] E[zz^T ] E [ z ] E [ z ] T E[z]E[z]^T 随着 Σ z x Σz|x 而变化。因此,在 M s t e p M-step 步骤就必须要考虑到后验分布(posterior distribution) p ( z ( i ) x ( i ) ) p(z^{(i)}|x^{(i)}) 中 z 的协方差(covariance)。

最后,我们还可以发现,在 M s t e p M-step 步骤对参数 μ μ Ψ Ψ 的优化。不难发现其中的 μ μ 为:

μ = 1 m i = 1 m x ( i ) \begin{aligned} \mu=\frac1m\sum_{i=1}^mx^{(i)} \end{aligned}

由于这个值不随着参数的变换而改变(也就是说,和 Λ Λ 的更新不同,这里等式右侧不依赖 Q i ( z ( i ) ) = p ( z ( i ) x ( i ) ; μ , Λ , Ψ ) Q_i(z^{(i)}) = p(z^{(i)}|x^{(i)}; μ, Λ, Ψ) ,这个 Q i ( z ( i ) ) Q_i(z^{(i)}) 是依赖参数的),这个只需要计算一次就可以,在算法运行过程中,也不需要进一步更新。类似地,对角矩阵 Ψ Ψ 也可以通过计算下面这个式子来获得:

Φ = 1 m i = 1 m x ( i ) x ( i ) T x ( i ) μ z ( i ) x ( i ) T Λ T Λ μ z ( i ) x ( i ) x ( i ) T + Λ ( μ z ( i ) x ( i ) μ z ( i ) x ( i ) T + Σ z ( i ) x ( i ) ) Λ T \begin{aligned} \Phi=\frac1m\sum_{i=1}^mx^{(i)}{x^{(i)}}^T-x^{(i)}μ_{z^{(i)}|x^{(i)}}^T\Lambda^T-\Lambdaμ_{z^{(i)}|x^{(i)}}{x^{(i)}}^T+\Lambda(μ_{z^{(i)}|x^{(i)}}μ_{z^{(i)}|x^{(i)}}^T+\Sigma_{z^{(i)}|x^{(i)}})\Lambda^T \end{aligned}

然后只需要设 Ψ i i = Φ i i Ψ_{ii} = Φ_{ii} (也就是说,设 Ψ Ψ 为一个仅仅包含矩阵 Φ Φ 中对角线元素的对角矩阵)。


  1. 这是一个点集,对于某些 α i α_i ,此集合中的点 x x 都满足 x = Σ i = 1 m α i x ( i ) x = Σ^m_{i=1} α_ix^{(i)} , 因此 Σ i = 1 m α 1 = 1 Σ^m_{i=1} α_1 = 1 ↩︎

猜你喜欢

转载自blog.csdn.net/xyk_hust/article/details/86624638
今日推荐