系列33 Flow_Model

news2024/10/7 18:29:53

Introduction

在上一小节中讲到了Latent Variable Model(LAM),VAE。其主要思想就是将隐变量扩充为高维连续的分布,来增强模型的表达能力。而LAM模型中的核心困难是 计算不出来,因为 ,而 的维度过高 算不出来。而根据Bayesian公式:

所以导致 无法计算。而VAE那章介绍了近似推断的方法,使用一个简单分布 来近似 ,其中还使用重参数化技巧来用一个神经网络来代替分布。

而在VAE中通过优化变分下界ELBO来达到最终优化的目的,而不是直接对Log似然函数进行优化。所以当然会有误差了。那么这将启发我们,可不可以绕过这个intractable的 ,使模型变得tractable。

Flow based Model

什么是flow model呢?首先用一张图来进行表示:

alt

可以用一个简单的例子来简单的介绍Flow model。 可以代表是当前的自己,人是比较复杂的,所以 计算非常困难。而一般昨天的我 ,比今天要简单一点,但是很有可能,昨天的我依然很复杂,无法计算。那么,就不但的往前推,到了刚出生的时候 ,这时肯定是非常简单的, 婴儿的世界里是非黑即白的,此时的分布很简单,可以被假设为 。而这个过程:

就被称为“流”。因为流模型中初始分布是很简单的。极大似然估计中求的是: 。那么下一个问题就是如何建立 之间的关系,将 转换成求关于 的函数。

Change of Variables

假设 。而 是一个光滑可逆的函数。

那么可以得到:

根据不定积分的性质可以得到:

是光滑可逆的,所以 ,那么有

但是实际上 都是高维变量,所以 是一个Jacobian Matrix。\textbf{熟悉矩阵的朋友应该知道,矩阵代表了一个变换,而矩阵行列式的值则代表了变换的尺度。}而在计算中我们关注的是矩阵变换的尺度,所以,

而最终的目的是想将 完全用一个 为自变量的函数来表达,所以要将 来表示。下面先写结论

这个结论是怎么来的呢?我们来看一个简单的例子,如下图所示:

alt

如图所示, 。那么有

而,

在本文举的例子中,

很显然有 。这就是change of variables theorem。我们可以得到两个变量之间关于映射 的转换为:

\textbf{那么,当训练完成之后,从 中采样比较简单,通过上述公式,就可以得到 ,所以 是可求解的。}如何学习呢?其实并不难,通过极大似然估计可以得到:

那么:

由于 的逆很要求,上述梯度的计算还是比较简单的。然而,关于大矩阵行列式的计算并不美丽。后续有很多针对这点的改进方法,有兴趣的同学自行查看flow based的论文。

[1] ICLR 2015 NICE-Non-linear Independent Components Estimation

[2] ICLR 2017 Density estimation using Real NVP

[3] 2018 Glow: Generative Flow with Invertible 1×1 Convolutions

小结

本章主要介绍的是流模型的主要思想,在Latent Variable Model经常会遇到后验过于复杂无法求解的问题。流模型绕开了这个部分,对更简单的分布建模,然后建立原分布与简单分布之间的映射关系。个人觉得Stein变分梯度下降就有点流模型的影子在里面。在建立映射关系是用到了重要的change of variables theorem,并之后介绍了变化后的目标函数和梯度求解方法。

参考B站视频【机器学习】【白板推导系列】

更多干货,第一时间更新在以下微信公众号:

alt

您的一点点支持,是我后续更多的创造和贡献

alt

转载到请包括本文地址 更详细的转载事宜请参考文章如何转载/引用

本文由 mdnice 多平台发布

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

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

相关文章

GAN Step By Step -- Step7 WGAN

GAN Step By Step 心血来潮 GSBS,顾名思义,我希望我自己能够一步一步的学习GAN。GAN 又名 生成对抗网络,是最近几年很热门的一种无监督算法,他能生成出非常逼真的照片,图像甚至视频。GAN是一个图像的全新的领域&#…

2022 OceanBase 年度报告|用技术让海量数据的管理和使用更简单!

尊敬的各位客户、合作伙伴和开发者: 从 2020 年 6 月 1 日 OceanBase 开启商业化至今,我们一起走过了 900 多天。 从 0.5 到 3.x,我们花了近十年时间,而从 3.x 到 4.x 只用了不到两年,这是 OceanBase 和客户、伙伴、…

C++ 开发环境其实挺难搞的(上)

所谓工欲善其事,必先利其器,我将用两节课的内容向大家介绍 C 的开发工具及开发环境的一些知识。 Visual Studio 诞生至今已有 25 年以上的历史,功能强大,用的人非常多,社区的朋友戏称它为宇宙最强大的 IDE&#xff0c…

LeetCode 147. 对链表进行插入排序

🌈🌈😄😄 欢迎来到茶色岛独家岛屿,本期将为大家揭晓LeetCode 147. 对链表进行插入排序,做好准备了么,那么开始吧。 🌲🌲🐴🐴 一、题目名称 二、…

ECC原理和RocketChip Cache ECC实现

一、ECC原理说明ECC(Error Correcting Code)全称为错误纠正码,用于对存储器的数据进行完整性检查和纠正,主要用在SRAM、DDR、NAND等存储器设备上。ECC可以对数据进行单比特的纠错和多比特的检错,其原理基于汉明码编码而来。下图是ECC编码的主…

如何通过光耦合器连接继电器

如何通过光耦合器连接继电器 介绍 以下文章介绍如何使用隔离方法或通过光耦合器器件驱动继电器。我们将学习三种方法,第一种方法是将继电器直接连接到光耦合器输出引脚,第二种方法是使用外部PNP晶体管,第三种方法是使用外部NPN晶体管。任何…

二十九、Docker (5)

🌻🌻 目录一、Maven Docker 插件构建 Docker 镜像1.1 maven Docker 插件构建 Docker 镜像入门1.2 maven Docker 插件构建 Docker 镜像,自定义 DockerFile1.3 maven Docker 插件构建并推送镜像到 Docker 私有仓库二、手动发布部署微服务项目到…

类与对象(三):stactic成员、友元、内部类

类与对象(三)1. 再谈构造函数1.1 构造函数体赋值1.2 初始化列表1.3 explicit关键字2. static成员2.1 概念特性类中成员变量区别(普通变量和static变量):普通成员函数和静态成员函数的区别3. 友元友元函数友元类cout打印自定义类型…

24种代码坏味道和重构手法

最近,小李感觉公司女生们看他的眼神不太对劲了,那种笑容好像是充满慈爱的、姨母般的笑容。 作为一名老实本分的程序员,小李不太习惯这种被人过度关注的感觉,他不知道发生了什么。 小李和小王的关系似乎过于亲密,还经…

ZooKeeper 安装

ZooKeeper 安装 1. 下载安装 1、环境准备 ZooKeeper服务器是用Java创建的,它运行在JVM之上。需要安装JDK 7或更高版本。 2、上传 将下载的ZooKeeper放到/opt/ZooKeeper目录下 #上传zookeeper altp put f:/setup/apache-zookeeper-3.5.6-bin.tar.gz #打开 opt目…

(十)devops持续集成开发——jenkins流水线发布一个docker harbor仓库版的后端maven项目

前言 本节内容我们使用jenkins流水线组件发布一个docker环境的后端maven项目,并使用docker的harbor仓库完成镜像的存储,通过拉取harbor仓库中的项目镜像,完成后端项目的发布,关于harbor仓库的搭建,可以参考往期博客内…

Python学习笔记之模块

可迭代对象 概念:更新换代,每次更新都是根据上一次的结果作为基础。 有哪些:字符串,列表,字典,元组,集合,文件对象,特殊函数(生成器) 迭代器对…

软件测试/测试开发 | AppCrawler 自动遍历测试工具实践(一)

本文为霍格沃兹测试学院学院学员课程学习笔记。 公众号搜索:TestingStudio 霍格沃兹的干货都很硬核 AppCrawler 是由霍格沃兹测试学院校长思寒开源的一个项目,通过名字我们大概也能猜出个方向,Crawler 是爬虫的意思,App 的爬虫&am…

GitHub上标星79K的LeetCode算法小抄开放下载了

在大厂面试中我们不可避免的会考到算法,为什么大厂一定要考察算法呢?因为它包含了太多的逻辑思维,可以考察你思考问题的逻辑和解决问题的能力;这一点也是面试官比较看重的,因为它可以反映出你的潜力,我曾经…

Qt布局管理器(QHBoxLayout,QVBoxLayout)

文章目录布局管理器是什么使用代码添加布局管理器QVBoxLayoutQHBoxLayout使用ui文件添加布局管理器布局管理器的嵌套提示:以下是本篇文章正文内容,下面案例可供参考 布局管理器是什么 可以把一些组件按一定的次序排列,这就是布局管理器。 他…

反欺诈指南|网购平台如何保障公平交易

网购平台是社会零售重要的组成部分。国家统计数据显示,2021年,全国实物商品网上零售额达10.8万亿元,占社会消费品零售总额的比重为24.5%,对社会消费品零售总额增长的贡献率为23.6%。 网购平台促成买卖双方交易而建立的平台&#…

OpenBMI运动想象--认知科学实践设计

目录 一、简要介绍 (一)材料与准备工具 数据集下载 工具箱下载 参考 (二)OpenBMI工具箱介绍 (三)数据集详细介绍 数据拆分 数据解读 二、预处理 (一)目标 (二&#xff09…

Linux安装和入门

文章目录1、课程介绍2、为什么需要Linux3、Linux简介3.1、什么事Linux3.2、Linux优点3.3、常见的Linux系统3.4、小结4、虚拟机安装4.1、引入4.2、常见的虚拟机软件4.3、安装vmware4.4、vmware常用操作4.4.1、全局配置虚拟机(Linux系统)存储位置4.4.2、虚拟机操作5、CentOS安装5…

Python中的消息框对话框tkinter.messagebox

介绍:使用:选择消息框的模式:提示消息框:【返回”ok”】消息警告框【返回”ok”】:错误消息框【返回”ok”】:对话框:询问确认对话框【返回值:yes/no】确认/取消对话框【返回值:True/False】是/…

【Java集合】Set接口及系列子类HashSet等

文章目录Set接口> Set 接口和常用方法> Set接口实现类 - HashSetHashSet 底层机制(HashMap)> Set接口实现类 - LinkedHashSetSet接口 Set 接口介绍: 无序(添加和取出的顺序不一致),没有索引&…