EM算法详解(内含详细推导)

前言

对于隐变量模型,我们不仅有可观测值 x x ,还有隐含状态: z z ,而我们的目的就是最大化 P ( x , z θ ) P(x,z|\theta) θ \theta 表示模型的参数。如果 z z 是已知的那么我们可以采用传统MLE的计算方式 确认目标函数,采用梯度下降法优化参数:

a r g m a x log P ( x , z θ ) = log P ( z θ ) + log P ( x z , θ ) argmax\quad \log P(x,z|\theta)=\log P(z|\theta)+\log P(x|z,\theta)

但是如果 z z 是未知的,那么只有 x x 是可观测的那么我们的公式:

a r g m a x log P ( x , z θ ) = z log P ( z θ ) P ( x z , θ ) argmax\quad \log P(x,z|\theta)=\sum_z\log P(z|\theta)\cdot P(x|z,\theta)

这个时候我们再采用MLE是不好计算的,因为我们多了一个未知参数 z z 。这个时候我们就用到了另一种优化算法叫做EM算法

EM算法

θ \theta :模型参数

z z :隐含状态

x x :可观测值

l ( θ ) = l n p ( x θ ) l(\theta)=lnp(x|\theta) 目标函数

l ( θ n ) = l n p ( x θ n ) l(\theta_n)=lnp(x|\theta_n) 前n次计算的结果

换个思路:我们最大化 a r g m a x l ( θ ) argmax\quad l(\theta) 相当于最大化 a r g m a x l ( θ ) l ( θ n ) argmax\quad l(\theta)-l(\theta_n) 也就是这一次的结果要比前 n n 次越大越好根据这个思路我们来推导一下:

a r g m a x l ( θ ) l ( θ n ) = ln p ( x θ ) ln p ( x θ n ) = ln z P ( x , z θ ) ln p ( x θ n ) argmax\quad l(\theta)-l(\theta_n)=\ln p(x|\theta)-\ln p(x|\theta_n)=\ln \sum_zP(x,z|\theta)-\ln p(x|\theta_n)

= ln z P ( x z , θ ) P ( z θ ) ln p ( x θ n ) = ln z P ( x z , θ ) P ( z θ ) P ( z x , θ n ) P ( z x , θ n ) ln p ( x θ n ) =\ln \sum_zP(x|z,\theta)\cdot P(z|\theta)-\ln p(x|\theta_n)=\ln \sum_zP(x|z,\theta)\cdot P(z|\theta)\cdot\dfrac {P(z|x,\theta_n)}{P(z|x,\theta_n)}-\ln p(x|\theta_n)

上一步的目的主要是利用Jensen不等式将 ln \ln \sum 外移入 \sum

Jensen不等式:

ln i = 1 n λ i X i i = 1 n λ i ln X i \ln\sum_{i=1}^n \lambda_iX_i\geq\sum_{i=1}^n \lambda_i\ln X_i

条件: i = 1 n λ i = 1 \sum_{i=1}^n \lambda_i=1

根据jensen不等式的原理我们来继续上面的推导:

ln z P ( x z , θ ) P ( z θ ) P ( z x , θ n ) P ( z x , θ n ) ln p ( x θ n ) z P ( z x , θ n ) ln P ( z θ ) P ( x z , θ ) P ( z x , θ n ) ln p ( x θ n ) \ln \sum_zP(x|z,\theta)\cdot P(z|\theta)\cdot\dfrac {P(z|x,\theta_n)}{P(z|x,\theta_n)}-\ln p(x|\theta_n)\geq\sum_zP(z|x,\theta_n)\cdot \ln \dfrac {P(z|\theta)\cdot P(x|z,\theta)}{P(z|x,\theta_n)}-\ln p(x|\theta_n)

= z P ( z x , θ n ) ln P ( z θ ) P ( x z , θ ) P ( z x , θ n ) p ( x θ n ) = g ( θ , θ n ) =\sum_zP(z|x,\theta_n)\cdot \ln \dfrac {P(z|\theta)\cdot P(x|z,\theta)}{P(z|x,\theta_n)p(x|\theta_n)}=g(\theta,\theta_n)

因此: l ( θ ) l ( θ n ) g ( θ , θ n ) \quad l(\theta)-l(\theta_n)\geq g(\theta,\theta_n) ,也就是 l ( θ ) l ( θ n ) + g ( θ , θ n ) l(\theta)\geq l(\theta_n)+ g(\theta,\theta_n)

因为 l ( θ n ) + g ( θ , θ n ) l(\theta_n)+ g(\theta,\theta_n) l ( θ ) l(\theta) 的下限,因此我们最大化 l ( θ n ) + g ( θ , θ n ) l(\theta_n)+ g(\theta,\theta_n) 也就相当于最大化 l ( θ ) l(\theta)

所以下面继续推导 l ( θ n ) + g ( θ , θ n ) l(\theta_n)+ g(\theta,\theta_n)

a r g m a x [ l ( θ n ) + g ( θ , θ n ) ] = a r g m a x l ( θ n ) + z P ( z x , θ n ) ln P ( z θ ) P ( x z , θ ) P ( z x , θ n ) p ( x θ n ) argmax[l(\theta_n)+g(\theta,\theta_n)]=argmax \quad l(\theta_n)+\sum_zP(z|x,\theta_n)\cdot \ln \dfrac {P(z|\theta)\cdot P(x|z,\theta)}{P(z|x,\theta_n)p(x|\theta_n)}

因为我们优化的是 θ \theta ,并且我们的目的是最大化,所以我们可以去掉与 θ \theta 无关的项,因此在公式中去掉 l ( θ n ) l(\theta_n) , P ( z x , θ n ) P(z|x,\theta_n) p ( x θ n ) p(x|\theta_n)

= a r g m a x z P ( z x , θ n ) ln P ( z θ ) P ( z x , θ ) = a r g m a x z P ( z x , θ n ) ln P ( z θ ) P ( x z , θ ) =argmax\quad\sum_zP(z|x,\theta_n)\cdot \ln {P(z|\theta)\cdot P(z|x,\theta)}=argmax\quad\sum_zP(z|x,\theta_n)\cdot \ln {P(z|\theta)\cdot P(x|z,\theta)}

= a r g m a x z P ( z x , θ n ) ln P ( x , z θ ) = a r g m a x E z x , θ n { ln P ( x , z θ ) } =argmax\quad\sum_zP(z|x,\theta_n)\cdot \ln P(x,z|\theta)=argmax\quad E_{z|x,\theta_n}\{ \ln P(x,z|\theta)\}

也就是说我们最大化 l ( θ ) l(\theta) 等价于最大化 E z x , θ n { ln P ( x , z θ ) } E_{z|x,\theta_n}\{ \ln P(x,z|\theta)\} 这就是EM算法

根据公式我们可以看出EM算法的计算流程:
第一步:
根据 θ n \theta_n 求期望得出隐含变量 z z

第二步:
再根据隐含变量 z z 求出 θ \theta

我们把第一步叫做 E E (求期望)第二步叫做 M M (最大化)

EM算法特点:

1、找到的是局部最优解

2、严格递增的函数

经过我们的推导就可以看出来,它目的每次迭代就找到比上一次结果更加优秀的解。

k-means算法

k-means是利用了EM算法的思想。

x:表示数据集

u k u_k :表示中心点(参数)

r n k r_{nk} :每个点的状态(属于哪个类)

r n k r_{nk} 概念, x n x_{n} 属于k类为1,不属于k类为0

目标函数:

m i n m i z e n = 1 N k = 1 K r n k x n u k 2 minmize\sum_{n=1}^N\sum_{k=1}^Kr_{nk}||x_n-u_k||^2

E步,给定上一次计算的 u k 1 u_{k-1} 计算 r n k r_{nk} :

minmize k = 1 K r n k x n u k 1 2 \sum_{k=1}^Kr_{nk}||x_n-u_{k-1}||^2 找到与词距离最近的 u k u_k 并记录到 r n k r_{nk}

M步:记录完 r n k r_{nk} 后更新 u k u_k

其实就是用到了EM的思想

发布了18 篇原创文章 · 获赞 8 · 访问量 996

猜你喜欢

转载自blog.csdn.net/li15006474642/article/details/104456696