EM算法的流程:
- 随机初始化未知参数,初始化值记为 θ o l d \theta^{old} θold
- E-STEP:
- 求隐变量 z z z的后验: p ( z ∣ x ; θ o l d ) = p ( z , x ; θ o l d ) ∫ p ( z , x ; θ o l d ) d z p(z|x;\theta^{old}) = {p(z,x;\theta^{old}) \over \int p(z,x;\theta^{old})dz} p(z∣x;θold)=∫p(z,x;θold)dzp(z,x;θold)
- 求完全数据 ( x , z ) (x,z) (x,z)的对数似然关于 z z z的后验的期望: E p ( z ∣ x ; θ o l d ) [ l o g p ( x , z ; θ ) ] E_{p(z|x;\theta^{old})}[logp(x,z;\theta)] Ep(z∣x;θold)[logp(x,z;θ)]
- M-STEP:
最大化期望: E p ( z ∣ x ; θ o l d ) [ l o g p ( x , z ; θ ) ] E_{p(z|x;\theta^{old})}[logp(x,z;\theta)] Ep(z∣x;θold)[logp(x,z;θ)],也就是 θ ^ = a r g m a x θ E p ( z ∣ x ; θ o l d ) [ l o g p ( x , z ; θ ) ] \hat{\theta}=argmax_{\theta} E_{p(z|x;\theta^{old})}[logp(x,z;\theta)] θ^=argmaxθEp(z∣x;θold)[logp(x,z;θ)]
令 θ o l d = θ ^ \theta^{old} = \hat{\theta} θold=θ^,并开启下一轮迭代。
用EM算法求解GMM算法的流程:
其中,
π
k
\pi_{k}
πk是第k个高斯的先验,一般
π
k
=
1
K
\pi_{k}={1 \over K}
πk=K1。
γ
i
,
k
=
p
(
z
∣
x
i
;
θ
o
l
d
)
=
π
k
N
(
x
i
;
μ
k
,
Σ
k
)
Σ
j
K
π
j
N
(
x
i
;
μ
j
,
Σ
j
)
(1)
\tag{1} \gamma_{i,k}=p(z|x_i;\theta^{old})={\pi_{k}N(x_i;\mu_{k}, \Sigma_{k}) \over \Sigma_{j}^{K}\pi_{j}N(x_i;\mu_{j}, \Sigma_{j})}
γi,k=p(z∣xi;θold)=ΣjKπjN(xi;μj,Σj)πkN(xi;μk,Σk)(1)
是后验分布。
我们令 Σ k = ϵ \Sigma_{k}=\epsilon Σk=ϵ,考虑GMM中 ϵ 趋 近 于 0 的 情 况 \epsilon 趋近于0的情况 ϵ趋近于0的情况(这时其实变成了狄拉克分布,狄拉克分布是高斯分布在协方差趋于0的一种特殊情况)。
在E-step中
(1)式变成:
γ i , k = π k N ( x i ; μ k , Σ k ) Σ j K π j N ( x i ; μ j , Σ j ) = π k e x p ( − 1 2 ϵ ( x i − μ k ) 2 ) ∑ j K π j e x p ( − 1 2 ϵ ( x i − μ j ) 2 ) (2) \begin{aligned} \tag{2} \gamma_{i,k}= & {\pi_{k}N(x_i;\mu_{k}, \Sigma_{k}) \over \Sigma_{j}^{K}\pi_{j}N(x_i;\mu_{j}, \Sigma_{j})} \\ = & {\pi_{k}exp(-{1 \over 2\epsilon}(x_{i}-\mu_{k})^{2}) \over \sum_{j}^{K} \pi_{j}exp(-{1 \over 2\epsilon}(x_{i}-\mu_{j})^{2})} \end{aligned} γi,k==ΣjKπjN(xi;μj,Σj)πkN(xi;μk,Σk)∑jKπjexp(−2ϵ1(xi−μj)2)πkexp(−2ϵ1(xi−μk)2)(2)
假设 x i x_{i} xi距离 μ k \mu_{k} μk最近,也就是 ( x i − μ k ) 2 (x_i-\mu_k)^{2} (xi−μk)2最小。根据类内距最小,类间距最大的原则,在分母中, ( x i − μ j ) 2 , j ≠ k (x_{i}-\mu_{j})^{2},j \neq k (xi−μj)2,j=k都比 ( x i − μ k ) 2 (x_i-\mu_k)^{2} (xi−μk)2要大的多。根据指数函数的单调性可知,其他项都趋于0。根据求极限的法则,在 ϵ → 0 时 , ( x i − μ k ) 2 最 小 , 等 价 于 γ i , k → 1 \epsilon \to0时,(x_i-\mu_{k})^2最小,等价于\gamma_{i,k} \to1 ϵ→0时,(xi−μk)2最小,等价于γi,k→1。这种情况下,相当于每个样本获得了一个硬分配,和k-means一样。
M-step中
E
p
(
z
∣
x
;
θ
)
[
l
o
g
p
(
x
i
,
z
;
θ
)
]
=
∑
k
K
∑
i
n
γ
i
,
k
[
l
n
π
k
+
l
n
N
(
x
i
;
μ
k
,
Σ
k
)
]
(3)
\begin{aligned} \tag{3} E_{p(z|x;\theta)}[logp(x_i,z;\theta)]= & \sum_{k}^{K}\sum_{i}^{n} \gamma_{i,k}[ln\pi_{k}+lnN(x_i;\mu_{k}, \Sigma_{k})]\\ \end{aligned}
Ep(z∣x;θ)[logp(xi,z;θ)]=k∑Ki∑nγi,k[lnπk+lnN(xi;μk,Σk)](3)
当
ϵ
→
0
\epsilon \to 0
ϵ→0时,(3)式变成:
E
p
(
z
∣
x
i
;
θ
)
[
l
o
g
p
(
x
,
z
;
θ
)
]
=
∑
k
K
∑
i
n
γ
i
,
k
[
l
n
π
k
+
l
n
N
(
x
i
;
μ
k
,
Σ
k
)
]
=
∑
k
K
∑
i
n
γ
i
,
k
l
n
π
k
+
+
∑
k
K
∑
i
n
γ
i
,
k
l
n
1
2
π
ϵ
−
1
2
ϵ
∑
k
K
∑
i
n
γ
i
,
k
(
x
i
−
μ
k
)
2
=
c
o
n
s
t
+
1
ϵ
∑
k
K
[
∑
i
n
γ
i
,
k
(
l
n
1
2
π
−
(
x
i
−
μ
k
)
2
)
]
s
(4)
\begin{aligned} \tag{4} E_{p(z|x_i;\theta)}[logp(x,z;\theta)]= & \sum_{k}^{K}\sum_{i}^{n} \gamma_{i,k}[ln\pi_{k}+lnN(x_i;\mu_{k}, \Sigma_{k})]\\ = & \sum_{k}^{K}\sum_{i}^{n}\gamma_{i,k}ln\pi_{k + } + \sum_{k}^{K}\sum_{i}^{n}\gamma_{i,k}ln{1 \over \sqrt{2\pi \epsilon}} -{1\over 2\epsilon} \sum_{k}^{K}\sum_{i}^{n}\gamma_{i,k}(x_i-\mu_k)^2\\ = & const + {1 \over \epsilon} \sum_{k}^{K}[\sum_{i}^{n}\gamma_{i,k} (ln{1 \over \sqrt{2\pi}}-(x_i-\mu_k)^2)] \end{aligned}s
Ep(z∣xi;θ)[logp(x,z;θ)]===k∑Ki∑nγi,k[lnπk+lnN(xi;μk,Σk)]k∑Ki∑nγi,klnπk++k∑Ki∑nγi,kln2πϵ1−2ϵ1k∑Ki∑nγi,k(xi−μk)2const+ϵ1k∑K[i∑nγi,k(ln2π1−(xi−μk)2)]s(4)
在M-step中,只有
μ
k
\mu_k
μk是未知的,其他都是已知的,所以只需要让
μ
k
\mu_k
μk使得上式最大即可。也就是
∑
k
K
[
∑
i
n
γ
i
,
k
(
l
n
1
2
π
−
(
x
i
−
μ
k
)
2
)
]
\sum_{k}^{K}[\sum_{i}^{n}\gamma_{i,k} (ln{1 \over \sqrt{2\pi}}-(x_i-\mu_k)^2)]
∑kK[∑inγi,k(ln2π1−(xi−μk)2)]最大。通过对
μ
k
\mu_k
μk求导得:
μ
k
=
∑
i
n
γ
i
,
k
x
i
∑
i
n
γ
i
,
k
\mu_k={\sum_i^{n}\gamma_{i,k}x_i \over \sum_{i}^n\gamma_{i,k}}
μk=∑inγi,k∑inγi,kxi。
从此可知,K-Means算法其实是GMM的EM解法在高斯分量协方差 Σ → 0 \Sigma \to 0 Σ→0时的一个特例。
参考:https://blog.csdn.net/tingyue_/article/details/70739671