当前位置: 首页 > ds >正文

离散隐藏变量下期望最大化(EM)算法的简化

先导:一般情况下的期望最大化(EM)算法


期望-最大化(EM 算法)是在有“隐藏”变量的模型中实现最大似然估计。EM 算法是一种迭代算法,它保证收敛到似然函数的局部最大值。

X X X表示观测随机变量, Z Z Z表示隐随机变量。 X X X Z Z Z一起称为完全数据(complete-data),观测数据 X X X又称为不完全数据(incomplete-data)。假设给定观测数据 X X X,其概率分布是 P ( X ∣ θ ) P(X\mid\theta) P(Xθ),其中 θ \theta θ是需要估计的模型参数,那么不完全数据 X X X的似然函数是 P ( X ∣ θ ) P(X\mid\theta) P(Xθ),对数似然函数 L ( θ ; X ) = ln ⁡ P ( X ∣ θ ) L(\theta;X) = \ln P(X\mid\theta) L(θ;X)=lnP(Xθ);假设 X X X Z Z Z的联合概率分布是 P ( X , Z ∣ θ ) P(X,Z\mid\theta) P(X,Zθ),那么完全数据的对数似然函数是 L ( θ ; X , Z ) = ln ⁡ P ( X , Z ∣ θ ) L(\theta;X,Z) =\ln P(X,Z\mid\theta) L(θ;X,Z)=lnP(X,Zθ)

EM 算法通过迭代求 L ( θ ) = ln ⁡ P ( X ∣ θ ) L(\theta) = \ln P(X\mid\theta) L(θ)=lnP(Xθ)的极大似然估计。每次迭代包含两步:E 步,求期望;M 步,求极大化。

为了简化,假设 Z Z Z 是离散的(这是 GMM 中的情况)。

由于 Z Z Z 不可直接获得,因此完全似然 P ( X , Z ∣ θ ) P(X,Z\mid\theta) P(X,Zθ) 也不是直接可用的,EM 算法提出考虑替代函数

Q ( θ ∣ X , θ ( i ) ) = E Z ( L ( θ ; X , Z ) ∣ X , θ ( i ) ) = E Z [ ln ⁡ P ( X , Z ∣ θ ) ∣ X , θ ( i ) ] = ∑ Z ln ⁡ P ( X , Z ∣ θ ) P ( Z ∣ X , θ ( i ) ) (13) \begin{aligned}Q(\theta \mid X,\theta^{(i)}) &={E}_Z (L(\theta; X, Z) \mid X, \theta^{(i)}) \\&= E_Z[\ln P(X, Z \mid \theta) \mid X, \theta^{(i)}]\\ &= \sum_Z \ln P(X, Z \mid \theta) P(Z \mid X, \theta^{(i)}) \tag{13} \end{aligned} Q(θX,θ(i))=EZ(L(θ;X,Z)X,θ(i))=EZ[lnP(X,Zθ)X,θ(i)]=ZlnP(X,Zθ)P(ZX,θ(i))(13)

其中, θ ( i ) \theta^{(i)} θ(i) θ \theta θ 的当前估计。式 (13) 中的分数 Q ( θ ∣ X , θ ( i ) ) Q(\theta \mid X,\theta^{(i)}) Q(θX,θ(i)) P ( X , Z ∣ θ ) P(X,Z\mid\theta) P(X,Zθ) 在当前的估计值 θ ( i ) \theta^{(i)} θ(i) 下,对于给定 X X X Z Z Z 的条件分布的期望值。因此,未知的隐藏变量 Z Z Z 被期望“平均化”了。


式 (9) 的函数 Q ( θ ∣ X , θ ( i ) ) Q(\theta \mid X,\theta^{(i)}) Q(θX,θ(i))是 EM 算法的核心,称为 Q Q Q函数 ( Q Q Q function)。

定义 1 ( Q Q Q函数) 完全数据的对数似然函数 ln ⁡ P ( X , Z ∣ θ ) \ln P(X, Z \mid \theta) lnP(X,Zθ)关于在给定观测数据 X X X和当前参数 θ ( i ) \theta^{(i)} θ(i)下对未观测数据 Z Z Z的条件概率分布 P ( Z ∣ X , θ ( i ) ) P(Z \mid X, \theta^{(i)}) P(ZX,θ(i))的期望称为 Q Q Q函数,即
Q ( θ ∣ X , θ ( i ) ) = E Z [ ln ⁡ P ( X , Z ∣ θ ) ∣ X , θ ( i ) ] (11) Q(\theta \mid X,\theta^{(i)})= E_Z[\ln P(X, Z \mid \theta) \mid X, \theta^{(i)}] \tag{11} Q(θX,θ(i))=EZ[lnP(X,Zθ)X,θ(i)](11)


式 (13) 关于 θ \theta θ 的最大化:

θ ( i + 1 ) = arg ⁡ max ⁡ θ Q ( θ ∣ X , θ ( i ) ) (14) \theta^{(i+1)} = \arg \max_{\theta} Q(\theta \mid X,\theta^{(i)}) \tag{14} θ(i+1)=argθmaxQ(θX,θ(i))(14)

θ ( i + 1 ) \theta^{(i+1)} θ(i+1)必然提高了对数似然(待证明),即 L ( θ ( i + 1 ) ) > L ( θ ( i ) ) L(\theta^{(i+1)}) > L(\theta^{(i)}) L(θ(i+1))>L(θ(i)),除非其已经达到 L ( θ ) L(\theta) L(θ) 的局部最大值,在这种情况下, L ( θ ( i + 1 ) ) = L ( θ ( i ) ) L(\theta^{(i+1)}) = L(\theta^{(i)}) L(θ(i+1))=L(θ(i))

EM 算法最初猜想 θ = θ ( 0 ) \theta = \theta^{(0)} θ=θ(0),然后在估计 θ ( i ) \theta^{(i)} θ(i) 的当前值计算式 (13)(称为“E 步”)和最大化式 (14) 这两个步骤之间迭代,以得到下一个估计 θ ( i + 1 ) \theta^{(i+1)} θ(i+1)


算法 离散隐藏变量下的期望-最大化 (EM)算法

输入: 观测变量数据 X X X, 隐变量数据 Z Z Z, 联合分布 P ( X , Z ∣ θ ) P(X, Z \mid \theta) P(X,Zθ), 条件分布 P ( Z ∣ X , θ ) P(Z \mid X, \theta) P(ZX,θ);
输出: 模型参数 θ \theta θ

  1. 初始化 θ ( 0 ) \theta^{(0)} θ(0) τ > 0 \tau > 0 τ>0
  2. repeat
  3. E 步:计算 Q ( θ ∣ X , θ ( i ) ) Q(\theta \mid X,\theta^{(i)}) Q(θX,θ(i))

Q ( θ ∣ X , θ ( i ) ) = E Z [ ln ⁡ P ( X , Z ∣ θ ) ∣ X , θ ( i ) ] = ∑ Z ln ⁡ P ( X , Z ∣ θ ) P ( Z ∣ X , θ ( i ) ) \begin{aligned} Q(\theta \mid X,\theta^{(i)}) &= E_Z[\ln P(X, Z \mid \theta) \mid X, \theta^{(i)}]\\ &= \sum_Z \ln P(X, Z \mid \theta) P(Z \mid X, \theta^{(i)}) \end{aligned} Q(θX,θ(i))=EZ[lnP(X,Zθ)X,θ(i)]=ZlnP(X,Zθ)P(ZX,θ(i))

这里, P ( Z ∣ X , θ ( i ) ) P(Z \mid X, \theta^{(i)}) P(ZX,θ(i))是在给定观测数据 X X X和当前的参数估计 θ ( i ) \theta^{(i)} θ(i)下隐变量数据 Z Z Z的条件概率分布;

  1. M 步:求使 Q ( θ ∣ X , θ ( i ) ) Q(\theta \mid X,\theta^{(i)}) Q(θX,θ(i))极大化的 θ \theta θ,更新参数

θ ( i + 1 ) = arg ⁡ max ⁡ θ Q ( θ ∣ X , θ ( i ) ) \theta^{(i+1)} = \arg \max_{\theta} Q(\theta \mid X,\theta^{(i)}) θ(i+1)=argθmaxQ(θX,θ(i))

  1. 计算对数似然:

L ( θ ( i + 1 ) ) = ln ⁡ P ( X ∣ θ ( i + 1 ) ) L(\theta^{(i+1)}) = \ln P(X \mid \theta^{(i+1)}) L(θ(i+1))=lnP(Xθ(i+1))

  1. until ∣ L ( θ ( i + 1 ) ) − L ( θ ( i ) ) ∣ < τ |L(\theta^{(i+1)}) - L(\theta^{(i)})| < \tau L(θ(i+1))L(θ(i))<τ

http://www.xdnf.cn/news/14609.html

相关文章:

  • LeetCode 第77题:组合
  • SimpleQtLogger 使用总结
  • 深入理解滑动窗口算法:原理、应用与 C++ 实现
  • C# 事件详解
  • React组件通信——发布订阅(pub/sub)
  • 紧急救援!Ubuntu崩溃修复大赛
  • 在Qt中使用OpenGL显示大量点(点云)
  • 136. 只出现一次的数字
  • 算法题(力扣每日一题)—改变一个整数能得到的最大差值
  • Arthas 全面学习指南
  • 动手实践:LangChain流图可视化全解析
  • [从0到1]环境准备--anaconda与pycharm的安装
  • Linux系统firewall-offline-cmd命令在企业网络安全防护中的应用案例分析
  • 图形编辑器基于Paper.js教程29:基于图层的所有矢量图元的填充规则实现
  • 【C++】list容器实现
  • Lighthouse与首屏优化
  • 【看到哪里写到哪里】如何在C中使用多进程设计(1)
  • STM32 开发 - STM32CubeMX 下载芯片支持包、创建 HAL 库工程
  • 牙科医疗设备EMC电磁兼容技术讨论
  • 数列的极限
  • 推荐标注数据标注
  • 【精选】计算机毕业设计基于SpringBoot高校社团管理系统 社团信息维护 活动发布报名 成员审核与公告发布平台源码+论文+PPT+讲解
  • Git(三) Git 分支工作流管理模型探究与实践
  • 电容篇---常见作用
  • Apache Iceberg与Hive集成:分区表篇
  • StarRocks Community Monthly Newsletter (May)
  • JavaScript中Date对象用法详解
  • 深入实践Caffeine+Redis两级缓存架构:从原理到高可用设计
  • 「Linux文件及目录管理」文件及目录操作类命令
  • Grdle版本与Android Gradle Plugin版本, Android Studio对应关系