【有啥问啥】复习变分下界即证据下界(Evidence Lower Bound, ELBO):原理与应用

news2024/11/16 15:44:40

ELBO

复习变分下界即证据下界(Evidence Lower Bound, ELBO):原理与应用

变分下界(Variational Lower Bound),也称为“证据下界”(Evidence Lower Bound, ELBO),是概率模型中的一个重要概念,广泛用于变分推断(Variational Inference, VI)等领域。变分推断是一种近似推断方法,它通过将复杂的后验分布用一个易于处理的分布来近似,从而使得计算变得可行。变分下界是推导和优化这个近似分布的核心工具。本文将复习变分下界的基本概念、推导过程及其在机器学习中的应用。

1. 概念背景

在贝叶斯推断框架中,我们通常希望根据观测数据 x x x 来推断潜在变量 z z z 的后验分布 p ( z ∣ x ) p(z|x) p(zx)。后验分布的计算通常依赖于边缘似然(Marginal Likelihood):

p ( x ) = ∫ p ( x ∣ z ) p ( z )   d z p(x) = \int p(x|z) p(z) \, dz p(x)=p(xz)p(z)dz

这个积分通常非常复杂,因此直接计算 p ( z ∣ x ) p(z|x) p(zx) 并不现实。为了解决这一问题,变分推断通过引入一个近似分布 q ( z ) q(z) q(z) 来逼近后验分布 p ( z ∣ x ) p(z|x) p(zx),并通过最优化使得 q ( z ) q(z) q(z) 尽可能接近 p ( z ∣ x ) p(z|x) p(zx)

衡量 q ( z ) q(z) q(z) p ( z ∣ x ) p(z|x) p(zx) 之间的差异最常用的工具是 KL 散度(Kullback-Leibler divergence):

KL ( q ( z ) ∥ p ( z ∣ x ) ) = ∫ q ( z ) log ⁡ q ( z ) p ( z ∣ x ) d z \text{KL}(q(z) \parallel p(z|x)) = \int q(z) \log \frac{q(z)}{p(z|x)} dz KL(q(z)p(zx))=q(z)logp(zx)q(z)dz

KL 散度是非负的,并且只有在 q ( z ) = p ( z ∣ x ) q(z) = p(z|x) q(z)=p(zx) 时才为零。通过最小化 KL 散度,我们可以找到最优的 q ( z ) q(z) q(z)

2. 变分下界的推导

为了推导变分下界,我们从边缘似然的对数形式开始:

log ⁡ p ( x ) = log ⁡ ∫ p ( x ∣ z ) p ( z ) d z \log p(x) = \log \int p(x|z) p(z) dz logp(x)=logp(xz)p(z)dz

直接计算这一积分非常困难,因此我们引入 q ( z ) q(z) q(z) 并利用 Jensen 不等式,得到:

log ⁡ p ( x ) ≥ ∫ q ( z ) log ⁡ p ( x , z ) q ( z ) d z \log p(x) \geq \int q(z) \log \frac{p(x, z)}{q(z)} dz logp(x)q(z)logq(z)p(x,z)dz

右侧的表达式就是变分下界,即 ELBO。通过最大化这个下界,我们可以优化 q ( z ) q(z) q(z) 使其尽量接近后验分布 p ( z ∣ x ) p(z|x) p(zx)

进一步地,变分下界可以拆分为以下两部分:

L ( q ) = E q ( z ) [ log ⁡ p ( x ∣ z ) ] − KL ( q ( z ) ∥ p ( z ) ) \mathcal{L}(q) = \mathbb{E}_{q(z)}[\log p(x|z)] - \text{KL}(q(z) \parallel p(z)) L(q)=Eq(z)[logp(xz)]KL(q(z)p(z))

  • 第一项 E q ( z ) [ log ⁡ p ( x ∣ z ) ] \mathbb{E}_{q(z)}[\log p(x|z)] Eq(z)[logp(xz)] 是对数似然的期望,衡量模型对观测数据的拟合能力。
  • 第二项 KL ( q ( z ) ∥ p ( z ) ) \text{KL}(q(z) \parallel p(z)) KL(q(z)p(z)) 则衡量近似分布和先验分布之间的距离。

最大化 ELBO 使得近似分布 q ( z ) q(z) q(z) 同时具备良好的数据拟合能力,并不会偏离先验分布太多。

3. 变分下界的应用

(1) 变分自编码器(Variational Autoencoder, VAE

VAE 是变分推断在深度学习中的一个重要应用。它使用神经网络来参数化近似分布 q ( z ∣ x ) q(z|x) q(zx) 和生成分布 p ( x ∣ z ) p(x|z) p(xz),并通过最大化变分下界来训练模型。VAE 的目标函数为:

L ( q ) = E q ( z ∣ x ) [ log ⁡ p ( x ∣ z ) ] − KL ( q ( z ∣ x ) ∥ p ( z ) ) \mathcal{L}(q) = \mathbb{E}_{q(z|x)}[\log p(x|z)] - \text{KL}(q(z|x) \parallel p(z)) L(q)=Eq(zx)[logp(xz)]KL(q(zx)p(z))

其中,VAE 利用 重参数化技巧(Reparameterization Trick)来确保梯度能够正常反向传播,这一技巧是 VAE 的核心技术之一。

  • 传送门链接: 变分自编码器(Variational Autoencoder, VAE):深入理解与应用

(2) 无监督学习与 LDA

在主题模型如隐含狄利克雷分配(LDA)中,变分推断用于近似推断文档的主题分布。通过优化变分下界,LDA 能够有效地提取文档的潜在结构,并应用于推荐系统和文本分析等领域。

(3) 贝叶斯神经网络

贝叶斯神经网络通过引入变分推断来近似神经网络中的权重后验分布,这种方法能够有效量化模型的不确定性,从而增强泛化能力,特别适用于强化学习和决策系统。

4. 变分下界的局限性与改进

近似分布的限制

变分推断中,选择较为简单的分布(如高斯分布)来近似真实后验,可能无法准确描述复杂的后验分布。为了应对这个问题,基于流的方法(Flow-based Variational Inference)通过引入可逆神经网络增强了近似分布的表现力。

局部最优问题

由于优化的非凸性,变分推断容易陷入局部最优。针对这一问题,研究者提出了更多基于采样的方法,如 Monte Carlo 变分推断,以提高近似的质量。

5. 总结

变分下界是变分推断的核心工具,它通过最大化下界来找到近似的后验分布,使得复杂的推断问题变得可解。尽管变分下界在一些场景中存在局限性,但它仍然是生成模型、贝叶斯方法和无监督学习中的重要组成部分。随着算法的改进,变分推断及其下界的应用将会更加广泛。

参考文献

  1. Kingma, D.P., Welling, M. (2014). Auto-Encoding Variational Bayes. ICLR.
  2. Blei, D.M., Kucukelbir, A., McAuliffe, J.D. (2017). Variational Inference: A Review for Statisticians. J. of the American Statistical Association.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2133757.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Golang | Leetcode Golang题解之第403题青蛙过河

题目&#xff1a; 题解&#xff1a; func canCross(stones []int) bool {n : len(stones)dp : make([][]bool, n)for i : range dp {dp[i] make([]bool, n)}dp[0][0] truefor i : 1; i < n; i {if stones[i]-stones[i-1] > i {return false}}for i : 1; i < n; i {…

产品探秘|开物——面向AI原生和云原生网络研究的首选科研平台

在当今高速发展的信息技术领域&#xff0c;特别是对于那些致力于前沿科技探索与实践的高校而言&#xff0c;拥有一款能够支持复杂网络业务研究与开发的平台至关重要。开物™数据网络开发平台&#xff08;Data Network Development Platform&#xff0c;简称DNDP&#xff09;&am…

el-input 只能输入数字和一个小数点,或者只能输入正整数

只能输入框只能输入正整数&#xff0c;输入同时禁止了以0开始的数字输入&#xff0c;防止被转化为其他进制的数值。 下面为案例&#xff1a; <!-- 不能输入零时--> <input typetext oninput"valuevalue.replace(/^(0)|[^\d]/g,)"><!-- 能输入零时-…

const 声明变量 报错Missing initializer in const declaration

近日用const 声明一个变量发现一个问题&#xff0c;如果声明的同时没有赋值&#xff0c;就会报错Missing initializer in const declaration 以下是分别以const、let、var声明显示的结果 const 方式声明 const a null const b const c 1 const d 2 const e false console…

Java | Leetcode Java题解之第404题左叶子之和

题目&#xff1a; 题解&#xff1a; class Solution {public int sumOfLeftLeaves(TreeNode root) {if (root null) {return 0;}Queue<TreeNode> queue new LinkedList<TreeNode>();queue.offer(root);int ans 0;while (!queue.isEmpty()) {TreeNode node que…

c++206 友元类

#include<iostream> using namespace std; class A { public://声明的位置 和public private无关friend void modifyA(A* pA, int _a);//函数modifyA是A的好朋友A(int a, int b){this->a a;this->b b;}int getA(){return this->a;} private:int a;int b; };vo…

频带宽度固定,如何突破数据速率的瓶颈?

目录 目录 引言 信道 频带宽度 信噪比 信噪比的重要性 影响信噪比的因素 码元 码元的特点&#xff1a; 码元与比特的关系&#xff1a; 码元的作用&#xff1a; 码元的类型&#xff1a; Question 类比解释&#xff1a; 技术解释&#xff1a; 引言 在现代通信系统中…

Python | Leetcode Python题解之第404题左叶子之和

题目&#xff1a; 题解&#xff1a; class Solution:def sumOfLeftLeaves(self, root: TreeNode) -> int:if not root:return 0isLeafNode lambda node: not node.left and not node.rightq collections.deque([root])ans 0while q:node q.popleft()if node.left:if is…

Tomcat_使用IDEA开发javaWeb工程并部署运用

目录 1.配置文件 点击file projectStructure 配置SDK和language level的语言版本一致。apply然后ok。 2. 然后点击web-all创建一个moudle叫做demo02-web02。 3.这仅仅是一个java的目录结构&#xff0c;我们需要把他转换成javaweb的结构。所以我们需要添加web资源组件。右…

【STM32】独立看门狗(IWDG)原理详解及编程实践(下)

这篇文章详细讲解独立看门狗的编程实践代码。关于独立看门狗的原理及配置可以看上一篇文章。 【STM32】独立看门狗&#xff08;IWDG&#xff09;原理详解及编程实践&#xff08;上&#xff09;-CSDN博客 目录 1、 初始化 IWDG 2. 配置 IWDG 3. 喂狗 4. 处理看门狗复位 5、完…

Google推出Data Commons解决AI“幻觉”

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

SQL进阶技巧:如何将字符串数组清洗为简单map结构? | translate + regexp_replace方法

目录 0 场景描述 1 数据准备 2 问题分析 2.1 方法1 特征法-通用解法 2.2 方法2枚举法(不通用) 3 小结 ~~END~~ 如果觉得本文对你有帮助,那么不妨也可以选择去看看我的博客专栏 ,部分内容如下: 数字化建设通关指南专栏原价99,现在活动价29.9,按照阶梯式增长,直到恢…

C++面试3

一、常用设计模式 https://blog.csdn.net/m0_71530237/article/details/141140118?spm1001.2014.3001.5501 二、死锁以及解决方式&#xff1f; 死锁&#xff1a;一种常见的并发问题&#xff0c;发生在多个进程或线程因为竞争资源而陷入相互等待的状态&#xff0c;导致这些进…

199.二叉树的右视图(两种方法实现)

一、题目 思路1 对于一个任意给定的二叉树&#xff0c;我们不能确定二叉树的形状&#xff1b; 设计一个每次遍历二叉树的右子树的深度优先遍历&#xff0c;这样深度优先遍历中每层遍历到的第一个结点就是最右边的结点&#xff1b; 代码实现大致分为四部分&#xff1a; 哈希…

error:Framework ‘Pods_xxx‘ not found解决方法

报错“Framework Pod_xxx.framework找不到”通常意味着你的项目正在尝试链接或使用一个名为Pod_xxx.framework的框架&#xff0c;但是这个框架并没有被正确地添加到项目中。 解决办法&#xff1a; 1.点击项目蓝色图标&#xff0c;在左侧Target部分&#xff0c;点击你当前的项…

Maven从入门到精通(三)

一、Settings 配置 settings.xml 用来配置 maven 项目中的各种参数文件&#xff0c;包括本地仓库、远程仓库、私服、认证等信息。 全局 settings、用户 setting、pom 的区别&#xff1a; 全局 settings.xml 是 maven 的全局配置文件&#xff0c;一般位于 ${maven.home}/conf…

如何进行大模型训练和微调?(实战)

1、在项目中&#xff0c;如果prompt和function calling足够好&#xff0c;尽量不要微调&#xff0c;节约成本。 以下是针对function calling的slot&#xff0c;评估准确率&#xff08;识别准确度&#xff09;、召回率&#xff08;全面率&#xff09;&#xff0c;F1值。 从中可以…

error: subprocess-exited-with-error

error: subprocess-exited-with-error 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页&#xff0c;我是博主英杰&#xff0c;211科班出身&#xff0c;就职于医疗科技公司&#xff0c;热衷分享知识&#xff0c;武汉城市开发者社区主理人 擅长.net、C、…

论文速递! Attention-LSTM特征融合,用于剩余使用寿命(RUL)预测

论文标题&#xff1a;Machine Remaining Useful Life Prediction via an Attention-Based Deep Learning Approach 期刊信息&#xff1a;IEEE TIE (中科院1区, JCR Q1 TOP, IF7.5) 引用&#xff1a;Chen Z, Wu M, Zhao R, et al. Machine remaining useful life prediction v…

借助Aspose.Email、用C# 渲染 HTML 格式 电子邮件

对于构建电子邮件通信应用程序的开发人员来说&#xff0c;电子邮件渲染对于确保通过应用程序发送的电子邮件在不同的电子邮件客户端、设备和设置中正确且一致地显示至关重要。 为了有效地执行此任务&#xff0c;Aspose.Email for .NET提供了多种功能&#xff0c;用于格式化和自…