论文笔记:Normalizing Flows for Probabilistic Modeling and Inference
Abstract
- 正则流(Normalizing flows)提供了一种通用的机制来定义富有表达力的概率分布,只需要指定一个(通常简单的)基础分布和一系列可逆变换。
Intraduction
- 正则流通过将简单的密度通过一系列变换来产生更丰富、可能更多模态的分布,就像液体流经一组管道一样运作。
- 灵活性意味着正则流非常适合用于建模、推断和模拟这些关键的统计任务。
- 我们对正则流的探索旨在揭示那些将指导它们在可预见的未来进行构建和应用的持久原则。
- Section 2: 建立正则流的形式和概念结构。
- Section 3 :有限正则流结构(finite);Section 4:极微小变体(infinitesimal variant)。
Section 2:正则流(Normalizing Flow)
2.1 定义和基础
- 规定 x 是 D 维的真实向量,流模型的主要思想是使用从 p u ( u ) p_u(u) pu(u)中采样的真实向量u通过变换T表达x。
我们规定 p u ( u ) p_u(u) pu(u)是流模型的基本分布。用参数{φ, ψ}分别表示T与 p u ( u ) p_u(u) pu(u),也就引出了由{φ, ψ}定义在x上的分布组。
- 流模型的基本属性是T必须可逆,T与 T − 1 T^{-1} T−1可微,由此也可以推得:
等价的,可以得到:
雅可比矩阵(Jacobian)为:
- 在实践中,我们通常用神经网络构建T,并且选取一个简单的密度函数,如多元正态分布,来构建 p u ( u ) p_u(u) pu(u)。在Section 3和4中会讨论如何实施(implement) T。
- 我们可以将变换T看作是对空间R^D的扭曲,以将密度函数pu(u)塑造成px(x)。绝对雅可比行列式|det JT(u)|量化了由于T引起的u周围小邻域的体积相对变化。简单来说,假设du是u周围的(无限小的)小邻域,dx是du映射到的x周围的小邻域。我们可以得到 ∣ d e t J T ( u ) ∣ ≈ V o l ( d x ) / V o l ( d u ) |det J_T(u)| ≈ Vol(dx)/Vol(du) ∣detJT(u)∣≈Vol(dx)/Vol(du),即dx的体积除以du的体积。dx中的概率质量必须等于du中的概率质量。因此,如果du被扩展,那么x处的密度将小于u处的密度。如果du被压缩,那么x处的密度将较大。
- 可逆且可微分的变换的一个重要性质是它们是可组合的。给定两个这样的变换T1和T2,它们的复合变换T2 ◦ T1 也是可逆且可微分的。它的逆变换和雅可比行列式可以表示为:
- 因此,我们可以通过组合多个更简单的转换实例来构建复杂的转换,而不影响可逆性和可微性的要求,因此也不会失去计算密度 p x ( x ) p_x (x) px(x)的能力。所以"flow"指的是从 p u ( u ) p_u(u) pu(u)中获得一组样本,在经过 T 1 , . . . , T k T_1,...,T_k T1,...,Tk的变换序列时所遵循的轨迹。术语"Normalizing"指的是通过逆变化 T 1 − 1 , . . . , T k − 1 T^{-1}_1,...,T^{-1}_k T1−1,...,Tk−1的流动,将 p x ( x ) p_x(x) px(x)中获得的一组样本转化为预定密度$p_u(u)的一组样本(某种意义上为正则化)。
- 在功能上,基于流的模型提供了两个操作:通过公式1从模型中进行抽样,以及通过公式3评估模型的密度。这些操作具有不同的计算要求。从模型中进行抽样需要能够从 p u ( u ) p_u(u) pu(u)中进行抽样,并计算正向变换T。评估模型的密度需要计算逆变换 T − 1 T^{-1} T−1及其雅可比行列式,并评估 p u ( u ) p_u(u) pu(u)的密度。具体应用将决定需要实施哪些操作以及它们需要多高的效率。我们在Section 3和Section 4讨论了与各种实现选择相关的计算折衷。
2.2 流模型的表达能力
- 在研究流的细节之前,重要的问题是:How expressive are flow-based models? Can they represent any distribution p x ( x ) p_x(x) px(x), even if the base distribution is restricted to be simple?
- 我们将证明,在 p x ( x ) p_x(x) px(x)满足合理条件的情况下,这种通用表示是可能的。具体来说,我们将证明,对于任何一对良好行为的分布 p x ( x ) p_x(x) px(x)(目标分布)和 p u ( u ) p_u(u) pu(u)(基础分布),存在一个可微分同胚能够将 p u ( u ) p_u(u) pu(u)转化为 p x ( x ) p_x(x) px(x)。这个论证是构造性的,并基于Hyvärinen和Pajunen(1999)关于非线性独立成分分析(ICA)存在性的类似证明;更详细的处理可以参考Bogachev等人的研究(2005)。
- 具体证明过程可以看论文,比较长这里就不赘述了。
2.3 使用流模型建模及推理
- 与拟合任何概率模型类似,拟合流模型 p x ( x ; θ ) p_x(x;θ) px(x;θ)到目标分布 p x ∗ ( x ; θ ) p^*_x(x;θ) px∗(x;θ)可以通过最小化他们之间的散度以及差异。这种最小化可以通过优化 θ = {φ, ψ}来实现。
2.3.1 前向KL散度与最大似然估计
- p x ∗ ( x ; θ ) p^*_x(x;θ) px∗(x;θ) 与 p x ( x ; θ ) p_x(x;θ) px(x;θ) 之间的前向KL散度可以写成:
前向KL散度非常适用于我们拥有目标分布样本(或者可以生成样本),但不能直接评估目标密度 p x ∗ ( x ; θ ) p^*_x(x;θ) px∗(x;θ)的情况。假设我们有一组来自 p x ∗ ( x ; θ ) p^*_x(x;θ) px∗(x;θ)的样本 { x n } n = 1 N \{x_n\}^N_{n=1} {xn}n=1N,我们可以通过蒙特卡洛方法估计对于p∗x(x)的期望,如下:
最小化上述蒙特卡洛近似的KL散度等价于通过最大似然估计将基于流的模型拟合到样本 { x n } n = 1 N \{x_n\}^N_{n=1} {xn}n=1N。 - 在实践中,我们通常使用随机梯度下降等方法迭代地优化参数θ。我们可以如下获得对于参数的KL散度梯度的无偏估计:
如果 p u ( u ; ψ ) p_u(u; ψ) pu(u;ψ)允许闭式最大似然估计,如高斯分布的情况,那么对于ψ的更新也可以以闭式形式进行。 - 为了通过最大似然方法拟合基于流的模型,我们需要计算 T − 1 T^{-1} T−1、它的雅可比行列式和密度 p u ( u ; ψ ) p_u(u; ψ) pu(u;ψ),以及对这三者进行微分(如果使用基于梯度的优化算法)。这意味着即使我们无法计算T或从pu(u; ψ)中进行抽样,我们仍然可以使用最大似然来训练流模型。然而,如果我们希望在拟合完成后从模型中进行抽样,这些操作将是必需的。
2.3.2 反向KL散度
-
或者,我们可以通过最小化反向KL散度来拟合基于流的模型,它可以写成:
为了表达对于u的期望,我们使用了变量的变换。当我们能够评估目标密度 p x ∗ ( x ) p^*_x(x) px∗(x),但不一定能够从中进行抽样时,反向KL散度是合适的。
-
在实践中,我们可以使用随机梯度下降等方法迭代地最小化L(θ)。由于我们重新参数化了期望,使其相对于基础分布 p u ( u ; ψ ) p_u(u; ψ) pu(u;ψ),我们可以通过蒙特卡洛方法轻松地获得L(θ)相对于φ的无偏梯度估计。具体而言,假设 { u n } n = 1 N \{u_n\}^N_{n=1} {un}n=1N是从pu(u; ψ)中抽样得到的一组样本,则L(θ)相对于φ的梯度可以如下估计:
为了按照上述描述最小化反向KL散度,我们需要能够从基础分布 p u ( u ; ψ ) p_u(u; ψ) pu(u;ψ)中进行抽样,并计算和对变换T及其雅可比行列式进行微分。这意味着即使我们无法评估基础密度或计算逆变换 T − 1 T^{-1} T−1,我们仍然可以通过最小化反向KL散度来拟合基于流的模型。然而,如果我们想要评估训练模型的密度,我们将需要这些操作。
2.3.3 前向和反向KL散度的关系
(To be continue)
相关文章:
论文笔记:Normalizing Flows for Probabilistic Modeling and Inference
Abstract 正则流(Normalizing flows)提供了一种通用的机制来定义富有表达力的概率分布,只需要指定一个(通常简单的)基础分布和一系列可逆变换。 Intraduction 正则流通过将简单的密度通过一系列变换来产生更丰富、可…...
java 异常类介绍
Java 异常(Exception)是指在程序运行期间出现的错误或异常情况。Java 异常处理机制允许程序在出现异常情况时进行处理,避免程序崩溃或出现不可预知的错误 一、Java 异常的概念 Java 异常是指程序在运行期间出现的错误或异常情况。Java 异常…...
shiro 550 反序列化rce
Apach shiro 是一款开源安全框架,提供身份验证,授权,会话管理等。 shiro 550 反序列化漏洞rce 通关利用它反序列化的漏洞直接执行rce 加密的用户信息序列化后储存在名为remenber -me的cooike中。攻击者可以使用shiro默认密钥伪造cooike&am…...
【C++】---模板初阶(超详练气篇)
个人主页:平行线也会相交💪 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 平行线也会相交 原创 收录于专栏【C之路】💌 本专栏旨在记录C的学习路线,望对大家有所帮助🙇 希望我们一起努力、成长&…...
windows系统典型漏洞分析
内存结构 缓冲区溢出漏洞 缓冲区溢出漏洞就是在向缓冲区写入数据时,由于没有做边界检查,导致写入缓冲区的数据超过预先分配的边界,从而使溢出数据覆盖在合法数据上而引起系统异常的一种现象。 ESP、EPB ESP:扩展栈指针(…...
WPF开发txt阅读器:需求分析和文件读写
文章目录 需求分析读取文本文件保存文本文件 需求分析 尽管现在比较主流的阅读格式已经是epub, modi之类的,但txt的使用范围要远比前两者广泛,所以做一个txt阅读器还是有必要的。 但是对于书籍阅读而言,纯文本不包含目录信息,这…...
C++服务器框架开发9——日志系统LogFormatter_4/各个类的关系梳理/std::function/std::get
该专栏记录了在学习一个开发项目的过程中遇到的疑惑和问题。 其教学视频见:[C高级教程]从零开始开发服务器框架(sylar) 上一篇:C服务器框架开发8——日志系统LogFormatter_3/override/宏定义优化switchcase结构 C服务器框架开发9——日志系统LogFormatt…...
arm平台上的MNN编译与运行
0.成果物 直接获取成果物见:https://download.csdn.net/download/u012824853/87867665 以下为编译、运行过程 1.编译准备 在GitHub - alibaba/MNN: MNN is a blazing fast, lightweight deep learning framework, battle-tested by business-critical use cases …...
python 编译安装指定版本 for linux
python环境是linux中必备的,部分发行版会自带python,有时候需要安装手动安装 注意:如果需要多个版本并存,建议使用conda环境,如果自己配置多版本,需要用多个软链接 conda环境,可以参考&#x…...
在Linux系统下基于Docker搭建Redis集群
创建镜像 #部署Redis集群,该集群有3个节点; --cluster-enabled yes允许启用集群; docker create --name redis-node--01 --net host -v /data/redis-data/node1:/data redis:5.0.5 --cluster-enabled yes --cluster-config-file redis-node--01.conf --port 6379…...
牛客网刷题Day5
1.内容中可以使用哪个元素来表示 <article> 标签外的内容? A aside B cite C article D class 正确答案:A 解析:<aside> 标签定义 <article> 标签外的内容,aside 的内容应该与附近的内容相关 2. 以下的HTML代码…...
Vue.js 中的动态组件是什么?如何使用动态组件?
Vue.js 中的动态组件是什么?如何使用动态组件? Vue.js是一种流行的前端框架,它提供了一种称为“动态组件”的技术,使得我们可以动态地切换组件的内容和结构。在本文中,我们将深入探讨Vue.js中的动态组件,包…...
2023年京东618预售数据:传统滋补成预售黑马,预售额超27亿
这一期主要分享一下此次京东618预售期间的一个黑马行业——传统滋补。不管是从预售量和预售额来看,传统滋补品类的成绩都是此次大促中的佼佼者。 究其原因,近几年养生滋补也掀起了一股“国潮风”。在小红书、抖音等社交平台上,关于“健康养生…...
【Linux系统基础快速入门详解】Linux 常用文件过滤编辑命令原理详解和每个命令使用场景以及实例
Linux 文件过滤编辑命令:echo,printf,cat,tee,特殊符号: {a..z},seq序列,rename 文件过滤编辑命令:echo:将字符串输出到终端或文件中。常用于输出环境变量,或者在shell脚本中输出一些提示信息。例如:echo $PATH,输出环境变量PATH的值。printf:格式化输出字符串到终端或文…...
05WEB系统的通信原理图
WEB系统的通信原理 名称作用URL统一资源定位符, 例如:http://www.baidu.com域名在https://www.baidu.com/这个网址中www.baidu.com 是一个域名IP地址计算机在网络当中的一个身份证号, 在同一个网络当中IP地址是唯一的, 有了IP地址两台计算机直接才能建立连接通信端口号一个计算…...
降低试错成本,低代码或成企业数字化转型突破口
近年来,随着市场竞争和宏观环境的双重驱动,数字化已经成为企业提升竞争性和保持可持续发展的重要手段,大多数企业意识到数字化转型的重要性,纷纷入局。 作为数据驱动业务创新的一个新方法,但行业成功的案例并不多&…...
串口助手(串口发送接收数据, 定时, 清空, hex显示)
文章目录 前言一、串口接收数据1. 默认接收,换行,hex显示2. 清空接收区数据3. 保存接受区数据 二、串口发送数据1. 默认发送2. 定时发送 三、串口助手优化1. 设置组合框当前内容。2. 未检测到串口,弹出警告。3. 载入文件 总结 前言 这篇文章…...
bp神经网络
%% 2.读取数据(两个文件) datareadmatrix(C:\Users\Administrator\Desktop\synthetic_01.csv); file_lengthlength(data); for i1:file_length %用for循环去导入第二个csv文件 namedata(i); pathstrcat(C:\Users\Administrator\Desktop\ydata.…...
strace交叉编译后对特定文件的写流程进行监控和过滤
交叉编译 为了支持strace对pid进行解析,因系统默认支持的strace版本较低,需要使用较新的版本对strace进行交叉编译,这里使用了github上的 https://github.com/strace/strace/releases 发布的strace v5.19版本,2022-08-12发布。lo…...
初识网络之TCP网络套接字
目录 一、TCP常用网络接口 1. 监听服务器 2. 接收链接 3. 发起连接 二、实现一个简单的tcp程序 1. 日志函数 2. 服务端文件 2.1 .hpp文件 2.2 .cpp文件 3. 客户端文件 3.1 .hpp文件 3.2 .cpp文件 4. 程序测试 三、实现支持多个用户并发访问的tcp程序 1. 当前程序…...
自然语言处理从入门到应用——自然语言处理的基本问题:文本分类(Text Classification, Text Categorization)
分类目录:《自然语言处理从入门到应用》总目录 文本分类(Text Classification, Text Categorization)是最简单也是最基础的自然语言处理问题。即针对一段文本输入,输出该文本所属的类别,其中,类别是事先定义…...
【论文】——Robust High-Resolution Video Matting with Temporal Guidance浅读
视频matting 时序监督 摘要 我们介绍了一种稳健、实时、高分辨率的人类视频抠图方法,该方法取得了新的最先进性能。我们的方法比以前的方法轻得多,可以在Nvidia GTX 1080Ti GPU上以76 FPS处理4K,以104 FPS处理HD。与大多数现有的逐帧作为独…...
第四章、用户体验五要素之范围层解析(本文作用是通俗讲解,让你更容易理解)
把用户需求和产品目标转换成特定的产品时应该提供给用户什么样的内容或者功能就变成了范围层。 范围层就是定义需求。如果不能很好的定义需求,那么你的软件永远都是测试待发布版本。如果产品只是负责人脑海中的一个不定型印象,那将是灾难性的。 1、产品负…...
计算机毕业论文内容参考|基于python的农业温室智能管理系统的设计与实现
文章目录 导文文章重点前言课题内容相关技术与方法介绍技术分析技术设计技术设计技术实现方面系统测试和优化总结与展望本文总结后续工作展望导文 计算机毕业论文内容参考|基于python的农业温室智能管理系统的设计与实现 文章重点 前言 本文介绍了一种基于Python的农业温室智…...
Java 进阶 -- 流
Java I/O, NIO, and NIO.2 BaseStream<T, S extends BaseStream<T, S>> extends AutoCloseable 流(streams)的基本接口,流是支持顺序和并行聚合操作的元素序列。下面的例子演示了一个使用流类型stream和IntStream的聚合操作,计算红色小部件…...
硬件 TCP/IP 协议栈
目录 全硬件的TCP/IP 协议栈简介以太网接入单片机方案以太网接口芯片CH395Q 简介以太网接口芯片CH395Q 命令简介以太网接口芯片CH395Q 寄存器配置与使用移植CH395Q 源码 TCP_Client 实验TCPClient 配置流程TCPClient 实验硬件设计程序设计下载验证 WebServer 实验WebServer 简介…...
word恢复和粘贴按钮变灰色,不可用怎么办?
如果 Word 中的恢复和粘贴按钮变成灰色,可能是由于以下原因之一: 1. 文档处于只读模式。 2. 与 Office 相关的某些组件已损坏或缺失。 3. Word 的文件权限被配置为只读。 以下是一些可能的解决方法: 1. 检查文档是否处于只读模式。 如果是…...
【unity技巧】Physics2D Raycast、Overlapcircle、OverlapBox检测的用法
文章目录 分析检测地面1. 使用Raycast1.1 介绍1.3 场景窗口可视化1.4 完整实例代码1.4 存在问题1.4.1 问题11.4.2 问题2 2. 使用Overlapcircle2.1 介绍2.2 场景窗口可视化2.3 完整实例代码2.4 存在问题 3. 使用OverlapBox3.1 介绍3.2 场景窗口可视化3.3 完整实例代码3.4 注意事…...
一、kafka入门
Kafka入门 为什么要用消息中间件? 异步处理 场景说明:用户注册后,需要发注册邮件和注册短信。传统的做法有两种1.串行的方式;2.并行方式。 串行方式:将注册信息写入数据库成功后,发送注册邮件ÿ…...
公司新来一00后,真让人崩溃...
2022年已经结束结束了,最近内卷严重,各种跳槽裁员,相信很多小伙伴也在准备今年的金九银十的面试计划。 在此展示一套学习笔记 / 面试手册,年后跳槽的朋友可以好好刷一刷,还是挺有必要的,它几乎涵盖了所有的…...
马云的网站怎么做的/合肥百度竞价推广代理公司
一、使用getters和setters 使用getters和setters获取对象数据比简单查找对象属性要好。因为: 1、当你想要做的不仅仅是获取对象属性,你不必查找和修改你代码中的每处访问。 2、使用set可以使验证变简单。 3、封装内部结构。 4、使用get和set,…...
哪个网站做欧洲旅行比较好/东莞网站优化关键词排名
参考文档: 11gR2 Clusterware and Grid Home - What You Need to Know (Doc ID 1053147.1)诊断 Grid Infrastructure 启动问题 (Doc ID 1623340.1) Oracle 11gR2 中对CRSD资源进行了重新分类: Local Resources 和 Cluster Resources,可以通过…...
做最好的网站/seo优化视频教程
在 Hive SQL 中可以使用 substr() 函数来切割字段的前七位。示例语句如下: SELECT substr(column_name, 1, 7) FROM table_name;column_name 是需要切割的字段名称1 是开始切割的位置,从 1 开始7 是切割的长度 你也可以使用表达式作为第一个参数…...
论文中引用网站怎么写/seo优化的方法有哪些
Seata 是什么 Seata 是阿里近期开源的分布式事务框架,地址:github.com/seata/seata。框架包括了集团的 TXC(云版本叫 GTS)和蚂蚁金服的 TCC 两种模式,短短数月 Github 上的 star 数已经接近一万,算是目前唯…...
怎么把网站挂在服务器/自媒体营销模式有哪些
你的电脑桌面看上去是不是这个样子?如果你有下面几个“坏习惯”,电脑里的文件不乱才怪:文件层级太深:比如说一个销售数据excel文件存放在“D盘-2017年-大灵通项目-西大街门店-月报表”,这个目录下,看上去一…...
做网站大概要多/太原网站关键词排名
int main(int argc, const char * argv[]) {//sizeof/*sizeof(数据类型)此运算符功能:返回值就是该数据类型所占的字节数。sizeof(变量名)此运算符功能:返回值就是该变量所占的字节数。*/int arr[]{3,4,5,6,7,6,8,42,9};int* p1 &arr[0];int a siz…...