EM 思想

本文以Kmeans和GMM为例,详细解释EM(Expectation-Maximization)思想。Kmeans算法虽然简单,但可能出现局部最优解。GMM(高斯混合模型)在未知隐变量z的情况下,利用EM算法进行参数估计。EM算法包含E步和M步,是寻找局部最优解的迭代过程。文章探讨了Kmeans与EM算法的关联,并指出EM算法的收敛性和隐变量估计等问题。
摘要由CSDN通过智能技术生成

以Kmeans和GMM为例,阐述EM思想。

Kmeans

kmeans是一种相当简单和直观的聚类算法,主要分类两步:

  1. 对于每个点,选择离他最近的聚类中心作为他的类别: c ( i ) : = arg ⁡ min ⁡ j ∥ x ( i ) − μ j ∥ 2 ​ c^{(i)} :=\arg \min _{j}\left\|x^{(i)}-\mu_{j}\right\|^{2}​ c(i):=argminjx(i)μj2
  2. 对于每个类别,求解聚类这个类的聚类中心: μ j : = ∑ i = 1 m 1 { c ( i ) = j } x ( i ) ∑ i = 1 m 1 { c ( i ) = j } \mu_{j} :=\frac{\sum_{i=1}^{m} 1\left\{c^{(i)}=j\right\} x^{(i)}}{\sum_{i=1}^{m} 1\left\{c^{(i)}=j\right\}} μj:=i=1m1{c(i)=j}i=1m1{c(i)=j}x(i)

虽然算法很简单,但是我们还是需要回答一个很基本的问题,这个算法会收敛吗?

我们定义一个distortion function J ( c , μ ) = ∑ i = 1 m ∥ x ( i ) − μ c ( i ) ∥ 2 J(c, \mu)=\sum_{i=1}^{m}\left\|x^{(i)}-\mu_{c^{(i)}}\right\|^{2} J(c,μ)=i=1mx(i)μc(i)2

这个函数衡量了点到对应的聚类中心的距离平方和,实际上,我们的kmeans算法能使得distortion function不断减小,具体来说:

  1. 第一步是在 μ ​ \mu​ μ固定的情况下,我们通过 c ​ c​ c不断减小 J ​ J​ J
  2. 第二步是在 c ​ c​ c固定的情况下,我们通过 μ ​ \mu​ μ不断减小 J ​ J​ J

因此, J J J一定是单调递减的,因此也保证了算法的收敛性。

但在实际应用中,kmeans算法并不能保证全局最优解,同时可能存在着震荡,这是因为我们的优化目标 J ​ J​ J不是一个凸函数。而kmeans算法的每一步都是在寻找局部最优解(local optima),因此,最好的办法是多次重复该算法,并选择最小的 J ​ J​ J

GMM

Model

假设我们有一系列训练集 { x ( 1 ) , … , x ( m ) } \left\{x^{(1)}, \ldots, x^{(m)}\right\} {x(1),,x(m)},我们需要使用非监督学习的方法 进行训练。

我们将这些数据建模成联合分布的形式:$p\left(x^{(i)}, z^{(i)}\right)= p\left(x^{(i)} | z^{(i)}\right) p\left(z^{(i)}\right) $。

  • 在这里, z ( i ) ∼ z^{(i)} \sim z(i) Multinomial ( ϕ ) (\phi) (ϕ) (where ϕ j ≥ 0 , ∑ j = 1 k ϕ j = 1 \phi_{j} \geq 0, \sum_{j=1}^{k} \phi_{j}=1 ϕj0,j=1kϕj=1),也就是我们的隐变量
  • 在给定 z ​ z​ z的条件下,假设 x ( i ) ∣ z ( i ) = j ∼ N ( μ j , Σ j ) ​ x^{(i)} | z^{(i)}=j \sim \mathcal{N}\left(\mu_{j}, \Sigma_{j}\right)​ x(i)z(i)=jN(μj,Σj)

因此,我们首先需要通过随机变量 z z z产生一个 z ( i ) z^{(i)} z(i),然后再从对应的高斯分布中产生 x x x,这种模型被称为高斯混合模型。

不难得到,对于这个模型来说,我们的参数为 ϕ , μ \phi, \mu ϕ,μ and Σ \Sigma Σ。写成似然函数的形式:

ℓ ( ϕ , μ , Σ ) = ∑ i = 1 m log ⁡ p ( x ( i ) ; ϕ , μ , Σ ) = ∑ i = 1 m log ⁡ ∑ z ( i ) = 1 k p ( x ( i ) ∣ z ( i ) ; μ , Σ ) p ( z ( i ) ; ϕ ) \begin{aligned} \ell(\phi, \mu, \Sigma) &=\sum_{i=1}^{m} \log p\left(x^{(i)} ; \phi, \mu, \Sigma\right) \\ &=\sum_{i=1}^{m} \log \sum_{z^{(i)}=1}^{k} p\left(x^{(i)} | z^{(i)} ; \mu, \Sigma\right) p\left(z^{(i)} ; \phi\right) \end{aligned} (ϕ,μ,Σ)=i=1mlogp(x(i);ϕ,μ,Σ)=i=1mlogz(i)=1kp(x(i)z(i);μ,Σ)p(z(i);ϕ)

但很遗憾的是,如果我们直接对这个似然函数求导,无法得到一个cloed form。

If z z z is observed

但如果我们的隐变量 z z z是已知的呢,我们是不是就很容易求解了呢?

我们重写似然函数为:

ℓ ( ϕ , μ , Σ ) = ∑ i = 1 m log ⁡ p ( x ( i ) ∣ z ( i ) ; μ , Σ ) + log ⁡ p ( z ( i ) ; ϕ ) \ell(\phi, \mu, \Sigma)=\sum_{i=1}^{m} \log p\left(x^{(i)} | z^{(i)} ; \mu, \Sigma\right)+\log p\left(z^{(i)} ; \phi\right) (ϕ,μ,Σ)=i=1mlogp(x(i)z(i);μ,Σ)+logp(z(i);ϕ)

带入假设的分布,不难求得:
ϕ j = 1 m ∑ i = 1 m 1 { z ( i ) = j } \phi_{j}=\frac{1}{m} \sum_{i=1}^{m} 1\left\{z^{(i)}=j\right\} ϕj=m1i=1m1{z(i)=j}

μ j = ∑ i = 1 m 1 { z ( i ) = j } x ( i ) ∑ i = 1 m 1 { z ( i ) = j } \mu_{j}=\frac{\sum_{i=1}^{m} 1\left\{z^{(i)}=j\right\} x^{(i)}}{\sum_{i=1}^{m} 1\left\{z^{(i)}=j\right\}} μj=i=1m1{z(i)=j}i=1m1{z(i)=j}x(i)

Σ j = ∑ i = 1 m 1 { z ( i ) = j } ( x ( i ) − μ j ) ( x ( i ) − μ j ) T ∑ i = 1 m 1 { z ( i ) = j } \Sigma_{j}=\frac{\sum_{i=1}^{m} 1\left\{z^{(i)}=j\right\}\left(x^{(i)}-\mu_{j}\right)\left(x^{(i)}-\mu_{j}\right)^{T}}{\sum_{i=1}^{m} 1\left\{z^{(i)}=j\right\}} Σj=i=1m1{z(i)=j}i=1m1{z(i)=j}(x(i)μj)(x(i)μj)T

因此,如果我们已知 z z z,那么MLE几乎和之前的高斯判别模型完全一致了。

但实际上, z z z是未知的,那么怎么办呢?

EM algorithm

我们使用EM思想来处理。EM是一种迭代的算法,主要有两个步骤:

  1. E步:通过期望去guss z z z的最可能的值 w j ( i ) : = p ( z ( i ) = j ∣ x ( i ) ; ϕ , μ , Σ ) w_{j}^{(i)} :=p\left(z^{(i)}=j | x^{(i)} ; \phi, \mu, \Sigma\right) wj(i):=p(z(i)=jx(i);ϕ,μ,Σ)
    • 实际上我们是通过后验概率来进行估计: p ( z ( i ) = j ∣ x ( i ) ; ϕ , μ , Σ ) = p ( x ( i ) ∣ z ( i ) = j ; μ , Σ ) p ( z ( i ) = j ; ϕ ) ∑ l = 1 k p ( x ( i ) ∣ z ( i ) = l ; μ , Σ ) p ( z ( i ) = l ; ϕ ) p\left(z^{(i)}=j | x^{(i)} ; \phi, \mu, \Sigma\right)=\frac{p\left(x^{(i)} | z^{(i)}=j ; \mu, \Sigma\right) p\left(z^{(i)}=j ; \phi\right)}{\sum_{l=1}^{k} p\left(x^{(i)} | z^{(i)}=l ; \mu, \Sigma\right) p\left(z^{(i)}=l ; \phi\right)} p(z(i)=jx(i);ϕ,μ,Σ)=l=1kp(x(i)z(i)=l;μ,Σ)p(z(i)=l;ϕ)p(x(i)z(i)=j;μ,Σ)p(z(i)=j;ϕ)
    • 在这里,我们分子上的概率都可以直接得到,因此可以得到 x ( i ) = j x^{(i)} = j x(i)=j的概率,也就是soft assignments w j ( i ) ​ w^{(i)}_j​ wj(i)
  2. M步:通过已知的 z z z来对模型参数进行估计(与上面一样)
    • ϕ j : = 1 m ∑ i = 1 m w j ( i ) \phi_{j} :=\frac{1}{m} \sum_{i=1}^{m} w_{j}^{(i)} ϕj:=m1i=1mwj(i)
    • μ j : = ∑ i = 1 m w j ( i ) x ( i ) ∑ i = 1 m w j ( i ) \mu_{j} :=\frac{\sum_{i=1}^{m} w_{j}^{(i)} x^{(i)}}{\sum_{i=1}^{m} w_{j}^{(i)}} μj:=i=1mwj(i)i=1mwj(i)x(i)
    • Σ j : = ∑ i = 1 m w j ( i ) ( x ( i ) − μ j ) ( x ( i ) − μ j ) T ∑ i = 1 m w j ( i ) \Sigma_{j} :=\frac{\sum_{i=1}^{m} w_{j}^{(i)}\left(x^{(i)}-\mu_{j}\right)\left(x^{(i)}-\mu_{j}\right)^{T}}{\sum_{i=1}^{m} w_{j}^{(i)}} Σj:=i=1mwj(i)i=1mwj(i)(x(i)μj)(x(i)μj)T

我们会发现,EM算法和kmeans有着很微妙的关系,除了在E步时,kmeans使用了hard cluster assignments而不是soft assignments,也就是对每个点分配了一个类别而不是概率,其他的都完全一样。

因此,EM也是一种local optima的算法,因此随机初始化参数可能会得到不同的结果。

但对于EM而言,还有两个问题没有解决:

  1. E步时,如何来估计隐变量是一种较好的选择?
  2. 如何保证算法的收敛性?

这些内容在下一篇博客会详细介绍。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值