EM算法-完整推导

前篇已经对EM过程,举了扔硬币和高斯分布等案例来直观认识了, 目标是参数估计, 分为 E-step 和 M-step, 不断循环, 直到收敛则求出了近似的估计参数, 不多说了, 本篇不说栗子, 直接来推导一波.

Jensen 不等式

在满足:

  • 一个 concave 函数, 即 形状为 "" 的函数 f(x)

  • λj0

  • jλj=1 类似于随机变量的分布

的前提条件下, 则有不等式:

f(jλjxj)jλjf(xj)

恒成立, 则该不等式称为 Jensen 不等式. 是有些不太直观哦, (sum 是最后哦, 有时候会犯晕).

为了更直观一点, 考虑 λ 只有两个值, 即:

λ1=1tλ2=1

,0t1

"" 函数 f(x) 中有一段区间 [a, b], 构造出该 范围内的一个点 xt

当, xt=(1+t)a+tb 则有:

f((1t)a+tb)(1t)f(a)+tf(b)

这里跟之前写过的 convex 其实是一模一样的, 要是还不直观, 就自个画个草图就秒懂了.

左边是函数的值, 右边连接两个端点a,b的函数值的 直线, 因为是 "", 故函数值必然在直线的上方.

用数学归纳法, 当 M > 2:

f(j=1Mλjxj)j=1Mλjf(xj)

EM算法推导

假设给定一个包含 n 个独立的训练样本的数据集, D={x1,x2,x3...xn)} 希望拟合一个概率模型 p(x,z) , 其对数似然函数(log likelihood) 为:

为啥要 log, 乘法变加法, 不太想说了, 自己都重复吐血了

似然, 不加log 前是: l(θ)=i=1np(x;θ) 的嘛, 样本的联合概率最大

l(θ)=i=1nlog p(x;θ)

=i=1nlog zp(x,z;θ)

理解

zp(x,z;θ) 给定 θ 的前提下, 关于 x, z 的 联合概率

跟之前扔硬币是一样的, 对于每个独立数据的产生, 其实还有一个隐含的因素 z (扔硬币中,到底这次试验是来自于硬币A 还是硬币B

每个Z因素, 影响着 p(x,z) 的 联合概率分布. 考虑所有的 z, 则是全概率了呀.

  • 对于 p(x;θ) 直接通过 x 来观测 θ 比较难 (扔硬币中, 没有上帝视角, 不知道扔结果是哪个硬币产生的)
  • z(i) 是一个隐变量(latent), 如果能观测到 z(i) 则参数预测会容易很多, EM算法就是来解决这个问题的

EM 算法呢, 分为两个步骤:

  • 在 E 步中, 构建 l(θ) 的下界函数 (给定 θ 来找 z)
  • 在 M 步中, 最大化 这个下界函数

不太直观, 就回顾上篇扔硬币的栗子, 这里的 z 就是那个 来自哪里A 还是 B 的概率(每次试验)

Qi 为关于 z 的概率分布, 即 zQi(z)=1 (z 如是连续变量则 z) ,

则对于上面的对数似然函数:

=i=1nlog zp(xi,zi;θ) (1)

对 p 的部分, 同时 乘上 和除以 Qi(zi) 不改变等式 , 这种技巧, 中学的 "配平方 或 数列裂项求和" 一样滴

=ilogziQi(zi)p(xi,zi;θ)Qi(zi) (2)

log 函数是 concave 的, 联想 jensen不等式

f(jλjxj)jλjf(xj)

即 log 对于与 f(); ziQi(zi)jλj ; 最后一项对 xj

iziQi(zi) logp(xi,zi;θ)Qi(zi) (3)

就类似与, 把一个, 函数里面的参数, 提取到 函数外面来. 如还是不理解, 回看之前写的 convex 篇

什么时候会取到 等于?

即当 p(xi,zi;θ)Qi(zi)=c 是个常数的时候, (2) 和 (3) 是相等的.

p(xi,zi;θ)=c Qi(zi)θ 给定下, 关于 x, z 的联合概率分布 与 隐变量 z 的分布是一个线性关系

因为 ziQi(zi)=1, 如果将 Qi(zi) 认为是 给定 xizi后验概率分布, 这样就得到了该似然函数的一个下界,

根据全概率(后验) 与贝叶斯公式:

Qi(xi)=p(xi,zi;θ)zip(xi,zi;θ)

=p(xi,zi;θ)p(x;θ)

=p(zi|xi,θ)

相当于求 给定 θxi 的情况下, 求 z_i 的条件概率, 果然, 深刻理解贝叶斯公式显得多么重要呀

再回顾一波贝叶斯公式:

设A1,A2,A3..构成完备事件组, 则对任意一事件B有:

P(Ai|B)=P(Ai)P(B|Ai)i=1nP(Ai)P(B|Ai)

同上述, 只要当我们取 Qi(zi) 的值为 给定 θxi 的后验概率分布的时候, 就能保证:

p(xi,zi;θ)Qi(zi)

的值是一个常数 (反过来推的), 既然是个常数, 也就**前面 (3) 的地方可以取 等号 啦, 即: **

i=1nlog zp(xi,zi;θ)=iziQi(zi) logp(xi,zi;θ)Qi(zi)

这样一来, 相当于在 E 步得到了似然函数的一个下界, 然后在 M 步, 求解(3) 最大值时候的参数 θ . 然后重复以上的 E, M 步骤:

E-步: For each i:

Qi(zi)=p(zi|xi;θ)

M-步, 更新θ:

θ=arg maxθiziQi(zi) logp(xi,zi;θ)Qi(zi)

....

循环直到收敛, 则估计出了 参数 θ 但, 万一不收敛呢?, so, 必须证明一波, EM算法是收敛的哦

证明EM算法会收敛

假设 θ(t)θ(t+1) 为EM算法的连续两个步骤的参数值, 欲证l(θ)收敛, 只需证:

l(θ(t))l(θ(t+1))

即可EM算法使得似然函数的值单调递增即可

根据前面关于用 jensen不等式的取等条件, 推导出, 取得 Qi(zi)(t) 的方式是:

Qi(t)(zi)=p(zi|xi;θ(t))

此条件下, 使得jensen不等式取等即:

l(θ(t))=iziQi(zi) logp(xi,zi;θt)Qi(zi)

而参数 θ(t+1) 的取值方式, 是使得上面的这个等式的值最大, 则必然 l(θ(t+1))l(θ(t)) 展开一波:

l(θ(t+1))iziQit(zi) logp(xi,zi;θ(t+1))Qit(zi) (4)

iziQit(zi) logp(xi,zi;θt)Qit(zi) (5)

=l(θ(t)) (6)

  • (4) 源于不等式的性质, 必然成立嘛
  • (5) 就是取最大值的一个过程必然成立
  • (6) 取相等的方式去是应用了 Jensen不等式

即证明了l(θ(t))l(θ(t+1)) , 即EM算法是收敛的呀.

小结

首先是要理解,参数估计的 是在干嘛, 需要回顾统计学的基础知识, 或理解上篇扔硬币的栗子

核心, 用到了一个jensen 不等式, 需要回顾凸函数的一些性质来理解一波

推导的方式呢, 依旧是极大似然估计, 带log (乘法边加法)

推导核心技巧是 全概率与贝叶斯公式, 真正理解太重要, 如LDA, 逻辑回归, 贝叶斯...这些算法都用到了.

证明收敛, 其实只是一些, 推理的技巧, 还是挺有意思的.

总体上, EM算法, 理解起来,我感觉不是很容易, 但, 也没有想象的那样难, 只要肯坚持, 正如爱因斯坦所说的那样嘛, 当然也为了自勉目前在经济和精神双重困境中的自己:

耐心和恒心, 总会获得收获的

posted @   致于数据科学家的小陈  阅读(1636)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示

目录导航