VAE-根据李宏毅视频总结的最通俗理解

news2024/11/25 23:18:53

1.VAE的直观理解

先简单了解一下自编码器,也就是常说的Auto-EncoderAuto-Encoder包括一个编码器(Encoder)和一个解码器(Decoder)。其结构如下:

自编码器是一种先把输入数据压缩为某种编码, 后仅通过该编码重构出原始输入的结构. 从描述来看, AE是一种无监督方法.

AE的结构非常明确, 需要有一个压缩编码的Encoder和就一个相应解码重构的Decoder

那么VAE的目标是什么?为什么VAE呢?

-------VAE作为一个生成模型,其基本思路是很容易理解的:把一堆真实样本通过编码器网络变换成一个理想的数据分布,然后这个数据分布再传递给一个解码器网络,得到一堆生成样本,生成样本与真实样本足够接近的话,就训练出了一个自编码器模型。

为什么要用VAE,原来的Auto Encoder有什么问题呢?那面下面是一个直观的解释。

下图是 AutoEncoder 的简单例子:我们把一张满月的图片 Encoder 后得到 code,这个code被decoder 后又转换为满月图,弦月图也是如此。注意它们直接的一对一关系。图片左边那个问号的意思是当对 AE 中的code进行随机采样时,它介于满月与弦月之间的数据,decoder后可能会输出什么?
-------------可能会输出满月,可能会输出弦月,但是最有可能输出的是奇奇怪怪的图片。

下图是 VAE 的简单例子,我们在 code 中添加一些 noise,这样可以让在满月对应 noise 范围内的code 都可以转换为满月,弦月对应的noise 范围内的code也能转换成弦月。但当我们在不是满月和弦月对应的noise的code中采样时,decoder出来的图片可能是介于满月和弦月之间的图。也就是说,VAE 产生了输入数据中不包含的数据,(可以认为产生了含有某种特定信息的新的数据),而 AE 只能产生尽可能接近或者就是以前的数据(当数据简单时,编码解码损耗少时)。

2.VAE的模型直观展示

在VAE中,为了给编码添加合适的噪音,编码器会输出两个编码,一个是原有编码 m 1 , m 2 , m 3 m_1,m_2,m_3 m1,m2,m3,另外一个是控制噪音干扰程度的编码 σ 1 , σ 2 , σ 3 \sigma_1,\sigma_2,\sigma_3 σ1,σ2,σ3,第二个编码其实很好理解,就是为随机噪音码 e 1 , e 2 , e 3 e_1,e_2,e_3 e1,e2,e3分配权重,然后加上exp的目的是为了保证这个分配的权重是个正值,最后将原编码与噪音编码相加,就得到了VAE在code层的输出结果 c 1 , c 2 , c 3 c_1,c_2,c_3 c1,c2,c3

损失函数方面,除了必要的重构损失外,VAE还增添了一个损失函数,这同样是必要的部分,因为如果不加的话,整个模型就会出现问题:为了保证生成图片的质量越高,编码器肯定希望噪音对自身生成图片的干扰越小,于是分配给噪音的权重越小,这样只需要将 σ 1 , σ 2 , σ 3 \sigma_1,\sigma_2,\sigma_3 σ1,σ2,σ3赋为接近负无穷大的值就好了。所以,第二个损失函数就有限制编码器走这样极端路径的作用,这也从直观上就能看出来, e x p ( σ i ) − ( 1 + σ i ) exp(\sigma_i)-(1+\sigma_i) exp(σi)(1+σi)在x=0处取得最小值,于是 σ 1 , σ 2 , σ 3 \sigma_1,\sigma_2,\sigma_3 σ1,σ2,σ3就会避免被赋值为负无穷大。

3.VAE的基本原理

那先回到我们到底想做什么?我们现在是想要生成图片,就拿下图距离,每张图片可以看做高维空间的一个点,然后这些图片符合一个分布P(x),我们要做的事情就是去预测这个高维空间的概率分布P(x),只要我们知道这个分布我们就可以从中sample然后得到图片。

那如何去知道这个分布呢?我们先了解一下什么是高斯混合模型?------------即任何一个数据的分布,都可以看作是若干高斯分布的叠加。

上图中黑色代表的是P(x)分布,蓝色的线都是不同的高斯分布,我们可以用若干个高斯分布去拟合P(x),那如果我们想要从P(x)去sample一个东西,那我们就要去考虑我们是从哪个高斯分布中去sample。然后这个这个过程可以表示为下图

其中最下面的代表的是高斯分布,m代表的是第几个高斯分布,蓝色的柱状图即P(m)代表的是去选择某一个高斯分布(m)的概率,所以P(x)可以表示为黄色标记所示,每个m对应的高斯分布有自己的均值和方差。

现在我们借助一个变量$ z\sim N(0,I)$ ,(注意z是一个向量,生成自一个高斯分布),找一个映射关系,将向量z映射成这一系列高斯分布的参数向量 μ ( z ) \mu (z) μ(z)和$ \sigma (z)$。有了这一系列高斯分布的参数我们就可以得到叠加后的P(x)的形式。也就是说我们只要知道每个高斯分布的参数,我们就能用它拟合P(x)

那么现在 P ( x ) = ∫ P ( z ) P ( x ∣ z ) d z ( 1 ) P(x) = ∫P(z)P(x∣z)dz \quad(1) P(x)=P(z)P(xz)dz(1) , 其中 z ∼ N ( 0 , I ) , x ∣ z ∼ N ( μ ( z ) , σ ( z ) ) z \sim N(0,I), \quad x|z \sim N \big(\mu(z), \sigma(z)\big) zN(0,I),xzN(μ(z),σ(z))

接下来就可以求解这个式子。由于P(z)是已知的,P(x|z)未知,而 x ∣ z ∼ N ( μ ( z ) , σ ( z ) ) x|z \sim N \big(\mu(z), \sigma(z)\big) xzN(μ(z),σ(z)),于是我们真正需要求解的,是 μ ( z ) \mu (z) μ(z)和$ \sigma (z)$两个函数的表达式。很难直接计算积分部分,因为我们很难穷举出所有的向量z用于计算积分,我们需要引入两个神经网络来帮助我们求解。

  • 第一个神经网络在VAE叫做Decoder,它求解的 μ ( z ) \mu (z) μ(z)和$ \sigma (z)$和两个函数,这等价于求解P(x|z)。

  • 第二个神经网络在VAE叫做Encoder,它求解的结果是 q ( z ∣ x ) , z ∣ x ∼ N ( μ ′ ( x ) , σ ′ ( x ) ) q(z∣x), z|x \sim N\big(\mu^\prime(x), \sigma^\prime(x)\big) q(zx)zxN(μ(x),σ(x)),q可以代表任何分布。它主要是用来得到给定一个 x 然后得到对应 z 的 μ ′ ( x ) , σ ′ ( x ) \mu^\prime(x), \sigma^\prime(x) μ(x),σ(x)

这儿引入第二个神经网络Encoder的目的是,辅助第一个Decoder求解P(x|z)

现在梳理一下我们的目的,我们需要求P(x),然后P(x)可以表示为:

P ( x ) = ∫ P ( z ) P ( x ∣ z ) d z P(x) = ∫P(z)P(x∣z)dz P(x)=P(z)P(xz)dz

我们希望P(x)越大越好,等价于求

M a x m i z e L = ∑ x l o g P ( x ) Maxmize L = \sum_x logP(x) MaxmizeL=xlogP(x)

又因为

log ⁡ P ( x ) = ∫ z q ( z ∣ x ) log ⁡ P ( x ) d z \log P(x) = \int_z q(z|x) \log P(x) dz logP(x)=zq(zx)logP(x)dz

因为 ∫ z q ( z ∣ x ) d z = 1 \int_z q(z|x) dz = 1 zq(zx)dz=1

所以

log ⁡ P ( x ) = ∫ z q ( z ∣ x ) log ⁡ P ( z , x ) P ( z ∣ x ) d z = ∫ z q ( z ∣ x ) log ⁡ P ( z , x ) q ( z ∣ x ) q ( z ∣ x ) P ( z ∣ x ) d z = ∫ z q ( z ∣ x ) log ⁡ P ( z , x ) q ( z ∣ x ) d z + ∫ z q ( z ∣ x ) log ⁡ q ( z ∣ x ) P ( z ∣ x ) d z = D K L ( q ( z ∣ x ) ∣ ∣ P ( z ∣ x ) ) + ∫ z q ( z ∣ x ) log ⁡ P ( z , x ) q ( z ∣ x ) d z ≥ ∫ z q ( z ∣ x ) log ⁡ P ( x ∣ z ) P ( z ) q ( z ∣ x ) d z since  D K L ( q ∣ ∣ P ) ≥ 0 \begin{aligned} \log P(x) &= \int_z q(z|x) \log \frac{P(z,x)}{P(z|x)} dz \\ &= \int_z q(z|x) \log \frac{P(z,x)q(z|x)}{q(z|x)P(z|x)} dz \\ &= \int_z q(z|x) \log \frac{P(z,x)}{q(z|x)} dz + \int_z q(z|x) \log \frac{q(z|x)}{P(z|x)} dz \\ &= D_{KL}(q(z|x) || P(z|x)) + \int_z q(z|x) \log \frac{P(z,x)}{q(z|x)} dz \\ &\geq \int_z q(z|x) \log \frac{P(x|z)P(z)}{q(z|x)} dz \quad \text{since } D_{KL}(q||P) \geq 0 \end{aligned} logP(x)=zq(zx)logP(zx)P(z,x)dz=zq(zx)logq(zx)P(zx)P(z,x)q(zx)dz=zq(zx)logq(zx)P(z,x)dz+zq(zx)logP(zx)q(zx)dz=DKL(q(zx)∣∣P(zx))+zq(zx)logq(zx)P(z,x)dzzq(zx)logq(zx)P(xz)P(z)dzsince DKL(q∣∣P)0

我们将 ∫ z q ( z ∣ x ) log ⁡ P ( x ∣ z ) P ( z ) q ( z ∣ x ) d z \int_z q(z|x) \log \frac{P(x|z)P(z)}{q(z|x)} dz zq(zx)logq(zx)P(xz)P(z)dz 称为 log ⁡ P ( x ) \log P(x) logP(x) 的 (variational) lower bound (变分下界),简称为 L b L_b Lb

即 原式化简为 l o g P ( x ) = L b + K L ( q ( z ∣ x ) ∣ ∣ p ( z ∣ x ) ) log P(x) = L_b + KL(q(z|x)||p(z|x)) logP(x)=Lb+KL(q(zx)∣∣p(zx))

原本,我们需要求 P ( x ∣ z ) P(x|z) P(xz) 使得 l o g P ( x ) log P(x) logP(x) 最大,现在引入了一个 q ( z ∣ x ) q(z|x) q(zx),变成了同时求 P ( x ∣ z ) P(x|z) P(xz) q ( z ∣ x ) q(z|x) q(zx)使得 l o g P ( x ) log P(x) logP(x)最大。实际上,因为后验分布 P ( z ∣ x ) P(z|x) P(zx) 很难求 (intractable),所以才用 q ( z ∣ x ) q(z|x) q(zx) 来逼近这个后验分布。在优化的过程中我们发现,首先 q ( z ∣ x ) q(z|x) q(zx) log ⁡ P ( x ) \log P(x) logP(x) 是完全没有关系的, log ⁡ P ( x ) \log P(x) logP(x) 只跟 P ( z ∣ x ) P(z|x) P(zx) 有关,调节 q ( z ∣ x ) q(z|x) q(zx) 是不会影响似然也就是 log ⁡ P ( x ) \log P(x) logP(x) 的。所以,当我们固定住 P ( x ∣ z ) P(x|z) P(xz) 时,调节 q ( z ∣ x ) q(z|x) q(zx) 最大化下界 L b L_b Lb,KL 则越小。当 q ( z ∣ x ) q(z|x) q(zx) 逼近后验分布 P ( z ∣ x ) P(z|x) P(zx) 时,KL 散度趋于为 0, log ⁡ P ( x ) \log P(x) logP(x) 就和 L b L_b Lb 等价。所以最大化 log ⁡ P ( x ) \log P(x) logP(x) 就等价于最大化 L b L_b Lb

现在我们来求 Maxmize L b L_b Lb

L b = ∫ z q ( z ∣ x ) log ⁡ P ( z , x ) q ( z ∣ x ) d z = ∫ z q ( z ∣ x ) log ⁡ P ( x ∣ z ) P ( z ) q ( z ∣ x ) d z = ∫ z q ( z ∣ x ) log ⁡ P ( z ) q ( z ∣ x ) d z + ∫ z q ( z ∣ x ) log ⁡ P ( x ∣ z ) d z = − D K L ( q ( z ∣ x ) ∣ ∣ P ( z ) ) + E q ( z ∣ x ) [ log ⁡ P ( x ∣ z ) ] \begin{aligned} L_b &= \int_z q(z|x) \log \frac{P(z,x)}{q(z|x)} dz \\ &= \int_z q(z|x) \log \frac{P(x|z)P(z)}{q(z|x)} dz \\ &= \int_z q(z|x) \log\frac {P(z)}{q(z|x)} dz +\int_z q(z|x) \log P(x|z) dz \\ &= -D_{KL}(q(z|x) || P(z)) + E_{q(z|x)}[\log P(x|z)] \end{aligned} Lb=zq(zx)logq(zx)P(z,x)dz=zq(zx)logq(zx)P(xz)P(z)dz=zq(zx)logq(zx)P(z)dz+zq(zx)logP(xz)dz=DKL(q(zx)∣∣P(z))+Eq(zx)[logP(xz)]

所以,求解 Maxmize L b L_b Lb,等价于求解KL(q(z|x)||P(z))的最小值和==$ E_{q(z|x)}[\log P(x|z)]$的最大值。==

  • 我们先来求第一项,其实 − D K L ( q ( z ∣ x ) ∣ ∣ P ( z ) ) -D_{KL}(q(z|x) || P(z)) DKL(q(zx)∣∣P(z))的展开式刚好等于: ∑ i = 1 J ( e x p ( σ i ) − ( 1 − σ i ) + ( m i ) 2 ) \sum _{i=1}^J (exp(\sigma_i)-(1-\sigma_i)+(m_i)^2) i=1J(exp(σi)(1σi)+(mi)2),于是,第一项式子就是第二节VAE模型架构中第二个损失函数的由来,其实就是去调节NN’使得到的q(z|x)与标准正态分布约接近越好

  • 接下来求第二项,注意到Maxmize$ E_{q(z|x)}[\log P(x|z)]$,也就是表明在给定求q(z|x)(编码器输出)的情况下p(x|z)(解码器输出)的值尽可能高,这其实就是一个类似于Auto-Encoder的损失函数(方差忽略不计的话),过程如下图所示:

    • 我们要想从q(z|x)中sample一个data,就将x输入到NN中,产生 μ ′ ( x ) , σ ′ ( x ) \mu^\prime(x), \sigma^\prime(x) μ(x),σ(x),然后产生z,接下来我们要maxmize z产生x的几率,即要想输出maxmize log P(x|z)就需要让NN的输出 μ ( x ) \mu(x) μ(x) 与 x越接近越好

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

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

相关文章

CMU 15-445 -- Timestamp Ordering Concurrency Control - 15

CMU 15-445 -- Timestamp Ordering Concurrency Control - 15 引言Basic T/OBasic T/O ReadsBasic T/O WritesBasic T/O - Example #1Basic T/O - Example #2 Basic T/O SummaryRecoverable Schedules Optimistic Concurrency Control (OCC)OCC - ExampleSERIAL VALIDATIONOCC …

Linux:ELK:日志分析系统(使用elasticsearch集群)

原理 1. 将日志进行集中化管理(beats) 2. 将日志格式化(logstash) 将其安装在那个上面就对那个进行监控 3. 对格式化后的数据进行索引和存储(elasticsearch) 4. 前端数据的展示(kibana&…

【MySQL】基本查询(表的增删查改)

目录 一、插入操作 --- insert1.1 单行指定列插入&&单行全列插入1.2 多行指定列插入&&多行全列插入1.3 插入否则更新 duplicate key update1.4 删除并替换 replace 二、查询操作 --- select2.1 基本查询2.2 where条件2.3 案例演示2.4 排序(order by…

HDFS异构存储详解

异构存储 HDFS异构存储类型什么是异构存储异构存储类型如何让HDFS知道集群中的数据存储目录是那种类型存储介质 块存储选择策略选择策略说明选择策略的命令 案例:冷热温数据异构存储对应步骤 HDFS内存存储策略支持-- LAZY PERSIST介绍执行使用 HDFS异构存储类型 冷…

【代码随想录day20】二叉搜索树的最小绝对差

题目 给你一个二叉搜索树的根节点 root ,返回 树中任意两不同节点值之间的最小差值 。 差值是一个正数,其数值等于两值之差的绝对值。 思路 最简单的一个思路是使用中序遍历,从二叉排序树中得到有序序列,存储到self.elem中&…

静态 链接

1、空间与地址的分配 现在的链接器空间分配的策略基本上都采用 “相似段合并” 的方式。通过将所有相同类型的 section 合并到一起,例如将所有输入目标文件的 .text 合并(按顺序合并)到输出文件的 .text 节中;然后,链接…

EasyExcel实现多sheet excel导出

EasyExcel简介 Java领域解析、生成Excel比较有名的框架有Apache poi、jxl等。但他们都存在一个严重的问题就是非常的耗内存。如果你的系统并发量不大的话可能还行,但是一旦并发上来后一定会OOM或 者JVM频繁的full gc。 EasyExcel是阿里巴巴开源的一个excel处理框架…

eNSP的安装【最全最详细教程】

目录 一、下载软件和插件二、VirtualBox安装步骤三、WinPcap安装步骤四、Wireshark安装步骤五、eNSP安装步骤六、eNSP测试安装eNSP可能失败的原因 一、下载软件和插件 在安装eNSP之前分别要下载三个插件:VirtualBox、WinPcap、Wireshark 下载软件链接:…

集成学习概述

集成学习 1. 集成学习概念 集成学习是解决有监督机器学习任务的一类方法,它的思路是基于多个学习算法的集成来提升预测结果,它通过多个模型的组合形成一个精度更高的模型,参与组合的模型成为弱学习器(基学习器)。训练时,使用训练集依次训练出这些弱学习器,对未知的样本…

PLC编程:关键在于模拟操作流程和实现控制

PLC编程的核心是通过程序描述流程,完成控制过程。因此,掌握PLC编程语言和基本功能实现是必要的。 PLC语言主要分为梯形图、语句和功能图。梯形图适合基本逻辑描述,语句表用于数据处理,相对较难理解。步进式功能图的状态函数描述很…

[NLP]LLaMA与LLamMA2解读

摘要 Meta最近提出了LLaMA(开放和高效的基础语言模型)模型参数包括从7B到65B等多个版本。最值得注意的是,LLaMA-13B的性能优于GPT-3,而体积却小了10倍以上,LLaMA-65B与Chinchilla-70B和PaLM-540B具有竞争性。 一、引言 一般而言&#xff0…

IT 资产管理功能

ServiceDesk Plus 支持ITIL流程,帮助管理员制定明智的业务决策,在整个生命周期中跟踪所有资产的硬件和软件。 ServiceDesk Plus 中的资产管理模块包含多种功能,例如:多种扫描资产的方法;基于代理和无代理的方法&#…

新老联手,火花四溅?大众汽车与小鹏汽车达成长期合作框架协议

7 月 26 日资讯,大众汽车宣布与小鹏汽车达成长期合作框架协议,并在官网中正式宣布,大众是老牌油车领军代表,小鹏则是新势力中的佼佼者,新老强强联手,又会碰撞出怎样的火花呢? 现阶段大众计划与…

凭借一份深入解析 Java 虚拟机 HotSpot 手册,让我卷成美团架构师

前言 Java 语言已经走过了 20 多个年头,在此期间虽然新语言层出不穷,但是都没有撼动 Java 的位置。可能是历史选择了 Java,也可能是 Java 改变了历史,总之,Java 无疑是一门成功的编程语言。这门语言之所以能如此成功&…

MODBUS RTU转 EtherNet/IP 网关连接森兰变频器与欧姆龙系统通讯配置案例

捷米特JM-EIP-RTU(Modbus转Ethernet/Ip)网关,用于将多个 MODBUS 从站设备接入 ETHERNET/IP 主站网络,实现 MODBUS 转 ETHERNET/IP 功能。配上 捷米特JM-EIP-RTU网关专用的 EDS 文件,实现 ETHERNET/IP 主 站对 MODBUS 从站设备的控…

Java多线程锁

多线程锁 本专栏学习内容又是来自尚硅谷周阳老师的视频 有兴趣的小伙伴可以点击视频地址观看 Synchronized Synchronized是Java中锁的一种实现方法,我们需要了解他锁在什么地方,锁的类型有哪些 阿里巴巴开发手册规定: 高并发时,同…

大语言模型LLM技术赋能软件项目管理和质量保障︱微软中国高级研发经理步绍鹏

微软中国高级研发经理步绍鹏先生受邀为由PMO评论主办的2023第十二届中国PMO大会演讲嘉宾,演讲议题:大语言模型LLM技术赋能软件项目管理和质量保障。大会将于8月12-13日在北京举办,敬请关注! 议题内容简要: 本次分享将…

809 协议相关

809 协议 目录概述需求: 设计思路实现思路分析1.概念2.业务流程3.详细过程4.相关过程 参考资料 Survive by day and develop by night. talk for import biz , show your perfect code,full busy,skip hardness,make a better result,wait for change,ch…

Windows上安装Docker Desktop

运行环境 Windows 10Docker Desktop 4.21.1 安装步骤 步骤1: 勾掉"Use WSL 2 instead of Hyper-V(recommended)"(原因见小插曲2章节) 步骤2: 安装完成 步骤3: 运行Docker Desktop 步骤4: …

面试了无数家公司整理的软件测试面试题【含答案】

1、自动化代码中,用到了哪些设计模式? 单例设计模式 工厂模式PO设计模式数据驱动模式面向接口编程设计模式 2、什么是断言( Assert) ? 断言Assert用于在代码中验证实际结果是不是符合预期结果,如果测试用例执行失败会抛出异常并提供断言日志 3、什么是web自动化测…