【机器学习】期望最大算法(EM算法):Expectation Maximization Algorithm
文章目录
- 【机器学习】期望最大算法(EM算法):Expectation Maximization Algorithm
- 1. 介绍
- 2. EM算法数学描述
- 3. EM算法流程
- 4. 两个问题
- 4.1 EM算法如何保证?
- 4.2 EM算法如果收敛,那么能保证收敛到全局最大值吗?
- 5. 总结
- 参考
1. 介绍
EM 算法,全称 Expectation Maximization Algorithm。期望最大算法是一种迭代算法,用于含有隐变量(Hidden Variable)的概率参数模型的最大似然估计或极大后验概率估计。
我们经常会从样本观察数据中,找出样本的模型参数。 最常用的方法就是极大化模型分布的对数似然函数。
- 但是在一些情况下,我们得到的观察数据有未观察到的隐含数据,此时我们未知的有隐含数据和模型参数,因而无法直接用极大化对数似然函数得到模型分布的参数。
怎么办呢?这就是EM算法可以派上用场的地方了。
- EM算法解决这个的思路是使用启发式的迭代方法,既然我们无法直接求出模型分布参数,那么我们可以先猜想隐含数据(EM算法的E步),接着基于观察数据和猜测的隐含数据一起来极大化对数似然,求解我们的模型参数(EM算法的M步)。
- 由于我们之前的隐藏数据是猜测的,所以此时得到的模型参数一般还不是我们想要的结果。不过没关系,我们基于当前得到的模型参数,继续猜测隐含数据(EM算法的E步),然后继续极大化对数似然,求解我们的模型参数(EM算法的M步)。以此类推,不断的迭代下去,直到模型分布参数基本无变化,算法收敛,找到合适的模型参数。
从上面的描述可以看出,EM算法是迭代求解最大值的算法,同时算法在每一次迭代时分为两步,E步和M步。一轮轮迭代更新隐含数据和模型分布参数,直到收敛,即得到我们需要的模型参数。
- 一个最直观了解EM算法思路的是K-Means算法,见之前写的K-Means聚类算法原理。在K-Means聚类时,每个聚类簇的质心是隐含数据。
- 我们会假设K个初始化质心,即EM算法的E步;然后计算得到每个样本最近的质心,并把样本聚类到最近的这个质心,即EM算法的M步。重复这个E步和M步,直到质心不再变化为止,这样就完成了K-Means聚类。
当然,K-Means算法是比较简单的,实际中的问题往往没有这么简单。接下来我们需要用数学的语言精准描述。
2. EM算法数学描述
对于 M M M个样本数据 X = { x 1 , x 2 , x 3 , . . . x M } X = \{ x_1, x_2, x_3,... \ x_M \} X={x1,x2,x3,... xM},找出样本的模型参数 θ \theta θ,极大化模型分布的对数似然函数如下:
θ ∗ = arg max θ ∑ i = 1 M log P θ ( x i ) \begin{align} \theta ^{*} = \mathop{\arg\max}\limits_{\theta} \sum^{M}_{i=1} \log P_{\theta}(x_i) \end{align} θ∗=θargmaxi=1∑MlogPθ(xi)
假设我们得到的观察数据,含有有未观察到的隐含数据: C = { c 1 , c 2 , c 3 , . . . z K } C = \{ c_1, c_2, c_3,... \ z_K \} C={c1,c2,c3,... zK},此时我们的极大化模型分布的对数似然函数如下:
θ ∗ = arg max θ ∑ i = 1 M log P θ ( x i ) = arg max θ ∑ i = 1 M log ∑ k = 1 K P θ ( x i , c k ) \begin{align} \theta ^{*} = \mathop{\arg\max}\limits_{\theta} \sum^{M}_{i=1} \log P_{\theta}(x_i) = \mathop{\arg\max}\limits_{\theta} \sum^{M}_{i=1} \log \sum_{k=1}^{K} P_{\theta}(x_i, c_k) \end{align} θ∗=θargmaxi=1∑MlogPθ(xi)=θargmaxi=1∑Mlogk=1∑KPθ(xi,ck)
上面这个式子是没有 办法直接求出 θ \theta θ 的。因此需要一些特殊的技巧,我们首先对这个式子进行缩放如下:
∑ i = 1 M log ∑ k = 1 K P θ ( x i , c k ) = ∑ i = 1 M log ∑ k = 1 K Q ( c k ) P θ ( x i , c k ) Q ( c k ) ≥ ∑ i = 1 M ∑ k = 1 K Q ( c k ) log P θ ( x i , c k ) Q ( c k ) \begin{align} \sum^{M}_{i=1} \log \sum_{k=1}^{K} P_{\theta}(x_i, c_k) = & \sum^{M}_{i=1} \log \sum_{k=1}^{K} Q(c_k) \frac{P_{\theta}(x_i, c_k)}{Q(c_k)}\\ \geq & \sum^{M}_{i=1} \sum_{k=1}^{K} Q(c_k) \log \frac{P_{\theta}(x_i, c_k)}{Q(c_k)} \end{align} i=1∑Mlogk=1∑KPθ(xi,ck)=≥i=1∑Mlogk=1∑KQ(ck)Q(ck)Pθ(xi,ck)i=1∑Mk=1∑KQ(ck)logQ(ck)Pθ(xi,ck)
上面 (3) 式引入了一个未知的新的分布, Q ( c ) Q(c) Q(c),(4)式用到了Jensen不等式:
log ∑ j q j x j ≥ ∑ j q j log x j \begin{align} \log \sum_j q_j x_j \geq \sum_j q_j \log x_j \end{align} logj∑qjxj≥j∑qjlogxj
具体来说,由于对数函数是凹函数,所以有:
f ( E ( x ) ) ≥ E ( f ( x ) ) ,如果 f ( x ) 是凹函数(如果是凸函数,则: ≤ ) \begin{align} f(\mathbb E(x)) \geq \mathbb E(f(x)),如果\ f(x) \ 是凹函数(如果是凸函数,则:\leq) \end{align} f(E(x))≥E(f(x)),如果 f(x) 是凹函数(如果是凸函数,则:≤)
此时如果要满足Jensen不等式的等号,则有:
P θ ( x i , c k ) Q ( c k ) = t , t 为常数 \begin{align} \frac{P_{\theta}(x_i, c_k)}{Q(c_k)} = t,t为常数 \end{align} Q(ck)Pθ(xi,ck)=t,t为常数
由于 Q ( c ) Q(c) Q(c)是一个分布,所以:
∑ k = 1 K Q ( c k ) = 1 \begin{align} \sum_{k=1}^K Q(c_k) = 1 \end{align} k=1∑KQ(ck)=1
从上面两式,我们可以得到:
Q ( c k ) = P θ ( x i , c k ) ∑ k = 1 K P θ ( x i , c k ) = P θ ( x i , c k ) P θ ( x i ) = P θ ( c k ∣ x i ) \begin{align} Q(c_k) = \frac{P_{\theta}(x_i, c_k)}{ \sum_{k=1}^K P_{\theta}(x_i, c_k)} = \frac{P_{\theta}(x_i, c_k)}{P_{\theta}(x_i)} = P_{\theta}(c_k|x_i) \end{align} Q(ck)=∑k=1KPθ(xi,ck)Pθ(xi,ck)=Pθ(xi)Pθ(xi,ck)=Pθ(ck∣xi)
因此,如果 Q ( c k ) = P θ ( c k ∣ x i ) Q(c_k) = P_{\theta}(c_k|x_i) Q(ck)=Pθ(ck∣xi),则 (4)式是我们的包含隐藏数据的对数似然的一个下界。如果我们能极大化这个下界,也就意味着可以极大化我们的对数似然。即我们需要最大化下式:
arg max θ ∑ i = 1 M ∑ k = 1 K Q ( c k ) log P θ ( x i , c k ) Q ( c k ) \begin{align} \argmax_\theta \sum^{M}_{i=1} \sum_{k=1}^{K} Q(c_k) \log \frac{P_{\theta}(x_i, c_k)}{Q(c_k)} \end{align} θargmaxi=1∑Mk=1∑KQ(ck)logQ(ck)Pθ(xi,ck)
去掉上式中为常数的部分,由于上式中 0 ≤ Q ( c k ) ≤ 1 0 \leq Q(c_k) \leq 1 0≤Q(ck)≤1,则我们需要极大化的对数似然下界为,
arg max θ ∑ i = 1 M ∑ k = 1 K Q ( c k ) log P θ ( x i , c k ) \begin{align} \argmax_\theta \sum^{M}_{i=1} \sum_{k=1}^{K} Q(c_k) \log P_{\theta}(x_i, c_k) \end{align} θargmaxi=1∑Mk=1∑KQ(ck)logPθ(xi,ck)
上式也就是我们的EM算法的M步,那E步呢?注意到上式中 Q ( c k ) Q(c_k) Q(ck) 是一个分布,因此 ∑ k = 1 K Q ( c k ) log P θ ( x i , c k ) \sum_{k=1}^{K} Q(c_k) \log P_{\theta}(x_i, c_k) ∑k=1KQ(ck)logPθ(xi,ck) 可以理解为 log P θ ( x i , c k ) \log P_{\theta}(x_i, c_k) logPθ(xi,ck) 基于条件概率分布 Q ( c k ) Q(c_k) Q(ck) 的一个期望。
至此,我们理解了EM算法中E步和M步的具体数学含义。
3. EM算法流程
- 输入
- 观察数据: X = { x 1 , x 2 , x 3 , . . . x M } X = \{ x_1, x_2, x_3,... \ x_M \} X={x1,x2,x3,... xM}
- 联合分布: P θ ( x , c ) P_\theta (x, c) Pθ(x,c)
- 条件分布
- 最大迭代次数: S S S
- 主要流程
- 1)随机初始化模型参数 θ \theta θ 的初始值 θ 0 \theta^0 θ0
- 2)EM算法迭代(V次)
- E步:计算联合分布的条件概率期望:
Q ( c k ) = P θ s ( c k ∣ x i ) L ( θ , θ s ) = ∑ i = 1 M ∑ k = 1 K Q ( c k ) log P θ ( x i , c k ) \begin{align} Q(c_k) = P_{\theta^s}(c_k|x_i) \\ L(\theta, \theta^s) = \sum^{M}_{i=1} \sum_{k=1}^{K} Q(c_k) \log P_{\theta}(x_i, c_k) \end{align} Q(ck)=Pθs(ck∣xi)L(θ,θs)=i=1∑Mk=1∑KQ(ck)logPθ(xi,ck) - M步:极大化 L ( θ , θ s ) L(\theta, \theta^s) L(θ,θs),得到 θ s + 1 \theta^{s+1} θs+1:
θ s + 1 = arg max θ L ( θ , θ s ) \begin{align} \theta^{s+1} = \argmax_{\theta} L (\theta, \theta^s) \end{align} θs+1=θargmaxL(θ,θs) - 如果 θ s + 1 \theta^{s+1} θs+1 已收敛,则算法结束。否则继续进行迭代。
- E步:计算联合分布的条件概率期望:
- 输出
- 模型参数 θ \theta θ
4. 两个问题
4.1 EM算法如何保证?
要证明EM算法收敛,则我们需要证明我们的对数似然函数的值在迭代的过程中一直在增大。即:
log P θ s + 1 ( x i ) ≥ log P θ s ( x i ) \begin{align} \log P_{\theta^{s+1}}(x_i) \geq \log P_{\theta^{s}}(x_i) \end{align} logPθs+1(xi)≥logPθs(xi)
由于,
L ( θ , θ s ) = ∑ i = 1 M ∑ k = 1 K P θ s ( c k ∣ x i ) log P θ ( x i , c k ) … … 注: Q ( c k ) = P θ s ( c k ∣ x i ) \begin{align} L(\theta, \theta^s) = \sum^{M}_{i=1} \sum_{k=1}^{K} P_{\theta^s}(c_k|x_i) \log P_{\theta}(x_i, c_k) ……注:Q(c_k) = P_{\theta^s}(c_k|x_i) \end{align} L(θ,θs)=i=1∑Mk=1∑KPθs(ck∣xi)logPθ(xi,ck)……注:Q(ck)=Pθs(ck∣xi)
令:
H ( θ , θ s ) = ∑ i = 1 M ∑ k = 1 K P θ s ( c k ∣ x i ) log P θ ( c k ∣ x i ) \begin{align} H(\theta, \theta^s) = \sum^{M}_{i=1} \sum_{k=1}^{K} P_{\theta^s}(c_k|x_i) \log P_{\theta}(c_k|x_i) \end{align} H(θ,θs)=i=1∑Mk=1∑KPθs(ck∣xi)logPθ(ck∣xi)
上两式相减得到:
L ( θ , θ s ) − H ( θ , θ s ) = ∑ i = 1 M ∑ k = 1 K P θ s ( c k ∣ x i ) log P θ ( x i , c k ) P θ ( c k ∣ x i ) = ∑ i = 1 M ∑ k = 1 K P θ s ( c k ∣ x i ) log P θ ( x i ) … … P θ s ( c k ∣ x i ) 已知,且和为 1 = ∑ i = 1 M log P θ ( x i ) \begin{align} L(\theta, \theta^s) - H(\theta, \theta^s) = & \sum^{M}_{i=1} \sum_{k=1}^{K} P_{\theta^s}(c_k|x_i) \log \frac{P_{\theta}(x_i, c_k) }{P_{\theta}(c_k|x_i)} \\ = & \sum^{M}_{i=1} \sum_{k=1}^{K} P_{\theta^s}(c_k|x_i) \log P_{\theta}(x_i) …… P_{\theta^s}(c_k|x_i) 已知,且和为1\\ = & \sum^{M}_{i=1} \log P_{\theta}(x_i) \end{align} L(θ,θs)−H(θ,θs)===i=1∑Mk=1∑KPθs(ck∣xi)logPθ(ck∣xi)Pθ(xi,ck)i=1∑Mk=1∑KPθs(ck∣xi)logPθ(xi)……Pθs(ck∣xi)已知,且和为1i=1∑MlogPθ(xi)
在上式最后得到式子中, θ \theta θ 分别取 θ s \theta^{s} θs 和 θ s + 1 \theta^{s+1} θs+1,并相减得到:
∑ i = 1 M log P θ s + 1 ( x i ) − ∑ i = 1 M log P θ s ( x i ) = [ L ( θ s + 1 , θ s ) − L ( θ s , θ s ) ] − [ H ( θ s + 1 , θ s ) − H ( θ s , θ s ) ] \begin{align} & \sum^{M}_{i=1} \log P_{\theta^{s+1}}(x_i) - \sum^{M}_{i=1} \log P_{\theta^{s}}(x_i) \\ = & [L(\theta^{s+1}, \theta^s) - L(\theta^{s}, \theta^s)] - [H(\theta^{s+1}, \theta^s) - H(\theta^{s}, \theta^s)] \end{align} =i=1∑MlogPθs+1(xi)−i=1∑MlogPθs(xi)[L(θs+1,θs)−L(θs,θs)]−[H(θs+1,θs)−H(θs,θs)]
要证明EM算法的收敛性,我们只需要证明上式的右边是非负的即可。由于 θ s + 1 \theta^{s+1} θs+1 使 L ( θ , θ s ) L(\theta, \theta^s) L(θ,θs) 极大,因此有:
L ( θ s + 1 , θ s ) − L ( θ s , θ s ) ≥ 0 \begin{align} L(\theta^{s+1}, \theta^s) - L(\theta^{s}, \theta^s) \geq 0 \end{align} L(θs+1,θs)−L(θs,θs)≥0
而对于第二部分,我们有:
H ( θ s + 1 , θ s ) − H ( θ s , θ s ) = ∑ i = 1 M ∑ k = 1 K P θ s ( c k ∣ x i ) log P θ s + 1 ( c k ∣ x i ) P θ s ( c k ∣ x i ) ≤ ∑ i = 1 M log ∑ k = 1 K P θ s ( c k ∣ x i ) P θ s + 1 ( c k ∣ x i ) P θ s ( c k ∣ x i ) = ∑ i = 1 M log ∑ k = 1 K P θ s + 1 ( c k ∣ x i ) = 0 \begin{align} H(\theta^{s+1}, \theta^s) - H(\theta^{s}, \theta^s) = & \sum^{M}_{i=1} \sum_{k=1}^{K} P_{\theta^s}(c_k|x_i) \log \frac{P_{\theta^{s+1}}(c_k|x_i)}{P_{\theta^{s}}(c_k|x_i)}\\ \leq & \sum^{M}_{i=1} \log \sum_{k=1}^{K} P_{\theta^s}(c_k|x_i) \frac{P_{\theta^{s+1}}(c_k|x_i)}{P_{\theta^{s}}(c_k|x_i)} \\ = & \sum^{M}_{i=1} \log \sum_{k=1}^{K} P_{\theta^{s+1}}(c_k|x_i) = 0 \end{align} H(θs+1,θs)−H(θs,θs)=≤=i=1∑Mk=1∑KPθs(ck∣xi)logPθs(ck∣xi)Pθs+1(ck∣xi)i=1∑Mlogk=1∑KPθs(ck∣xi)Pθs(ck∣xi)Pθs+1(ck∣xi)i=1∑Mlogk=1∑KPθs+1(ck∣xi)=0
其中(25)式用到了Jensen不等式,只不过和第二节的使用相反而已,第(26)式用到了概率分布累积为1的性质。至此,我们便得到了:
log P θ s + 1 ( x i ) − log P θ s ( x i ) ≥ 0 \begin{align} \log P_{\theta^{s+1}}(x_i) - \log P_{\theta^{s}}(x_i) \geq 0 \end{align} logPθs+1(xi)−logPθs(xi)≥0
进而证明了EM算法的收敛性。
4.2 EM算法如果收敛,那么能保证收敛到全局最大值吗?
从上面的推导不难看出,EM算法可以保证收敛到一个稳定点,但是却不能保证收敛到全局的极大值点,因此它是局部最优的算法,当然,如果我们的优化目标 L ( θ , θ s ) L(\theta, \theta^s) L(θ,θs) 是凸的,则EM算法可以保证收敛到全局最大值,这点和梯度下降法这样的迭代算法相同。
5. 总结
如果我们从算法思想的角度来思考EM算法,我们可以发现:
- 算法里已知的是观察数据,
- 未知的是隐含数据和模型参数,
- 在E步,我们所做的事情是固定模型参数的值,优化隐含数据的分布,
- 而在M步,我们所做的事情是固定隐含数据分布,优化模型参数的值。
比较下其他的机器学习算法,其实很多算法都有类似的思想。比如SMO算法(支持向量机原理(四)SMO算法原理),坐标轴下降法(Lasso回归算法: 坐标轴下降法与最小角回归法小结),都使用了类似的思想来求解问题。
参考
【1】http://www.cnblogs.com/pinard/p/6912636.html