【通俗理解】ELBO(证据下界)——机器学习中的“情感纽带”

【通俗理解】ELBO(证据下界)——机器学习中的“情感纽带”

关键词提炼

#ELBO #证据下界 #变分推断 #机器学习 #潜变量模型 #KL散度 #期望 #对数似然

第一节:ELBO的类比与核心概念【尽可能通俗】

ELBO,即证据下界,在机器学习中扮演着“情感纽带”的角色,它连接着模型的真实后验分布与我们通过变分推断得到的近似后验分布。就像恋爱中的两个人,虽然无法完全重合,但通过ELBO这个“纽带”,我们可以找到他们之间最紧密的联系。

第二节:ELBO的核心概念与应用

2.1 核心概念

核心概念定义比喻或解释
ELBOEvidence Lower BOund,即证据下界,是变分推断中用于近似后验分布的目标函数。像是恋爱中的“最低标准”,确保双方关系不会太差。
变分推断一种用于潜变量模型推断的方法,通过优化ELBO来近似真实的后验分布。像是恋爱中的“磨合过程”,不断调整以找到最佳状态。
KL散度Kullback-Leibler Divergence,衡量两个分布之间差异的度量。像是恋爱中的“距离感”,表示双方之间的差异程度。

2.2 优势与劣势

方面描述
优势提供了明确的优化目标,使得变分推断成为可能;能够处理复杂的潜变量模型,提高模型的表达能力。
劣势ELBO的求解通常涉及复杂的数学运算,需要较高的数学功底;对于某些模型,ELBO可能不是最优的近似方法。

2.3 与机器学习的类比

ELBO在机器学习中就像是恋爱中的“共同目标”,它引导着模型(或恋人)不断接近真实(或理想)的状态,虽然可能无法完全达到,但在这个过程中,双方都在不断成长和进步。

第三节:公式探索与推演运算【重点在推导】

3.1 ELBO的基本形式

ELBO的基本形式为:

ELBO ( θ , ϕ ) = E q ϕ ( z ∣ x ) [ log ⁡ p θ ( x , z ) ] − E q ϕ ( z ∣ x ) [ log ⁡ q ϕ ( z ∣ x ) ] \text{ELBO}(\theta, \phi) = \mathbb{E}_{q_\phi(z|x)}[\log p_\theta(x, z)] - \mathbb{E}_{q_\phi(z|x)}[\log q_\phi(z|x)] ELBO(θ,ϕ)=Eqϕ(zx)[logpθ(x,z)]Eqϕ(zx)[logqϕ(zx)]

其中, θ \theta θ ϕ \phi ϕ 分别是模型参数和变分参数, x x x 是观测数据, z z z 是潜变量, p θ ( x , z ) p_\theta(x, z) pθ(x,z) 是联合概率分布, q ϕ ( z ∣ x ) q_\phi(z|x) qϕ(zx) 是近似后验分布。

3.2 公式拆解与推演

ELBO由两部分组成:第一部分是期望下的对数联合概率(即期望的“好处”),第二部分是期望下的对数近似后验概率(即期望的“代价”)。

  • 期望的“好处” E q ϕ ( z ∣ x ) [ log ⁡ p θ ( x , z ) ] \mathbb{E}_{q_\phi(z|x)}[\log p_\theta(x, z)] Eqϕ(zx)[logpθ(x,z)],表示在近似后验分布下,联合概率的对数期望。这就像是恋爱中,双方共同期待的美好未来。
  • 期望的“代价” E q ϕ ( z ∣ x ) [ log ⁡ q ϕ ( z ∣ x ) ] \mathbb{E}_{q_\phi(z|x)}[\log q_\phi(z|x)] Eqϕ(zx)[logqϕ(zx)],表示在近似后验分布下,自身概率的对数期望。这就像是恋爱中,为了维持关系所需要付出的努力。

因此,ELBO可以看作是“好处”与“代价”之间的权衡,我们希望通过优化ELBO来找到最佳的近似后验分布。

3.3 具体实例与推演

假设我们有一个简单的潜变量模型,其中观测数据 x x x 是由潜变量 z z z 生成的。我们可以通过变分推断来近似 z z z 的后验分布。在这个过程中,我们需要不断优化ELBO,使得近似后验分布越来越接近真实的后验分布。

第四节:相似公式比对【重点在差异】

公式/模型共同点不同点
最大似然估计都涉及对数似然的使用。最大似然估计直接优化对数似然,而ELBO是优化对数似然的下界。
贝叶斯推断都涉及潜变量的处理。贝叶斯推断通过精确推断来得到后验分布,而ELBO是通过近似推断来得到后验分布的近似。

第五节:核心代码与可视化【全英文的代码,标签label尤其需要是英文的!】

这段代码使用TensorFlow框架实现了ELBO的计算,并绘制了ELBO随迭代次数的变化曲线。通过可视化,我们可以直观地看到优化过程中的ELBO变化。

import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns# Define the model parameters and variational parameters
theta = tf.Variable(0.0, trainable=True)
phi = tf.Variable(0.0, trainable=True)# Define the joint probability and approximate posterior probability
def joint_probability(x, z, theta):# Example joint probability functionreturn tf.exp(-tf.square(x - z * theta))def approximate_posterior(z, phi):# Example approximate posterior functionreturn tf.exp(-tf.square(z - phi))# Define the ELBO function
def elbo(x, theta, phi):z = tf.random.normal(shape=x.shape)log_joint = tf.math.log(joint_probability(x, z, theta))log_q = tf.math.log(approximate_posterior(z, phi))return tf.reduce_mean(log_joint - log_q)# Generate some synthetic data
x_data = np.random.normal(size=100)# Define the optimizer
optimizer = tf.optimizers.Adam(learning_rate=0.01)# Training loop
elbo_values = []
for epoch in range(1000):with tf.GradientTape() as tape:elbo_value = elbo(x_data, theta, phi)elbo_values.append(elbo_value.numpy())gradients = tape.gradient(elbo_value, [theta, phi])optimizer.apply_gradients(zip(gradients, [theta, phi]))if epoch % 100 == 0:print(f"Epoch {epoch}, ELBO: {elbo_value.numpy()}")# Visualize the ELBO values over epochs
sns.set_theme(style="whitegrid")
plt.plot(elbo_values, label='ELBO')
plt.xlabel('Epoch')
plt.ylabel('ELBO Value')
plt.title('ELBO Over Epochs')
plt.legend()
plt.show()# Printing more detailed output information
print("ELBO plot has been generated and displayed. \nThe plot illustrates the change of ELBO value over epochs during the optimization process.")

在这里插入图片描述

输出内容描述
ELBO随迭代次数的变化曲线图显示了优化过程中ELBO值的变化情况。
图表标题、x轴标签、y轴标签和图例提供了图表的基本信息和说明。
详细的输出信息(打印到控制台)提供了关于ELBO变化曲线图的详细解释和迭代过程中的ELBO值。

参考文献

  1. Blei, D. M., Kucukelbir, A., & McAuliffe, J. D. (2017). Variational inference: A review for statisticians. Journal of the American Statistical Association, 112(518), 859-877. [【影响因子=3.8,统计学领域权威期刊】]内容概述:该论文对变分推断进行了全面的综述,介绍了其基本原理、方法以及在统计学中的应用。
  2. Kingma, D. P., & Welling, M. (2014). Auto-encoding variational bayes. In International Conference on Learning Representations. [【会议论文,机器学习领域重要会议】]内容概述:该论文提出了自动编码变分贝叶斯(AEVB)算法,通过变分推断来优化潜变量模型的参数,为后续的变分推断研究提供了重要的思路和方法。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

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

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

相关文章

react后台管理系统(二)

​🌈个人主页:前端青山 🔥系列专栏:React篇 🔖人终将被年少不可得之物困其一生 依旧青山,本期给大家带来React篇专栏内容:react后台管理系统(二) 前言 本文档旨在详细说明如何在一个基于React的应用程序中实现左侧菜单…

【学习笔记】AD智能PDF导出(装配文件)

2.下一步“NEXT” 3.选择文件名称,下一步“NEXT” 4.可选导出原材料的BOM表 右键选择装配图“Create Assembly Drawings” 5.可以双击下图方框,或者右键需要编辑的标题,选择“Properties”,勾选如下图 6.装配文件,添加…

在win10环境部署opengauss数据库(包含各种可能遇到的问题解决)

适用于windows环境下通过docker desktop实现opengauss部署,请审题。 文章目录 前言一、部署适合deskdocker的环境二、安装opengauss数据库1.配置docker镜像源2.拉取镜像源 总结 前言 注意事项:后面docker拉取镜像源最好电脑有科学上网工具如果没有科学上…

如何构建高效的接口自动化测试框架?

🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快 在选择接口测试自动化框架时,需要根据团队的技术栈和项目需求来综合考虑。对于测试团队来说,使用Python相关的测试框架更为便捷。无论选…

AI Prompt Engineering

AI Prompt Engineering 简介 Prompt Engineering, 提示工程,是人工智能领域的一项技术,它旨在通过设计高效的提示词(prompts)来优化生成式 AI(如 GPT、DALLE 等)的输出。提示词是用户与生成式 AI 交互的核…

【bug】使用transformers训练二分类任务时,训练损失异常大

使用transformers训练二分类任务时,训练损失异常大 问题分析 问题 training_loss异常大,在二分类损失中,收敛在1~2附近,而eval_loss却正常(小于0.5) 分析 参考: Bug in gradient accumulation…

基于SpringBoot实现的城镇保障性住房管理系统(代码+论文)

🎉博主介绍:Java领域优质创作者,阿里云博客专家,计算机毕设实战导师。专注Java项目实战、毕设定制/协助 📢主要服务内容:选题定题、开题报告、任务书、程序开发、项目定制、论文辅导 💖精彩专栏…

springboot基于SpringBoot的社区居民诊疗健康管理系统

摘 要 社区居民诊疗健康管理系统的建设强化了社区医疗服务与居民之间的联系,优化了健康服务供给,提高了医疗资源的利用效率。它不仅有助于提升居民的健康素养和自我管理能力,也是推动实现全民健康信息化、构建以人为本的健康服务体系的重要步…

VSCode 间距太小

setting->font family 使用:Consolas, Courier New, monospace 字体

IntelliJ+SpringBoot项目实战(九)--整合Thymyleaf模版引擎

一、Thymeleaf 基本介绍 Thymeleaf是一款模板引擎产品,是一款优秀的面向JAVA的XML/XHTML/HTML5页面模板,具有丰富的标签语言和函数。因此,在使用SpringBoot开发前端网页,经常选择Thymeleaf。 在前后端分离框架流行的今天&a…

Python中常用的函数介绍

Python中常用的几种函数 1、input函数 input()函数:主要作用是让用户输入某个内容并接收它。 #输入你的年龄 >>> age input("my age is :") my age is :20 执行代码后输入年龄,年龄被存放到age变量中,执行print后终端会…

【动手学深度学习Pytorch】1. 线性回归代码

零实现 导入所需要的包: # %matplotlib inline import random import torch from d2l import torch as d2l import matplotlib.pyplot as plt import matplotlib import os构造人造数据集:假设w[2, -3.4],b4.2,存在随机噪音&…

亿咖通科技应邀出席微软汽车行业智享会,分享ECARX AutoGPT全新实践

11月14日,全球出行科技企业亿咖通科技(纳斯达克股票代码:ECX)应邀于广州参加由微软举行的汽车行业智享会,揭晓了亿咖通科技对“AI定义汽车”时代的洞察与技术布局,分享了亿咖通科技汽车垂直领域大模型ECARX…

鸿蒙开发学习|Promise的介绍与在鸿蒙中的使用

Promise的介绍与在鸿蒙中的使用 异步编程 学习Promise的开始,我们要先了解异步编程 一般代码的执行是单线程的机制,就是按次序执行,执行完一个任务后,再执行下一个,如果我们在页面加载的同时时候执行一个请求,拿到数据后映射到界面上,这时我们就需要异步操作来执行这个请求 异…

第二课 Model模型资源导入设置检查与优化

上期我们学习了最简单的audio音效的优化,接下来我们继续model模型资源的优化,我将汇总各路大神关于模型优化的思路和方法供你和我学习。 首先我们还是要把我们优化的目标重申一遍: 优化的目标 1.文件体积尽可能小 2.内存占用尽可能小 3.…

小米路由器用外网域名访问管理界面

本文在Redmi AX3000 (RA81)设置,其他型号路由器的管理界面端口可能各不相同。 开始之前需要保证路由器SSH功能正常,如果没有SSH可以参考这里。 1. 给WAN口开放80端口 可以通过下载mixbox的firewall插件或者其他防火墙插件开放端口。 2. 把域名解析到路…

一次需升级系统的wxpython安装(macOS M1)

WARNING: The scripts libdoc, rebot and robot are installed in /Users/用户名/Library/Python/3.8/bin which is not on PATH. 背景:想在macos安装Robot Framework ,显示pip3不是最新,更新pip3后显示不在PATH上 参看博主文章末尾 MAC系统…

Leetcode 求根节点到叶节点数字之和

使用深度优先搜索 DFS 来做 我提供的代码使用的是 深度优先搜索(DFS,Depth-First Search) 算法。以下是具体的算法思想和实现步骤的解释: 算法思想 树的路径代表数字: 树中每条从根节点到叶子节点的路径可以看作一个整…

IDEA:2023版远程服务器debug

很简单,但是很多文档没有写清楚,wocao 一、首先新建一个远程jvm 二、配置 三、把上面的参数复制出来 -agentlib:jdwptransportdt_socket,servery,suspendn,address5005 四、然后把这串代码放到服务器中(这里的0.0.0.0意思是所有IP都能访问&a…

计算机毕业设计 | SpringBoot+vue汽车资讯网站 汽车购买咨询管理系统(附源码+论文)

1,绪论 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及,互联网成为人们查找信息的重要场所,二十一世纪是信息的时代,所以信息的管理显得特别重要。因此,使用计算机来管理汽车资讯网站的相关信息成为必然…