变分边界详解

起因

当时看VAE论文时有这么一段,但是看完直接一头雾水,这都那跟哪,第一个公式咋做的变换就变出那么一堆。网上搜了很多博客都语焉不详,只好自己来写一篇,希望能解答后来人的疑惑。

公式1

参考文章:证据下界(ELBO)、EM算法、变分推断、变分自编码器(VAE)和混合高斯模型(GMM)

解释一下,我们之前都是用MLE计算损失, l o g p ( x ∣ θ ) logp(x|\theta) logp(x∣θ)和 l o g p θ ( x ) logp_{\theta}(x) logpθ(x)是一样的,数分和统计学写法习惯不同。第一种理解同上,可以结合VAE模型理解他的解释,这个解释比较抽象。

第二种理解是以信息论的角度,信息熵= E − l o g p θ ( x ) E-logp_{\\theta}(x) E−logpθ(x)。信息熵越小,说明系统越稳定,不确定程度越低。
L θ = a r g m i n θ E − l o g p θ ( x ) = a r g m a x θ E l o g p θ ( x ) L\\theta=argmin_\theta E-logp_{\\theta}(x)=argmax_\theta Elogp_{\\theta}(x) Lθ=argminθE−logpθ(x)=argmaxθElogpθ(x)

推导公式1:(引入一个隐变量z,z可以想象成VAE编码器计算出来的均值和方差的随机变量,对应分布q(z))
l o g p θ ( x ) = l o g p θ ( x , z ) − l o g p θ ( z ∣ x ) = l o g p θ ( x , z ) q ( z ) − l o g p θ ( z ∣ x ) q ( z ) logp_\theta(x) = logp_\theta(x,z) - logp_\theta(z|x)= log\frac{p_\theta(x,z)}{q(z)} - log\frac{p_\theta(z|x)}{q(z)} logpθ(x)=logpθ(x,z)−logpθ(z∣x)=logq(z)pθ(x,z)−logq(z)pθ(z∣x)

方程两边同时求期望:
具体推到过程看大佬的,白板机器学习

公式2

证明如下:

DK >= 0,所以可证公式2。

DK >= 0证明结果如下,写的不清楚请参考其他博客,证明很多,实在懒得敲了见谅。

公式3

计算结果如下,写的不清楚请参考其他博客,证明很多,实在懒得敲了见谅。

相关推荐
晴天的雨.99211 分钟前
【C++算法】和为s的两个数
开发语言·数据结构·c++·算法
aramae7 小时前
MySQL复合查询(8)
java·c语言·开发语言·后端·算法
荆棘鸟智能7 小时前
城市感知设备怎么统一接入?从多协议网关到设备模型的中间件架构设计
人工智能·算法·边缘计算
INGNIGHT11 小时前
270 · 电话号码的字母组合II(Trie)
linux·算法
2401_8390805412 小时前
C++常见八股
数据结构·c++·算法
青山是哪个青山12 小时前
LeetCode 188:买卖股票的最佳时机 IV
算法
mikuyyds12 小时前
geo-toolbox 插件算法解析:RUSLE 与 MUSLE 的工程化落地
算法·rust·gis
a1879272183112 小时前
【算法】树(二):队列与祖先——BFS 骨架三配件、短路透传与合流
算法·leetcode·二叉树··bfs·算法讲解·树遍历
syagain_zsx13 小时前
算法基础篇 · 03 枚举(C++ 题解)
c++·算法·二进制·枚举
weixin_3077791313 小时前
C++代码实现MATLAB中的ode23tb函数功能
开发语言·c++·算法·matlab