11.因子分析法
对于高斯混合模型而言,需要足够的样本才能对模型进行拟合。但是如果出现样本数量远远少于特征数量的情况下怎么办?
首先,我们需要了解为什么在这种情况下单一高斯模型不行?
在高斯模型中,我们是利用最大似然来估计高斯分布中的参数(平均值、协方差):
ϕ
=
1
m
∑
i
=
1
m
1
{
y
(
i
)
=
1
}
μ
0
=
∑
i
=
1
m
1
{
y
(
i
)
=
0
}
x
(
i
)
∑
i
=
1
m
1
{
y
(
i
)
=
0
}
μ
1
=
∑
i
=
1
m
1
{
y
(
i
)
=
1
}
x
(
i
)
∑
i
=
1
m
1
{
y
(
i
)
=
1
}
Σ
=
1
m
∑
i
=
1
m
(
x
(
i
)
−
μ
y
(
i
)
)
(
x
(
i
)
−
μ
y
(
i
)
)
T
\begin{aligned} \phi & = \frac {1}{m} \sum^m_{i=1}1\{y^{(i)}=1\}\\ \mu_0 & = \frac{\sum^m_{i=1}1\{y^{(i)}=0\}x^{(i)}}{\sum^m_{i=1}1\{y^{(i)}=0\}}\\ \mu_1 & = \frac{\sum^m_{i=1}1\{y^{(i)}=1\}x^{(i)}}{\sum^m_{i=1}1\{y^{(i)}=1\}}\\ \Sigma & = \frac{1}{m}\sum^m_{i=1}(x^{(i)}-\mu_{y^{(i)}})(x^{(i)}-\mu_{y^{(i)}})^T\\ \end{aligned}
ϕμ0μ1Σ=m1i=1∑m1{y(i)=1}=∑i=1m1{y(i)=0}∑i=1m1{y(i)=0}x(i)=∑i=1m1{y(i)=1}∑i=1m1{y(i)=1}x(i)=m1i=1∑m(x(i)−μy(i))(x(i)−μy(i))T
分布写出来的具体形式如下:
p
(
y
)
=
ϕ
y
(
1
−
ϕ
)
1
−
y
p
(
x
∣
y
=
0
)
=
1
(
2
π
)
n
/
2
∣
Σ
∣
1
/
2
e
x
p
(
−
1
2
(
x
−
μ
0
)
T
Σ
−
1
(
x
−
μ
0
)
)
p
(
x
∣
y
=
1
)
=
1
(
2
π
)
n
/
2
∣
Σ
∣
1
/
2
e
x
p
(
−
1
2
(
x
−
μ
1
)
T
Σ
−
1
(
x
−
μ
1
)
)
\begin{aligned} p(y) & =\phi^y (1-\phi)^{1-y}\\ p(x|y=0) & = \frac{1}{(2\pi)^{n/2}|\Sigma|^{1/2}} exp ( - \frac{1}{2}(x-\mu_0)^T\Sigma^{-1}(x-\mu_0) )\\ p(x|y=1) & = \frac{1}{(2\pi)^{n/2}|\Sigma|^{1/2}} exp ( - \frac{1}{2}(x-\mu_1)^T\Sigma^{-1}(x-\mu_1) )\\ \end{aligned}
p(y)p(x∣y=0)p(x∣y=1)=ϕy(1−ϕ)1−y=(2π)n/2∣Σ∣1/21exp(−21(x−μ0)TΣ−1(x−μ0))=(2π)n/2∣Σ∣1/21exp(−21(x−μ1)TΣ−1(x−μ1))
我们可以发现这里的
Σ
\Sigma
Σ (将样本考虑为空间中的向量,向量的数量n远远小于向量的维数m(特征数),所以n个向量不能完全表示m维空间中的所有向量,因此由这n个向量所表示的协方差矩阵必然不是满秩的)是一个奇异矩阵,这也就意味着其逆矩阵
Σ
−
1
\Sigma^{-1}
Σ−1 不存在,而
1
/
∣
Σ
∣
1
/
2
=
1
/
0
1/|\Sigma|^{1/2} = 1/0
1/∣Σ∣1/2=1/0。 在样本数远远小于特征数的情况下,高斯分布会拟合的非常差。
1. Σ \Sigma Σ 的约束条件
如果我们没有充足的数据来拟合一个完整的协方差矩阵(covariance matrix),就可以对矩阵空间
Σ
\Sigma
Σ 给出某些约束条件(restrictions)。例如,我们可以选择去拟合一个对角(diagonal)的协方差矩阵
Σ
\Sigma
Σ。这样,读者很容易就能验证这样的一个协方差矩阵的最大似然估计(maximum likelihood estimate)可以由对角矩阵(diagonal matrix)
Σ
\Sigma
Σ 满足:
Σ
j
j
=
1
m
∑
i
=
1
m
(
x
j
(
i
)
−
μ
j
)
2
\Sigma_{jj} = \frac 1m \sum_{i=1}^m (x_j^{(i)}-\mu_j)^2
Σjj=m1i=1∑m(xj(i)−μj)2
因此,
Σ
j
j
\Sigma_{jj}
Σjj 就是对数据中第
j
j
j 个坐标位置的方差值的经验估计(empirical estimate)。
回忆一下,高斯模型的密度的形状是椭圆形的。对角线矩阵 Σ \Sigma Σ 对应的就是椭圆长轴(major axes)对齐(axis- aligned)的高斯模型。
有时候,我们还要对这个协方差矩阵(covariance matrix)给出进一步的约束,不仅设为对角的(major axes),还要求所有对角元素(diagonal entries)都相等。这时候,就有
Σ
=
σ
2
I
\Sigma = \sigma^2I
Σ=σ2I,其中
σ
2
\sigma^2
σ2 是我们控制的参数。对这个
σ
2
\sigma^2
σ2 的最大似然估计则为:
σ
2
=
1
m
n
∑
j
=
1
n
∑
i
=
1
m
(
x
j
(
i
)
−
μ
j
)
2
\sigma^2 = \frac 1{mn} \sum_{j=1}^n\sum_{i=1}^m (x_j^{(i)}-\mu_j)^2
σ2=mn1j=1∑ni=1∑m(xj(i)−μj)2
这种模型对应的是密度函数为圆形轮廓的高斯模型(在二维空间也就是平面中是圆形,在更高维度当中就是球(spheres)或者超球体(hyperspheres))。
如果我们对数据要拟合一个完整的,不受约束的(unconstrained)协方差矩阵 Σ \Sigma Σ,就必须满足 m ≥ n + 1 m \ge n + 1 m≥n+1,这样才使得对 Σ \Sigma Σ 的最大似然估计不是奇异矩阵(singular matrix)。在上面提到的两个约束条件之下,只要 m ≥ 2 m \ge 2 m≥2,我们就能获得非奇异的(non-singular) Σ \Sigma Σ。
然而,将 Σ \Sigma Σ 限定为对角矩阵,也就意味着对数据中不同坐标(coordinates)的 x i , x j x_i,x_j xi,xj建模都将是不相关的(uncorrelated),且互相独立(independent)。通常,还是从样本数据里面获得某些有趣的相关信息结构比较好。如果使用上面对 Σ \Sigma Σ 的某一种约束,就可能没办法获取这些信息了。在本章讲义里面,我们会提到因子分析模型(factor analysis model),这个模型使用的参数比对角矩阵 Σ \Sigma Σ 更多,而且能从数据中获得某些相关性信息(captures some correlations),但也不能对完整的协方差矩阵(full covariance matrix)进行拟合。
2.多重高斯模型的边缘分布和条件分布
在讲解因子分析之前,我们要先说一下一个联合多元高斯分布下的随机变量的条件和边缘分布。
假设我们有一个向量随机变量
x
=
[
x
1
x
2
]
x=\begin{bmatrix} x_1 \\ x_2 \end{bmatrix}
x=[x1x2]
其中
x
1
∈
R
r
,
x
2
∈
R
s
x_1 \in R^r, x_2 \in R^s
x1∈Rr,x2∈Rs,因此
x
∈
R
r
+
s
x \in R^{r+s}
x∈Rr+s。设
x
∼
N
(
μ
,
Σ
)
x\sim N(\mu,\Sigma)
x∼N(μ,Σ),则这两个参数为:
μ
=
[
μ
1
μ
2
]
Σ
=
[
Σ
11
Σ
12
Σ
21
Σ
22
]
\mu=\begin{bmatrix} \mu_1 \\ \mu_2 \end{bmatrix}\qquad \Sigma = \begin{bmatrix} \Sigma_{11} & \Sigma_{12} \\ \Sigma_{21} & \Sigma_{22} \end{bmatrix}
μ=[μ1μ2]Σ=[Σ11Σ21Σ12Σ22]
其中,
μ
1
∈
R
r
,
μ
2
∈
R
s
,
Σ
11
∈
R
r
×
r
,
Σ
12
∈
R
r
×
s
\mu_1 \in R^r, \mu_2 \in R^s, \Sigma_{11} \in R^{r\times r}, \Sigma_{12} \in R^{r\times s}
μ1∈Rr,μ2∈Rs,Σ11∈Rr×r,Σ12∈Rr×s,以此类推。由于协方差矩阵是对称的,所以有
Σ
12
=
Σ
21
T
\Sigma_{12} = \Sigma_{21}^T
Σ12=Σ21T。不难看出
x
1
x_1
x1 的期望
E
[
x
1
]
=
μ
1
E[x_1] = \mu_1
E[x1]=μ1
要用
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
2
−
μ
2
)
(
x
1
−
μ
1
x
2
−
μ
2
)
T
]
=
[
(
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} \begin{pmatrix}x_1-\mu_1 \\ x_2-\mu_2\end{pmatrix} & \begin{pmatrix}x_1-\mu_1 \\ x_2-\mu_2\end{pmatrix}^T \end{bmatrix} \\ &= \begin{bmatrix}(x_1-\mu_1)(x_1-\mu_1)^T & (x_1-\mu_1)(x_2-\mu_2)^T\\ (x_2-\mu_2)(x_1-\mu_1)^T & (x_2-\mu_2)(x_2-\mu_2)^T \end{bmatrix} \end{aligned}
Cov(x)=Σ=[Σ11Σ21Σ12Σ22]=E[(x−μ)(x−μ)T]=E[(x1−μ1x2−μ2)(x1−μ1x2−μ2)T]=[(x1−μ1)(x1−μ1)T(x2−μ2)(x1−μ1)T(x1−μ1)(x2−μ2)T(x2−μ2)(x2−μ2)T]
所以我们可以发现:协方差
C
o
v
(
x
1
)
=
E
[
(
x
1
−
μ
1
)
(
x
1
−
μ
1
)
]
=
Σ
11
Cov(x_1) = E[(x_1 - \mu_1)(x_1 - \mu_1)] = \Sigma_{11}
Cov(x1)=E[(x1−μ1)(x1−μ1)]=Σ11。因此我们就可以给出一个正态分布
x
1
∼
N
(
μ
,
Σ
11
)
x_1\sim N(\mu_,\Sigma_{11})
x1∼N(μ,Σ11) 来作为
x
1
x_1
x1 的边缘分布。
条件分布
x
1
∣
x
2
∼
N
(
μ
1
∣
2
,
Σ
1
∣
2
)
x_1|x_2 \sim N (\mu_{1|2}, \Sigma_{1|2})
x1∣x2∼N(μ1∣2,Σ1∣2)为(推导过程略):
μ
1
∣
2
=
μ
1
+
Σ
12
Σ
22
−
1
(
x
2
−
μ
2
)
(
1
)
Σ
1
∣
2
=
Σ
11
−
Σ
12
Σ
22
−
1
Σ
21
(
2
)
\begin{aligned} &\mu_{1|2} = \mu_1 + \Sigma_{12}\Sigma_{22}^{-1}(x_2-\mu_2)\qquad&(1) \\ &\Sigma_{1|2} = \Sigma_{11} - \Sigma_{12}\Sigma_{22}^{-1}\Sigma_{21}&(2) \end{aligned}
μ1∣2=μ1+Σ12Σ22−1(x2−μ2)Σ1∣2=Σ11−Σ12Σ22−1Σ21(1)(2)
3.因子分析模型
我们可以假设,每个样本的背后都存在一个种类
z
z
z,所以对于同一种类的样本数据,都是由种类
z
z
z通过仿射变换映射到空间中的。我们制定在
(
x
,
z
)
(x, z)
(x,z) 上的一个联合分布,如下所示,其中
z
∈
R
k
z \in R^k
z∈Rk 是一个潜在随机变量(latent random variable):
z
∼
N
(
0
,
I
)
x
∣
z
∼
N
(
μ
+
Λ
z
,
Ψ
)
\begin{aligned} z &\sim N(0,I) \\ x|z &\sim N(\mu+\Lambda z,\Psi) \end{aligned}
zx∣z∼N(0,I)∼N(μ+Λz,Ψ)
上面的式子中,我们这个模型中的参数是向量
μ
∈
R
n
\mu \in R^n
μ∈Rn ,矩阵
Λ
∈
R
n
×
k
\Lambda \in R^{n×k}
Λ∈Rn×k,以及一个对角矩阵
Ψ
∈
R
n
×
n
\Psi \in R^{n×n}
Ψ∈Rn×n。
k
k
k 的值通常都选择比
n
n
n 小一点的。在
μ
+
Λ
z
(
i
)
\mu + \Lambda z^{(i)}
μ+Λz(i) 上加上协方差
Ψ
\Psi
Ψ 作为噪音,就得到了
x
(
i
)
x^{(i)}
x(i)。
所以得到使用下面的设定:
z
∼
N
(
0
,
I
)
ϵ
∼
N
(
0
,
Ψ
)
x
=
μ
+
Λ
z
+
ϵ
\begin{aligned} z &\sim N(0,I) \\ \epsilon &\sim N(0,\Psi) \\ x &= \mu + \Lambda z + \epsilon \end{aligned}
zϵx∼N(0,I)∼N(0,Ψ)=μ+Λz+ϵ
其中的
ϵ
\epsilon
ϵ 和
z
z
z 是互相独立的。
然后咱们来确切地看看这个模型定义的分布。其中,随机变量
z
z
z 和
x
x
x 有一个联合高斯分布:
[
z
x
]
∼
N
(
μ
z
x
,
Σ
)
\begin{bmatrix} z\\x \end{bmatrix}\sim N(\mu_{zx},\Sigma)
[zx]∼N(μzx,Σ)
然后咱们要找到
μ
z
x
\mu_{zx}
μzx 和
Σ
\Sigma
Σ。
我们知道
z
z
z 的期望
E
[
z
]
=
0
E[z] = 0
E[z]=0,这是因为
z
z
z 服从的是均值为
0
0
0 的正态分布
z
∼
N
(
0
,
I
)
z\sim N(0,I)
z∼N(0,I)。 此外我们还知道:
E
[
x
]
=
E
[
μ
+
Λ
z
+
ϵ
]
=
μ
+
Λ
E
[
z
]
+
E
[
ϵ
]
=
μ
\begin{aligned} E[x] &= E[\mu + \Lambda z + \epsilon] \\ &= \mu + \Lambda E[z] + E[\epsilon] \\ &= \mu \end{aligned}
E[x]=E[μ+Λz+ϵ]=μ+ΛE[z]+E[ϵ]=μ
综合以上这些条件,就得到了:
μ
z
x
=
[
0
⃗
μ
]
Σ
=
[
Σ
z
z
Σ
z
x
Σ
x
z
Σ
x
x
]
\mu_{zx} = \begin{bmatrix} \vec{0}\\ \mu \end{bmatrix}\qquad \Sigma = \begin{bmatrix} \Sigma_{zz} & \Sigma_{zx} \\ \Sigma_{xz} & \Sigma_{xx} \end{bmatrix}
μzx=[0μ]Σ=[ΣzzΣxzΣzxΣxx]
所以:
Σ
z
z
=
I
Σ
z
x
=
E
[
(
z
−
E
[
z
]
)
(
x
−
E
[
x
]
)
T
]
=
E
[
z
(
μ
+
Λ
z
+
ϵ
−
μ
)
T
]
=
E
[
z
z
T
]
Λ
T
+
E
[
z
ϵ
T
]
=
Λ
T
Σ
z
x
=
Σ
z
x
T
=
Λ
Σ
x
x
=
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} \Sigma_{zz} &=I\\ \\ \Sigma_{zx} &= E[(z - E[z])(x - E[x])^T]\\ &=E[z(\mu+\Lambda z+\epsilon-\mu)^T] \\ &= E[zz^T]\Lambda^T+E[z\epsilon^T] \\ &= \Lambda^T\\ \\ \Sigma_{zx} &= \Sigma_{zx}^T\\ &= \Lambda\\ \\ \Sigma_{xx} &= E[(x - E[x])(x - E[x])^T]\\ &=E[\mu+\Lambda z+\epsilon-\mu)(\mu+\Lambda z+\epsilon-\mu)^T] \\ &= E[\Lambda zz^T\Lambda^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}
ΣzzΣzxΣzxΣxx=I=E[(z−E[z])(x−E[x])T]=E[z(μ+Λz+ϵ−μ)T]=E[zzT]ΛT+E[zϵT]=ΛT=ΣzxT=Λ=E[(x−E[x])(x−E[x])T]=E[μ+Λz+ϵ−μ)(μ+Λz+ϵ−μ)T]=E[ΛzzTΛT+ϵzTΛT+ΛzϵT+ϵϵT]=ΛE[zzT]ΛT+E[ϵϵT]=ΛΛT+Ψ
注意结论
E
[
z
z
T
]
=
C
o
v
(
z
)
E[zz^T] = Cov(z)
E[zzT]=Cov(z)(因为
z
z
z 的均值为
0
0
0),而且
E
[
z
ϵ
T
]
=
E
[
z
]
E
[
ϵ
T
]
=
0
E[z\epsilon^T ] = E[z]E[\epsilon^T ] = 0
E[zϵT]=E[z]E[ϵT]=0)(因为
z
z
z 和
ϵ
\epsilon
ϵ 相互独立,因此乘积的期望等于期望的乘积)。
同时我们可以发现 x x x 的边缘分布为 x ∼ N ( μ , Λ Λ T + Ψ ) x \sim N(\mu,\Lambda\Lambda^T +\Psi) x∼N(μ,ΛΛT+Ψ)。所以,我们下面使用EM算法求解最大似然(直接求最大似然过于复杂)
4.因子分析的EM算法
步骤E:
我们只需要计算
Q
i
(
z
(
i
)
)
=
p
(
z
(
i
)
∣
x
(
i
)
;
μ
,
Λ
,
Ψ
)
Q_i(z^{(i)}) = p(z^{(i)}|x^{(i)}; \mu, \Lambda, \Psi)
Qi(z(i))=p(z(i)∣x(i);μ,Λ,Ψ)即可。我们利用上面求得的结果可知:
μ
z
(
i
)
∣
x
(
i
)
=
Λ
T
(
Λ
Λ
T
+
Ψ
)
−
1
(
x
(
i
)
−
μ
)
Σ
z
(
i
)
∣
x
(
i
)
=
I
−
Λ
T
(
Λ
Λ
T
+
Ψ
)
−
1
Λ
\begin{aligned} \mu_{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Λ
所以:
Q
i
(
z
(
i
)
)
=
1
(
2
π
)
k
/
2
∣
Σ
z
(
i
)
∣
x
(
i
)
∣
1
/
2
e
x
p
(
−
1
2
(
z
(
i
)
−
μ
z
(
i
)
∣
x
(
i
)
)
T
Σ
z
(
i
)
∣
x
(
i
)
−
1
(
z
(
i
)
−
μ
z
(
i
)
∣
x
(
i
)
)
)
Q_i(z^{(i)})=\frac{1} {(2\pi)^{k/2}|\Sigma_{z^{(i)}|x^{(i)}}|^{1/2}} exp(-\frac 12(z^{(i)}-\mu_{z^{(i)}|x^{(i)}})^T\Sigma_{z^{(i)}|x^{(i)}}^{-1}(z^{(i)}-\mu_{z^{(i)}|x^{(i)}}))
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:
我们这里需要去最大化下面这个关于参数
μ
,
Λ
\mu, \Lambda
μ,Λ,
Ψ
\Psi
Ψ 的函数值:
∑
i
=
1
m
∫
z
(
i
)
Q
i
(
z
(
i
)
)
l
o
g
p
(
x
(
i
)
,
z
(
i
)
;
μ
,
Λ
,
Ψ
)
Q
i
(
z
(
i
)
)
d
z
(
i
)
=
∑
i
=
1
m
∫
z
(
i
)
Q
i
(
z
(
i
)
)
[
l
o
g
p
(
x
(
i
)
∣
z
(
i
)
;
μ
,
Λ
,
Ψ
)
+
l
o
g
p
(
z
(
i
)
)
−
l
o
g
Q
i
(
z
(
i
)
)
]
d
z
(
i
)
=
∑
i
=
1
m
E
z
(
i
)
∼
Q
i
[
l
o
g
p
(
x
(
i
)
∣
z
(
i
)
;
μ
,
Λ
,
Ψ
)
+
l
o
g
p
(
z
(
i
)
)
−
l
o
g
Q
i
(
z
(
i
)
)
]
\begin{aligned} &\sum_{i=1}^m\int_{z^{(i)}}Q_i(z^{(i)})log\frac{p(x^{(i)},z^{(i)};\mu,\Lambda,\Psi)}{Q_i(z^{(i)})}dz^{(i)}\\ &=\sum_{i=1}^m\int_{z^{(i)}}Q_i(z^{(i)})[log p(x^{(i)}|z^{(i)};\mu,\Lambda,\Psi)+log p(z^{(i)})-log Q_i(z^{(i)})]dz^{(i)} \\ &=\sum_{i=1}^m E_{z^{(i)}\sim Q_i}[log p(x^{(i)}|z^{(i)};\mu,\Lambda,\Psi)+log p(z^{(i)})-log Q_i(z^{(i)})] \end{aligned}
i=1∑m∫z(i)Qi(z(i))logQi(z(i))p(x(i),z(i);μ,Λ,Ψ)dz(i)=i=1∑m∫z(i)Qi(z(i))[logp(x(i)∣z(i);μ,Λ,Ψ)+logp(z(i))−logQi(z(i))]dz(i)=i=1∑mEz(i)∼Qi[logp(x(i)∣z(i);μ,Λ,Ψ)+logp(z(i))−logQi(z(i))]
上面的等式中,
“
z
(
i
)
∼
Q
i
”
“z^{(i)} \sim Q_i”
“z(i)∼Qi” 这个下标(subscript),表示的意思是这个期望是关于从
Q
i
Q_i
Qi 中取得的
z
(
i
)
z^{(i)}
z(i) 的。在去除无关项之后我们可以发现,只需要最大化:
∑
i
=
1
m
E
[
l
o
g
p
(
x
(
i
)
∣
z
(
i
)
;
μ
,
Λ
,
Ψ
)
]
=
∑
i
=
1
m
E
[
l
o
g
1
(
2
π
)
n
/
2
∣
Ψ
∣
1
/
2
e
x
p
(
−
1
2
(
x
(
i
)
−
μ
−
Λ
z
(
i
)
)
T
Ψ
−
1
(
x
(
i
)
−
μ
−
Λ
z
(
i
)
)
)
]
=
∑
i
=
1
m
E
[
−
1
2
l
o
g
∣
Ψ
∣
−
n
2
l
o
g
(
2
π
)
−
1
2
(
x
(
i
)
−
μ
−
Λ
z
(
i
)
)
T
Ψ
−
1
(
x
(
i
)
−
μ
−
Λ
z
(
i
)
)
]
\begin{aligned} &\sum_{i=1}^mE[log p(x^{(i)}|z^{(i)};\mu,\Lambda,\Psi)] \\ &=\sum_{i=1}^m E[log\frac{1}{(2\pi)^{n/2}|\Psi|^{1/2}} exp(-\frac 12(x^{(i)}-\mu-\Lambda z^{(i)})^T\Psi^{-1}(x^{(i)}-\mu-\Lambda z^{(i)}))] \\ &=\sum_{i=1}^m E[-\frac 12log|\Psi|-\frac n2log(2\pi)-\frac 12(x^{(i)}-\mu-\Lambda z^{(i)})^T\Psi^{-1}(x^{(i)}-\mu-\Lambda z^{(i)})] \end{aligned}
i=1∑mE[logp(x(i)∣z(i);μ,Λ,Ψ)]=i=1∑mE[log(2π)n/2∣Ψ∣1/21exp(−21(x(i)−μ−Λz(i))TΨ−1(x(i)−μ−Λz(i)))]=i=1∑mE[−21log∣Ψ∣−2nlog(2π)−21(x(i)−μ−Λz(i))TΨ−1(x(i)−μ−Λz(i))]
我们首先计算关于
Λ
\Lambda
Λ 的最大化,可以发现只有最后一项与
Λ
\Lambda
Λ有关,我们取导数(梯度):
∇
Λ
∑
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[\frac 12(x^{(i)}-\mu-\Lambda z^{(i)})^T\Psi^{-1}(x^{(i)}-\mu-\Lambda z^{(i)})] \\ &=\sum_{i=1}^m \nabla_\Lambda E[-tr\frac 12 z^{(i)T}\Lambda^T\Psi^{-1}\Lambda z^{(i)}+tr z^{(i)T}\Lambda^T\Psi^{-1}(x^{(i)}-\mu)] \\ &=\sum_{i=1}^m \nabla_\Lambda E[-tr\frac 12 \Lambda^T\Psi^{-1}\Lambda z^{(i)}z^{(i)T}+tr \Lambda^T\Psi^{-1}(x^{(i)}-\mu)z^{(i)T}] \\ &=\sum_{i=1}^m E[-\Psi^{-1}\Lambda z^{(i)}z^{(i)T}+\Psi^{-1}(x^{(i)}-\mu)z^{(i)T}] \\ \end{aligned}
∇Λi=1∑m−E[21(x(i)−μ−Λz(i))TΨ−1(x(i)−μ−Λz(i))]=i=1∑m∇ΛE[−tr21z(i)TΛTΨ−1Λz(i)+trz(i)TΛTΨ−1(x(i)−μ)]=i=1∑m∇ΛE[−tr21ΛTΨ−1Λz(i)z(i)T+trΛTΨ−1(x(i)−μ)z(i)T]=i=1∑mE[−Ψ−1Λz(i)z(i)T+Ψ−1(x(i)−μ)z(i)T]
设置导数为
0
0
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
]
\sum_{i=1}^m\Lambda E_{z^{(i)}\sim Q_i}[z^{(i)}z^{(i)T}]= \sum_{i=1}^m(x^{(i)}-\mu)E_{z^{(i)}\sim Q_i}[z^{(i)T}]
i=1∑mΛEz(i)∼Qi[z(i)z(i)T]=i=1∑m(x(i)−μ)Ez(i)∼Qi[z(i)T]
接下来,求解
Λ
\Lambda
Λ,就能得到:
Λ
=
(
∑
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
\Lambda=(\sum_{i=1}^m(x^{(i)}-\mu)E_{z^{(i)}\sim Q_i}[z^{(i)T}])(\sum_{i=1}^m E_{z^{(i)}\sim Q_i}[z^{(i)}z^{(i)T}])^{-1}
Λ=(i=1∑m(x(i)−μ)Ez(i)∼Qi[z(i)T])(i=1∑mEz(i)∼Qi[z(i)z(i)T])−1
有一个很有意思的地方需要注意,上面这个等式和用最小二乘线性回归推出的正则方程有密切关系:
“ θ T = ( y T X ) ( X T X ) − 1 ” “\theta^T=(y^TX)(X^TX)^{-1}” “θT=(yTX)(XTX)−1”
由于我们定义
Q
i
Q_i
Qi 是均值(mean)为
μ
z
(
i
)
∣
x
(
i
)
\mu_{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
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)}\sim Q_i}[z^{(i)T}]&= \mu_{z^{(i)}|x^{(i)}}^T \\ E_{z^{(i)}\sim Q_i}[z^{(i)}z^{(i)T}]&= \mu_{z^{(i)}|x^{(i)}}\mu_{z^{(i)}|x^{(i)}}^T+\Sigma_{z^{(i)}|x^{(i)}} \end{aligned}
Ez(i)∼Qi[z(i)T]Ez(i)∼Qi[z(i)z(i)T]=μz(i)∣x(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)。把这个代入到等式,就得到了
M
M
M 步骤中
Λ
\Lambda
Λ 的更新规则:
Λ
=
(
∑
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
\Lambda=(\sum_{i=1}^m(x^{(i)}-\mu)\mu_{z^{(i)}|x^{(i)}}^T)(\sum_{i=1}^m\mu_{z^{(i)}|x^{(i)}} \mu_{z^{(i)}|x^{(i)}}^T + \Sigma_{z^{(i)}|x^{(i)}})^{-1}
Λ=(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
最后,我们还可以发现,在
M
M
M 步骤对参数
μ
\mu
μ 和
Ψ
\Psi
Ψ 的优化。不难发现其中的
μ
\mu
μ 为:
μ
=
1
m
∑
i
=
1
m
x
(
i
)
\mu=\frac 1m\sum_{i=1}^m x^{(i)}
μ=m1i=1∑mx(i)
由于这个值不随着参数的变换而改变(也就是说,和
Λ
\Lambda
Λ 的更新不同,这里等式右侧不依赖
Q
i
(
z
(
i
)
)
=
p
(
z
(
i
)
∣
x
(
i
)
;
μ
,
Λ
,
Ψ
)
Q_i(z^{(i)}) = p(z^{(i)}|x^{(i)}; \mu, \Lambda, \Psi)
Qi(z(i))=p(z(i)∣x(i);μ,Λ,Ψ),这个
Q
i
(
z
(
i
)
)
Qi(z^{(i)})
Qi(z(i)) 是依赖参数的),这个只需要计算一次就可以,在算法运行过程中,也不需要进一步更新。类似地,对角矩阵
Ψ
\Psi
Ψ 也可以通过计算下面这个式子来获得:
Φ
=
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
\Phi=\frac 1m\sum_{i=1}^m x^{(i)}x^{(i)T}-x^{(i)}\mu_{z^{(i)}|x^{(i)}}^T\Lambda^T - \Lambda\mu_{z^{(i)}|x^{(i)}}x^{(i)T}+\Lambda(\mu_{z^{(i)}|x^{(i)}}\mu_{z^{(i)}|x^{(i)}}^T+\Sigma_{z^{(i)}|x^{(i)}})\Lambda^T
Φ=m1i=1∑mx(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
然后只需要设
Ψ
i
i
=
Φ
i
i
\Psi_{ii} = \Phi_{ii}
Ψii=Φii(也就是说,设
Ψ
\Psi
Ψ 为一个仅仅包含矩阵
Φ
Φ
Φ 中对角线元素的对角矩阵)。