文章目录
1 Introduction
EM算法!这个是PCA外的,另外一个无监督学习的经典1。它是一个基础算法,是很多机器学习领域算法的基础,比如隐式马尔科夫算法(HMM), LDA主题模型的变分推断等等2。
我们经常会从样本观察数据中,找出样本的模型参数。 最常用的方法就是极大化模型分布的对数似然函数。
但是在一些情况下,我们得到的观察数据有未观察到的隐含数据,此时我们未知的有隐含数据和模型参数,因而无法直接用极大化对数似然函数得到模型分布的参数。怎么办呢?这就是EM算法可以派上用场的地方了。
EM算法解决这个的思路是使用启发式的迭代方法,既然我们无法直接求出模型分布参数,那么我们可以先猜想隐含数据(EM算法的E步),接着基于观察数据和猜测的隐含数据一起来极大化对数似然,求解我们的模型参数(EM算法的M步)。由于我们之前的隐藏数据是猜测的,所以此时得到的模型参数一般还不是我们想要的结果。不过没关系,我们基于当前得到的模型参数,继续猜测隐含数据(EM算法的E步),然后继续极大化对数似然,求解我们的模型参数(EM算法的M步)。以此类推,不断的迭代下去,直到模型分布参数基本无变化,算法收敛,找到合适的模型参数。
从上面的描述可以看出,EM算法是迭代求解最大值的算法,同时算法在每一次迭代时分为两步,E步和M步。一轮轮迭代更新隐含数据和模型分布参数,直到收敛,即得到我们需要的模型参数。
eg: 一个最直观了解 EM算法思路的是K-Means算法,见之前写的 K-Means 聚类算法原理。在 K-Means 聚类时,每个聚类簇的质心是隐含数据。我们会假设 K 个初始化质心,即 EM 算法的E步;然后计算得到每个样本最近的质心,并把样本聚类到最近的这个质心,即 EM 算法的 M 步。重复这个 E 步和 M 步,直到质心不再变化为止,这样就完成了 K-Means 聚类。
2 Algorithm
2.1 Convex function
- 理解为,期望的函数小于等于函数的期望
- 我们一般把 t 当成 1/2 了,这里是更普世的定义(线性插值)
2.2 Jensens inequality(琴生不等式)
-
推导
-
当 函数为 -log 时
2.3 Gauss
高斯
高斯混合
3 Algorithm
3.1 问题引入
以高斯混合模型为例,When you have data that looks like:
Can you fit them using a single-mode Gaussian distribution? 显然是不行的咯。得用到 Gaussian Mixture Model(GMM)
- l l l:模型的个数( 1 … … k 1……k 1……k)
- α l \alpha _l αl:第 l l l 个高斯模型的权重,为啥不为 1/k 呢?因为不同高斯模型的 Σ \Sigma Σ(高低)不同, 1/k 加权的方式并不好
- N N N:高斯的概率密度函数
- X X X:样本( x 1 … … x N x_1……x_N x1……xN)
- μ l \mu _l μl:高斯模型的均值
- Σ l \Sigma _l Σl:高斯模型的方差
高斯混合高维情况
图中可以看出,不同区域的数据受到不同高斯分布的概率影响不同,是 soft 的不是 hard 的。
3.2 Maximum Likelihood Estimate(MLE)
用 Maximum Likelihood Estimate (MLE) 求参数 Θ \Theta Θ
- Unlike single mode Gaussian, we can’t just take derivatives and let it equal zero easily.
- We need to use Expectation-Maximization to help us solving this.
我们用迭代的思想
Θ
(
g
+
1
)
=
f
(
Θ
(
g
)
)
\Theta ^{(g+1)} = f(\Theta^{(g)})
Θ(g+1)=f(Θ(g)),EM的迭代方式如下
- Θ \Theta Θ是常数
- θ \theta θ是变量
3.2.1 Latent Variable
问题来了。Z是啥,原问题 Θ M L E \Theta_{MLE} ΘMLE 本来就很难求了(求导容易,求导后变量的结果不好计算),为什么还加入一个变量 Z,使问题复杂。这不符合逻辑啊!
非也,Z 叫做 “latent” variable(隐变量),在原问题中加入隐变量需要满足如下条件
- 使原问题更容易求解(eg: 如上面的草图, Z 告诉了数据属于哪个高斯分布)
- 不改变原数据的边缘分布
p
(
x
i
)
=
∫
z
i
p
(
x
i
∣
z
i
)
⋅
p
(
z
i
)
d
z
i
p\left ( x_i \right ) = \int_{z_i }p(x_i | z_i)\cdot p(z_i)d_{z_i}
p(xi)=∫zip(xi∣zi)⋅p(zi)dzi
(严格一点写大话每个概率都要加上条件概率 ∣ θ | \theta ∣θ)
证明加入latent variable 后没有改变x的边缘分布
-
p ( z i ) p(z_i) p(zi) 表示数据在哪个高斯中,也即是权重 α z i \alpha_{z_i} αzi
-
p ( x i ∣ z i ) p(x_i | z_i) p(xi∣zi) 知道哪个高斯后可以写为 N ( x i ∣ μ z i , Σ z i ) N(x_i | \mu _{z_i},\Sigma _{z_i}) N(xi∣μzi,Σzi),N表示高斯分布。
立即推
-
p ( x i ) = ∫ z i p ( x i ∣ z i ) ⋅ p ( z i ) d z i = ∫ z i α z i ⋅ N ( x i ∣ μ z i , Σ z i ) d z i = ∑ z i k α z i ⋅ N ( x i ∣ μ z i , Σ z i ) p\left ( x_i \right ) = \int_{z_i }p(x_i | z_i)\cdot p(z_i)d_{z_i} = \int_{z_i }\alpha_{z_i}·N(x_i | \mu _{z_i},\Sigma _{z_i})d_{z_i} = \sum_{z_i}^{k}\alpha_{z_i}·N(x_i | \mu _{z_i},\Sigma _{z_i}) p(xi)=∫zip(xi∣zi)⋅p(zi)dzi=∫ziαzi⋅N(xi∣μzi,Σzi)dzi=∑zikαzi⋅N(xi∣μzi,Σzi)
(严格一点的写的话要加上条件概率 ∣ θ | \theta ∣θ)
和公式1中
p
(
x
i
∣
θ
)
p\left ( x_i| \theta \right )
p(xi∣θ) 相同(
z
i
z_i
zi 改写为
l
l
l 即可),所以加入Z并没有改变 x 的边缘分布
3.2.2 收敛性
用迭代的方法的话,要保证收敛咯,如何保证收敛性呢?
由公式1可知,保证
l
o
g
p
(
x
∣
Θ
(
g
+
1
)
)
>
l
o
g
p
(
x
∣
Θ
(
g
)
)
log p(x | \Theta^{(g+1)})>log p(x | \Theta^{(g)})
logp(x∣Θ(g+1))>logp(x∣Θ(g))即可
显然 l o g p ( x ∣ θ ) = l o g p ( x , z ∣ θ ) − l o g p ( z ∣ x , θ ) log p(x | \theta) = log p(x,z | \theta) - logp(z|x,\theta) logp(x∣θ)=logp(x,z∣θ)−logp(z∣x,θ) (联合概率密度的那个公式就可以看出来)
两边同时加上期望得到:
E [ l o g p ( x ∣ θ ) ] = E [ l o g p ( x , z ∣ θ ) − l o g p ( z ∣ x , θ ) ] E[ log p(x | \theta) ]= E[log p(x,z | \theta) - logp(z|x,\theta)] E[logp(x∣θ)]=E[logp(x,z∣θ)−logp(z∣x,θ)]
分布为 p ( z ∣ x , Θ ( g ) ) p(z |x, \Theta^{(g)}) p(z∣x,Θ(g)),由期望的定义推出左边为:
E [ l o g p ( x ∣ θ ) ] = ∫ z l o g p ( x ∣ θ ) ⋅ p ( z ∣ x , Θ ( g ) ) d z = l o g p ( x ∣ θ ) ⋅ ∫ z p ( z ∣ x , Θ ( g ) ) d z = l o g p ( x ∣ θ ) E[ log p(x | \theta) ] = \int_z log p(x | \theta) \cdot p(z |x, \Theta^{(g)}) d_z= log p(x | \theta) \cdot\int_z p(z |x, \Theta^{(g)}) d_z=log p(x | \theta) E[logp(x∣θ)]=∫zlogp(x∣θ)⋅p(z∣x,Θ(g))dz=logp(x∣θ)⋅∫zp(z∣x,Θ(g))dz=logp(x∣θ)
(与z无关可以从积分中提出来)
由期望的定义推出右边:
∫ z l o g p ( x , z ∣ θ ) ⋅ p ( z ∣ x , Θ ( g ) ) d z − ∫ z l o g p ( z ∣ x , θ ) ⋅ p ( z ∣ x , Θ ( g ) ) d z \int_z log p(x,z | \theta) \cdot p(z |x, \Theta^{(g)}) d_z - \int_z log p(z |x, \theta) \cdot p(z |x, \Theta^{(g)}) d_z ∫zlogp(x,z∣θ)⋅p(z∣x,Θ(g))dz−∫zlogp(z∣x,θ)⋅p(z∣x,Θ(g))dz
简化一下成如下形式
l o g p ( x ∣ θ ) = ∫ z l o g p ( x , z ∣ θ ) ⋅ p ( z ∣ x , Θ ( g ) ) d z − ∫ z l o g p ( z ∣ x , θ ) ⋅ p ( z ∣ x , Θ ( g ) ) d z = Q ( θ , Θ ( g ) ) − H ( θ , Θ ( g ) ) log p(x | \theta) = \int_z log p(x,z | \theta) \cdot p(z |x, \Theta^{(g)}) d_z - \int_z log p(z |x, \theta) \cdot p(z |x, \Theta^{(g)}) d_z= Q(\theta,\Theta^{(g)}) - H(\theta,\Theta^{(g)}) logp(x∣θ)=∫zlogp(x,z∣θ)⋅p(z∣x,Θ(g))dz−∫zlogp(z∣x,θ)⋅p(z∣x,Θ(g))dz=Q(θ,Θ(g))−H(θ,Θ(g))
要证迭代收敛也即证 Q ( Θ ( g + 1 ) , Θ ( g ) ) − H ( Θ ( g + 1 ) , Θ ( g ) ≥ Q ( Θ ( g ) , Θ ( g ) ) − H ( Θ ( g ) , Θ ( g ) ) Q(\Theta^{(g+1)},\Theta^{(g)}) - H(\Theta^{(g+1)},\Theta^{(g)} \geq Q(\Theta^{(g)},\Theta^{(g)}) - H(\Theta^{(g)},\Theta^{(g)}) Q(Θ(g+1),Θ(g))−H(Θ(g+1),Θ(g)≥Q(Θ(g),Θ(g))−H(Θ(g),Θ(g))
我们发现
Q
(
θ
,
Θ
(
g
)
)
Q(\theta,\Theta^{(g)})
Q(θ,Θ(g)) 和我们EM算法定义的迭代方式(公式2)是一样的。
为什么EM算法的迭代只要求
Q
(
Θ
(
g
+
1
)
,
Θ
(
g
)
)
≥
Q
(
Θ
(
g
)
,
Θ
(
g
)
)
Q(\Theta^{(g+1)},\Theta^{(g)}) \geq Q(\Theta^{(g)},\Theta^{(g)})
Q(Θ(g+1),Θ(g))≥Q(Θ(g),Θ(g))
H函数被无情的抛弃,
H
(
Θ
(
g
+
1
)
,
Θ
(
g
)
)
H(\Theta^{(g+1)},\Theta^{(g)})
H(Θ(g+1),Θ(g)),
H
(
Θ
(
g
)
,
Θ
(
g
)
)
H(\Theta^{(g)},\Theta^{(g)})
H(Θ(g),Θ(g)) 是什么关系呢?
if H ( Θ ( g ) , Θ ( g ) ) H(\Theta^{(g)},\Theta^{(g)}) H(Θ(g),Θ(g)) ≥ H ( θ , Θ ( g ) ) , ∀ θ H(\theta,\Theta^{(g)}),\forall \theta H(θ,Θ(g)),∀θ 都成立,那么 H ( Θ ( g + 1 ) , Θ ( g ) ) H(\Theta^{(g+1)},\Theta^{(g)}) H(Θ(g+1),Θ(g)) ≤ H ( Θ ( g ) , Θ ( g ) ) H(\Theta^{(g)},\Theta^{(g)}) H(Θ(g),Θ(g))
这样的话,优化公式2就能保证 Q ( Θ ( g + 1 ) , Θ ( g ) ) − H ( Θ ( g + 1 ) , Θ ( g ) ≥ Q ( Θ ( g ) , Θ ( g ) ) − H ( Θ ( g ) , Θ ( g ) ) Q(\Theta^{(g+1)},\Theta^{(g)}) - H(\Theta^{(g+1)},\Theta^{(g)} \geq Q(\Theta^{(g)},\Theta^{(g)}) - H(\Theta^{(g)},\Theta^{(g)}) Q(Θ(g+1),Θ(g))−H(Θ(g+1),Θ(g)≥Q(Θ(g),Θ(g))−H(Θ(g),Θ(g)) ,迭代的思想就可行了。这是最完美的情况,其他情况就不好说咯。
问题来了, H ( Θ ( g ) , Θ ( g ) ) H(\Theta^{(g)},\Theta^{(g)}) H(Θ(g),Θ(g)) ≥ H ( θ , Θ ( g ) ) , ∀ θ H(\theta,\Theta^{(g)}),\forall \theta H(θ,Θ(g)),∀θ成立吗?我现在就明确的告诉你,这个是成立的,那如何证明呢?即 H ( Θ ( g ) , Θ ( g ) ) − H ( θ , Θ ( g ) ) ≥ 0 , ∀ θ H(\Theta^{(g)},\Theta^{(g)}) - H(\theta,\Theta^{(g)})≥0,\forall \theta H(Θ(g),Θ(g))−H(θ,Θ(g))≥0,∀θ 都成立。(想想咯)
证明如下,会利用到前面的 convex function 和 Jensens inequality。
H ( Θ ( g ) , Θ ( g ) ) − H ( θ , Θ ( g ) ) H(\Theta^{(g)},\Theta^{(g)}) - H(\theta,\Theta^{(g)}) H(Θ(g),Θ(g))−H(θ,Θ(g))
= ∫ z l o g p ( z ∣ x , Θ ( g ) ) ⋅ p ( z ∣ x , Θ ( g ) ) d z − ∫ z l o g p ( z ∣ x , θ ) ⋅ p ( z ∣ x , Θ ( g ) ) d z = \int_z log p(z |x, \Theta^{(g)} )\cdot p(z |x, \Theta^{(g)}) d_z - \int_z log p(z |x, \theta) \cdot p(z |x, \Theta^{(g)}) d_z =∫zlogp(z∣x,Θ(g))⋅p(z∣x,Θ(g))dz−∫zlogp(z∣x,θ)⋅p(z∣x,Θ(g))dz
= ∫ z l o g p ( z ∣ x , Θ ( g ) ) p ( z ∣ x , θ ) ⋅ p ( z ∣ x , Θ ( g ) ) d z = \int_z log \frac{p(z |x, \Theta^{(g)})}{ p(z |x,\theta)} \cdot p(z |x, \Theta^{(g)}) d_z =∫zlogp(z∣x,θ)p(z∣x,Θ(g))⋅p(z∣x,Θ(g))dz
= ∫ z − l o g p ( z ∣ x , θ ) p ( z ∣ x , Θ ( g ) ) ⋅ p ( z ∣ x , Θ ( g ) ) d z = \int_z -log \frac{p(z |x,\theta)}{p(z |x, \Theta^{(g)})} \cdot p(z |x, \Theta^{(g)}) d_z =∫z−logp(z∣x,Θ(g))p(z∣x,θ)⋅p(z∣x,Θ(g))dz
由 convex function 和 Jensens inequality 知,函数( − l o g - log −log)的期望(在这种分布下 p ( z ∣ x , Θ ( g ) ) ) p(z |x, \Theta^{(g)})) p(z∣x,Θ(g)))大于等于期望的函数
≥ − l o g ∫ z p ( z ∣ x , θ ) p ( z ∣ x , Θ ( g ) ) ⋅ p ( z ∣ x , Θ ( g ) ) d z = − l o g 1 = 0 ≥ -log\int_z \frac{p(z |x,\theta)}{p(z |x, \Theta^{(g)})} \cdot p(z |x, \Theta^{(g)}) d_z = -log1 = 0 ≥−log∫zp(z∣x,Θ(g))p(z∣x,θ)⋅p(z∣x,Θ(g))dz=−log1=0
这样就证明了 H ( Θ ( g ) , Θ ( g ) ) H(\Theta^{(g)},\Theta^{(g)}) H(Θ(g),Θ(g)) ≥ H ( θ , Θ ( g ) ) , ∀ θ H(\theta,\Theta^{(g)}),\forall \theta H(θ,Θ(g)),∀θ
也即 H ( Θ ( g ) , Θ ( g ) ) H(\Theta^{(g)},\Theta^{(g)}) H(Θ(g),Θ(g)) ≥ H ( Θ ( g + 1 ) , Θ ( g ) ) H(\Theta^{(g+1)},\Theta^{(g)}) H(Θ(g+1),Θ(g))
结合公式2 Q ( Θ ( g + 1 ) , Θ ( g ) ) ≥ Q ( Θ ( g ) , Θ ( g ) ) Q(\Theta^{(g+1)},\Theta^{(g)}) ≥ Q(\Theta^{(g)},\Theta^{(g)}) Q(Θ(g+1),Θ(g))≥Q(Θ(g),Θ(g))
就有 Q ( Θ ( g + 1 ) , Θ ( g ) ) − H ( Θ ( g + 1 ) , Θ ( g ) ≥ Q ( Θ ( g ) , Θ ( g ) ) − H ( Θ ( g ) , Θ ( g ) ) Q(\Theta^{(g+1)},\Theta^{(g)}) - H(\Theta^{(g+1)},\Theta^{(g)} \geq Q(\Theta^{(g)},\Theta^{(g)}) - H(\Theta^{(g)},\Theta^{(g)}) Q(Θ(g+1),Θ(g))−H(Θ(g+1),Θ(g)≥Q(Θ(g),Θ(g))−H(Θ(g),Θ(g))
这样就证明了迭代的方法收敛了,所以我们只要优化公式2
保证
Q
(
Θ
(
g
+
1
)
,
Θ
(
g
)
)
≥
Q
(
θ
,
Θ
(
g
)
)
Q(\Theta^{(g+1)},\Theta^{(g)}) ≥ Q(\theta,\Theta^{(g)})
Q(Θ(g+1),Θ(g))≥Q(θ,Θ(g)),就可以保证迭代的方法收敛了
啰嗦了半天,看下简洁的版本
3 Example
以 GMM 为例