对MMVAE中IWAE代码实现的理解

news2025/2/25 13:42:16

原始的IWAE

优化目标:
L I W A E ( x 1 : M ) = E z 1 : K ∼ q Φ ( z ∣ x 1 : M ) [ log ⁡ ∑ k = 1 K 1 K p Θ ( z k , x 1 : M ) q Φ ( z k ∣ x 1 : M ) ] ( 1 ) \mathcal{L}_{\mathrm{IWAE}}\left(\boldsymbol{x}_{1: M}\right)=\mathbb{E}_{\boldsymbol{z}^{1: K} \sim q_{\Phi}\left(\boldsymbol{z} \mid \boldsymbol{x}_{1: M}\right)}\left[\log \sum_{k=1}^K \frac{1}{K} \frac{p_{\Theta}\left(\boldsymbol{z}^k, \boldsymbol{x}_{1: M}\right)}{q_{\Phi}\left(\boldsymbol{z}^k \mid \boldsymbol{x}_{1: M}\right)}\right] \quad\quad\quad(1) LIWAE(x1:M)=Ez1:KqΦ(zx1:M)[logk=1KK1qΦ(zkx1:M)pΘ(zk,x1:M)]1

这里 p Θ ( z , x 1 : M ) = p ( z ) ∏ m = 1 M p θ m ( x m ∣ z ) p_{\Theta}\left(\boldsymbol{z}, \boldsymbol{x}_{1: M}\right)=p(\boldsymbol{z}) \prod_{m=1}^M p_{\theta_m}\left(\boldsymbol{x}_m \mid \boldsymbol{z}\right) pΘ(z,x1:M)=p(z)m=1Mpθm(xmz)
后验分布由推理网络近似得到 q Φ ( z k ∣ x 1 : M ) q_{\Phi}\left(\boldsymbol{z}^k \mid \boldsymbol{x}_{1: M}\right) qΦ(zkx1:M)

MMVAE中的IWAE变体

采用MoE方法进行多模态融合的优化目标:
L I W A E M o E ( x 1 : M ) = 1 M ∑ m = 1 M E z m 1 : K ∼ q ϕ m ( z ∣ x m ) [ log ⁡ 1 K ∑ k = 1 K p Θ ( z m k , x 1 : M ) q Φ ( z m k ∣ x 1 : M ) ] ( 2 ) \mathcal{L}_{\mathrm{IWAE}}^{\mathrm{MoE}}\left(\boldsymbol{x}_{1: M}\right)=\frac{1}{M} \sum_{m=1}^M \mathbb{E}_{\boldsymbol{z}_m^{1: K} \sim q_{\phi_m}\left(\boldsymbol{z} \mid \boldsymbol{x}_m\right)}\left[\log \frac{1}{K} \sum_{k=1}^K \frac{p_{\Theta}\left(\boldsymbol{z}_m^k, \boldsymbol{x}_{1: M}\right)}{q_{\Phi}\left(\boldsymbol{z}_m^k \mid \boldsymbol{x}_{1: M}\right)}\right] \quad\quad\quad(2) LIWAEMoE(x1:M)=M1m=1MEzm1:Kqϕm(zxm)[logK1k=1KqΦ(zmkx1:M)pΘ(zmk,x1:M)]2

根据MoE方法近似的后验分布为: q Φ ( z ∣ x 1 : M ) = ∑ m α m ⋅ q ϕ m ( z ∣ x m ) q_{\Phi}\left(\boldsymbol{z} \mid \boldsymbol{x}_{1: M}\right)=\sum_m \alpha_m \cdot q_{\phi_m}\left(\boldsymbol{z} \mid \boldsymbol{x}_m\right) qΦ(zx1:M)=mαmqϕm(zxm),这里 α = 1 M \alpha = \frac{1}{M} α=M1

计算IWAE的主体代码:
在这里插入图片描述

  • .log_prob(value)是计算value在定义的概率分布中对应的概率的对数。
  • log_mean_exp(value)在后面介绍

在for循环里面一行行的分析,以r=0为例:

  • lpz = l o g p ( z 1 ) log p(z_1) logp(z1), 每个潜在变量的尺寸:[K, batch size, latent dim],在这里用sum(-1)相当于是将潜在变量由latent dim压缩到1维
  • lqz_x = l o g [ q ( z 1 ∣ x 1 ) + q ( z 1 ∣ x 2 ) ] log [ q(z_1 | x_1) + q(z_1 | x_2)] log[q(z1x1)+q(z1x2)]
  • lpx_z = l o g p ( x 1 ∣ z 1 ) + l o g p ( x 2 ∣ z 1 ) logp(x_1|z_1) + logp(x_2|z_1) logp(x1z1)+logp(x2z1)
  • lw = lpz + lpx_z + lqz_x

最后运算:

l1 = log_mean_exp(lw, dim=0)

就可以得到: p ( z 1 ) ⋅ ( x 1 ∣ z 1 ) ⋅ ( x 2 ∣ z 1 ) q ( z 1 ∣ x 1 ) + q ( z 1 ∣ x 2 ) ( 3 ) \cfrac{p(z_1)\cdotp(x_1|z_1)\cdotp(x_2|z_1)}{q(z_1|x_1) + q(z_1|x_2)} \quad\quad\quad(3) q(z1x1)+q(z1x2)p(z1)(x1z1)(x2z1)3

这个结果就是上述公式2中m=1时的结果,这样一行行的分析就可以很好的理解上述代码是如何实现IWAE多模态变体的。

log_mean_exp

其中log_mean_exp的代码:

def log_mean_exp(value, dim=0, keepdim=False):
    return torch.logsumexp(value, dim, keepdim=keepdim) - math.log(value.size(dim))

log_mean_exp和torch.logsumexp的区别就是字面意思,前面取平均,后者求和

  • 因为MMVAE中的后验分布为 q Φ ( z ∣ x 1 : M ) = ∑ m α m ⋅ q ϕ m ( z ∣ x m ) q_{\Phi}\left(\boldsymbol{z} \mid \boldsymbol{x}_{1: M}\right)=\sum_m \alpha_m \cdot q_{\phi_m}\left(\boldsymbol{z} \mid \boldsymbol{x}_m\right) qΦ(zx1:M)=mαmqϕm(zxm),这里 α = 1 M \alpha = \frac{1}{M} α=M1,即需要对上述式子3中的分母取平均,所以log_mean_exp可以写成下述公式:
    logmeanexp ⁡ ( x ) i = log ⁡ 1 j ∑ j exp ⁡ ( x i j ) = log ⁡ ∑ j exp ⁡ ( x i j ) − log ⁡ j \operatorname{logmeanexp}(x)_i=\log \frac{1}{j}\sum_j \exp \left(x_{i j}\right) = \log \sum_j \exp (x_{i j}) - \log j logmeanexp(x)i=logj1jexp(xij)=logjexp(xij)logj
  • torch.logsumexp的介绍截图自官网:在这里插入图片描述

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

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

相关文章

JavaScript

目录 1、JavaScript简介 2、JavaScript引入方式 2.1、内部脚本 2.2、外部脚本 3、JavaScript基础语法 3.1、书写语法 3.2、输出语句 3.3、变量 3.4、数据类型 3.5、运算符 3.5.1、 和 的区别 3.5.2、类型转换 3.6、流程控制语句 3.6.1、if语句 3.6.3、for循环语…

【毕业设计】时间序列天气预测系统 - LSTM

文章目录0 前言1 数据集介绍2 开始分析2.1 单变量分析2.1.1 温度变量2.2 将特征和标签切片2.3 建模2.4 训练模型2.5 多变量分析2.5.1 压强、温度、密度随时间变化绘图2.5.2 将数据集转换为数组类型并标准化2.5.3 多变量建模训练训练3 最后0 前言 🔥 Hi,…

vue项目身份认证,vuex,token

vuex存储用户登录信息以及解决页面刷新vuex数据丢失问题 我的文章:vuex页面刷新数据丢失问题的多种解决方法 有写到 身份认证 虽然完成了登录功能,但实际上现在用户没登录也能访问(对应的url),这样的话显得登录功能毫无意义。 为了让登录变得有意义&am…

【Linux】Linux系统管理详解

目录一.服务管理1.Linux中的进程和服务2.systemctl(CentOS 7版本)(1)基本语法(2)经验技巧二.系统运行级别1.CentOS的运行级别三.配置服务开机自启和关闭防火墙1.图形化服务开机自启2.命令行服务开机自启3.关闭防火墙自启动四.关机重启以下内容都是基于Ce…

排序算法-希尔排序

希尔排序 概念 希尔排序(Shell Sort)是插入排序的一种,它是针对直接插入排序算法的改进。 希尔排序又称缩小增量排序,因 DL.Shell 于 1959 年提出而得名。 它通过比较相距一定间隔的元素来进行,各趟比较所用的距离随着算法的进行而减小&a…

通达信最新交易接口系统开发源码有哪些?

通达信最新交易接口其实跟市面上的自动交易接口api是比较安全稳定接口,只需要通过第三方证券公司完成交易,也或者是个人与机构做私募量化投资也是可以的。但是最近小编就有注意到,在此之前的通达信接口已经完成了再次升级,那么&am…

JAVA开发(分布式SpringCloud全家桶一些组件读法)

配置管理,服务发现,断路器,路由,微代理,事件总线,全局锁,决策竞选,分布式会话构成SpringCloud的集合。 Eureka服务注册与发现(Eureka:怎么读?&…

没基础的大学生如何自学c语言 ?

C语言具有高效、灵活、功能丰富、表达力强和较高的可移植性等特点,在程序设计中备受青睐。真的太多人学也有太多要学的东西了,以至于后台总有人问C语言该怎么学,甚至还有具体问编程问题的。 这一点专门针对「大部分时间都在写着重复的代码&a…

uniapp初步搭建:如何引入uview库(跨移动多端ui库)

uView是uni-app生态专用的UI框架,uni-app 是一个使用 Vue.js 开发所有前端应用的框架,开发者编写一套代码, 可发布到iOS、Android、H5、以及各种小程序(微信/支付宝/百度/头条/QQ/钉钉)等多个平台(引言自uni-app网) 1. 查看项目根目录有没有p…

公钥密码学中的公钥和私钥

公钥密码学解释:它是什么? 公钥基础设施 (PKI) 用于管理互联网通信中的身份和安全性。 启用 PKI 的核心技术是公钥密码术,这是一种依赖于使用两个相关密钥(公钥和私钥)的加密机制。 这两个密钥一起用于加密和解密消息。…

CM311-3_YST_晨星MSO9385_2+8_安卓9.0_TTL免费升级固件【含教程】

新魔百盒CM311-3_YST_晨星MSO9385_28_安卓9.0_TTL免费升级固件【含教程】 固件特点: 1、修改dns,三网通用; 2、开放原厂固件屏蔽的市场安装和u盘安装apk; 3、无开机广告,无系统更新,不在被强制升级&…

网站攻击技术,一篇打包带走!

大家好,今天给大家介绍一下,Web安全领域常见的一些安全问题。 1. SQL 注入 SQL注入攻击的核心在于让Web服务器执行攻击者期望的SQL语句,以便得到数据库中的感兴趣的数据或对数据库进行读取、修改、删除、插入等操作,达到其邪恶的…

分布式应用之监控平台zabbix的认识与搭建

内容预知 1.监控系统的相关知识 1.1 监控系统运用的原因 1.2 网站的可用性 1.3 市面上常用的监控系统 2.zabbix的相关知识 2.1 zabbix的概述 2.2 zabbix 是什么? 2.3 zabbix的监控原理 2.4 zabbix监控系统中五个常用程序 3. zabbix 服务端的部署 4. 部署…

C++ 不知图系列之基于链接表的无向图最短路径搜索

1. 前言 图的常用存储方式有 2 种: 邻接炬阵。 链接表。 邻接炬阵的优点和缺点都很明显。优点是简单、易理解,但是对于大部分图结构而言,都是稀疏的,使用矩阵存储,空间浪费就较大。 链接表相比较邻接矩阵存储方案…

团队的Code Review实践

高效地进行 Code Review 一直是我们想要做的事情,如何持续保持高效 Review 也是我们日常开发中所亟需解决的问题。 在疫情爆发之前,团队大多是线下一起办公。大家会聚在一起 Code Review,把讨论出的反馈记录在便利贴并贴在白板上。而当远程、…

Baklib|如何为你的营销计划制作Wiki页面

当你需要快速查找信息时,你会怎么做?很有可能,你会直接去谷歌——在输入你的查询之后,十有八九,搜索引擎会带你去wiki百科。wiki百科是一个巨大的在线百科全书。在这个数据库中,几乎所有的文章都有链接。 现在想象一…

Maven之POM介绍

POM介绍前言POM基础为什么要学习POM什么是POMSuper POMMinimal POM(POM的最低配置)POM特点Project Inheritance(项目继承性)Project Aggregation(项目聚合)Project Inheritance VS Project AggregationProject Interpolation and …

《FFmpeg Basics》中文版-00-简介

欢迎 亲爱的读者们, 欢迎来到这本书,它将使您熟悉FFmpeg项目的许多有趣的特性。下面的几个大公司都是FFmpeg使用者: Facebook,最大的社交网络,用FFmpeg技术处理用户的视频。Google Chrome,流行的web浏览器&#xff0…

EDI通信中常用的网络排查方法

在知行之桥EDI系统运维工作中不可避免会碰到各种网络问题,本文将分享一些我们运维同事常用的一些网络问题排查定位方法,帮助大家快速的定位原因,解决通信问题。 1.Ping: 作用:ping用于确定本地主机是否能与另一台主机…

shell脚本下用plot给iostat和CPU的采样画图的写法

目前大多的互联网客户,在导入SSD之前,基本会要求OEM或者SSD厂商提供一些性能数据图,所以 作图也基本成了测试人员的必备技能,单盘的性能可以用Excel表格导入,但是复杂的可能会比较麻烦。就需要我们借助工具来作图了。 本篇文章简单…