EM算法解析+代码

大纲

  • 数学基础:凸凹函数,Jensen不等式,MLE
  • EM算法公式,收敛性
  • HMM高斯混合模型

一、数学基础

1. 凸函数

通常在实际中,最小化的函数有几个极值,所以最优化算法得出的极值不确实是否为全局的极值,对于一些特殊的函数,凸函数与凹函数,任何局部极值也是全局极致,因此如果目标函数是凸的或凹的,那么优化算法就能保证是全局的
定义1:集合 R c ⊂ E n R_c\subset E^n RcEn是凸集,如果对每对点 x 1 , x 2 ⊂ R c \textbf{x}_1,\textbf{x}_2\subset R_c x1,x2Rc,每个实数 α , 0 < α < 1 \alpha,0<\alpha<1 α,0<α<1,点 x ∈ R c \textbf{x}\in R_c xRc
x = α x 1 + ( 1 − α ) x 2 \textbf{x}=\alpha\textbf{x}_1+(1-\alpha)\textbf{x}_2 x=αx1+(1α)x2

在这里插入图片描述在这里插入图片描述

定义2:我们称定义在凸集 R c R_c Rc上的函数 f ( x ) f(x) f(x)为凸的,如果对每对 x 1 , x 2 ∈ R c \textbf{x}_1,\textbf{x}_2 \in R_c x1,x2Rc与每个实数 α , 0 < α < 1 \alpha ,0<\alpha<1 α,0<α<1,则满足不等式
f [ α x 1 + ( 1 − α ) x 2 ] ≤ α f ( x 1 ) + ( 1 − α ) f ( x 2 ) f[\alpha\textbf{x}_1+(1-\alpha)\textbf{x}_2]\leq\alpha f(\textbf{x}_1)+(1-\alpha)f(\textbf{x}_2) f[αx1+(1α)x2]αf(x1)+(1α)f(x2)如果 x 1 ≠ x 2 \textbf{x}_1\neq\textbf{x}_2 x1=x2,则 f ( x ) f(x) f(x)是严格凸的。
f [ α x 1 + ( 1 − α ) x 2 ] < α f ( x 1 ) + ( 1 − α ) f ( x 2 ) f[\alpha\textbf{x}_1+(1-\alpha)\textbf{x}_2]<\alpha f(\textbf{x}_1)+(1-\alpha)f(\textbf{x}_2) f[αx1+(1α)x2]<αf(x1)+(1α)f(x2)

2. Jensen不等式

定义1:若 f ( x ) f(x) f(x)为区间 X X X上的凸函数,则 ∀ n ∈ N , n ≥ 1 \forall n \in \mathbb N, n \ge 1 nN,n1, 若 ∀ i ∈ N , 1 ≤ i ≤ n , x i ∈ X , λ i ∈ R \forall i \in \mathbb N, 1 \le i \le n, x_i \in X, \lambda_i \in \mathbb R iN,1in,xiX,λiR, 且 ∑ i = 1 n λ i = 1 \sum^n_{i=1}\lambda_i=1 i=1nλi=1, 则:
f ( ∑ i = 1 n λ i x i ) ≤ ∑ i = 1 n λ i f ( x i ) f(\sum_{i=1}^{n} \lambda_i x_i) \le \sum_{i=1}^{n} \lambda_i f(x_i) f(i=1nλixi)i=1nλif(xi)
推论1:若 f ( x ) f(x) f(x)为区间 R R R上的凸函数, g ( x ) : R → R g(x): R \rightarrow R g(x):RR为一任意函数, X X X为一取值范围有限的离散变量, E [ f ( g ( X ) ) ] E [f \left ( g(X) \right ) ] E[f(g(X))] E [ g ( X ) ] E[g(X)] E[g(X)]都存在,则:
E [ f ( g ( X ) ) ] ≥ f ( E [ g ( X ) ] ) E [f \left ( g(X) \right ) ] \ge f \left (E[g(X)] \right ) E[f(g(X))]f(E[g(X)])

3. MLE

极大似然估计方法(Maximum Likelihood Estimate,MLE)也称为最大概似估计或最大似然估计。
一般说来,事件A发生的概率与某一未知参数 θ \theta θ有关, θ \theta θ的取值不同,则事件A发生的概率 P ( A ∣ θ ) P(A|\theta) P(Aθ)也不同,当我们在一次试验中事件A发生了,则认为此时的 θ \theta θ 值应是 t t t 的一切可能取值中使 P ( A ∣ θ ) P(A|\theta) P(Aθ)达到最大的那一个,极大似然估计法就是要选取这样的 t t t值作为参数 t t t的估计值,使所选取的样本在被选的总体中出现的可能性为最大。

二、EM算法

1. EM算法简介

概率模型有时既含有观测变量(observable variable),又含有隐变量或潜在变量(latent variable),如果仅有观测变量,那么给定数据就能用极大似然估计或贝叶斯估计来估计model参数;但是当模型含有隐变量时,需要一种含有隐变量的概率模型参数估计的极大似然方法估计——EM算法, 称为期望极大值算法(expectation maximizition algorithm,EM),是一种启发式的迭代算法。
EM算法的思路是使用启发式的迭代方法,既然我们无法直接求出模型分布参数,那么我们可以先猜想隐含数据(EM算法的E步),接着基于观察数据和猜测的隐含数据一起来极大化对数似然,求解我们的模型参数(EM算法的M步)。

可以通过K-Means算法来简单理解EM算法的过程。
-E步:在初始化K个中心点后,我们对所有的样本归到K个类别。
-M步:在所有的样本归类后,重新求K个类别的中心点,相当于更新了均值。

2. EM算法公式

对于 m m m 个样本观察数据 x = ( x ( 1 ) , x ( 2 ) , . . . x ( m ) ) x=(x^{(1)},x^{(2)},...x^{(m)}) x=(x(1),x(2),...x(m))中,找出样本的模型参数 θ \theta θ,极大化模型分布的对数似然函数如下,
L ( θ ) = ∑ i = 1 m l o g P ( x ( i ) ∣ θ ) L(\theta) = \sum\limits_{i=1}^m logP(x^{(i)}|\theta) L(θ)=i=1mlogP(x(i)θ)

假设数据中有隐含变量 z = ( z ( 1 ) , z ( 2 ) , . . . z ( m ) ) z=(z^{(1)},z^{(2)},...z^{(m)}) z=(z(1),z(2),...z(m)), 加入隐含变量公式变为如下(E步就是估计 Q Q Q函数),
Q i ( z ( i ) ) = P ( z ( i ) ∣ x ( i ) , θ ) L ( θ ) = ∑ i = 1 m l o g ∑ z ( i ) P ( x ( i ) , z ( i ) ∣ θ ) = ∑ i = 1 m l o g ∑ z ( i ) Q i ( z ( i ) ) P ( x ( i ) , z ( i ) ∣ θ ) Q i ( z ( i ) )        s . t . ∑ z Q i ( z ( i ) ) = 1            ( 1 ) Q_i(z^{(i)}) = P( z^{(i)}|x^{(i)},\theta) \\ L(\theta) = \sum\limits_{i=1}^m log\sum\limits_{z^{(i)}}P(x^{(i)},z^{(i)}|\theta) = \sum\limits_{i=1}^m log\sum\limits_{z^{(i)}}Q_i(z^{(i)})\frac{P(x^{(i)},z^{(i)}|\theta)}{Q_i(z^{(i)})}\;\;\;s.t.\sum\limits_{z}Q_i(z^{(i)}) =1\;\;\;\;\;(1) Qi(z(i))=P(z(i)x(i),θ)L(θ)=i=1mlogz(i)P(x(i),z(i)θ)=i=1mlogz(i)Qi(z(i))Qi(z(i))P(x(i),z(i)θ)s.t.zQi(z(i))=1(1)

根据Jensen不等式,(1)式变为(2), 注意到下式中 Q i ( z ( i ) ) Q_i(z(i)) Qi(z(i)) 是一个分布,因此 ∑ Q i ( z ( i ) ) l o g P ( x ( i ) , z ( i ) ∣ θ ) \sum Q_i(z(i))logP(x(i),z(i)|θ) Qi(z(i))logP(x(i),z(i)θ) 可以理解为 l o g P ( x ( i ) , z ( i ) ∣ θ ) logP(x(i),z(i)|θ) logP(x(i),z(i)θ) 基于条件概率分布 Q i ( z ( i ) ) Q_i(z(i)) Qi(z(i)) 的期望。
E [ f ( g ( X ) ) ] ≤ f ( E [ g ( X ) ] )   ( 凹函数 ) L ( θ ) = ∑ i = 1 m l o g ∑ z ( i ) Q i ( z ( i ) ) P ( x ( i ) , z ( i ) ∣ θ ) Q i ( z ( i ) ) ≥ ∑ i = 1 m ∑ z ( i ) Q i ( z ( i ) ) l o g P ( x ( i ) , z ( i ) ∣ θ ) Q i ( z ( i ) )        s . t . ∑ z Q i ( z ( i ) ) = 1            ( 2 ) E [f \left ( g(X) \right ) ] \le f \left (E[g(X)] \right ) \ (凹函数) \\ L(\theta) = \sum\limits_{i=1}^m log\sum\limits_{z^{(i)}}Q_i(z^{(i)})\frac{P(x^{(i)},z^{(i)}|\theta)}{Q_i(z^{(i)})}\ge\sum\limits_{i=1}^m \sum\limits_{z^{(i)}}Q_i(z^{(i)})log\frac{P(x^{(i)},z^{(i)}|\theta)}{Q_i(z^{(i)})}\;\;\;s.t.\sum\limits_{z}Q_i(z^{(i)}) =1\;\;\;\;\;(2) E[f(g(X))]f(E[g(X)]) (凹函数)L(θ)=i=1mlogz(i)Qi(z(i))Qi(z(i))P(x(i),z(i)θ)i=1mz(i)Qi(z(i))logQi(z(i))P(x(i),z(i)θ)s.t.zQi(z(i))=1(2)

第(2)式是我们的包含隐藏数据的对数似然的一个下界。如果我们能极大化这个下界,则也在尝试极大化我们的对数似然。即我们需要最大化下式:
∑ i = 1 m ∑ z ( i ) Q i ( z ( i ) ) l o g P ( x ( i ) , z ( i ) ∣ θ ) Q i ( z ( i ) ) \sum\limits_{i=1}^m \sum\limits_{z^{(i)}}Q_i(z^{(i)})log\frac{P(x^{(i)},z^{(i)}|\theta)}{Q_i(z^{(i)})} i=1mz(i)Qi(z(i))logQi(z(i))P(x(i),z(i)θ)

去掉上式中为常数的部分,则我们需要极大化的对数似然下界为:
a r g max ⁡ θ ∑ i = 1 m ∑ z ( i ) Q i ( z ( i ) ) l o g P ( x ( i ) , z ( i ) ; θ ) arg \max \limits_{\theta} \sum\limits_{i=1}^m \sum\limits_{z^{(i)}}Q_i(z^{(i)})log{P(x^{(i)}, z^{(i)};\theta)} argθmaxi=1mz(i)Qi(z(i))logP(x(i),z(i);θ)

3. EM算法流程

输入:观察数据 x = ( x ( 1 ) , x ( 2 ) , . . . x ( m ) ) x=(x^{(1)},x^{(2)},...x^{(m)}) x=(x(1),x(2),...x(m)),联合分布 p ( x , z ∣ θ ) p(x,z|\theta) p(x,zθ), 条件分布 p ( z ∣ x , θ ) p(z|x,\theta) p(zx,θ), EM算法退出的阈值 γ \gamma γ

  1. 随机初始化模型参数 θ \theta θ 的初值 θ 0 \theta^0 θ0
  2. E步:求Q函数(联合分布的条件概率期望),对于每一个i,计算根据上一次迭代的模型参数来计算出隐性变量的后验概率(其实就是隐性变量的期望),来作为隐藏变量的现估计值 Q i ( z ( i ) ) = P ( z ( i ) ∣ x ( i ) , θ j ) L ( θ , θ j ) = ∑ i = 1 m ∑ z ( i ) Q i ( z ( i ) ) l o g P ( x ( i ) , z ( i ) ∣ θ ) Q_i(z^{(i)}) = P( z^{(i)}|x^{(i)},\theta^{j}) \\ L(\theta, \theta^{j}) = \sum\limits_{i=1}^m\sum\limits_{z^{(i)}}Q_i(z^{(i)})log{P(x^{(i)},z^{(i)}|\theta)} Qi(z(i))=P(z(i)x(i),θj)L(θ,θj)=i=1mz(i)Qi(z(i))logP(x(i),z(i)θ)
  3. M步:极大化 L ( θ , θ j ) L(\theta,\theta^j) L(θ,θj), 得到 θ j + 1 : θ j + 1 = a r g max ⁡ θ L ( θ , θ j ) θ^{j+1}: \theta^{j+1} = arg \max\limits_{\theta}L(\theta, \theta^{j}) θj+1:θj+1=argθmaxL(θ,θj)
  4. 重复2,3两步,直到极大似然估计 L ( θ , θ j ) L(\theta,\theta^j) L(θ,θj) 的变化小于 γ \gamma γ

如果我们从算法思想的角度来思考EM算法,我们可以发现我们的算法里已知的是观察数据,未知的是隐含数据和模型参数,在E步,我们所做的事情是固定模型参数的值,优化隐含数据的分布,而在M步,我们所做的事情是固定隐含数据分布,优化模型参数的值。

4. EM算法的收敛性思考

EM算法的流程并不复杂,但是还有两个问题需要我们思考:

1) EM算法能保证收敛吗?
2) EM算法如果收敛,那么能保证收敛到全局最大值吗?

首先我们来看第一个问题, EM算法的收敛性。要证明EM算法收敛,则我们需要证明我们的对数似然函数的值在迭代的过程中一直在增大。即:
∑ i = 1 m l o g P ( x ( i ) ; θ j + 1 ) ≥ ∑ i = 1 m l o g P ( x ( i ) ; θ j ) \sum\limits_{i=1}^m logP(x^{(i)};\theta^{j+1}) \geq \sum\limits_{i=1}^m logP(x^{(i)};\theta^{j}) i=1mlogP(x(i);θj+1)i=1mlogP(x(i);θj)

由于
L ( θ , θ j ) = ∑ i = 1 m ∑ z ( i ) P ( z ( i ) ∣ x ( i ) ; θ j ) ) l o g P ( x ( i ) , z ( i ) ; θ ) L(\theta, \theta^{j}) = \sum\limits_{i=1}^m\sum\limits_{z^{(i)}}P( z^{(i)}|x^{(i)};\theta^{j}))log{P(x^{(i)}, z^{(i)};\theta)} L(θ,θj)=i=1mz(i)P(z(i)x(i);θj))logP(x(i)z(i);θ) 令: H ( θ , θ j ) = ∑ i = 1 m ∑ z ( i ) P ( z ( i ) ∣ x ( i ) ; θ j ) ) l o g P ( z ( i ) ∣ x ( i ) ; θ ) H(\theta, \theta^{j}) = \sum\limits_{i=1}^m\sum\limits_{z^{(i)}}P( z^{(i)}|x^{(i)};\theta^{j}))log{P( z^{(i)}|x^{(i)};\theta)} H(θ,θj)=i=1mz(i)P(z(i)x(i);θj))logP(z(i)x(i);θ)

上两式相减得到:
∑ i = 1 m l o g P ( x ( i ) ; θ ) = L ( θ , θ j ) − H ( θ , θ j ) \sum\limits_{i=1}^m logP(x^{(i)};\theta) = L(\theta, \theta^{j}) - H(\theta, \theta^{j}) i=1mlogP(x(i);θ)=L(θ,θj)H(θ,θj)

在上式中分别取 θ \theta θ θ j 和 θ j + 1 \theta^j和\theta^{j+1} θjθj+1,并相减得到:
∑ i = 1 m l o g P ( x ( i ) ; θ j + 1 ) − ∑ i = 1 m l o g P ( x ( i ) ; θ j ) = [ L ( θ j + 1 , θ j ) − L ( θ j , θ j ) ] − [ H ( θ j + 1 , θ j ) − H ( θ j , θ j ) ] \sum\limits_{i=1}^m logP(x^{(i)};\theta^{j+1}) - \sum\limits_{i=1}^m logP(x^{(i)};\theta^{j}) = [L(\theta^{j+1}, \theta^{j}) - L(\theta^{j}, \theta^{j}) ] -[H(\theta^{j+1}, \theta^{j}) - H(\theta^{j}, \theta^{j}) ] i=1mlogP(x(i);θj+1)i=1mlogP(x(i);θj)=[L(θj+1,θj)L(θj,θj)][H(θj+1,θj)H(θj,θj)]

要证明EM算法的收敛性,我们只需要证明上式的右边是非负的即可。
由于 θ j + 1 \theta^{j+1} θj+1 使得 L ( θ , θ j ) L(\theta, \theta^{j}) L(θ,θj) 极大,因此有:
L ( θ j + 1 , θ j ) − L ( θ j , θ j ) ≥ 0 L(\theta^{j+1}, \theta^{j}) - L(\theta^{j}, \theta^{j}) \geq 0 L(θj+1,θj)L(θj,θj)0

而对于第二部分,我们有:
H ( θ j + 1 , θ j ) − H ( θ j , θ j ) = ∑ i = 1 m ∑ z ( i ) P ( z ( i ) ∣ x ( i ) ; θ j ) l o g P ( z ( i ) ∣ x ( i ) ; θ j + 1 ) P ( z ( i ) ∣ x ( i ) ; θ j ) ≤ ∑ i = 1 m l o g ( ∑ z ( i ) P ( z ( i ) ∣ x ( i ) ; θ j ) P ( z ( i ) ∣ x ( i ) ; θ j + 1 ) P ( z ( i ) ∣ x ( i ) ; θ j ) ) = ∑ i = 1 m l o g ( ∑ z ( i ) P ( z ( i ) ∣ x ( i ) ; θ j + 1 ) ) = 0 \begin{align} H(\theta^{j+1}, \theta^{j}) - H(\theta^{j}, \theta^{j}) & = \sum\limits_{i=1}^m\sum\limits_{z^{(i)}}P( z^{(i)}|x^{(i)};\theta^{j})log\frac{P( z^{(i)}|x^{(i)};\theta^{j+1})}{P( z^{(i)}|x^{(i)};\theta^j)} \\ & \leq \sum\limits_{i=1}^mlog(\sum\limits_{z^{(i)}}P( z^{(i)}|x^{(i)};\theta^{j})\frac{P( z^{(i)}|x^{(i)};\theta^{j+1})}{P( z^{(i)}|x^{(i)};\theta^j)}) \\ & = \sum\limits_{i=1}^mlog(\sum\limits_{z^{(i)}}P( z^{(i)}|x^{(i)};\theta^{j+1})) = 0 \end{align} H(θj+1,θj)H(θj,θj)=i=1mz(i)P(z(i)x(i);θj)logP(z(i)x(i);θj)P(z(i)x(i);θj+1)i=1mlog(z(i)P(z(i)x(i);θj)P(z(i)x(i);θj)P(z(i)x(i);θj+1))=i=1mlog(z(i)P(z(i)x(i);θj+1))=0

其中第(2)式用到了Jensen不等式,只不过和第二节的使用相反而已,第(3)式用到了概率分布累积为1的性质。

至此,我们得到了: ∑ i = 1 m l o g P ( x ( i ) ; θ j + 1 ) − ∑ i = 1 m l o g P ( x ( i ) ; θ j ) ≥ 0 \sum\limits_{i=1}^m logP(x^{(i)};\theta^{j+1}) - \sum\limits_{i=1}^m logP(x^{(i)};\theta^{j}) \geq 0 i=1mlogP(x(i);θj+1)i=1mlogP(x(i);θj)0, 证明了EM算法的收敛性。

从上面的推导可以看出,EM算法可以保证收敛到一个稳定点,但是却不能保证收敛到全局的极大值点,因此它是局部最优的算法,当然,如果我们的优化目标 L ( θ , θ j ) L(\theta, \theta^{j}) L(θ,θj) 是凸的,则EM算法可以保证收敛到全局最大值,这点和梯度下降法这样的迭代算法相同。至此我们也回答了上面提到的第二个问题。

5. 另一种推导EM算法公式方法

如果我们关心的参数为θ,观察到的数据为y,隐藏变量为z,那么根据全概率公式:
P ( y ∣ θ ) = ∫ P ( y ∣ z , θ ) f ( z ∣ θ ) d z P(y|\theta)=\int P(y|z,\theta)f(z|\theta)dz P(yθ)=P(yz,θ)f(zθ)dz

理论上,只要最大化这个密度函数的对数,就可以得到极大似然估计MLE。然而问题是,对z进行积分很多情况下是非常困难的,特别是z的维数可能与样本量一样大,这个时候如果计算数值积分是非常恐怖的一件事情。

而EM算法可以解决这个问题。根据贝叶斯法则,我们可以得到: h ( z ∣ y , θ ) = P ( y ∣ z , θ ) f ( z ∣ θ ) P ( y ∣ θ ) h(z|y,\theta)=\frac{P(y|z,\theta)f(z|\theta)}{P(y|\theta)} h(zy,θ)=P(yθ)P(yz,θ)f(zθ)

EM算法的精髓就是使用这个公式处理z的维数问题。

直觉上,EM算法就是一个猜测的过程:给定一个猜测θ’,那么可以根据这个猜测θ’和现实的数据计算隐藏变量取各个值的概率。有了z的概率之后,再根据这个概率计算更有可能的θ。

准确的来说,EM算法就是如下的迭代过程:
θ t + 1 = arg ⁡ max ⁡ θ ε ( θ ∣ θ t ) = arg ⁡ max ⁡ θ ∫ h ( z ∣ y , θ t ) ln ⁡ [ P ( y ∣ z , θ ) f ( z ∣ θ ) ] d z \theta_{t+1}=\arg\max_\theta \varepsilon (\theta|\theta_t)=\arg\max_\theta\int h(z|y,\theta_t)\ln[P(y|z,\theta)f(z|\theta)] dz θt+1=argθmaxε(θθt)=argθmaxh(zy,θt)ln[P(yz,θ)f(zθ)]dz

本节介绍的EM算法是通用的EM算法框架,其实EM算法有很多实现方式,其中比较流行的一种实现方式是高斯混合模型(Gaussian Mixed Model)


三、GMM(Gaussian mixture model) 混合高斯模型(EM算法)

高斯混合模型(Gaussian Mixed Model)指的是多个高斯分布函数的线性组合,理论上GMM可以拟合出任意类型的分布,通常用于解决同一集合下的数据包含多个不同的分布的情况。

1. GMM原理

我们已经学习了EM算法的一般形式:

Q i ( z ( i ) ) = P ( z ( i ) ∣ x ( i ) , θ j )          ( 1 ) ∑ z Q i ( z ( i ) ) = 1 L ( θ , θ j ) = ∑ i = 1 m ∑ z ( i ) Q i ( z ( i ) ) l o g P ( x ( i ) , z ( i ) ∣ θ ) Q_i(z^{(i)}) = P( z^{(i)}|x^{(i)},\theta^{j})\;\;\;\;(1) \\ \sum\limits_{z}Q_i(z^{(i)}) =1 \\ L(\theta, \theta^{j}) = \sum\limits_{i=1}^m\sum\limits_{z^{(i)}}Q_i(z^{(i)})log{P(x^{(i)},z^{(i)}|\theta)} Qi(z(i))=P(z(i)x(i),θj)(1)zQi(z(i))=1L(θ,θj)=i=1mz(i)Qi(z(i))logP(x(i),z(i)θ) 现在我们用高斯分布来一步一步的完成EM算法。
设有随机变量 X \boldsymbol{X} X,则混合高斯模型可以用下式表示:
p ( x ∣ π , μ , Σ ) = ∑ k = 1 K π k N ( x ∣ μ k , Σ k ) ∑ k = 1 K π k = 1 ,   0 < π k < 1 p(\boldsymbol{x}|\boldsymbol{\pi},\boldsymbol{\mu},\boldsymbol{\Sigma})=\sum_{k=1}^K\pi_k\mathcal{N}(\boldsymbol{x}|\boldsymbol{\mu}_k,\boldsymbol{\Sigma}_k) \\ \sum_{k=1}^K\pi_k=1, \ 0<\pi_k<1 p(xπ,μ,Σ)=k=1KπkN(xμk,Σk)k=1Kπk=1, 0<πk<1

其中 N ( x ∣ μ k , Σ k ) \mathcal{N}(\boldsymbol{x}|\boldsymbol{\mu}_k, \boldsymbol{\Sigma}_k) N(xμk,Σk) 称为混合模型中的第 k k k 个分量(component)。可以看到 π k \pi_k πk 相当于每个分量 N ( x ∣ μ k , Σ k ) \mathcal{N}(\boldsymbol{x}|\boldsymbol{\mu}_k, \boldsymbol{\Sigma}_k) N(xμk,Σk) 的权重。

a. 引入隐变量

我们引入一个隐变量 z i k z_{ik} zik z i k z_{ik} zik的含义是样本 x i x_i xi 来自第 k k k 个模型的数据分布。
z i k = { 1 , i f   d a t a   i t e m   i   c o m e s   f r o m   c o m p o n e n t   k 0 , o t h e r w i s e s z_{ik}= \left \{\begin{array}{cc} 1, & if\ data\ item\ i\ comes\ from\ component\ k\\ 0, & otherwises \end{array}\right. zik={1,0,if data item i comes from component kotherwises

则有
P ( x , z ∣ μ k , Σ k ) = ∏ k = 1 K ∏ i = 1 N [ π k N ( x ∣ μ k , Σ k ) ] z i k = ∏ k = 1 K π k n k ∏ i = 1 N [ N ( x ∣ μ k , Σ k ) ] z i k          ( 2 ) P(x,z|\boldsymbol{\mu}_k, \boldsymbol{\Sigma}_k) = \prod_{k=1}^K\prod_{i=1}^N[\pi_k\mathcal{N}(\boldsymbol{x}|\boldsymbol{\mu}_k, \boldsymbol{\Sigma}_k)]^{z_{ik}}=\prod_{k=1}^K\pi_k^{n_k}\prod_{i=1}^N[\mathcal{N}(\boldsymbol{x}|\boldsymbol{\mu}_k, \boldsymbol{\Sigma}_k)]^{z_{ik}}\;\;\;\;(2) P(x,zμk,Σk)=k=1Ki=1N[πkN(xμk,Σk)]zik=k=1Kπknki=1N[N(xμk,Σk)]zik(2)

其中 n k = ∑ i = 1 N z i k , ∑ k = 1 K n k = N n_k=\sum\limits_{i=1}^Nz_{ik},\sum\limits_{k=1}^Kn_k=N nk=i=1Nzikk=1Knk=N
再对(2)进一步化简得到:
P ( x , z ∣ μ k , Σ k ) = ∏ k = 1 K π k n k ∏ i = 1 N [ 1 2 π Σ k e x p ( − ( x i − μ k ) 2 2 Σ k ) ] z i k P(x,z|\boldsymbol{\mu}_k, \boldsymbol{\Sigma}_k)=\prod_{k=1}^K\pi_k^{n_k}\prod_{i=1}^N[\frac{1}{\sqrt{2\pi}\boldsymbol{\Sigma_k}}exp(-\frac{{(x_i-\boldsymbol{\mu}_k})^2}{2\boldsymbol{\Sigma}_k})]^{z_{ik}} P(x,zμk,Σk)=k=1Kπknki=1N[2π Σk1exp(2Σk(xiμk)2)]zik

取对数log后:
l o g P ( x , z ∣ μ k , Σ k ) = ∑ k = 1 K n k l o g π k + ∑ i = 1 N z i k [ l o g ( 1 2 π ) − l o g ( Σ k ) − ( x i − μ k ) 2 2 Σ k ] logP(x,z|\boldsymbol{\mu}_k, \boldsymbol{\Sigma}_k)=\sum_{k=1}^Kn_klog\pi_k+\sum_{i=1}^Nz_{ik}[log(\frac{1}{\sqrt{2\pi}})-log(\boldsymbol{\Sigma_k})-\frac{{(x_i-\boldsymbol{\mu}_k})^2}{2\boldsymbol{\Sigma}_k}] logP(x,zμk,Σk)=k=1Knklogπk+i=1Nzik[log(2π 1)log(Σk)2Σk(xiμk)2]

b. 确定E步极大似然函数

计算最大似然估计 L ( θ , θ ( j ) ) L(\theta,\theta^{(j)}) L(θ,θ(j)) , j j j 是第 j j j次EM的过程,下式子中的 E Q E_Q EQ是(1)中 Q Q Q函数的期望值
L ( θ , θ ( j ) ) = E Q [ l o g P ( x , z ∣ μ k , Σ k ) ] L ( θ , θ ( j ) ) = E Q [ ∑ k = 1 K n k l o g π k + ∑ i = 1 N z i k [ D 2 l o g ( 2 π ) − 1 2 l o g ( Σ k ) − ( x i − μ k ) 2 2 Σ k ] ] L ( θ , θ ( j ) ) = ∑ k = 1 K [ ∑ i = 1 N ( E Q ( z i k ) ) l o g π k + ∑ i = 1 N E Q ( z i k ) [ D 2 l o g ( 2 π ) − 1 2 l o g ( Σ k ) − ( x i − μ k ) 2 2 Σ k ] ] L(\theta,\theta^{(j)})=E_Q[logP(x,z|\boldsymbol{\mu}_k, \boldsymbol{\Sigma}_k)] \\ L(\theta,\theta^{(j)})=E_Q[\sum_{k=1}^Kn_klog\pi_k+\sum_{i=1}^Nz_{ik}[\frac{D}{2}log(2\pi)-\frac{1}{2}log(\boldsymbol{\Sigma_k})-\frac{{(x_i-\boldsymbol{\mu}_k})^2} {2\boldsymbol{\Sigma}_k}]] \\ L(\theta,\theta^{(j)})=\sum_{k=1}^K[\sum_{i=1}^N(E_Q(z_{ik}))log\pi_k+\sum_{i=1}^NE_Q(z_{ik})[\frac{D}{2}log(2\pi)-\frac{1}{2}log(\boldsymbol{\Sigma_k})-\frac{{(x_i-\boldsymbol{\mu}_k})^2}{2\boldsymbol{\Sigma}_k}]] L(θ,θ(j))=EQ[logP(x,zμk,Σk)]L(θ,θ(j))=EQ[k=1Knklogπk+i=1Nzik[2Dlog(2π)21log(Σk)2Σk(xiμk)2]]L(θ,θ(j))=k=1K[i=1N(EQ(zik))logπk+i=1NEQ(zik)[2Dlog(2π)21log(Σk)2Σk(xiμk)2]]

我们记 γ i k = E Q ( z i k ) \gamma_{ik}=E_Q(z_{ik}) γik=EQ(zik) n k = ∑ i = 1 N γ i k n_k=\sum\limits_{i=1}^N\gamma_{ik} nk=i=1Nγik 可以算出
L ( θ , θ ( j ) ) = ∑ k = 1 K n k [ l o g π k + ( D 2 l o g ( 2 π ) − 1 2 ( l o g ( Σ k ) − ( x i − μ k ) 2 2 Σ k ) ] L(\theta,\theta^{(j)})=\sum_{k=1}^Kn_k[log\pi_k+(\frac{D}{2}log(2\pi)-\frac{1}{2}(log(\boldsymbol{\Sigma_k})-\frac{{(x_i-\boldsymbol{\mu}_k})^2}{2\boldsymbol{\Sigma}_k})] L(θ,θ(j))=k=1Knk[logπk+(2Dlog(2π)21(log(Σk)2Σk(xiμk)2)]

因为 D 2 l o g ( 2 π ) \frac{D}{2}log(2\pi) 2Dlog(2π) 是常数,忽略不计
L ( θ , θ ( j ) ) = ∑ k = 1 K n k [ l o g π k − 1 2 ( l o g ( Σ k ) + ( x i − μ k ) 2 Σ k ) ] γ i k = π k N ( x ∣ μ k , Σ k ) ∑ k = 1 K π k N ( x ∣ μ k , Σ k ) L(\theta,\theta^{(j)})=\sum_{k=1}^Kn_k[log\pi_k-\frac{1}{2}(log(\boldsymbol{\Sigma_k})+\frac{{(x_i-\boldsymbol{\mu}_k})^2}{\boldsymbol{\Sigma}_k})] \\ \gamma_{ik}=\frac{\pi_k\mathcal{N}(\boldsymbol{x}|\boldsymbol{\mu}_k,\boldsymbol{\Sigma}_k)}{\sum_{k=1}^K\pi_k\mathcal{N}(\boldsymbol{x}|\boldsymbol{\mu}_k,\boldsymbol{\Sigma}_k)} L(θ,θ(j))=k=1Knk[logπk21(log(Σk)+Σk(xiμk)2)]γik=k=1KπkN(xμk,Σk)πkN(xμk,Σk)

c. 确定M步,更新参数

M步的过程是最大 L ( θ , θ j ) L(\theta, \theta^{j}) L(θ,θj),求出 θ ( j + 1 ) \theta^{(j+1)} θ(j+1)

θ j + 1 = a r g max ⁡ θ L ( θ , θ j ) \theta^{j+1} = arg \max \limits_{\theta}L(\theta, \theta^{j}) θj+1=argθmaxL(θ,θj)
因为有
n k = ∑ i = 1 N γ i k n_k=\sum_{i=1}^N\gamma_{ik} nk=i=1Nγik
通过 L ( θ , θ j ) L(\theta, \theta^{j}) L(θ,θj) μ k \mu_k μk Σ k \Sigma_k Σk 求偏导等于0得到

μ k = 1 n k ∑ i = 1 N γ i k x i \mu_k=\frac{1}{n_k}\sum_{i=1}^N\gamma_{ik}x_i μk=nk1i=1Nγikxi
Σ k = 1 n k ∑ i = 1 N γ i k ( x i − μ k ) 2 \Sigma_k=\frac{1}{n_k}\sum_{i=1}^N\gamma_{ik}(x_i-\mu_k)^2 Σk=nk1i=1Nγik(xiμk)2
π k = n k N \pi_k=\frac{n_k}{N} πk=Nnk

2. GMM算法流程

输入:观测数据 x 1 , x 2 , x 3 , . . . , x N x_1,x_2,x_3,...,x_N x1,x2,x3,...,xN
输出:GMM的参数

  1. 初始化参数
  2. E步:根据当前模型,计算模型 k k k x i x_i xi的影响 γ i k = π k N ( x ∣ μ k , Σ k ) ∑ k = 1 K π k N ( x ∣ μ k , Σ k ) \gamma_{ik}=\frac{\pi_k\mathcal{N}(\boldsymbol{x}|\boldsymbol{\mu}_k,\boldsymbol{\Sigma}_k)}{\sum_{k=1}^K\pi_k\mathcal{N}(\boldsymbol{x}|\boldsymbol{\mu}_k,\boldsymbol{\Sigma}_k)} γik=k=1KπkN(xμk,Σk)πkN(xμk,Σk)
  3. M步:计算 μ k + 1 , Σ k + 1 2 , π k + 1 \mu_{k+1},\Sigma_{k+1}^2,\pi_{k+1} μk+1,Σk+12,πk+1 n k = ∑ i = 1 N γ i k μ k + 1 = 1 n k ∑ i = 1 N γ i k x i Σ k + 1 2 = 1 n k ∑ i = 1 N γ i k ( x i − μ k ) 2 π k + 1 = n k N n_k=\sum_{i=1}^N\gamma_{ik} \\\mu_{k+1}=\frac{1}{n_k}\sum_{i=1}^N\gamma_{ik}x_i \\ \Sigma_{k+1}^2=\frac{1}{n_k}\sum_{i=1}^N\gamma_{ik}(x_i-\mu_k)^2 \\ \pi_{k+1}=\frac{n_k}{N} nk=i=1Nγikμk+1=nk1i=1NγikxiΣk+12=nk1i=1Nγik(xiμk)2πk+1=Nnk
  4. 重复2,3两步直到收敛

References

EM算法数学基础+GMM
EM算法原理总结 -刘建平Pinard
简单实例解释:从似然函数到EM算法(附代码实现)
​The EM Algorithm -CMU

https://jingluan-xw.medium.com/binomial-mixture-model-with-expectation-maximum-em-algorithm-feeaf0598b60
https://www.cnblogs.com/jerrylead/archive/2011/04/06/2006936.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/109288.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

初学编程入门基础教学视频,中文编程开发语言工具箱之豪华编辑构件,免费版中文编程软件下载

初学编程入门基础教学视频&#xff0c;中文编程开发语言工具箱之豪华编辑构件&#xff0c;免费版中文编程软件下载 构件的其中一个属性、方法&#xff0c;查找内容&#xff0c;替换内容。 构件工具箱非常丰富&#xff0c;其中该构件在 文本件构件板菜单下。 编程系统化课程总目…

web - 前段三剑客

目录 前言 一. HTML 常用标签演示 图片标签 ​编辑 表格标签(重点) ​编辑 表单标签 (重点) 布局标签 其余标签 二. CSS 2.1 . css的三种引入方式 2.2 . 三大选择器 2.3 . css样式 - 浮动 2.4 . css样式 - 定位 1.static 2.absolute(绝对位置) 3.relavite(相…

【设计模式】第13节:结构型模式之“享元模式”

一、简介 所谓“享元”&#xff0c;顾名思义就是被共享的单元。享元模式的意图是复用对象&#xff0c;节省内存&#xff0c;前提是享元对象是不可变对象。 实现&#xff1a;通过工厂模式&#xff0c;在工厂类中&#xff0c;通过一个Map或者List来缓存已经创建好的享元对象&am…

LeetCode 415 字符串相加 简单

题目 - 点击直达 1. 415 字符串相加 简单1. 题目详情1. 原题链接2. 题目要求3. 基础框架 2. 解题思路1. 思路分析2. 时间复杂度3. 代码实现 1. 415 字符串相加 简单 1. 题目详情 给定两个字符串形式的非负整数 num1 和num2 &#xff0c;计算它们的和并同样以字符串形式返回。…

LeetCode题:88合并两个有序数组,283移动零,448找到所有数组中消失的数字

目录 88合并两个有序数组 1、题目要求 2、解题思路 &#xff08;1&#xff09;、暴力解法&#xff1a; &#xff08;2&#xff09;、双指针&#xff0c;使用第三数组的解法&#xff1a; 3、代码展示 &#xff08;1&#xff09;、暴力解法&#xff1a; &#xff08;2&am…

画时钟(turtle库)

思路&#xff1a; 总体来看&#xff0c;分为两个部分&#xff1a;固定的表盘&#xff0c;和不断刷新的指针&#xff08;和时间显示&#xff09; 固定的表盘 我的表盘长这个样子&#xff1a; 分为三个部分&#xff1a;60个dot点&#xff08;分、秒&#xff09;&#xff0c;12条…

漏洞复现--用友 畅捷通T+ .net反序列化RCE

免责声明&#xff1a; 文章中涉及的漏洞均已修复&#xff0c;敏感信息均已做打码处理&#xff0c;文章仅做经验分享用途&#xff0c;切勿当真&#xff0c;未授权的攻击属于非法行为&#xff01;文章中敏感信息均已做多层打马处理。传播、利用本文章所提供的信息而造成的任何直…

树莓派基金会近日发布了新版基于 Debian 的树莓派操作系统

导读树莓派基金会&#xff08;Raspberry Pi Foundation&#xff09;近日发布了新版基于 Debian 的树莓派操作系统&#xff08;Raspberry Pi OS&#xff09;&#xff0c;为树莓派单板电脑带来了新的书虫基础和一些重大变化。 新版 Raspberry Pi OS 的最大变化是它现在基于最新的…

竞赛选题 深度学习图像修复算法 - opencv python 机器视觉

文章目录 0 前言2 什么是图像内容填充修复3 原理分析3.1 第一步&#xff1a;将图像理解为一个概率分布的样本3.2 补全图像 3.3 快速生成假图像3.4 生成对抗网络(Generative Adversarial Net, GAN) 的架构3.5 使用G(z)生成伪图像 4 在Tensorflow上构建DCGANs最后 0 前言 &#…

《数字图像处理-OpenCV/Python》连载(33)使用掩模图像控制处理区域

**本书京东优惠购书链接&#xff1a;https://item.jd.com/14098452.html** **本书CSDN独家连载专栏&#xff1a;https://blog.csdn.net/youcans/category_12418787.html** 第 5 章 图像的算术运算 在OpenCV中&#xff0c;图像是以Numpy数组格式存储的&#xff0c;图像的算术运…

大数据Flink(一百零三):SQL 表值聚合函数(Table Aggregate Function)

文章目录 SQL 表值聚合函数(Table Aggregate Function) SQL 表值聚合函数(Table Aggregate Function) Python UDTAF,即 Python TableAggregateFunction。Python UDTAF 用来针对一组数据进行聚合运算,比如同一个 window 下的多条数据、或者同一个 key 下的多条数据等,与…

grafana InfluxDB returned error: error reading influxDB 400错误解决

问题&#xff1a; 如图提示错误解决 确认自己的docker容器是否配置了以下3个字段 DOCKER_INFLUXDB_INIT_USERNAMExxx DOCKER_INFLUXDB_INIT_PASSWORDyyy DOCKER_INFLUXDB_INIT_ADMIN_TOKENzzz 如果有&#xff0c;在grafana中需要添加header配置Header: Authorization , Value…

docker应用部署---nginx部署的配置

1. 搜索nginx镜像 docker search nginx2. 拉取nginx镜像 docker pull nginx3. 创建容器&#xff0c;设置端口映射、目录映射 # 在/root目录下创建nginx目录用于存储nginx数据信息 mkdir ~/nginx cd ~/nginx mkdir conf cd conf# 在~/nginx/conf/下创建nginx.conf文件,粘贴下…

VScode 调试 linux内核

VScode 调试 linux内核 这里调试的 linux 内核是通过 LinuxSD卡(rootfs)运行的内核 gdb 命令行调试 编辑 /home/tyustli/.gdbinit 文件&#xff0c;参考 【GDB】 .gdbinit 文件 set auto-load safe-path /home/tyustli/code/open_source/kernel/linux-6.5.7/.gdbinit在 lin…

C笔记:引用调用,通过指针传递

代码 #include<stdio.h> int max1(int num1,int num2) {if(num1 < num2){num1 num2;}else{num2 num1;} } int max2(int *num1,int *num2) {if(num1 < num2){*num1 *num2; // 把 num2 赋值给 num1 }else{*num2 *num1;} } int main() {int num1 0,num2 -2;int…

【AD9361 数字接口CMOS LVDSSPI】D 串行数据之SPI

【AD9361 数字接口CMOS &LVDS&SPI】D部分 接续 【AD9361 数字接口CMOS &LVDS&SPI】A 并行数据之CMOS 串行外设接口&#xff08;SPI&#xff09; SPI总线为AD9361的所有数字控制提供机制。每个SPI寄存器的宽度为8位&#xff0c;每个寄存器包含控制位、状态监视…

进阶设计一(DDR3)——FPGA学习笔记<?>

一.简介 DDR3 SDRAM&#xff0c;以其单位存储量大、高数据带宽、读写速度快、价格相对便宜等优点 吸引了大批客户&#xff0c;占领市场较大份额。同时&#xff0c;作为内存条中不可缺少的一部分&#xff0c;DDR3 SDRAM 在计算机领域也占有一席之地。 要掌握 DDR3 SDRAM…

什么是 Node.js

目标 什么是 Node.js&#xff0c;有什么用&#xff0c;为何能独立执行 JS 代码&#xff0c;演示安装和执行 JS 文件内代码 讲解 Node.js 是一个独立的 JavaScript 运行环境&#xff0c;能独立执行 JS 代码&#xff0c;因为这个特点&#xff0c;它可以用来编写服务器后端的应用…

能量管理系统(EMS):新能源储能行业的智能化大脑

导语&#xff1a;能源管理系统&#xff08;EMS&#xff09;是新能源储能行业中一种关键的智能化技术。它的作用类似于大脑&#xff0c;能够监控、控制和优化能源系统的运行&#xff0c;为储能设施提供高效稳定的能源管理。本文将介绍能量管理系统的基本概念、功能和应用。 一、…

51单片机晶体管数字编码

51单片机 单片机型号&#xff1a;STC86C52RC/LE52RC 晶体管 数字编码 数字P0P1P2P3P4P5P6P7011111100101100000211011010311110010401100110510110110610111110711100000811111110911110110 00011 11110x3F10000 01100x0620101 10110x5B30100 11110x4F40110 01100x6650110 110…