论文笔记: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. 当前程序…...
Python爬虫实战:研究MechanicalSoup库相关技术
一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...

理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端
🌟 什么是 MCP? 模型控制协议 (MCP) 是一种创新的协议,旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议,它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...
vue3 定时器-定义全局方法 vue+ts
1.创建ts文件 路径:src/utils/timer.ts 完整代码: import { onUnmounted } from vuetype TimerCallback (...args: any[]) > voidexport function useGlobalTimer() {const timers: Map<number, NodeJS.Timeout> new Map()// 创建定时器con…...
鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南
1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发,使用DevEco Studio作为开发工具,采用Java语言实现,包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...

面向无人机海岸带生态系统监测的语义分割基准数据集
描述:海岸带生态系统的监测是维护生态平衡和可持续发展的重要任务。语义分割技术在遥感影像中的应用为海岸带生态系统的精准监测提供了有效手段。然而,目前该领域仍面临一个挑战,即缺乏公开的专门面向海岸带生态系统的语义分割基准数据集。受…...
SQL慢可能是触发了ring buffer
简介 最近在进行 postgresql 性能排查的时候,发现 PG 在某一个时间并行执行的 SQL 变得特别慢。最后通过监控监观察到并行发起得时间 buffers_alloc 就急速上升,且低水位伴随在整个慢 SQL,一直是 buferIO 的等待事件,此时也没有其他会话的争抢。SQL 虽然不是高效 SQL ,但…...

免费PDF转图片工具
免费PDF转图片工具 一款简单易用的PDF转图片工具,可以将PDF文件快速转换为高质量PNG图片。无需安装复杂的软件,也不需要在线上传文件,保护您的隐私。 工具截图 主要特点 🚀 快速转换:本地转换,无需等待上…...
OD 算法题 B卷【正整数到Excel编号之间的转换】
文章目录 正整数到Excel编号之间的转换 正整数到Excel编号之间的转换 excel的列编号是这样的:a b c … z aa ab ac… az ba bb bc…yz za zb zc …zz aaa aab aac…; 分别代表以下的编号1 2 3 … 26 27 28 29… 52 53 54 55… 676 677 678 679 … 702 703 704 705;…...
在树莓派上添加音频输入设备的几种方法
在树莓派上添加音频输入设备可以通过以下步骤完成,具体方法取决于设备类型(如USB麦克风、3.5mm接口麦克风或HDMI音频输入)。以下是详细指南: 1. 连接音频输入设备 USB麦克风/声卡:直接插入树莓派的USB接口。3.5mm麦克…...
Spring Boot + MyBatis 集成支付宝支付流程
Spring Boot MyBatis 集成支付宝支付流程 核心流程 商户系统生成订单调用支付宝创建预支付订单用户跳转支付宝完成支付支付宝异步通知支付结果商户处理支付结果更新订单状态支付宝同步跳转回商户页面 代码实现示例(电脑网站支付) 1. 添加依赖 <!…...