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

如果有一个多个高斯模型混合(a mixture of several Gaussians)而来的数据集 x ( i ) ∈ R n x^{(i)} ∈ R^n x(i)Rn ,那么就可以用期望最大化算法(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 Rn 的低维度子空间(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} μΣ=m1i=1mx(i)=m1i=1m(x(i)μ)(x(i)μ)T,

我们会发现这里的 Σ Σ Σ 是一个奇异(singular)矩阵。这也就意味着其逆矩阵 Σ − 1 Σ^{−1} Σ1 不存在,而 1 / ∣ Σ ∣ 1 / 2 = 1 / 0 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} Σjj=m1i=1m(xj(i)μj)2.

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

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

有时候,我们还要对这个协方差矩阵(covariance matrix)给出进一步的约束,不仅设为对角的(major axes),还要求所有对角元素(diagonal entries)都相等。这时候,就有 Σ = σ 2 I Σ = σ^2I Σ=σ2I,其中 σ 2 σ^2 σ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} σ2=mn1j=1ni=1m(xj(i)μj)2.

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

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

然而,将 Σ Σ Σ 限定为对角矩阵,也就意味着对数据中不同坐标(coordinates)的 x i x_i xi x j x_j xj建模都将是不相关的(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=[x1x2]

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

μ = [ μ 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μ2],Σ=[Σ11Σ21Σ12Σ22].

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

基于我们的假设, x 1 x_1 x1 x 2 x_2 x2联合多元高斯分布(jointly multivariate Gaussian)。 那么 x 1 x_1 x1 的边界分布是什么?不难看出 x 1 x_1 x1 的期望 E [ x 1 ] = μ 1 E[x_1] = μ1 E[x1]=μ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} Cov(x1)=E[(x1μ1)(x1μ1)]=Σ11 。接下来为了验证后面这一项成立,要用 x 1 x_1 x1 x 2 x_2 x2的联合方差的概念:

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} Cov(x)=Σ=[Σ11Σ21Σ12Σ22]=E[(xμ)(xμ)T]=E[(x1μ1x1μ1)(x1μ1x1μ1)T]=E[(x1μ1)(x1μ1)T(x2μ2)(x1μ1)T(x1μ1)(x2μ2)T(x2μ2)(x2μ2)T].

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

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

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

(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} μ12Σ12=μ1+Σ12Σ221(x2μ2)=Σ11Σ12Σ221Σ21(1)

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

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

在因子分析模型(factor analysis model)中,我们制定在 (x, z) 上的一个联合分布,如下所示,其中 z ∈ R k z ∈ R^k zRk 是一个潜在随机变量(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} zxzN(0,I)N(μ+Λz,Ψ)

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

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

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

然后咱们来确切地看看这个模型定义的分布(distribution our)。其中,随机变量 z z z x 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} [x1x2]N(μzx,Σ).

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

我们知道 z z z 的期望 E [ z ] = 0 E[z] = 0 E[z]=0,这是因为 z z z 服从的是均值为 0 的正态分布 z ∼ N ( 0 , I ) z ∼ N(0,I) zN(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} E[x]=E[μ+Λz,ϵ]=μ+ΛE[z]+E[ϵ]=μ

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

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

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

由于 z z z 是一个正态分布 z ∼ N ( 0 , I ) z ∼ N (0, I) zN(0,I),很容易就能知道 Σ z z = C o v ( z ) = I Σ_{zz} = Cov(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[(zE[z])(xE[x])T]=E[z(μ+Λz+ϵμ)T]=E[zzT]ΛT+E[zϵT]=ΛT

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

同样的方法,我们可以用下面的方法来找到 Σ x x Σ_{xx} Σ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} E[(xE[x])(xE[x])T]=E[(μ+Λz+ϵμ)(μ+Λz+ϵμ)T]=E[ΛzzTΛT+ϵzTΛT+ΛzϵT+ϵϵT]=ΛE[zzT]ΛT+E[ϵϵT]=ΛΛT+Ψ.

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

(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} [zx]N([0 μ],[IΛΛTΛΛT+Ψ]).(3)

因此,我们还能发现 x x x 的边界分布(marginal distribution)为 x ∼ N ( μ , Λ Λ T + Ψ ) x ∼ N(μ,ΛΛ^T +Ψ) xN(μ,ΛΛT+Ψ)。所以,给定一个训练样本集合 { x ( i ) ; i = 1 , . . . , m } \{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} (μ,Λ,Ψ)=logi=1m(2π)n/2ΛΛT+Ψ1exp(21(x(i)μ)T(ΛΛT+Ψ)1(x(i)μ))

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

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

E − s t e p E-step Estep 步骤的推导很简单。只需要计算出来 Q i ( z ( i ) ) = p ( z ( i ) ∣ x ( i ) ; μ , Λ , Ψ ) Q_i(z^{(i)}) = p(z^{(i)}|x^{(i)}; μ, Λ, Ψ) Qi(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);μ,Λ,Ψ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)=ΛT(ΛΛT+Ψ)1(x(i)μ),=IΛT(ΛΛT+Ψ)1Λ.

所以,通过对 μ z ( i ) ∣ x ( i ) μ_{z^{(i)}|x^{(i)}} μz(i)x(i) Σ z ( i ) ∣ x ( i ) \Sigma_{z^{(i)}|x^{(i)}} Σ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} Qi(z(i))=(2π)k/2Σz(i)x(i)1/21exp(21(z(i)μz(i)x(i))TΣz(i)x(i)1(z(i)μz(i)x(i)))

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

(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} i=1mz(i)Qi(z(i))logQi(z(i))p(x(i),z(i);μ,Λ,Ψ)dz(i)(4)

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

把等式(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} i=1mz(i)Qi(z(i))[logp(x(i)z(i);μ,Λ,Ψ)+logp(z(i)logQi(z(i))Qi(z(i))]dz(i)=i=1mEz(i)Qi[logp(x(i)z(i);μ,Λ,Ψ)+logp(z(i))logQi(z(i))]

上面的等式中,“ z ( i ) ∼ Q i z^{(i)} ∼ Q_i z(i)Qi” 这个下标(subscript),表示的意思是这个期望是关于从 Q i Q_i Qi 中取得的 z ( 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} i=1mE[logp(x(i)z(i);μ,Λ,Ψ)]=i=1mE[log(2π)n/2Ψ1/21exp(21(x(i)μΛz(i))TΨ1(x(i)μΛz(i)))]=i=1mE[21logΨ2nlog(2π)21(x(i)μΛz(i))TΨ1(x(i)μΛz(i))]

我们先对上面的函数进行关于 Λ Λ Λ 的最大化。可见只有最后的一项依赖 Λ Λ Λ。求导数,同时利用下面几个结论: 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 tra=a(foraR),trAB=trBA,AtrABATC=CAB+CTAB,就能得到:

∇ Λ ∑ 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} Λi=1mE[21(x(i)μΛz(i))TΨ1(x(i)μΛz(i))]=i=1mΛE[tr21z(i)TΛTΨ1Λz(i)+trz(i)TΛTΨ1(x(i)μ)]=i=1mΛE[tr21ΛTΨ1Λz(i)z(i)T+trΛTΨ1(x(i)μ)z(i)T]=i=1mE[Ψ1Λz(i)z(i)T+Ψ1(x(i)μ)z(i)T]

设置导数为 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=1mΛEz(i)Qi[z(i)z(i)T]=i=1m(x(i)μ)Ez(i)Qi[z(i)T]

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

Λ = ( ∑ 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} Λ=(i=1m(x(i)μ)Ez(i)Qi[z(i)T])(i=1mEz(i)Qi[z(i)z(i)T])1

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

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

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

为了完成 M − s t e p M-step Mstep 步骤的更新,接下来我们要解出等式(7) 当中的期望值(values of the expectations)。由于我们定义 Q i Q_i Qi 是均值(mean)为 μ z ( i ) ∣ x ( i ) μ_{z^{(i)}|x^{(i)}} μz(i)x(i),协方差(covariance)为 Σ z ( i ) ∣ x ( i ) \Sigma_{z^{(i)}|x^{(i)}} Σ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} Ez(i)Qi[z(i)T]=μz(i)x(i)T

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} Ez(i)Qi[z(i)z(i)T]=μz(i)x(i)μz(i)x(i)T+Σz(i)x(i)

上面第二个等式的推导依赖于下面这个事实:对于一个随机变量 Y 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 Cov(Y)=E[YYT]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) E[YYT]=E[Y]E[Y]T+Cov(Y)。把这个代入到等式(7),就得到了 M − s t e p M-step Mstep 步骤中 Λ 的更新规则:

Λ = ( ∑ 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} Λ=(i=1m(x(i)μ)μz(i)x(i)T)(i=1mμz(i)x(i)μz(i)x(i)T+Σz(i)x(i))1

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

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

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

由于这个值不随着参数的变换而改变(也就是说,和 Λ Λ Λ 的更新不同,这里等式右侧不依赖 Q i ( z ( i ) ) = p ( z ( i ) ∣ x ( i ) ; μ , Λ , Ψ ) Q_i(z^{(i)}) = p(z^{(i)}|x^{(i)}; μ, Λ, Ψ) Qi(z(i))=p(z(i)x(i);μ,Λ,Ψ),这个 Q i ( z ( i ) ) Q_i(z^{(i)}) Qi(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} Φ=m1i=1mx(i)x(i)Tx(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

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


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

你可能感兴趣的:(机器学习理论,机器学习理论)