【机器学习】EM算法在高斯混合模型学习中的应用

前言

EM算法,此博客介绍了 EM E M 算法相关理论知识,看本篇博客前先熟悉 EM E M 算法。

本篇博客打算先从单个高斯分布说起,然后推广到多个高斯混合起来,最后给出高斯混合模型参数求解过程。

单个高斯分布

假如我们有一些数据,这些数据来自同一个高斯分布(独立同分布),那个我们如何根据这些数据估计出这个高斯分布的参数呢?我们知道只要知道高斯分布的参数 θ={μ,σ2} θ = { μ , σ 2 } 就能确定此高斯分布。


【机器学习】EM算法在高斯混合模型学习中的应用_第1张图片

从上图中,我们要想知道数据是来自哪个高斯分布,我们就要知道高斯分布的参数,直观上可以认定数据来自参数为 θ1 θ 1 的高斯分布,然而这毕竟是我们直观上的,那么我们应该如何根据数据估计高斯分布的参数呢?

假设数据为 X={x1,x2,...,xN}xi X = { x 1 , x 2 , . . . , x N } , x i 独立同分布 p(X|θ) p ( X | θ ) ,其中 θ={μ,σ2} θ = { μ , σ 2 } ;

由贝叶斯公式知:

p(θ|X)p(X|θ)p(θ) p ( θ | X ) ∝ p ( X | θ ) p ( θ )

p(θ|X) p ( θ | X ) 为后验概率, p(X|θ) p ( X | θ ) 为似然度, p(θ) p ( θ ) 为先验概率。

关于贝叶斯公式的,可参考我之前的博客,里面有提到:链接

不加上先验概率,就是极大似然估计;
加上先验概率,就是极大后验概率估计
这里我们只介绍极大似然估计,极大后验概率估计类似

(1)写出对数似然函数

L(θ|X)=log [p(X|θ)]=i=1Nlog p(xi|θ)=i=1Nlog [12πσexp((xiμ)22σ2)] L ( θ | X ) = l o g   [ p ( X | θ ) ] = ∑ i = 1 N l o g   p ( x i | θ ) = ∑ i = 1 N l o g   [ 1 2 π σ e x p ( − ( x i − μ ) 2 2 σ 2 ) ]

(2)求极大似然估计

分别对 μ,σ μ , σ 求偏导,并令为0:

L(θ|X)μ=(Ni=1log [12πσexp((xiμ)22σ2)])μ=(Ni=1log[exp((xiμ)22σ2)])μ=(Ni=1(xiμ)22σ2)μ=i=1N(xiμ)σ2=0 ∂ L ( θ | X ) ∂ μ = ∂ ( ∑ i = 1 N l o g   [ 1 2 π σ e x p ( − ( x i − μ ) 2 2 σ 2 ) ] ) ∂ μ = ∂ ( ∑ i = 1 N l o g [ e x p ( − ( x i − μ ) 2 2 σ 2 ) ] ) ∂ μ = ∂ ( ∑ i = 1 N − ( x i − μ ) 2 2 σ 2 ) ∂ μ = − ∑ i = 1 N ( x i − μ ) σ 2 = 0

由此得到 μ μ 的似然估计为:
μMLE=1Ni=1Nxi μ M L E = 1 N ∑ i = 1 N x i

L(θ|X)σ=(Ni=1log [12πσexp((xiμMLE)22σ2)])σ=Ni=1log12πσσ+(Ni=1log[exp((xiμMLE)22σ2)])σ=i=1N(12πσ)2π+(Ni=1(xiμMLE)22σ2)σ=N+Ni=1(xiμMLE)2σ2=0 ∂ L ( θ | X ) ∂ σ = ∂ ( ∑ i = 1 N l o g   [ 1 2 π σ e x p ( − ( x i − μ M L E ) 2 2 σ 2 ) ] ) ∂ σ = ∂ ∑ i = 1 N l o g 1 2 π σ ∂ σ + ∂ ( ∑ i = 1 N l o g [ e x p ( − ( x i − μ M L E ) 2 2 σ 2 ) ] ) ∂ σ = ∑ i = 1 N − ( 1 2 π σ ) 2 π + ∂ ( ∑ i = 1 N − ( x i − μ M L E ) 2 2 σ 2 ) ∂ σ = − N + ∑ i = 1 N ( x i − μ M L E ) 2 σ 2 = 0

其中用到 d log(1x)dx=1x d   l o g ( 1 x ) d x = − 1 x
得到 σ2 σ 2 的似然估计为:
σ2=Ni=1(xiμMLE)2N σ 2 = ∑ i = 1 N ( x i − μ M L E ) 2 N

综上我们可以表述为:

θ=argmaxθ[i=1Nlog N(xi|μ,σ2)] θ = a r g max θ [ ∑ i = 1 N l o g   N ( x i | μ , σ 2 ) ]

μL(μ,σ2|X)μσ2L(μ,σ2|X)σ μ → ∂ L ( μ , σ 2 | X ) ∂ μ σ 2 → ∂ L ( μ , σ 2 | X ) ∂ σ

以上问题是只有一个高斯分布的,如果不止一个高斯分布呢?

高斯混合模型

同样,我们看下图:


【机器学习】EM算法在高斯混合模型学习中的应用_第2张图片

上图是一个高斯混合模型,此处只画了两个高斯分布,可以是多个高斯分布。

如果我们知道每一个数据属于哪一个高斯分布,就会很容易求解,但是我们不可能都知道的,这时随便一个数据点,我们应该如何判断它是哪个高斯分布产生的呢?

这里我们引入 αk α k 表示属于第 k k 个高斯分布的权重,并满足 Kk=1αk=1 ∑ k = 1 K α k = 1

这样我们可以得到:

p(X|θ)=k=1KαkN(μk,σ2k)i=kKαk=1 p ( X | θ ) = ∑ k = 1 K α k N ( μ k , σ k 2 ) ∑ i = k K α k = 1

其中 N(μk,σ2k) N ( μ k , σ k 2 ) 是高斯分布, αk α k 是系数

给出定义:

高斯混合模型是指具有如下形式的概率分布模型:

p(x|θ)=k=1Kαkϕ(x|θk) p ( x | θ ) = ∑ k = 1 K α k ϕ ( x | θ k )

其中, αk α k 是系数, αk0Kk=1αk=1 α k ⩾ 0 ∑ k = 1 K α k = 1 ϕ(x|θk) ϕ ( x | θ k ) 是高斯分布密度, θk=(μk,σ2k) θ k = ( μ k , σ k 2 )
ϕ(x|θk)=12πσkexp((xμk)22σ2k) ϕ ( x | θ k ) = 1 2 π σ k e x p ( − ( x − μ k ) 2 2 σ k 2 )

称为第 k k 个分模型。

高斯混合模型参数估计的 EM E M 算法

假设观测数据 x1,x2,...,xN x 1 , x 2 , . . . , x N 由高斯混合模型生成,

p(x|θ)=k=1Kαkϕ(x|θk) p ( x | θ ) = ∑ k = 1 K α k ϕ ( x | θ k )

其中, θ=(α1,α2,..,αk;θ1,θ2,..,θk) θ = ( α 1 , α 2 , . . , α k ; θ 1 , θ 2 , . . , θ k ) ,我们用 EM E M 算法估计高斯混合模型的参数 θ θ .

1. 明确隐变量,写出完全数据的对数似然函数

我们设想数据是这样产生的:

首先依概率 αk α k 选择第 k k 个高斯分布模型 ϕ(x|θk) ϕ ( x | θ k ) ;然后依第 k k 个分模型的概率分布 ϕ(x|θk) ϕ ( x | θ k ) 生成观测数据 xj x j 。这时观测数据 xj x j ,是已知的;反映观测数据 xj x j 来自第 k k 个分模型的数据是未知的, k=1,2,...,K k = 1 , 2 , . . . , K ,以隐变量 γjk γ j k 表示,其定义如下:

γjk={1,jk0,j=1,2,...,N;k=1,2,...,K γ j k = { 1 , 第 j 个 观 测 来 自 第 k 个 分 模 型 0 , 否 则 j = 1 , 2 , . . . , N ; k = 1 , 2 , . . . , K

有了观测数据 xj x j 及未观测数据 γjk γ j k ,那么完全数据是: (xj,γj1,γj2,...,γjK)j=1,2,...,N ( x j , γ j 1 , γ j 2 , . . . , γ j K ) , j = 1 , 2 , . . . , N

于是,可以写出完全数据的似然函数:

p(x,γ|θ)=j=1Np(xj,γj1,γj2,...,γjK|θ)=k=1Kj=1N[αkϕ(xj|θk)]γjk=k=1Kαnkkj=1N[ϕ(xj|θk)]γjk=k=1Kαnkkj=1N[12πσkexp((xjμk)22σ2k)]γjk p ( x , γ | θ ) = ∏ j = 1 N p ( x j , γ j 1 , γ j 2 , . . . , γ j K | θ ) = ∏ k = 1 K ∏ j = 1 N [ α k ϕ ( x j | θ k ) ] γ j k = ∏ k = 1 K α k n k ∏ j = 1 N [ ϕ ( x j | θ k ) ] γ j k = ∏ k = 1 K α k n k ∏ j = 1 N [ 1 2 π σ k e x p ( − ( x j − μ k ) 2 2 σ k 2 ) ] γ j k

式中: nk=Nj=1γjk,Kk=1nk=N n k = ∑ j = 1 N γ j k , ∑ k = 1 K n k = N

那么,对数似然函数为:

log p(x,γ|θ)=k=1K{nklog αk+j=1Nγjk[log(12π)logσk12σ2k(xjμk)2]} l o g   p ( x , γ | θ ) = ∑ k = 1 K { n k l o g   α k + ∑ j = 1 N γ j k [ l o g ( 1 2 π ) − l o g σ k − 1 2 σ k 2 ( x j − μ k ) 2 ] }

2. EM E M 算法 E E 步:确定Q函数

Q(θ,θ(i))=E[log p(x,γ|θ)|x,θ(i)]=E{k=1K{nklog αk+j=1Nγjk[log(12π)logσk12σ2k(xjμk)2]}}=k=1K{j=1N(Eγjk)log αk+j=1N(Eγjk)[log(12π)logσk12σ2k(xjμk)2]} Q ( θ , θ ( i ) ) = E [ l o g   p ( x , γ | θ ) | x , θ ( i ) ] = E { ∑ k = 1 K { n k l o g   α k + ∑ j = 1 N γ j k [ l o g ( 1 2 π ) − l o g σ k − 1 2 σ k 2 ( x j − μ k ) 2 ] } } = ∑ k = 1 K { ∑ j = 1 N ( E γ j k ) l o g   α k + ∑ j = 1 N ( E γ j k ) [ l o g ( 1 2 π ) − l o g σ k − 1 2 σ k 2 ( x j − μ k ) 2 ] }

这里需要计算 E(γjk|x,θ) E ( γ j k | x , θ ) ,记为 γjk^ γ j k ^
γjk^=E(γjk|x,θ)=p(γjk=1|x,θ)=p(γjk=1,xj|θ)Kk=1p(γjk=1,xj|θ)=p(xj|γjk=1,θ)p(γjk=1|θ)Kk=1p(xj|γjk=1,θ)p(γjk=1|θ)=αkϕ(xj|θk)Kk=1αkϕ(xj|θk),j=1,2,...,N;k=1,2,...,K γ j k ^ = E ( γ j k | x , θ ) = p ( γ j k = 1 | x , θ ) = p ( γ j k = 1 , x j | θ ) ∑ k = 1 K p ( γ j k = 1 , x j | θ ) = p ( x j | γ j k = 1 , θ ) p ( γ j k = 1 | θ ) ∑ k = 1 K p ( x j | γ j k = 1 , θ ) p ( γ j k = 1 | θ ) = α k ϕ ( x j | θ k ) ∑ k = 1 K α k ϕ ( x j | θ k ) , j = 1 , 2 , . . . , N ; k = 1 , 2 , . . . , K

γjk^ γ j k ^ 是在当前模型参数下第 j j 个观测数据来自第 k k 个分模型的概率,称为分模型 k k 对观测数据 xj x j 的响应度。

γjk^=Eγjknk=Nj=1Eγjk γ j k ^ = E γ j k 及 n k = ∑ j = 1 N E γ j k 代入之前式子即得:

Q(θ,θ(i))=k=1K{nklog αk+k=1Kγjk^[log(12π)logσk12σ2k(xjμk)2]} Q ( θ , θ ( i ) ) = ∑ k = 1 K { n k l o g   α k + ∑ k = 1 K γ j k ^ [ l o g ( 1 2 π ) − l o g σ k − 1 2 σ k 2 ( x j − μ k ) 2 ] }

3. EM E M 算法 M M 步:

迭代的 M M 步是求函数 Q(θ,θ(i)) Q ( θ , θ ( i ) ) θ θ 的极大值,即求新一轮迭代的模型参数:

θ(i+1)=argmaxθQ(θ,θ(i)) θ ( i + 1 ) = a r g max θ Q ( θ , θ ( i ) )

μk^,σ2k^ μ k ^ , σ k 2 ^ 只需要将Q函数对 μk,σ2k μ k , σ k 2 求偏导并令为0,即可得到;求 αk^ α k ^ 是在 Ki=kαk=1 ∑ i = k K α k = 1 条件下求偏导数并令为0得到的,用到拉格朗日乘子法。
结果如下:

μk^=Nj=1γjk^xjNj=1γjk^,k=1,2,...,Kσ2k^=Nj=1γjk^(xjμk)2Nj=1γjk^,k=1,2,...,Kαk^=nkN=Nj=1γjk^N,k=1,2,...,K μ k ^ = ∑ j = 1 N γ j k ^ x j ∑ j = 1 N γ j k ^ , k = 1 , 2 , . . . , K σ k 2 ^ = ∑ j = 1 N γ j k ^ ( x j − μ k ) 2 ∑ j = 1 N γ j k ^ , k = 1 , 2 , . . . , K α k ^ = n k N = ∑ j = 1 N γ j k ^ N , k = 1 , 2 , . . . , K

重复以上计算,直到对数似然函数值不再有明显变化为止。

高斯混合模型参数估计的 EM E M 算法

输入:观测数据 x1,x2,...,xN x 1 , x 2 , . . . , x N ,高斯混合模型

输出:高斯混合模型参数

(1)取参数的初始值开始迭代
(2)E步:依据当前模型参数,计算分模型 k k 对观测数据 xi x i 的响应度

γjk^=αkϕ(xj|θk)Kk=1αkϕ(xj|θk),j=1,2,...,N;k=1,2,...,K γ j k ^ = α k ϕ ( x j | θ k ) ∑ k = 1 K α k ϕ ( x j | θ k ) , j = 1 , 2 , . . . , N ; k = 1 , 2 , . . . , K

(3)M步:计算新一轮迭代的模型参数
μk^=Nj=1γjk^xjNj=1γjk^,k=1,2,...,Kσ2k^=Nj=1γjk^(xjμk)2Nj=1γjk^,k=1,2,...,Kαk^=nkN=Nj=1γjk^N,k=1,2,...,K μ k ^ = ∑ j = 1 N γ j k ^ x j ∑ j = 1 N γ j k ^ , k = 1 , 2 , . . . , K σ k 2 ^ = ∑ j = 1 N γ j k ^ ( x j − μ k ) 2 ∑ j = 1 N γ j k ^ , k = 1 , 2 , . . . , K α k ^ = n k N = ∑ j = 1 N γ j k ^ N , k = 1 , 2 , . . . , K

(4)重复第(2)步和第(3)步,直到收敛。

至此,高斯混合模型的 EM E M 算法我们就介绍完了,关于算法 M M 步中的计算,这里没有给出,求解方法会使用到带约束条件的拉格朗日乘子法
参考资料:
李航《统计学习方法》,徐亦达机器学习

你可能感兴趣的:(机器学习)