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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Unity的碰撞检测(五)

温馨提示&#xff1a;本文基于前一篇“Unity的碰撞检测(四)​​​​​​​”继续探讨两个游戏对象具备刚体的BodyType均为Dynamic&#xff0c;但是Collision Detection属性不同的碰撞检测&#xff0c;阅读本文则默认已阅读前文。 &#xff08;一&#xff09;测试说明 在基于两…

如何在Appium中使用AI定位

当我们在写自动化测试脚本的时候&#xff0c;传统情况下一定要知道元素的属性&#xff0c;如id、name、class等。那么通过AI的方式定位元素可能就不需要知道元素的属性&#xff0c;评价人对元素的判断来定位&#xff0c;比如&#xff0c;看到一个搜索框&#xff0c;直接使用ai:…

大麦订单生成器 大麦订单一键生成截图

1、能够一键的进行添加&#xff0c;生成的假订单是没有水印的&#xff0c;界面也很真实。 2、在软件中输入生成的信息&#xff0c;这里输入的是商品信息&#xff0c;选择生成的商品图片&#xff0c;最后生成即可。 新版大麦订单生成 图样式展示 这个样式图就是在大麦生成完…

2023-10-21 美团2024秋招后端开发岗笔试题

1 考察dfs和拓扑排序 1.1 题目描述&#xff08;如果拓扑排序不清楚可以去做一下lc 207. 课程表&#xff09; 1.2 答案 import java.util.*;public class Meituan {static int m,n;public static void main(String[] args) {Scanner in new Scanner(System.in);m in.nextInt…

如何将SAP数据集成到任意云平台

十年前就在使用SAP的客户询问我当时突然出现的新事物&#xff1a;大数据。五年前&#xff0c;变成了数据湖和机器学习。现在一切都是关于数据集成&#xff0c;当然还有人工智能。有时处理数据的基本方法已经改变或者发展。有时只是名字的改变。例如&#xff0c;在过去十年中&am…

2023 年值得关注的国外网络安全初创公司

网络安全初创公司试图解决的问题往往有点超前于主流。他们可以比大多数老牌公司更快地填补空白或新兴需求。初创公司通常可以更快地创新&#xff0c;因为它们不受安装基础的限制。 当然&#xff0c;缺点是初创公司往往缺乏资源和成熟度。公司致力于初创公司的产品或平台是有风…

Rust 语言介绍及安装

目录 1、简介 1.1 为什么选择Rust 高性能 可靠性 生产力 1.2 用 Rust 构建应用 命令行 WebAssembly 网络 嵌入式 2、安装 Rust Windows 的 Linux 子系统&#xff08;WSL&#xff09; 检查Rust 是最新的 卸载Rust版本&#xff1a; Cargo&#xff1a;Rust 的构建工…

读图数据库实战笔记03_遍历

1. Gremlin Server只将数据存储在内存中 1.1. 如果停止Gremlin Server&#xff0c;将丢失数据库里的所有数据 2. 概念 2.1. 遍历&#xff08;动词&#xff09; 2.1.1. 当在图数据库中导航时&#xff0c;从顶点到边或从边到顶点的移动过程 2.1.2. 类似于在关系数据库中的查…

Miniconda、Vscode下载和conda源、pip源设置

1、常用软件下载 1、Miniconda软件下载&#xff1a; windows网址&#xff1a;https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/?CS&OA 2、最新版Miniconda下载网址&#xff1a;https://docs.conda.io/projects/miniconda/en/latest/ 3、常用代码编辑器VsCode下…

IDE的组成

集成开发环境&#xff08;IDE&#xff0c;Integrated Development Environment &#xff09;是用于提供程序开发环境的应用程序&#xff0c;一般包括代码编辑器、编译器、调试器和图形用户界面等工具。集成了代码编写功能、分析功能、编译功能、调试功能等一体化的开发软件服务…

山西电力市场日前价格预测【2023-10-30】

日前价格预测 预测说明&#xff1a; 如上图所示&#xff0c;预测明日&#xff08;2023-10-30&#xff09;山西电力市场全天平均日前电价为309.35元/MWh。其中&#xff0c;最高日前电价为400.33元/MWh&#xff0c;预计出现在18:15。最低日前电价为0.00元/MWh&#xff0c;预计出…

Openssl数据安全传输平台014:OCCI的安装配置和使用:Centos8-Oracle19c代码跑通 + Window代码没跑通(不影响本项目)

文章目录 0 代码仓库1 启动Centos oracle数据库2 Winsows安装配置OCCI库2.1 下载文件2.2 VS 配置2.2.1 VC包含目录2.2.2 VC库目录2.2.3 连接器-附加依赖项2.2.4 代码测试-Oracle11g2.2.4.1 准备2.2.4.2 代码测试 3 Centos安装配置occi库3.1 下载instantclient库文件压缩包3.2 w…

Spring Cloud Gateway + Knife4j 4.3 实现微服务网关聚合接口文档

目录 前言Spring Cloud 整合 Knife4jpom.xmlapplication.ymlSwaggerConfig.java访问单服务接口文档 Spring Cloud Gateway 网关聚合pom.xmlapplication.yml访问网关聚合接口文档 接口测试登录认证获取登录用户信息 结语源码 前言 youlai-mall 开源微服务商城新版本基于 Spring…

考点之数据结构

概论 时间复杂度和空间复杂度是计算机科学中用来评估算法性能的重要指标。 时间复杂度&#xff1a; 时间复杂度衡量的是算法运行所需的时间。它表示算法执行所需的基本操作数量随着输入大小的增长而变化的趋势。 求法&#xff1a; 通常通过分析算法中基本操作执行的次数来…

国际阿里云CDN加速OSS资源教程!

当您需要加速OSS上的静态资源时&#xff0c;可以通过阿里云CDN加速OSS域名&#xff0c;实现静态资源的访问加速。本文详细介绍了通过CDN控制台实现OSS加速的操作流程和应用场景。 客户价值 阿里云OSS可提供低成本的存储&#xff0c;CDN可以实现静态资源加速分发。使用OSS作为C…

ESM蛋白质语言模型系列

模型总览 第一篇《Biological structure and function emerge from scaling unsupervised learning to 250 million protein sequences 》ESM-1b 第二篇《MSA Transformer》在ESM-1b的基础上作出改进&#xff0c;将模型的输入从单一蛋白质序列改为MSA矩阵&#xff0c;并在Tran…

使用设计模式基于easypoi优雅的设计通用excel导入功能

文章目录 概要整体架构流程代码设计配置类通用API分发器处理器业务逻辑处理service接口策略模型 小结 概要 基于java原生 easypoi结合适配器模式、策略模式、工厂模式设计一个通用的excel导入框架 整体架构流程 代码设计 由上到下&#xff0c;分别讲解代码 配置类 ExcelCon…

Go学习第十六章——Gin文件上传与下载

Go web框架——Gin文件上传与下载 1. 文件上传1.1 入门案例&#xff08;单文件&#xff09;1.2 服务端保存文件的几种方式SaveUploadedFileCreateCopy 1.3 读取上传的文件1.4 多文件上传 2. 文件下载2.1 快速入门2.2 前后端模式下的文件下载2.3 中文乱码问题 1. 文件上传 1.1 …

计算机毕业设计选题推荐-周边美食推荐微信小程序/安卓APP-项目实战

✨作者主页&#xff1a;IT毕设梦工厂✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Py…

kafka3.X基本概念和使用

kafka基本概念和使用 文章目录 kafka基本概念和使用 kafka的概念基本概念Kafka的使用 首先kafka的安装kafka的简单实用和理解搭建集群&#xff08;3个节点&#xff09;windows版本环境搭建 本文"kafka的概念"部分是在[初谈Kafka][ https://juejin.im/post/5a8e7f…