Variational Auto-Encoder (VAE)论文阅读与公式推导_vae原论文-程序员宅基地

技术标签: 生成模型  VAE  

1.问题描述

给定一个数据集,假设其满足样本间独立同分布。本质上,我们希望得到关于该数据集的真实的概率分布p(x),虽然有一些方法能够直接估计p(x)中某一点的概率(例如核密度估计、近邻方法),但这些方法一方面准确性较差,并且随着样本维度的升高,对样本数量的需求也是指数增加的。简单来说,我们多数情况下无法知道p(x)。

       那么换一个思路,假设每个样本是由一组潜在的因素决定,这些因素我们很难明确他们的含义,但他们确确实实地决定这些样本的分布,令这些隐变量为z。需要说明的是,有些时候,隐变量是一个确定的值,但在贝叶斯理论下,这些隐变量是一组随机变量,他们也存在着各自对应的概率分布。

       通过上边的描述,我们可知,隐变量z决定这随机变量x的概率分布,其概率图模型如下:

当我们只关注上图中的z,x和他们之间的实线箭头,可知:

上式中,p(z)表示隐变量z的概率分布,可知,对任意一个x的概率,都需要遍历所有z的取值,这一复杂度随z的维度指数上升,并且,我们也不知道z的真实分布是什么样子的。

这里,就可以利用贝叶斯的方法对z的分布进行估计,即VAE首先令z的先验分布p(z)为标准高斯分布,之后,基于观测到的X,计算其后验分布p(z|x)来估计z的真实分布。而对后验分布的估计,也正是VAE的核心。注:原文中通过最大化p(X)对数似然,推导得出等价于优化变分下界,角度不同,本质一样。

2.问题建模

为了估计,VAE假设存在一个分布,令q不断近似p,即最小化,从而将一个估计问题转化为一个优化问题,这一过程本质上是一个变分推断的过程,所以VAE不叫AE。接下来,具体来看如何优化.

基于上述推导,将p(z)=N(0,I)带入上式,并变换一下可得:

3.求解优化目标1——

首先,需要明确VAE中直接认为服从各分量相互独立的多元高斯分布,所以

上述积分可拆成三个积分,其中,第一项是概率密度乘一个和x无关的常数,即对概率密度积分,结果为1,

第二项是正态分布的二阶矩,

第三项

-

其中J为因变量z的维数综上所述,

4.求解优化目标2——

而另一项,也就是,理论上来说,对它的计算也是要计算如下积分的

但通过一种叫重参数的技巧(reparameterization trick),可以构造一个简单的式子作为的近似值。

这样一来,得到了如下形式

  • Bernouli分布建模x

将x看做一组服从Bernouli分布的随机变量,pθx|z输出的是一组Bernouli分布的参数,假设为y,对于x中的某个分量xi,存在着y中的一个分量yi与之对应。可知,

同一表达在一个式子中,就是

所以,有

其中,D为数据的分量个数。

  • Gaussian分布建模x

将x看做一组服从Gaussian分布的随机变量,输出的是多元高斯分布的均值与方差,假设分别为μ和σ,则

5.一些实现细节

按照论文中的模型,模型均为包含一个隐层的神经网络,其中模型以x为输入,输出一组μ,这里之所以输出而不是,是因为是非负的,这就需要对网络加一些限制,为了方便,改为,从而正负都可以变换为方差。

参考:

https://www.zhihu.com/question/41765860

https://blog.csdn.net/u012356619/article/details/102588314

https://github.com/wiseodd/generative-models/tree/master/VAE/vanilla_vae

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/jinjiahao5299/article/details/103742009

智能推荐

vagrant 安装_vagrant install-程序员宅基地

文章浏览阅读990次。手机版 繁體你好,游客 登录注册搜索 首页Linux新闻Linux教程数据库技术Linux编程服务器应用Linux安全Linux下载Linux主题Linux壁纸Linux软件数码手机电脑首页 → Linux教程背景:阅读新闻Ubuntu下安装部署Vagrant和VirtualBox详解[日期:2018-04-08]来源:cnblogs.com/suhaha 作者:霍比挫人[字体:大 中 小]一、前..._vagrant install

某眼字体反爬分析(K近邻算法解决动态字体加密)_k近邻算法与css动态字体加密-程序员宅基地

文章浏览阅读1k次。郑重声明:本项目的所有代码和相关文章,仅用于经验技术交流分享,禁止将相关技术应用到不正当途径,因为滥用技术产生的风险与本人无关。文章仅源自个人兴趣爱好,不涉及他用,侵权联系删上一次简单罗列了字体反爬的前世今生(https://mp.csdn.net/console/editor/html/105490137)本文就进行实战分析url:https://maoyan.com/boar..._k近邻算法与css动态字体加密

R语言回归篇: 线性回归模型的建立与应用_r语言中想要做线性回归应该用什么命令-程序员宅基地

文章浏览阅读391次。我们可以使用R语言的summary()函数查看线性回归模型的摘要信息,包括模型拟合优度、系数估计和显著性等。# 查看模型摘要。_r语言中想要做线性回归应该用什么命令

Android Gradle 详解-程序员宅基地

文章浏览阅读550次,点赞19次,收藏30次。其实Android开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。上面分享的腾讯、头条、阿里、美团、字节跳动等公司2019-2021年的高频面试题,博主还把这些技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,上面只是以图片的形式给大家展示一部分。【Android思维脑图(技能树)】知识不体系?

MyBatis 插件 : 打印 SQL 及其执行时间-程序员宅基地

文章浏览阅读884次。Plugins摘一段来自MyBatis官方文档的文字。MyBatis允许你在某一点拦截已映射语句执行的调用。默认情况下,MyBatis允许使用插件来拦截方法调用:Executor(update、query、flushStatements、commint、rollback、getTransaction、close、isClosed)ParameterHand..._打印数据库语句执行时间

网络原理之TCP_IP传输层协议,TCP中的主要核心机制(重点)_控制器对tcp保留字段的处理-程序员宅基地

文章浏览阅读812次。TCP/IP传输层协议的原理详细讲解,TCP的主要核心机制的底层详细分析_控制器对tcp保留字段的处理

随便推点

PBOC/EMV之电子钱包与电子现金的区别>-程序员宅基地

文章浏览阅读1.6k次。之前的一篇文章已经对电子现金做了一些介绍, 这篇文章站在开发者的角度,深入的探讨一下电子现金的应用. 做一个电子现金的交易, 第一步当然是选中当前的应用, 方法是调用select命令, 传入当前的应用AID号, 如果卡片的状态码返回9000,则表示选中成功. 下面举一个例子:发送: 00 a4 04 00 08 a0 00 00 04 44 01 01 05 00卡

(转帖)小菜编程成长记(八 用“策略模式”是一种好策略) _sap 策略不好用-程序员宅基地

文章浏览阅读439次。小菜次日来找大鸟,说:“《深入浅出设计模式》的第一章我看完了,它讲的是策略模式(Strategy)。『策略模式』定义了算法家族,分别封装起来,让它们之间可以互相替换, 此模式让算法的变化, 不会影响到使用算法的客户。看来商场收银系统应该考虑用策略模式?” “你问我?你说呢?”大鸟笑道,“商场收银时如何促销,用打折还是返利,其实都是一些算法,用工厂来生成算法对象,感觉是不是很怪?而最重要的_sap 策略不好用

php的命名空间实例-程序员宅基地

文章浏览阅读47次。php的命名空间实例什么是命名空间?从广义上来说,命名空间是一种封装事物的方法。在很多地方都可以见到这种抽象概念。例如,在操作系统中目录用来将相关文件分组,对于目录中的文件来说,它就扮演了命名空间的角色。具体举个例子,文件 foo.txt 可以同时在目录/home/greg 和 /home/other 中存在,但在同一个目录中不能存在两个 foo.txt 文件 -- php手册n...

嵌入式图形用户界面uc/gui在nios II上的移植_nios gui-程序员宅基地

文章浏览阅读7.1k次。 uc/gui是一个优秀的嵌入式图形用户界面,这几天的工作就是将它移植到nios II系统上。前人也做了一些工作,不过大部分都是针对其他硬核处理器,针对nios II软核处理器的移植资料那简直是凤毛麟角。在阅读了相关文档后,我决定自己亲自动手实践,这下面的很多过程都是自己摸索出来的,并通过了实验的验证。这只是一个初步的移植,也许在以后的更复杂的应用中,还需要对其进行调整。但对目前我的应用而言,_nios gui

Hbase的伪分布式安装-程序员宅基地

文章浏览阅读55次。Hbase安装模式介绍单机模式 1> Hbase不使用HDFS,仅使用本地文件系统 2> ZooKeeper与Hbase运行在同一个JVM中分布式模式– 伪分布式模式1> 所有进程运行在同一个节点上,不同进程运行在不同的JVM当中2> 比较适合实验测试– 完全分布式模式1> 进程运行在多个服务器集群中2> 分布式依赖于HDFS系统,因此布署Hbase..._linux系统hbase伪分布式搭建starting master, logging to /usr/local/hbase/bin/.

python pip与pip3安装、更新、卸载、查看等常用命令汇总_pip td3-程序员宅基地

文章浏览阅读5.2k次。Python和pycharm的使用1. pycharm和Python下载 安装后需要激活码。判断Python是否安装好了,cmd下跑: python --version2. 配置环python境路径,下载的时候可选,路径一个是python所在路径,还有一个是python下的Scripts,检验是否正确方法为cmd下跑: pip --version, 这是为了pip的使用,为了安装第三方库的方便,跑命令:pip install xxx。否则的话自己上网查找 下载库包。然后pyt......_pip td3

推荐文章

热门文章

相关标签