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

EM算法中的Q函数:从三硬币模型到实际应用的完整推导指南

EM算法中的Q函数从三硬币模型到实际应用的完整推导指南在机器学习领域我们常常会遇到数据不完整或存在隐变量的情况。这时传统的最大似然估计方法往往难以直接应用。EMExpectation-Maximization算法作为一种强大的迭代优化工具能够优雅地处理这类问题。而理解EM算法的核心关键在于掌握其灵魂——Q函数。1. EM算法与Q函数基础想象一下你有一袋混合了不同硬币抛掷结果的数据但不知道每次抛掷具体用了哪枚硬币。这就是典型的隐变量问题。EM算法通过交替执行两个步骤来解决这类问题E步期望步基于当前参数估计计算隐变量的条件概率分布M步最大化步基于E步的结果更新模型参数Q函数正是在E步中计算得到的完全数据对数似然函数的期望值。数学上表示为Q(θ,θ⁽ⁱ⁾) E_Z[log P(Y,Z|θ)|Y,θ⁽ⁱ⁾]其中θ⁽ⁱ⁾是第i次迭代的参数估计Y是观测数据Z是隐变量注意Q函数不是凭空定义的而是从最大化不完全数据似然函数的过程中自然推导出来的。2. 从三硬币模型看Q函数推导三硬币模型是理解EM算法的经典案例。假设有三个硬币A、B、C其正面朝上的概率分别为π、p、q。实验过程为抛硬币A若A为正面抛B否则抛C记录最终结果B或C的结果重复n次我们观察到的是B/C的结果序列但不知道每次实验实际使用的是B还是C这就是隐变量。2.1 不完全数据似然函数对于n次观测Y(y₁,...,yₙ)似然函数为L(θ) log P(Y|θ) Σ log[πp^yᵢ(1-p)^(1-yᵢ) (1-π)q^yᵢ(1-q)^(1-yᵢ)]这个式子由于log内部有求和直接求导最大化非常困难。2.2 引入Q函数定义隐变量zᵢ表示第i次实验使用的是B(zᵢ1)还是C(zᵢ0)。完全数据似然函数为P(Y,Z|θ) Π [πp^yᵢ(1-p)^(1-yᵢ)]^zᵢ [(1-π)q^yᵢ(1-q)^(1-yᵢ)]^(1-zᵢ)取对数后log P(Y,Z|θ) Σ zᵢ[logπ yᵢlogp (1-yᵢ)log(1-p)] (1-zᵢ)[log(1-π) yᵢlogq (1-yᵢ)log(1-q)]Q函数即为上述表达式关于Z的条件期望Q(θ,θ⁽ⁱ⁾) E[log P(Y,Z|θ)|Y,θ⁽ⁱ⁾]2.3 E步计算期望计算zᵢ的期望即在当前参数θ⁽ⁱ⁾下zᵢ1的概率μᵢ⁽ⁱ⁾ E[zᵢ|yᵢ,θ⁽ⁱ⁾] P(zᵢ1|yᵢ,θ⁽ⁱ⁾) π⁽ⁱ⁾ p⁽ⁱ⁾^yᵢ (1-p⁽ⁱ⁾)^(1-yᵢ) / [π⁽ⁱ⁾ p⁽ⁱ⁾^yᵢ (1-p⁽ⁱ⁾)^(1-yᵢ) (1-π⁽ⁱ⁾) q⁽ⁱ⁾^yᵢ (1-q⁽ⁱ⁾)^(1-yᵢ)]因此Q函数可表示为Q(θ,θ⁽ⁱ⁾) Σ μᵢ⁽ⁱ⁾[logπ yᵢlogp (1-yᵢ)log(1-p)] (1-μᵢ⁽ⁱ⁾)[log(1-π) yᵢlogq (1-yᵢ)log(1-q)]2.4 M步参数更新最大化Q函数对各个参数求导并令导数为0对ππ⁽ⁱ⁺¹⁾ (Σ μᵢ⁽ⁱ⁾)/n对pp⁽ⁱ⁺¹⁾ Σ μᵢ⁽ⁱ⁾ yᵢ / Σ μᵢ⁽ⁱ⁾对qq⁽ⁱ⁺¹⁾ Σ (1-μᵢ⁽ⁱ⁾) yᵢ / Σ (1-μᵢ⁽ⁱ⁾)3. Q函数的数学本质为什么Q函数能有效提升似然函数这背后有着严谨的数学解释。3.1 琴生不等式与下界函数对于任意分布q(Z)根据琴生不等式log P(Y|θ) log Σ P(Y,Z|θ) log Σ q(Z) P(Y,Z|θ)/q(Z) ≥ Σ q(Z) log[P(Y,Z|θ)/q(Z)]当q(Z)P(Z|Y,θ⁽ⁱ⁾)时这个下界紧贴当前似然函数。3.2 Q函数与下界最大化定义下界函数B(θ,θ⁽ⁱ⁾) Σ P(Z|Y,θ⁽ⁱ⁾) log P(Y,Z|θ) - Σ P(Z|Y,θ⁽ⁱ⁾) log P(Z|Y,θ⁽ⁱ⁾)其中第一项就是Q函数。因此最大化Q函数等价于最大化这个下界。3.3 EM算法的收敛性因为每次迭代E步使下界等于当前似然M步提升下界从而保证似然函数不降这种性质确保了EM算法能收敛到局部最优。4. Q函数在实际应用中的变体不同场景下Q函数的具体形式会有所变化但核心思想不变。4.1 高斯混合模型对于K个高斯分布的混合模型Q函数为Q(θ,θ⁽ⁱ⁾) Σ Σ γₖᵢ⁽ⁱ⁾ [logπₖ log N(xᵢ|μₖ,Σₖ)]其中γₖᵢ⁽ⁱ⁾是第i个样本属于第k个高斯分布的后验概率。4.2 隐马尔可夫模型在HMM的参数学习中Q函数涉及状态转移期望计数观测发射期望计数初始状态分布4.3 含缺失数据的问题当数据有缺失时可将缺失部分视为隐变量Q函数即为完整数据对数似然关于观测数据的条件期望。5. 实现Q函数的实用技巧5.1 数值稳定性计算Q函数时常遇到小概率相乘导致下溢的问题。实用技巧包括使用log-sum-exp技巧在log空间进行计算添加微小常数防止零概率# log-sum-exp示例 def log_sum_exp(x): x_max np.max(x) return x_max np.log(np.sum(np.exp(x - x_max)))5.2 加速收敛方法标准EM可能收敛慢可尝试增加EM在M步不完全最大化只保证Q函数增加随机化EM每次迭代随机选择部分数据在线EM逐步处理数据5.3 处理局部最优EM易陷入局部最优解决方案多随机初始化使用模拟退火结合全局优化方法提示在实际应用中监控似然函数或参数的变化量是判断收敛的有效方法。6. Q函数与变分推断的关系当E步中P(Z|Y,θ⁽ⁱ⁾)难以计算时可用变分分布q(Z)近似log P(Y|θ) ≥ E_q[log P(Y,Z|θ)] - E_q[log q(Z)] ELBO这时最大化证据下界(ELBO)相当于广义的EM算法。6.1 变分EM框架变分E步固定θ优化q最大化ELBOM步固定q优化θ最大化ELBO6.2 平均场近似假设q(Z)可分解q(Z) Π qᵢ(Zᵢ)然后交替优化每个qᵢ。7. 前沿进展与扩展现代研究中Q函数的概念被扩展到更广泛的场景随机EM使用蒙特卡洛方法近似E步分布式EM处理大规模数据深度EM结合神经网络表示分布例如VAE变分自编码器可以看作是在神经网络参数化下的EM算法。

相关文章:

EM算法中的Q函数:从三硬币模型到实际应用的完整推导指南

EM算法中的Q函数:从三硬币模型到实际应用的完整推导指南 在机器学习领域,我们常常会遇到数据不完整或存在隐变量的情况。这时,传统的最大似然估计方法往往难以直接应用。EM(Expectation-Maximization)算法作为一种强大…...

RT-Thread SPI设备封装实战:如何正确关联rt_spi_send与自定义write函数

RT-Thread SPI设备封装实战:从底层关联到复合设备设计 在嵌入式开发中,SPI总线因其高速、全双工的特性成为连接外设的常用选择。但当我们需要将SPI设备与其他功能模块(如GPIO控制)整合为一个复合设备时,如何正确封装底…...

打卡信奥刷题(2995)用C++实现信奥题 P6146 [USACO20FEB] Help Yourself G

P6146 [USACO20FEB] Help Yourself G 题目描述 在一个数轴上有 NNN 条线段,第 iii 条线段覆盖了从 lil_ili​ 到 rir_iri​ 的所有实数(包含 lil_ili​ 和 rir_iri​)。 定义若干条线段的并为一个包含了所有被至少一个线段覆盖的点的集合。 定…...

OpenWrt路由器破解校园网限速:基于深澜(srun)认证的百兆宽带满速实战

1. 校园网限速背后的技术原理 校园网限速这个问题困扰过无数学生党,我自己当年也是受害者之一。明明办理的是百兆宽带,实际测速却只有10M左右,看个高清视频都卡顿。这背后的技术原理其实很简单:学校通常会在认证计费系统里对不同接…...

Python实战:5分钟用OpenSSL自签名证书保护你的C/S应用(附完整代码)

Python实战:5分钟用OpenSSL自签名证书保护你的C/S应用(附完整代码) 在开发客户端/服务器(C/S)应用时,数据传输安全往往是最容易被忽视的环节。许多开发者习惯在测试环境中使用明文通信,等到上线…...

Java charAt 方法与字符编码变换实践

本文深入探讨了Java方法decrString,该方法利用charAt获取字符串字符,并根据字符索引的奇偶加减ASCII值,以实现简单的字符编码转换。本文详细分析了该方法的实现原理和字符算术的特点,并通过具体的例子显示了其转换效果&#xff0c…...

如何为Java初学者配置最简洁的开发环境

对于Java初学者来说,配置开发环境不需要复杂的工具堆叠。重点是快速启动,减少干扰,专注于语法和编程思维的学习。最简单的环境只有三个部分:简化JDK、轻量级编辑器,基本命令行操作。 选择适合初学者的JDK版本和发行版…...

保姆级教程:用ROS Noetic在Ubuntu 20.04上配置RealSense D455与机械臂手眼标定(附常见错误排查)

ROS Noetic环境下RealSense D455与机械臂手眼标定实战指南 环境准备与基础配置 在Ubuntu 20.04系统中配置ROS Noetic与RealSense D455相机的开发环境是构建eye-in-hand视觉系统的第一步。与常见的D435系列不同,D455作为升级型号,在深度精度和IMU性能上都…...

Java中如何使用Scanner读取输入数据

位于Java的Scanner类是Java中读取用户输入的常用工具.util包中。创建Scanner实例,并将其传输到System。.in,nextint()可以使用、nextDouble()等方法读取基本数据类型;读取空格字符串需要nextline(),但要注意nextline()后需要调用n…...

Spring新手必看:IOC容器中Bean的5个关键操作(含containsBean使用场景)

Spring新手必看:IOC容器中Bean的5个关键操作(含containsBean使用场景) Spring框架作为Java生态中最受欢迎的轻量级容器,其核心机制IOC(控制反转)彻底改变了我们管理对象依赖的方式。对于刚接触Spring的开发…...

黑盒 vs 白盒测试:5个真实项目案例教你如何选择测试方法

黑盒与白盒测试实战指南:5个行业案例解析方法论选择 在软件质量保障领域,测试方法的选择往往决定着缺陷检测效率和项目交付质量。当金融系统的转账功能出现逻辑错误时,当电商促销活动页面突然崩溃时,背后往往存在着测试策略的失误…...

从零到一:手把手教你用Android Studio离线打包UniApp安卓应用

1. 环境准备:搭建离线打包的基础设施 第一次接触UniApp离线打包时,最让人头疼的就是环境配置。记得我刚开始尝试时,光是安装Android Studio就反复折腾了三遍。这里我会把踩过的坑都帮你避开,让你一次性搞定所有依赖。 首先需要准备…...

好用还专业!10个降AIGC软件全学科适配测评,帮你高效降AI率

在学术写作日益依赖AI工具的今天,论文的AIGC率问题逐渐成为学生和研究者关注的焦点。如何在保持原文语义通顺的前提下有效降低AI痕迹,成为了论文修改过程中不可忽视的一环。AI降重工具的出现,正是为了解决这一难题。它们通过智能算法识别并优…...

实测才敢推!全领域适配降重神器 —— 千笔·专业降AIGC智能体

在AI技术快速发展的今天,越来越多的学生和研究人员开始依赖AI工具辅助论文写作,提升效率与质量。然而,随之而来的AI生成内容痕迹过重、查重率偏高问题也日益凸显。面对知网、维普、万方等平台对AI内容的严格检测,以及Turnitin对AI…...

降重压力小了!全领域适配的降AIGC神器 —— 千笔

在AI技术迅猛发展的今天,越来越多的学生和研究人员开始依赖AI工具进行论文写作,以提高效率和质量。然而,随着学术审核标准的不断提升,AI生成内容的痕迹越来越容易被检测出来,导致论文出现“AI率超标”问题,…...

Outlookmail Plus

链接:https://pan.quark.cn/s/0d68dd538fae用于统一管理 Outlook / IMAP 邮箱账号、读取邮件、提取验证码,并支持邮箱池调度的 Web 项目(or 注册机...

KRed播放器

链接:https://pan.quark.cn/s/1b70ab9353cf软件功能:音视频播放器支持平台:#Windows软件简介:一款免费的音视频播放器,兼容MP4、MKV、AVI、MOV等主流视频格式,以及MP3、FLAC、APE、AAC等无损音频&#xff0…...

Midscene:浏览器自动化的革新者与效率引擎

Midscene:浏览器自动化的革新者与效率引擎 【免费下载链接】midscene Let AI be your browser operator. 项目地址: https://gitcode.com/GitHub_Trending/mid/midscene 你是否曾因重复的网页操作而感到厌倦?当面对需要定期执行的浏览器任务时&am…...

不用UI组件也能搞定!纯CSS实现文字省略号+悬浮显示完整内容(附代码)

纯CSS实现文字截断与悬浮提示:轻量级前端开发实战 在快节奏的前端开发中,我们常常需要在有限空间内展示大段文本。传统解决方案往往依赖UI组件库的Tooltip或Popover功能,但这会引入额外的依赖和性能开销。本文将深入探讨如何仅用CSS和原生HTM…...

壁纸下载网站

链接:https://pan.quark.cn/s/e6f051577797收录有游戏、电影、汽车、自然风光、动漫、抽象艺术等多种类型的壁纸,提供多种分辨率如1080P、2K、4K甚至8K,并且所有壁纸都可以免费下载。...

“基于matlab字符匹配的车牌识别系统”(含GUI界面与详细代码,可做学习参考及包含视频教程

基于matlab字符匹配的车牌识别系统 【车牌识别】基于计算机视觉,数字图像处理,模板匹配算法(含GUI界面) 系统内数据库丰富,车牌识别速度快,并包含识别率检测功能,目前识别率可达到73% 代码系统完…...

网络安全加固:AI头像生成器API防护策略

网络安全加固:AI头像生成器API防护策略 1. 引言:AI头像生成器的安全挑战 最近AI头像生成器真是火得不行,各种应用都在集成这个功能。用户上传一张照片,几秒钟就能生成各种风格的专业头像,从卡通动漫到写实风格&#…...

保姆级避坑指南:一次通过OceanBase OBCA线上考试的10个关键细节(含设备/网络/监考)

保姆级避坑指南:一次通过OceanBase OBCA线上考试的10个关键细节(含设备/网络/监考) 1. 设备准备:别让硬件问题毁掉你的考试 参加OBCA线上考试,设备是第一个需要严格把关的环节。很多考生因为忽略了一些看似简单的细节…...

开发者必备:OpenClaw+Qwen3-32B实现日志分析与错误排查

开发者必备:OpenClawQwen3-32B实现日志分析与错误排查 1. 为什么需要自动化日志分析 作为一个长期与日志打交道的开发者,我经历过太多深夜排查问题的痛苦时刻。某次线上事故中,我花了整整三个小时人工筛选2GB的Nginx日志,最终发…...

Vitis 2023.2实战:从XSA到Linux应用程序的完整开发流程(附常见错误排查)

Vitis 2023.2实战:从XSA到Linux应用程序的完整开发流程(附常见错误排查) 在嵌入式系统开发领域,Xilinx的Vitis工具链为FPGA开发者提供了从硬件设计到软件开发的完整解决方案。本文将深入探讨如何利用Vitis 2023.2版本,…...

Claude Code 分布式并行开发最佳实践:1中枢+10Worker跨多Git仓库全流程落地

Claude Code 分布式并行开发最佳实践:1中枢+10Worker跨多Git仓库全流程落地 在多仓库、微服务、全栈开发的场景下,开发者常面临「多任务并行开发冲突、跨仓库依赖难协调、分支污染风险高、AI编码效率低」等核心痛点。本文基于 Claude Code 原生能力 + Git Worktree 隔离机制…...

《ShardingSphere解读》13 路由引擎:如何理解分片路由核心类 ShardingRouter 的运作机制?

前面我们对 ShardingSphere 中的 SQL 解析引擎做了介绍,我们明白 SQL 解析的作用就是根据输入的 SQL 语句生成一个 SQLStatement 对象。 从今天开始,我们将进入 ShardingSphere 的路由(Routing)引擎部分的源码解析。从流程上讲&am…...

Z-Image-GGUF部署教程:SSH端口转发+本地浏览器访问远程服务器完整流程

Z-Image-GGUF部署教程:SSH端口转发本地浏览器访问远程服务器完整流程 📝 最后更新:2026年2月26日 🎨 基于阿里通义实验室 Z-Image 模型 🔧 GGUF 量化版本,低显存友好 1. 快速开始:30秒上手文生图…...

vs code , 配置 claude code 插件, 默认选项 : --dangerously-skip-permission

文章目录 一、核心配置步骤(含风险提醒) 方式1:通过VS Code图形界面配置(新手友好) 方式2:直接编辑settings.json(精准配置) 验证配置是否生效 二、关键注意事项 总结 一、核心配置步骤(含风险提醒) 首先需要明确:--dangerously-skip-permission 是 Claude Code 插…...

DVWA 靶场实战:从零到一的 Web 安全攻防演练

1. DVWA靶场入门:Web安全攻防演练环境搭建 第一次接触DVWA时,我花了两小时才把环境跑起来。这个用PHP/MySQL编写的漏洞演练平台,简直是安全初学者的宝藏。下面分享我的踩坑经验,帮你10分钟搞定环境搭建。 核心组件准备&#xff1a…...