L4 Latent Variable Model

news2024/11/19 9:39:36

Lecture4 Latent Variable Model

在之前我们所介绍的Autoregressive Model和Flow Model中,讨论的都是observable的数据,及一切数据都是可以观测到的。这一讲主要讨论的是latent variable model,即有些变量我们是无法直接观测的。

Latent Variable

首先,我们需要理解什么是latent variable。Lecture中举了一个例子
在这里插入图片描述

上图中这几只柯基犬,他们所在的长椅,身后的大树,这些都是我们可以从图中直接观测到的。而图中整体的背景,狗分别对应第几个object,所在的位置坐标,这些不是我们能够直接从图上看出来的,就可以理解为latent variable。

然而对我来说,这个例子还是不够形象,因此我Wikipedia了一下,上面是这样解释的:

Latent variables, as created by factor analytic methods, generally represent “shared” variance, or the degree to which variables “move” together.

把这句话与我们的生成任务结合,其实就好理解了,latent variable可以看作是从一类数据中抽象出来的更加general的信息,或者说是一类数据的pattern、mode。比如上图,如果背景是latent variable之一,图中背景是公园里的树和长椅,那么也就意味着这种有狗狗的图片的背景通常和树、公园、长椅相关。

General Latent Variable Model

LVM的general形式可以用下图表示, z z z表示latent variable, x x x是我们的数据。latent variable服从一个概率分布 p Z ( z ) p_{Z}(z) pZ(z),这个分布也是我们给定的。

在这里插入图片描述

和之前一样,我们要解决的还是以下这几大问题:

  • Sample: x ∼ p θ ( x ∣ z ) x \sim p_{\theta}(x|z) xpθ(xz)
  • Inference: p θ ( x )   =   ∑ z p Z ( z ) p θ ( x ∣ z ) p_{\theta}(x)\ =\ \sum_{z}p_{Z}(z)p_{\theta}(x|z) pθ(x) = zpZ(z)pθ(xz)
  • Train: max ⁡ θ   ∑ i log ⁡ p θ ( x ( i ) )   =   max ⁡ θ   ∑ i log ⁡ ∑ z p Z ( z ) p θ ( x ( i ) ∣ z ) \max_{\theta}\ \sum_{i}\log p_{\theta}(x^{(i)})\ =\ \max_{\theta}\ \sum_{i}\log \sum_{z}p_{Z}(z)p_{\theta}(x^{(i)}|z) maxθ ilogpθ(x(i)) = maxθ ilogzpZ(z)pθ(x(i)z)
  • Representation: x → z x \rightarrow z xz

Variational Auto Encoder

首先,我们来看我们的training objective:
max ⁡ θ    ∑ i log ⁡ ∑ z p Z ( z ) p θ ( x ( i ) ∣ z ) \max_{\theta}\ \ \sum_{i}\log \sum_{z}p_{Z}(z)p_{\theta}(x^{(i)}|z) θmax  ilogzpZ(z)pθ(x(i)z)
很明显的一个问题是 z z z的取值,如果 z z z的取值比较少,我们假设是三种取值 A , B , C A,B,C A,B,C,并且每一种取值等概率,那么我们就可以直接用Gaussians来fit p θ ( x ∣ z ) p_{\theta}(x|z) pθ(xz):
p θ ( x ∣ z = k )   =   1 ( 2 π ) n / 2 ∣ Σ k ∣ 1 2 e x p ( − 1 2 ( x − μ k ) T Σ k − 1 ( x − μ k ) ) p_{\theta}(x|z=k)\ =\ \frac{1}{(2\pi)^{n/2}|\Sigma_{k}|^{\frac{1}{2}}}exp(-\frac{1}{2}(x-\mu_{k})^T \Sigma_{k}^{-1}(x-\mu_k)) pθ(xz=k) = (2π)n/2Σk211exp(21(xμk)TΣk1(xμk))
那么training objective就变成了mixture of Gaussians:
max ⁡ μ , Σ     ∑ i log ⁡ [ 1 3 1 ( 2 π ) n / 2 ∣ Σ A ∣ 1 2 e x p ( − 1 2 ( x − μ A ) T Σ A − 1 ( x − μ A ) ) + 1 3 1 ( 2 π ) n / 2 ∣ Σ B ∣ 1 2 e x p ( − 1 2 ( x − μ B ) T Σ B − 1 ( x − μ B ) ) + 1 3 1 ( 2 π ) n / 2 ∣ Σ C ∣ 1 2 e x p ( − 1 2 ( x − μ C ) T Σ C − 1 ( x − μ C ) ) ] \max_{\mu, \Sigma}\ \ \ \sum_{i}\log [\frac{1}{3} \frac{1}{(2\pi)^{n/2}|\Sigma_{A}|^{\frac{1}{2}}}exp(-\frac{1}{2}(x-\mu_{A})^T \Sigma_{A}^{-1}(x-\mu_A)) + \\ \frac{1}{3} \frac{1}{(2\pi)^{n/2}|\Sigma_{B}|^{\frac{1}{2}}}exp(-\frac{1}{2}(x-\mu_{B})^T \Sigma_{B}^{-1}(x-\mu_B)) + \\ \frac{1}{3} \frac{1}{(2\pi)^{n/2}|\Sigma_{C}|^{\frac{1}{2}}}exp(-\frac{1}{2}(x-\mu_{C})^T \Sigma_{C}^{-1}(x-\mu_C))] μ,Σmax   ilog[31(2π)n/2ΣA211exp(21(xμA)TΣA1(xμA))+31(2π)n/2ΣB211exp(21(xμB)TΣB1(xμB))+31(2π)n/2ΣC211exp(21(xμC)TΣC1(xμC))]

在这里插入图片描述

上图是一个二维的例子。

那如果 z z z的取值非常多,我们没办法一一列举呢?事实上这才是绝大多数情况。一种方法是prior sampling

Prior Sampling

主要思想是既然 z z z取值太多,那么我们就sample一些 z z z做一个approximation。
∑ i log ⁡ ∑ z p Z ( z ) p θ ( x ( i ) ∣ z )   ≃ ∑ i log ⁡ 1 K ∑ k = 1 K p θ ( x ( i ) ∣ z k ( i ) )       z k ( i ) ∼ p Z ( z ) \sum_{i}\log \sum_{z}p_{Z}(z)p_{\theta}(x^{(i)}|z)\ \simeq \sum_{i}\log \frac{1}{K}\sum_{k=1}^{K}p_{\theta}(x^{(i)}|z^{(i)}_{k})\ \ \ \ \ z^{(i)}_{k} \sim p_{Z}(z) ilogzpZ(z)pθ(x(i)z) ilogK1k=1Kpθ(x(i)zk(i))     zk(i)pZ(z)
这样做有两个问题:

  1. 在有些情况里,sample z z z from p Z ( z ) p_{Z}(z) pZ(z)可能比较困难
  2. sample出来的 z z z与我们的 x x x不相关,这种概率非常大

Importance Sampling

来看怎么改进,下面需要一些数学推导,我们先把objective抽象成如下形式: E z ∼ p Z ( z ) f ( z ) \mathbb{E}_{z \sim p_{Z}(z)}f(z) EzpZ(z)f(z)
E z ∼ p Z ( z ) [ f ( z ) ]   =   ∑ z p Z ( z ) f ( z ) =   ∑ z q ( z ) q ( z ) p Z ( z ) f ( z ) =   E z ∼ q ( z ) p Z ( z ) q ( z ) f ( z ) \mathbb{E}_{z \sim p_Z(z)}[f(z)]\ =\ \sum_{z}p_Z(z)f(z) \\ =\ \sum_{z}\frac{q(z)}{q(z)}p_{Z}(z)f(z) \\ =\ \mathbb{E}_{z \sim q(z)} \frac{p_Z(z)}{q(z)}f(z) EzpZ(z)[f(z)] = zpZ(z)f(z)= zq(z)q(z)pZ(z)f(z)= Ezq(z)q(z)pZ(z)f(z)
这样一来,我们就把 z z z的概率分布从 p Z ( z ) p_{Z}(z) pZ(z)转移到了 q ( z ) q(z) q(z),于是只要我们让 q ( z ) q(z) q(z)能够满足:

  1. sample z z z很容易
  2. sample出来的 z z z是informative的,与我们的 x x x是相关的

那就可以再使用prior sampling的方法去做approximation了。于是问题转变成了怎么选取 q ( z ) q(z) q(z)。我们先不看第一个要求,先考虑第二个,我们希望sample的 z z z能够和我们的 x x x对应起来,把这句话换个说法,也就是给定 x x x,我们希望sample出来的 z z z的概率越大越好,那不就是 p θ ( z ∣ x )   =   p θ ( x ∣ z ) p Z ( z ) p θ ( x ) p_{\theta}(z|x)\ =\ \frac{p_{\theta}(x|z)p_{Z}(z)}{p_{\theta}(x)} pθ(zx) = pθ(x)pθ(xz)pZ(z)么?

唯一的问题是,我们现在还不确定怎么从这个分布里进行sample。那再换种思路,如果我们令 q ( z ) q(z) q(z)是一个好sample的分布,比如Gaussian,然后让这个 q ( z ) q(z) q(z) p θ ( z ∣ x ) p_{\theta}(z|x) pθ(zx)越接近越好不就解决了么?如何measure两个分布的差距?自然想到用 K L KL KL Divergence。
m i n q ( z ) K L ( q ( z ) ∣ ∣ p θ ( z ∣ x ) ) = m i n q ( z ) E z ∼ q ( z ) log ⁡ ( q ( z ) p θ ( z ∣ x ) ) = m i n q ( z ) E z ∼ q ( z ) log ⁡ ( q ( z ) p θ ( x ∣ z ) p Z ( z ) / p θ ( x ) ) = m i n q ( z ) E z ∼ q ( z ) [ log ⁡ q ( z ) − log ⁡ p θ ( x ∣ z ) − log ⁡ p Z ( z ) ] + log ⁡ p θ ( x ) min_{q(z)} KL(q(z) || p_{\theta}(z|x)) \\ = min_{q(z)} \mathbb{E}_{z \sim q(z)} \log(\frac{q(z)}{p_{\theta}(z|x)}) \\ = min_{q(z)} \mathbb{E}_{z \sim q(z)} \log(\frac{q(z)}{p_{\theta}(x|z)p_{Z}(z)/p_{\theta}(x)})\\ = min_{q(z)} \mathbb{E}_{z \sim q(z)} [\log q(z) - \log p_{\theta}(x|z) - \log p_{Z}(z)] + \log p_{\theta}(x) minq(z)KL(q(z)∣∣pθ(zx))=minq(z)Ezq(z)log(pθ(zx)q(z))=minq(z)Ezq(z)log(pθ(xz)pZ(z)/pθ(x)q(z))=minq(z)Ezq(z)[logq(z)logpθ(xz)logpZ(z)]+logpθ(x)

Amortized Inference

考虑到当inference的需求量比较高时,每次我们都需要train一个独立的 q ( z ) q(z) q(z),效率比较低。于是我们可以也把 q ( z ) q(z) q(z)做一个parameterize,就是用neural network来拟合 q ( z ) q(z) q(z),于是 q ( z ) q(z) q(z)就变成了 q ϕ ( z ∣ x ) q_{\phi}(z|x) qϕ(zx)。这样做的好处是比较快,但是准确性自然就有所下降。

Variational Lower Bound

我们把上面得到的式子做一个移项就能够得到
log ⁡ p θ ( x )   =   E z ∼ q ϕ ( z ) [ log ⁡ p θ ( x ∣ z ) + log ⁡ p Z ( z ) − log ⁡ q ϕ ( z ) ] + K L ( q ϕ ( z ∣ x ) ∣ ∣ p θ ( x ∣ z ) ) \log p_{\theta}(x)\ =\ \mathbb{E}_{z \sim q_{\phi}(z)} [\log p_{\theta}(x|z) + \log p_{Z}(z) - \log q_{\phi}(z)] + KL(q_{\phi}(z|x) || p_{\theta}(x|z)) logpθ(x) = Ezqϕ(z)[logpθ(xz)+logpZ(z)logqϕ(z)]+KL(qϕ(zx)∣∣pθ(xz))
等式右边第一项就叫做Variational Lower Bound(VLB)。我们的目标是maximize likelihood,也就是等式左边,同时minimize 我们构造出的 q ϕ ( z ) q_{\phi}(z) qϕ(z) p θ ( x ∣ z ) p_{\theta}(x|z) pθ(xz)之间的KL divergence,因此我们的training objective就等价为maximize VLB。

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

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

相关文章

2022尚硅谷SSM框架跟学(六)Spring MVC基础一

2022尚硅谷SSM框架跟学 六Spring MVC基础一三、SpringMVC1.SpringMVC简介1.1什么是MVC1.2什么是SpringMVC1.3SpringMVC的特点2入门案例2.1开发环境2.2创建maven工程(1)添加web模块(2)打包方式:war(3)引入依赖2.3配置web.xml(1)默认配置方式(2)扩展配置方式2.4创建请…

C++封装Halcon算法动态链接库Dll补充

前面写了一篇关于C封装DLL的文章,这里是做一个补充。 一、关于如何配置halcon和opencv库不再多说,前面文章介绍的很详细。下面介绍封装新增的东西。 1.1 首先创建类function1,并编写function.h和function1.cpp代码。 function1.h代码 #pra…

处理任务失败附实验(RH294)

首先,一个任务执行失败是肯定会遇见的事情而这时候,就需要一个备用的计划忽略任务失败默认情况下 任务失败的时候play会终止但是,我们可以通过忽略失败的任务来覆盖此行文使用关键字 ignore_errors举个栗子- name: Latest version of notapkg…

《流浪地球 2》 Deepfake 小试牛刀,45+ 吴京「被」年轻,变身 21 岁小鲜肉

内容一览:在春节档科幻电影「流浪地球 2」中,主演吴京、刘德华、沙溢等人饰演的角色,跨越 14 年之久,视效团队正是借助 Deepfake de-aging 技术,呈现出了演员不同年龄段的容貌。 关键词:De-aging Deepfa…

回收租赁商城系统功能拆解13讲-分销会员

回收租赁系统适用于物品回收、物品租赁、二手买卖交易等三大场景。 可以快速帮助企业搭建类似闲鱼回收/爱回收/爱租机/人人租等回收租赁商城。 回收租赁系统支持智能评估回收价格,后台调整最终回收价,用户同意回收后系统即刻放款,用户微信零…

springboot应用项目的打包和部署

jar包方式打包部署 springboot项目在为进行打包处理时就已经可以进行运行调试,是因为springboot项目内嵌了Tomcat服务器. .1添加Maven打包插件。在对Spring Boot项目进行打包(包括ar包和War包)前,需要在项目pom.xml文件中加入Maven打包插件&#xff0c…

倾角传感器的六大应用场合

倾角传感器又名水平传感器、水平仪、倾角仪,是角度传感器的一种,是运用惯性原理的一种加速度传感器,可以通过检测使用环境中的倾斜角度判断设备的倾斜状态,并在监测物出现角度偏差时,倾角传感器能够将异常数据传达给管…

【自学Docker 】Docker export命令

Docker export命令 概述 docker export教程 docker export 命令可以用于将 Docker容器 里的文件系统作为一个 tar 归档文件导出到标准输出。docker export 命令后面的 CONTAINER 可以是容器Id,或者是容器名。 docker save 命令用于将 Docker 镜像保存成 tar 包&a…

5nm三苯甲基/P3HT-PY/CdSe油溶性碳量子点CdSe/ZnS-PrPC的制备方法

5nm三苯甲基/P3HT-PY/CdSe油溶性碳量子点CdSe/ZnS-PrPC的制备方法今天小编分享制备三苯甲基功能化油溶性碳量子点的制备过程,一起看看吧:三苯甲基功能化油溶性碳量子点的制备过程:将50 mg Amino-CQDs放置在100 mL圆底烧瓶中,加入 50 mL二氯甲…

PyQt6-QLabel学习笔记

QLabel支持文本或图片显示,是任何GUI设计中最常用的控件之一。一、QLabel基本概述QLabel标签用于显示,可以以多种方式进行外观配置,没有提供用户交互功能,但是可以用于为另一个小部件指定焦点助记符或快捷键。显示内容类型类型说明…

HoloLens 2 应用开发流程笔记

本文链接:微信推文阅读效果更佳 目录安装工具应用开发举例配置 Unity创建新的 Unity 项目切换生成平台导入和配置资源导入 MRTK Unity 基础包配置 Unity 项目为 XR SDK 配置项目设置创建场景并配置 MRTK交互例子添加并调整第一个立方体向立方体添加脚本添加第二个立…

20篇高质量程序人生文章分享,做开发不仅仅只有代码

我一直觉得,我们做开发,不应该只有代码,合上公司的电脑脱离了公司的产品需求就脱离了程序,而应该结合软件的程序思维去更多的思考我们所处的生活和空间,从而指导自己面对更多的未曾见过的人与事,这可能就是…

Java基础之异常处理

一、小试牛刀 num1 / num2 当除数为零时,程序就会抛出异常,程序就会崩溃而导致退出。 我们可以通过异常处理机制来解决该问题 如果我们认为一段代码可能发生异常,可以使用try-catch-finally异常处理机制来解决。从而保证程序的健壮性。 将可能…

前端工程化-多维度检测重复代码

更多文章可关注我的个人博客:https://seven777777.github.io/myblog/ 1. 检测项目重复代码 1.1 检测方案:jscpd 方法一: 全局安装jscpd依赖npm i -g jscpd项目根路径执行:jscpd -p "src/**/*.js" -k 15 -l 5 方法二…

【黑马SpringCloud(3)】Docker

Docker初识DockerDocker与虚拟机的区别Docker架构DockerHubDocker镜像操作Docker容器操作数据卷自定义镜像镜像结构Dockerfile构建Java项目基于java:8-alpine镜像,构建java项目集群部署微服务Docker-Compose镜像仓库搭建私有镜像仓库Docker安装:https://…

Go第 14 章 :文件操作

Go第 14 章 :文件操作 14.1 文件的基本介绍  文件的概念 文件,对我们并不陌生,文件是数据源(保存数据的地方)的一种,比如大家经常使用的 word文档,txt文 件,excel 文件…都是文件。文件最主要的作用就是保存数据,它既可以保存一张图片,也可以保持视频,声 音… …

排序分页多表查询

文章目录一、排序ORDER BY排序规则单列排序多列排序二、分页LIMIT背景实现格式举例公式优点三、多表查询笛卡尔积(或交叉连接)的理解解决笛卡尔积问题多表查询分类等值连接非等值连接自连接内连接 vs 外连接SQL99实现多表查询基本语法内连接(…

测试人员怎么对待Bug

测试人员如何描述发现的Bug咱们提Bug至少要包含这个问题出现的版本,问题出现的环境,问题出现的步骤,预期结果,实际结果。但不限于标题,bug归属,bug等价等等举个栗子😁很容易发现二维码被登入页面…

深入分析三层网络交换机的原理和设计

引言 传统路由器在网络中起到隔离网络、隔离广播、路由转发以及防火墙的作业,并且随着网络的不断发展,路由器的负荷也在迅速增长。其中一个重要原因是出于安全和管理方便等方面的考虑,VLAN(虚拟局域网)技术在网络中大量应用。VLAN技术可以逻辑…

跨平台编译go(交叉编译)

以将一个简单的go http 部署到docker为例! 方法一:构建service镜像同时拉取go镜像 Dockerfile文件 # alpine Linux发行版,该发行版的大小很小并且内置了Go FROM golang:alpine# 设置linux环境变量 ENV GO111MODULEon \CGO_ENABLED0 \GOOSl…