从EM算法到GMM
从EM算法到GMM
1. 从一个简单的实例开始
假设你要对某大学所有学生的身高进行统计并且给出分析结果,你基本会自然而然地可能想到不妨设假设所有学生的身高服从高斯分布但参数未知即:
Y
∼
N
(
μ
,
σ
2
)
Y\sim N(\mu,\sigma^{2})
Y∼N(μ,σ2)
其中
Y
Y
Y代表学生的身高,你这寻思:“瞧谁不起,直接从全体学生中抽个样然后,对样本求个样本均值和样本方差,这问题不就简简单单就解决了吗”。确实,这么做也属实好使,但是不完美。你想啊,那男生的身高和女生的身高它能服从一个分布吗?你一个男的长个1米8跟玩似的,要是换个女生长个这个头得费多大劲,所以你这个分析结果太粗糙不太行。你又想了:“多大点事儿,那我把男生和女生分开抽不就完了吗,一遍先抽他个1000个样本然后一算”。你说的很对,为了把这个实例推向一般化咱们加点难度,也就说啥意思呢:学校的全体学生对于你来说是个黑箱,你只能从里面获得一个一个的样本也就是身高,但是呢你不能加个过滤器,比如“我就要女生,男的不测”,那不行,只能来一个测一个。 这样一来就存在一个隐含的随机变量
Z
Z
Z代表性别,比如男性
Z
=
1
Z=1
Z=1,女性
Z
=
0
Z=0
Z=0。那这样一来我们的未知参数就变成了
θ
=
(
μ
1
,
μ
2
,
σ
1
,
σ
2
)
\theta=\left(\mu_1,\mu_2,\sigma_1,\sigma_2\right)
θ=(μ1,μ2,σ1,σ2)。这次我们的模型就变成了:
Y
=
p
Y
1
+
q
Y
2
Y=pY_1+qY_2
Y=pY1+qY2
其中
P
P
P表示个体是男生的概率,
q
q
q表示个体是女生的概率。显然有
p
+
q
=
1
p+q=1
p+q=1。两个高斯分布的叠加仍然是高斯分布只不过
Y
1
和
Y
2
Y_1和Y_2
Y1和Y2如果不独立的话
Y
Y
Y服从一个二维高斯分布。所以说之前我们直接假设整体服从一个高斯分布还是有那么亿点合理。
模型建立好了下面我们就可以开始我们的参数估计了。注意我要开始操作了。
2. 极大似然估计
对于上面的问题,老频率学派必然得极大似然估计一下,先写个似然函数:
l
(
θ
)
=
log
P
(
Y
∣
θ
)
l(\theta)=\log{P(Y|\theta)}
l(θ)=logP(Y∣θ)
这里的
log
\log
log是以
e
e
e为底的。“那为你啥不写
ln
\ln
ln呢?”,“爷就乐意写
log
\log
log”。其实主要是想和李航老师的《统计学习方法》里面的推导保持一致。上面的似然函数不太完整,因为我们没有加入隐变量,加入隐变量之后:
l
(
θ
)
=
log
∑
Z
P
(
Y
,
Z
∣
θ
)
l(\theta)=\log{\sum_{Z}{P(Y,Z|\theta)}}
l(θ)=logZ∑P(Y,Z∣θ)
上式也就简单的将边缘分布
P
(
Y
∣
θ
)
P(Y|\theta)
P(Y∣θ)变成了联合分布
∑
Z
P
(
Y
,
Z
∣
θ
)
\sum_{Z}{P(Y,Z|\theta)}
∑ZP(Y,Z∣θ)。按正常来说接下来的工作也就简单了,极大化嘛。
θ
∗
=
a
r
g
m
a
x
l
(
θ
)
\theta^*=argmax \quad l(\theta)
θ∗=argmaxl(θ)。脑子想的很简单,手一算就完犊子了。首先隐变量
Z
Z
Z是位置的,因为黑箱嘛。其次对数里面有求和符号这还是离散情况,连续情况里面就是一个积分即:
log
∫
Z
P
(
Y
,
Z
∣
θ
)
\log{\int_{Z}{P(Y,Z|\theta)}}
log∫ZP(Y,Z∣θ)你以为求偏导然后令偏导等于0一解美滋滋?你去算吧,算不死你。“那咋办啊,极大似然都不行了,Fisher拉垮了!”。别急,解析解没有咱们还有迭代方法。
3. EM
我看网上大部分资料大概都是这么个意思:“EM算法分为两步E步求期望,M步求极大”。我个人觉得这话说的和放屁没啥区别,屁好歹还有个响,但是也不能说这句话的是错的因为EM算法的EM确实是这两个意思。
既然我们无法一步取得
l
(
θ
)
l(\theta)
l(θ)的最大值,我们可以使用迭代的方法来逐步逼近
l
(
θ
)
l(\theta)
l(θ)的最大值。把这句话翻译翻译就是,假设现在我已经取得了第
i
i
i轮迭代的参数
θ
(
i
)
\theta^{(i)}
θ(i),只需在第
i
+
1
i+1
i+1轮使得
l
(
θ
(
i
+
1
)
)
>
l
(
θ
(
i
)
)
l(\theta^{(i+1)})>l(\theta^{(i)})
l(θ(i+1))>l(θ(i))即可,这样我们可以构造如下的函数:
B
(
θ
,
θ
(
i
)
)
=
l
(
θ
)
−
l
(
θ
(
i
)
)
=
l
(
θ
)
=
log
∑
Z
P
(
Y
,
Z
∣
θ
)
−
log
P
(
Y
∣
θ
(
i
)
)
B(\theta,\theta^{(i)})=l(\theta)-l(\theta^{(i)})=l(\theta)=\log{\sum_{Z}{P(Y,Z|\theta)}}-\log{P(Y|\theta^{(i)})}
B(θ,θ(i))=l(θ)−l(θ(i))=l(θ)=logZ∑P(Y,Z∣θ)−logP(Y∣θ(i))
注意这里的
θ
(
i
)
\theta^{(i)}
θ(i)是一个已知数,
θ
\theta
θ是一个未知数。显然这一顿操作好像并没有变得简单反而更复杂了,没事儿你看我接着变形:
l
(
θ
)
−
l
(
θ
(
i
)
)
=
log
∑
Z
P
(
Y
∣
Z
,
θ
)
P
(
Z
∣
θ
)
−
log
P
(
Y
∣
θ
(
i
)
)
=
log
∑
Z
P
(
Z
∣
Y
,
θ
(
i
)
)
P
(
Y
∣
Z
,
θ
)
P
(
Z
∣
θ
)
P
(
Z
∣
Y
,
θ
(
i
)
)
−
log
P
(
Y
∣
θ
(
i
)
)
≥
∑
Z
P
(
Z
∣
Y
,
θ
(
i
)
)
log
P
(
Y
∣
Z
,
θ
)
P
(
Z
∣
θ
)
P
(
Z
∣
Y
,
θ
(
i
)
)
−
log
P
(
Y
∣
θ
(
i
)
)
=
B
(
θ
,
θ
(
i
)
)
\begin{aligned} l(\theta)-l(\theta^{(i)}) & =\log{\sum_{Z}{P(Y|Z,\theta)P(Z|\theta)}}-\log{P(Y|\theta^{(i)})}\\ & = \log{\sum_{Z}{P(Z|Y,\theta^{(i)})\frac{P(Y|Z,\theta)P(Z|\theta)}{P(Z|Y,\theta^{(i)})}}}-\log{P(Y|\theta^{(i)})}\\ & \geq\sum_{Z}{P(Z|Y,\theta^{(i)})\log{\frac{P(Y|Z,\theta)P(Z|\theta)}{P(Z|Y,\theta^{(i)})}}}-\log{P(Y|\theta^{(i)})} & = B(\theta,\theta^{(i)}) \end{aligned}
l(θ)−l(θ(i))=logZ∑P(Y∣Z,θ)P(Z∣θ)−logP(Y∣θ(i))=logZ∑P(Z∣Y,θ(i))P(Z∣Y,θ(i))P(Y∣Z,θ)P(Z∣θ)−logP(Y∣θ(i))≥Z∑P(Z∣Y,θ(i))logP(Z∣Y,θ(i))P(Y∣Z,θ)P(Z∣θ)−logP(Y∣θ(i))=B(θ,θ(i))
上面最后一步的放缩利用了jensen不等式具体过程在Jensen不等式初步理解及证明中有讲解。到了这一步概率论学得不错哥儿们应该已经能开出来苗头了,观察对数里面的内容
∑
Z
P
(
Z
∣
Y
,
θ
(
i
)
)
P
(
Y
∣
Z
,
θ
)
P
(
Z
∣
θ
)
P
(
Z
∣
Y
,
θ
(
i
)
)
\sum_{Z}{P(Z|Y,\theta^{(i)})\frac{P(Y|Z,\theta)P(Z|\theta)}{P(Z|Y,\theta^{(i)})}}
∑ZP(Z∣Y,θ(i))P(Z∣Y,θ(i))P(Y∣Z,θ)P(Z∣θ)这是啥啊?这不就是期望吗?看出来的兄弟评论扣个1,没看出来的扣眼珠子。其实我当时也没看出来,上网一顿查啊,就是找不着。今天我细细地给你们掰扯一下。首先离散型随机变量的数学期望为:
E
(
x
)
=
∑
i
P
{
X
=
x
}
x
x
∈
A
E(x)=\sum_{i}{P\{X=x\}x} \quad x\in A
E(x)=i∑P{X=x}xx∈A
A是随机变量X的样本空间,说白了就是x的所有可能取值。如果我想求
f
(
X
)
f(X)
f(X)的期望呢。随机变量函数的期望只要进行简单替换就完了:
E
(
f
(
x
)
)
=
∑
i
P
{
X
=
x
}
f
(
x
)
x
∈
A
E(f(x))=\sum_{i}{P\{X=x\}f(x)} \quad x\in A
E(f(x))=i∑P{X=x}f(x)x∈A
这次看明白了吧,对数里面就是在某个条件下的期望,所以说EM算法的E步自然得就出现了。进一步变换我们可以得到:
l
(
θ
)
≥
B
(
θ
,
θ
(
i
)
)
+
l
(
θ
(
i
)
=
∑
Z
P
(
Z
∣
Y
,
θ
(
i
)
)
log
P
(
Y
∣
Z
,
θ
)
P
(
Z
∣
θ
)
P
(
Z
∣
Y
,
θ
(
i
)
)
\begin{aligned} l(\theta)&\geq B(\theta,\theta^{(i)})+l(\theta^{(i)}\\ & = \sum_{Z}{P(Z|Y,\theta^{(i)})\log{\frac{P(Y|Z,\theta)P(Z|\theta)}{P(Z|Y,\theta^{(i)})}}} \end{aligned}
l(θ)≥B(θ,θ(i))+l(θ(i)=Z∑P(Z∣Y,θ(i))logP(Z∣Y,θ(i))P(Y∣Z,θ)P(Z∣θ)
我们极大化
l
(
θ
)
l(\theta)
l(θ)的下界得到
θ
(
i
+
1
)
\theta^{(i+1)}
θ(i+1)
θ
(
i
+
1
)
=
arg max
θ
∑
Z
P
(
Z
∣
Y
,
θ
(
i
)
)
log
P
(
Y
∣
Z
,
θ
)
P
(
Z
∣
θ
)
P
(
Z
∣
Y
,
θ
(
i
)
)
=
arg max
θ
∑
Z
P
(
Z
∣
Y
,
θ
(
i
)
)
log
P
(
Y
∣
Z
,
θ
)
P
(
Z
∣
θ
)
=
arg max
θ
Q
(
θ
,
θ
(
i
)
)
\begin{aligned} \theta^{(i+1)} &= \underset{\theta}{\operatorname{arg\,max}}\sum_{Z}{P(Z|Y,\theta^{(i)})\log{\frac{P(Y|Z,\theta)P(Z|\theta)}{P(Z|Y,\theta^{(i)})}}}\\ & = \underset{\theta}{\operatorname{arg\,max}}\sum_{Z}{P(Z|Y,\theta^{(i)}) \log{P(Y|Z,\theta)P(Z|\theta)}}\\ & = \underset{\theta}{\operatorname{arg\,max}}\,Q(\theta,\theta^{(i)}) \end{aligned}
θ(i+1)=θargmaxZ∑P(Z∣Y,θ(i))logP(Z∣Y,θ(i))P(Y∣Z,θ)P(Z∣θ)=θargmaxZ∑P(Z∣Y,θ(i))logP(Y∣Z,θ)P(Z∣θ)=θargmaxQ(θ,θ(i))
至此,我们的EM算法已经差不多结束了。总的来说,E步就是求得当前的
Q
Q
Q函数,M步就是对
Q
Q
Q函数求极大获得下一轮的
θ
\theta
θ。注意啊,EM虽然牛逼但是和大多数的迭代算法一样,不能保证全局最优!
4. GMM
前面磨叽那么多现在我要开始写快点了,高斯混合模型(Gaussian mixture model)首先它是一个聚类的算法。它的前提假设是总体为多个高斯分布的叠加即总体的概率密度为:
F
(
x
)
=
α
1
ϕ
1
(
x
)
+
α
2
ϕ
2
(
x
)
+
⋯
+
α
k
ϕ
k
(
x
)
∑
i
=
1
k
α
i
=
1
F(x)=\alpha_1\phi_1(x)+\alpha_2\phi_2(x)+\cdots+\alpha_k\phi_k(x)\\ \sum_{i=1}^{k}{\alpha_i}=1
F(x)=α1ϕ1(x)+α2ϕ2(x)+⋯+αkϕk(x)i=1∑kαi=1
其中
ϕ
(
x
)
\phi(x)
ϕ(x)为高斯分布的概率密度函数。如果我们从总体中进行抽样那它就可能来自某个高斯分布。
上面这幅图是从三个不同的高斯分布所抽取的。好了,现在我们的任务就是把这些图的颜色去掉,然后将这些点进行聚类并得到模型的参数。对照EM算法,设我们的隐变量为
γ
j
k
\gamma_{jk}
γjk。
γ
j
k
=
{
1
y
j
来自第
k
个
分
布
0
其
他
\gamma_{jk}= \begin{cases} 1 & y_j\text{来自第}k个分布\\ 0 & 其他 \end{cases}
γjk={10yj来自第k个分布其他
表示
y
j
y_j
yj来自第
k
k
k个高斯分布。完全数据的似然函数可以写为(这里有个技巧请看完):
P
(
Y
,
γ
∣
θ
)
=
∏
j
=
1
N
P
(
y
j
,
γ
j
1
,
γ
j
2
,
⋯
,
γ
j
k
∣
θ
)
=
∏
j
=
1
N
∑
k
=
1
K
γ
j
k
α
k
ϕ
(
y
j
∣
θ
)
=
∏
j
=
1
N
∑
k
=
1
K
γ
j
k
α
k
(
1
2
π
∣
Σ
k
∣
1
2
exp
{
−
1
2
(
y
j
−
μ
k
)
T
Σ
k
−
1
(
y
j
−
μ
k
)
}
)
\begin{aligned} P(Y,\gamma|\theta) &= \prod_{j=1}^{N}P(y_j,\gamma_{j1},\gamma_{j2},\cdots,\gamma_{jk}|\theta)\\ & = \prod_{j=1}^{N}\sum_{k=1}^{K}\gamma_{jk}\alpha_{k}\phi(y_j|\theta)\\ & = \prod_{j=1}^{N}\sum_{k=1}^{K}\gamma_{jk}\alpha_{k}\left( \frac{1}{2\pi\left| \Sigma_k \right|^{ \frac{1}{2} }} \text{exp}\left\{ -\frac{1}{2} (y_j-\mu_k)^T\Sigma_k^{-1}(y_j-\mu_k) \right\}\right)\\ \end{aligned}
P(Y,γ∣θ)=j=1∏NP(yj,γj1,γj2,⋯,γjk∣θ)=j=1∏Nk=1∑Kγjkαkϕ(yj∣θ)=j=1∏Nk=1∑Kγjkαk(2π∣Σk∣211exp{−21(yj−μk)TΣk−1(yj−μk)})
对完全数据去对数后得到似然函数:
l
(
θ
)
=
∑
j
=
1
N
log
∑
k
=
1
K
γ
j
k
α
k
(
1
2
π
∣
Σ
k
∣
1
2
exp
{
−
1
2
(
y
j
−
μ
k
)
T
Σ
k
−
1
(
y
j
−
μ
k
)
}
)
l(\theta) = \sum_{j=1}^{N}\log{\sum_{k=1}^{K}\gamma_{jk}\alpha_{k}\left( \frac{1}{2\pi\left| \Sigma_k \right|^{ \frac{1}{2} }} \text{exp}\left\{ -\frac{1}{2} (y_j-\mu_k)^T\Sigma_k^{-1}(y_j-\mu_k) \right\}\right)}
l(θ)=j=1∑Nlogk=1∑Kγjkαk(2π∣Σk∣211exp{−21(yj−μk)TΣk−1(yj−μk)})
这时候我的心理咯噔了一下,这不完犊子了吗,怎么对数里面还有求和符号啊,一会求偏导的时候不完犊子了吗?我喝了一口水,仔细观察了一下推导的过程没错…突然发现了转机,
∑
k
α
k
=
1
\sum_k\alpha_k=1
∑kαk=1可以用Jensen不等式进行缩小把求和符号拿到外面去!
l
(
θ
)
≥
∑
j
=
1
N
∑
k
=
1
K
α
k
log
γ
j
k
(
1
2
π
∣
Σ
k
∣
1
2
exp
{
−
1
2
(
y
j
−
μ
k
)
T
Σ
k
−
1
(
y
j
−
μ
k
)
}
)
=
C
(
θ
,
θ
k
)
l(\theta) \geq \sum_{j=1}^{N} \sum_{k=1}^{K}{\alpha_k\log{\,\gamma_{jk}\left( \frac{1}{2\pi\left| \Sigma_k \right|^{ \frac{1}{2} }} \text{exp}\left\{ -\frac{1}{2} (y_j-\mu_k)^T\Sigma_k^{-1}(y_j-\mu_k) \right\}\right)}} =C(\theta,\theta^k)
l(θ)≥j=1∑Nk=1∑Kαklogγjk(2π∣Σk∣211exp{−21(yj−μk)TΣk−1(yj−μk)})=C(θ,θk)
虽然
C
(
θ
,
θ
k
)
≤
Q
(
θ
,
θ
k
)
C(\theta,\theta^k)\leq Q(\theta,\theta^k)
C(θ,θk)≤Q(θ,θk)比之前的下界更小了,但这无伤大雅。But,球逗麻袋,就在我在纸上写完这个
C
C
C函数之后我他妈马上就意识到了如果
γ
j
k
=
0
\gamma_{jk}=0
γjk=0对数里面为
0
0
0超出定义域了,这个方法只能放弃、拉倒了。其实问题在于我写似然函数的时候是完全自己写的,也确实没问题,李航老师的书上是乘法形式没有求和,刚开始我还有疑惑,为什么李航老师要这么写?他这么写肯定有理由,我这个形式行不行呢?带着这个问题我开始往下写,就遇到上述的种种问题然后才豁然开朗,李航老师都是使用乘法形式是为了取对数之后能够全部分离开,而隐变量在乘法形式中是放在
ϕ
\phi
ϕ函数的指数位置也就不存在对数的真数等于
0
0
0的情况了。
下面给出李航老师版本的似然函数:
P
(
Y
,
γ
∣
θ
)
=
∏
j
=
1
N
P
(
y
j
,
γ
j
1
,
γ
j
2
,
⋯
,
γ
j
k
∣
θ
)
=
∏
k
=
1
K
∏
j
=
1
N
[
α
k
ϕ
(
y
j
∣
θ
)
]
γ
j
k
=
∏
k
=
1
K
α
k
n
k
∏
j
=
1
N
(
1
2
π
∣
Σ
k
∣
1
2
exp
{
−
1
2
(
y
j
−
μ
k
)
T
Σ
k
−
1
(
y
j
−
μ
k
)
}
)
γ
j
k
其中
n
k
=
∑
j
γ
j
k
,
∑
k
n
k
=
N
\begin{aligned} P(Y,\gamma|\theta) &= \prod_{j=1}^{N}P(y_j,\gamma_{j1},\gamma_{j2},\cdots,\gamma_{jk}|\theta)\\ & = \prod_{k=1}^{K}\prod_{j=1}^{N}\left[\alpha_{k}\phi(y_j|\theta)\right]^{\gamma_{jk}}\\ & = \prod_{k=1}^{K}\alpha_k^{n_k} \prod_{j=1}^{N}\left( \frac{1}{2\pi\left| \Sigma_k \right|^{ \frac{1}{2} }} \text{exp}\left\{ -\frac{1}{2} (y_j-\mu_k)^T\Sigma_k^{-1}(y_j-\mu_k) \right\}\right)^{\gamma_{jk}}\\ \text{其中}n_k = \sum_j{\gamma_{jk}},\quad\sum_k{n_k}=N \end{aligned}
P(Y,γ∣θ)其中nk=j∑γjk,k∑nk=N=j=1∏NP(yj,γj1,γj2,⋯,γjk∣θ)=k=1∏Kj=1∏N[αkϕ(yj∣θ)]γjk=k=1∏Kαknkj=1∏N(2π∣Σk∣211exp{−21(yj−μk)TΣk−1(yj−μk)})γjk
对数似然为:
l
(
θ
,
θ
k
)
=
∑
k
=
1
K
{
n
k
log
α
k
+
∑
j
=
1
N
γ
j
k
[
log
(
1
2
π
)
−
1
2
log
∣
Σ
k
∣
−
1
2
(
y
j
−
μ
k
)
T
Σ
k
−
1
(
y
j
−
μ
k
)
]
}
l(\theta,\theta^k) = \sum_{k=1}^{K}{ \left\{ n_k\log{\alpha_k} + \sum_{j=1}^{N}{ \gamma_{jk} \left[\log{ \left(\frac{1}{2\pi}\right)} - \frac{1}{2}\log{\left|\Sigma_k\right|} - \frac{1}{2} (y_j-\mu_k)^T\Sigma_k^{-1}(y_j-\mu_k) \right] } \right\} }
l(θ,θk)=k=1∑K{nklogαk+j=1∑Nγjk[log(2π1)−21log∣Σk∣−21(yj−μk)TΣk−1(yj−μk)]}
至此,我们得到了完全数据(完全是指包含隐变量
γ
\gamma
γ在内的似然)的似然函数。根据EM算法,接下来我们要用E步来求得
Q
Q
Q函数,把鼠标滚轮扒拉到EM算法那,然后可知:
Q
(
θ
,
θ
k
)
=
∑
Z
P
(
Z
∣
θ
i
,
Y
)
log
P
(
Y
∣
Z
,
θ
)
P
(
Z
∣
θ
)
=
E
Z
[
log
P
(
Y
∣
Z
,
θ
)
P
(
Z
∣
θ
)
]
=
E
Z
[
log
P
(
Y
,
Z
∣
θ
)
]
\begin{aligned} Q(\theta, \theta^k) &= \sum_Z{P(Z|\theta^i,Y)}\log{P(Y|Z,\theta)P(Z|\theta)}\\ &= \mathbb{E}_Z\left[\, \log{P(Y|Z,\theta)P(Z|\theta)} \,\right]\\ &= \mathbb{E}_Z\left[\ \log{P(Y,Z|\theta)} \,\right] \end{aligned}
Q(θ,θk)=Z∑P(Z∣θi,Y)logP(Y∣Z,θ)P(Z∣θ)=EZ[logP(Y∣Z,θ)P(Z∣θ)]=EZ[ logP(Y,Z∣θ)]
有的兄弟可能会问了,既然最后求得还是完全数据后验的似然即:
E
Z
[
log
P
(
Y
,
Z
∣
θ
)
]
\mathbb{E}_Z\left[\ \log{P(Y,Z|\theta)} \,\right]
EZ[ logP(Y,Z∣θ)]那之前为啥还用贝斯公式变换成:
E
Z
[
log
P
(
Y
∣
Z
,
θ
)
P
(
Z
∣
θ
)
]
\mathbb{E}_Z\left[\, \log{P(Y|Z,\theta)P(Z|\theta)} \,\right]
EZ[logP(Y∣Z,θ)P(Z∣θ)]?这个问题其实我在看书的时候也是挺费解的,可能推导的时候没有考虑那么多,也可能是为了引出
P
(
Z
∣
θ
i
,
Y
)
P(Z|\theta^i,Y)
P(Z∣θi,Y),这其实很符合常理,因为一般联合概率都是很难求的,但是边缘分布好求,所以把
log
P
(
Y
,
Z
∣
θ
)
\log{P(Y,Z|\theta)}
logP(Y,Z∣θ)拆开还是很自然的,有点牵强哈,懂得都懂,不懂的也尽量理解。
现在回到我们原来的问题上,我们只求求得
Q
Q
Q函数之后再极大化就可以获得第
i
+
1
i+1
i+1轮迭代的参数。
Q
Q
Q函数为:
Q
(
θ
,
θ
(
i
+
1
)
)
=
E
γ
[
∑
k
=
1
K
{
n
k
log
α
k
+
∑
j
=
1
N
γ
j
k
[
log
(
1
2
π
)
−
1
2
log
∣
Σ
k
∣
−
1
2
(
y
j
−
μ
k
)
T
Σ
k
−
1
(
y
j
−
μ
k
)
]
}
]
=
∑
k
=
1
K
{
∑
j
=
1
N
E
γ
[
γ
j
k
]
log
α
k
+
∑
j
=
1
N
E
γ
[
γ
j
k
]
[
log
(
1
2
π
)
−
1
2
log
∣
Σ
k
∣
−
1
2
(
y
j
−
μ
k
)
T
Σ
k
−
1
(
y
j
−
μ
k
)
]
}
\begin{aligned} Q(\theta, \theta^{(i+1)}) &= \mathbb{E}_\gamma\left[\,\sum_{k=1}^{K}{ \left\{ n_k\log{\alpha_k} + \sum_{j=1}^{N}{ \gamma_{jk} \left[\log{ \left(\frac{1}{2\pi}\right)} - \frac{1}{2}\log{\left|\Sigma_k\right|} - \frac{1}{2} (y_j-\mu_k)^T\Sigma_k^{-1}(y_j-\mu_k) \right] } \right\} } \right]\\ &= \sum_{k=1}^{K}{ \left\{ \sum_{j=1}^{N} \mathbb{E}_\gamma [\,\gamma_{jk}]\log{\alpha_k} + \sum_{j=1}^{N}{ \mathbb{E}_\gamma [\,\gamma_{jk}] \left[\log{ \left(\frac{1}{2\pi}\right)} - \frac{1}{2}\log{\left|\Sigma_k\right|} - \frac{1}{2} (y_j-\mu_k)^T\Sigma_k^{-1}(y_j-\mu_k) \right] } \right\} } \end{aligned}
Q(θ,θ(i+1))=Eγ[k=1∑K{nklogαk+j=1∑Nγjk[log(2π1)−21log∣Σk∣−21(yj−μk)TΣk−1(yj−μk)]}]=k=1∑K{j=1∑NEγ[γjk]logαk+j=1∑NEγ[γjk][log(2π1)−21log∣Σk∣−21(yj−μk)TΣk−1(yj−μk)]}
γ
j
k
\gamma_{jk}
γjk的期望为:
γ
^
j
k
=
E
(
γ
j
k
∣
y
j
,
θ
)
=
0
×
P
(
γ
j
k
=
0
∣
y
j
,
θ
)
+
1
×
P
(
γ
j
k
=
1
∣
y
j
,
θ
)
=
P
(
γ
j
k
=
1
∣
y
j
,
θ
)
=
P
(
γ
j
k
=
1
,
y
j
∣
θ
)
P
(
y
j
∣
θ
)
=
P
(
y
j
∣
γ
j
k
=
1
,
θ
)
P
(
γ
j
k
=
1
∣
θ
)
∑
k
P
(
γ
j
k
=
1
,
y
j
∣
θ
k
)
=
P
(
y
j
∣
γ
j
k
=
1
,
θ
)
P
(
γ
j
k
=
1
∣
θ
)
∑
k
P
(
y
j
∣
γ
j
k
=
1
,
θ
)
P
(
γ
j
k
=
1
∣
θ
)
=
α
k
ϕ
(
y
j
∣
θ
k
)
∑
k
α
k
ϕ
(
y
j
∣
θ
k
)
k
=
1
,
2
,
⋯
,
K
\begin{aligned} \hat{\gamma}_{jk} &=E(\gamma_{jk}|y_j,\theta) = 0\times P(\gamma_{jk}=0|y_j,\theta)+1\times P(\gamma_{jk}=1|y_j,\theta)\\ &= P(\gamma_{jk}=1|y_j,\theta)\\ &= \frac{P(\gamma_{jk}=1,y_j|\theta)}{P(y_j|\theta)}\\ &= \frac{P(y_j|\gamma_{jk}=1,\theta) P(\gamma_{jk}= 1|\theta)} {\sum_{k}{P(\gamma_{jk}=1,y_j|\theta_k)}}\\ &= \frac{P(y_j|\gamma_{jk}=1,\theta) P(\gamma_{jk}= 1|\theta)} {\sum_{k}{P(y_j|\gamma_{jk}=1,\theta)} P(\gamma_{jk}= 1|\theta) }\\ &= \frac{\alpha_k\phi(y_j|\theta_k)} {\sum_k{\alpha_k\phi(y_j|\theta_k)}}\qquad \qquad k=1,2,\cdots,K \end{aligned}
γ^jk=E(γjk∣yj,θ)=0×P(γjk=0∣yj,θ)+1×P(γjk=1∣yj,θ)=P(γjk=1∣yj,θ)=P(yj∣θ)P(γjk=1,yj∣θ)=∑kP(γjk=1,yj∣θk)P(yj∣γjk=1,θ)P(γjk=1∣θ)=∑kP(yj∣γjk=1,θ)P(γjk=1∣θ)P(yj∣γjk=1,θ)P(γjk=1∣θ)=∑kαkϕ(yj∣θk)αkϕ(yj∣θk)k=1,2,⋯,K
简简单单地把E步求了出来,接下来就是M步,求Q函数的极大。那M步怎么求?直接对参数求导就完了。用
μ
^
k
,
Σ
^
k
,
α
^
k
\hat{\mu}_k,\hat{\Sigma}_k,\hat{\alpha}_k
μ^k,Σ^k,α^k表示
θ
(
i
+
1
)
\theta^{(i+1)}
θ(i+1)的各个参数。
μ
^
k
=
∑
j
=
1
N
γ
^
j
k
y
j
∑
j
=
1
N
γ
^
j
k
Σ
^
k
=
∑
j
=
1
N
(
y
j
−
μ
k
)
(
y
j
−
μ
k
)
T
∑
j
=
1
N
γ
^
j
k
α
^
k
=
∑
j
=
1
N
γ
^
j
k
N
\begin{aligned} \hat{\mu}_k &= \frac{ \sum_{j=1}^{N}{\hat{\gamma}_{jk}y_j} } {\sum_{j=1}^{N}{\hat{\gamma}_{jk}}}\\ \hat{\Sigma}_k &= \frac{\sum_{j=1}^{N}{(y_j-\mu_k)(y_j-\mu_k)^T}} {\sum_{j=1}^{N}{\hat{\gamma}_{jk}}}\\ \hat{\alpha}_k &= \frac{\sum_{j=1}^{N}{\hat{\gamma}_{jk}}}{N}\\ \end{aligned}
μ^kΣ^kα^k=∑j=1Nγ^jk∑j=1Nγ^jkyj=∑j=1Nγ^jk∑j=1N(yj−μk)(yj−μk)T=N∑j=1Nγ^jk
其中
k
=
1
,
2
,
…
,
K
k = 1,2,\ldots,K
k=1,2,…,K,具体的推导过程太长了,需要一定的矩阵求导知识。我可能单独整一篇来讲求导内容。现在迭代公式ok了剩下的内容是什么傻子都能猜出来了,编程测试呗。