机器学习笔记:vae

UQI-LIUWJ UQI-LIUWJ     2023-01-15     580

关键词:

1 VAE 介绍

         在机器学习笔记:auto encoder_UQI-LIUWJ的博客-CSDN博客 中,我们知道了auto-encoder。但是auto-encoder有一个不足之处,就是因为auto-encoder不是一个概率模型,所以没法从学习的模型中生成新的数据,或者说我们train了一个模型,得到的输出是固定不变的。

        在这种情况下VAE就诞生了:它可以

1)从原始数据中学习特征表示向量z

2)可以从模型中生成新的数据

        作用(2)是auto-encoder中所不具备的

 2 decoder介绍

训练完成后,decoder可以是这样的:

        我们知道z的先验概率,decoder又学习了一个从z到x的条件概率,那么我们就可以求得x的概率,然后进行采样即可

 

        更进一步说,decoder需要学习到x|z的均值和方差,这样才可以预测p(x|z)

 

 2.1 decoder 训练

那么,如何训练这个模型呢?基本想法是最大化数据的概率 

 

 其中的计算可以由下获得:

  • 是由decoder获得

  • 是由z的先验概率求得(我们这里认为z满足高斯分布)
  •  至于,我们可以由encoder获得

 3 encoder 与 decoder

于是我们有:

 

4 目标函数推导

 (贝叶斯法则) 

                        (分子分母同乘)

                        (log的规则)

而我们知道,x最终的分布和z是无关的。因此有:

 

 于是:

(取期望)

                        

 (KL散度见:NTU 课程 CE7454:信息论概述_UQI-LIUWJ的博客-CSDN博客 ) 

 而因为KL散度是大于等于0的,所以我们可以去掉最后一项,这样可以得到一个下界:

分别是encoder学习的效果和decoder学习的效果 

 5 VAE举例

 

 从 encoder的输出(均值,方差)到decoder的输入的过程,是一个采样的过程;decoder的输出也是一个采样的过程,因此每一次VAE的输出都不一样。这样就可以生成不同的新数据了

 6 VAE的流程

6.1 training

我们一步一步再看一遍:

 

 

 

 

 

 

通过最大化的概率,对encoder和decoder的参数进行优化

 6.2 generating data

 

 

 

 

 

                        

 

 

 

 

 

 

 

关于在eclipse for  javaee中修改servlet新建模板

---恢复内容开始---操作图解1.首先找到菜单条上的Window并点击出现下拉列,选中下拉列中的Preferences选项跳出如下图结果 2.找到其中的java列点开——》找到其中的Editor点开——》找到其中的Templates点击出现如上图... 查看详情

java学习笔记

1.从命令行获取输入Scannersc=newScanner(System.in);System.out.println("输入字符:");Stringm=sc.next();  查看详情

深度学习-机器视觉学习路线

1、应用场景及常用网络结构目标检测:R-CNN系列、YOLO系列、SSD系列、RFCN场景图像分割:FCN、U-NET、Segnet实例分割:MASK-FasterRCNN2、平台Tensorflow\Caffe\Pytorch3、分析工具... 查看详情

maven私服

 转:http://www.cnblogs.com/dreamroute/p/5440419.html可参考:http://www.blogjava.net/xiaomage234/archive/2014/05/13/413584.html什么是Nesux:http://juvenshun.iteye.com/blog/285059目前有很多组织使用了一些工具依赖于Maven仓库,但他 查看详情

maven的仓库:本地和远程

转:http://blog.csdn.net/wanghantong/article/details/36427433 在Maven中,任何一个依赖、插件或者项目构建的输出,都可以称之为构件。Maven在某个统一的位置存储所有项目的共享的构件,这个统一的位置,我们就称之为仓库。(仓库就... 查看详情

docker学习笔记

docker CE 和 EE:CE社区版,EE企业版dockerEE强化了安全,安全,安全  集成了DockerDataCenter用于容器管理,使其更加便利  查看详情

kvm竟然抓不到kvm的tracepoint

...如何调度的?调度的时候其实就是一个线程:这是我讲kvm框架:http://blog.csdn.net/mrbuffoon/arti 查看详情

c# datagridview 绑定list  無法排序問題解決方案(代码片段)

///<summary>///自定义绑定列表类///</summary>///<typeparamname="T">列表对象类型</typeparam>publicclassBindingCollection<T>:BindingList<T>privateboolisSorted;privatePropertyDescri 查看详情

ado.net基础

1  在数据库(sqlserver)中创建表          usedata0908  createtableUsers  (  Ids   int  primarykeyi  dentity(1,1),  // 创建主键关系,自增  UserName   nvarchar(400),  [password]   nva... 查看详情

javaio

一、流的概念流(Stream)的概念源自UNIX中管道的概念,管道是一条不间断的字节流,用来实现程序或进程之间的通信。一个流必有源端和目的端(可以是内存、磁盘文件等。)流的源端和目的端可以简单的看成字... 查看详情

lcd带字符液晶显示i love you

1602是字符型液晶,内含128个ASCLL字符型的字符库,故可以显示ASCLL字符,而不能显示汉字。1602可以显示两行信息,每行16个字符,5V电源供电,带有背光。 知识点:  #include<reg51.h>#include<stdio.h... 查看详情

qemu中device和driver的区别使用9p文件系统

...设备插入各种接口USB/PCI接口,那么这个设备才会被机器给识别到。拿我qemu中去识别本地的一个目录的方法:-fsdevlocal,i 查看详情

第七次小组讨论

...t然后使用cart来生成order,用来调用service的add(Order order)方法,保存生成的订单,转发de 查看详情

将全角转换为半角

...角字符?例如,给定下面的userInput,我想将Stackoverflow转换为***:stringuserInput="Stackoverflow";//stringuserInput="***";【问题讨论】:创建一个映射(即Diction 查看详情

虚拟局域网vlan

...三层的概念;经典算法:广播会在局域网中散播,所有的机器都为什么要划分vlan 查看详情

arduino互动设计入门--学习笔记5.1

章5:串口通信5.1并行与串行简介  串行:一次发送一个数据;如电脑上的usb口、HDML显示器接口、SATA    磁盘接口等都是串行的。 并行:一次发送多位数据;在微电脑上通常是一次传8位;   在电脑和... 查看详情

namespace作用是啥?

突然想起个问题,linux系统里的namespace到底有什么用?是为了解决什么问题?从内核的层面构造出虚拟机?比如IPC,这个时候https://lwn.net/Articles/531114/这个链接中说涉及namespace的总体的目的... 查看详情

java基础入门

---恢复内容开始---                          第一章                              Java开发入门  1.Java语言的特点:  Java是一门程序设计语言,可以编写... 查看详情