更改

跳到导航 跳到搜索
删除58字节 、 2026年7月20日 (星期一)
重编排标题
第1行: 第1行: −
= 简介 =
  −
   
'''RealNVP'''('''Real-valued Non-Volume Preserving''',实值非体积保持变换)是一类基于标准化流(normalizing flows)的深度生成模型,由 Laurent Dinh、Jascha Sohl-Dickstein 与 Samy Bengio 于 2017 年提出<ref name="Dinh2017">{{cite journal|author1=Dinh L.|author2=Sohl-Dickstein J.|author3=Bengio S.|title=Density Estimation Using Real NVP|journal=International Conference on Learning Representations (ICLR)|year=2017|url=https://arxiv.org/abs/1605.08803}}</ref>。它的核心思想可以概括为:'''用一个完全可逆的神经网络,将复杂的数据分布逐步变换为简单的高斯分布。由于变换可逆,模型既可正向精确计算数据的概率密度,也可反向直接从高斯分布采样生成新数据。'''
 
'''RealNVP'''('''Real-valued Non-Volume Preserving''',实值非体积保持变换)是一类基于标准化流(normalizing flows)的深度生成模型,由 Laurent Dinh、Jascha Sohl-Dickstein 与 Samy Bengio 于 2017 年提出<ref name="Dinh2017">{{cite journal|author1=Dinh L.|author2=Sohl-Dickstein J.|author3=Bengio S.|title=Density Estimation Using Real NVP|journal=International Conference on Learning Representations (ICLR)|year=2017|url=https://arxiv.org/abs/1605.08803}}</ref>。它的核心思想可以概括为:'''用一个完全可逆的神经网络,将复杂的数据分布逐步变换为简单的高斯分布。由于变换可逆,模型既可正向精确计算数据的概率密度,也可反向直接从高斯分布采样生成新数据。'''
 
[[文件:Realnvp flow anim.gif|缩略图|332x332像素|上图示意 RealNVP 的正向与反向流程:正向通过复合可逆变换将数据分布映射为标准高斯分布;反向则从高斯分布采样并逐层逆变换还原为数据。]]
 
[[文件:Realnvp flow anim.gif|缩略图|332x332像素|上图示意 RealNVP 的正向与反向流程:正向通过复合可逆变换将数据分布映射为标准高斯分布;反向则从高斯分布采样并逐层逆变换还原为数据。]]
第19行: 第17行:  
<!-- 图1:NICE 的加性耦合 vs RealNVP 的仿射耦合(2D 示意图) -->
 
<!-- 图1:NICE 的加性耦合 vs RealNVP 的仿射耦合(2D 示意图) -->
   −
= 主要内容 =
+
= 算法框架 =
−
 
  −
== 算法框架 ==
      
RealNVP 的完整架构由四种模块递归堆叠而成:'''仿射耦合层'''、'''掩码卷积分区'''、'''多尺度压缩与分解''',以及'''耦合层批量归一化'''。正向传播(编码)流程为:
 
RealNVP 的完整架构由四种模块递归堆叠而成:'''仿射耦合层'''、'''掩码卷积分区'''、'''多尺度压缩与分解''',以及'''耦合层批量归一化'''。正向传播(编码)流程为:
第33行: 第29行:  
如上图所示,RealNVP 的多尺度编码从原始图像 <math>\mathbf{x}</math> 开始,逐尺度交替使用 checkerboard 与 channel-wise 掩码的仿射耦合层,并通过 Squeeze 减半空间分辨率;每个尺度末端的 Factor Out 将一半变量作为 <math>\mathbf{z}^{(i)}</math> 抽出,另一半继续进入下一尺度。最终所有 <math>\mathbf{z}^{(i)}</math> 拼接为完整潜变量 <math>\mathbf{z}</math>。
 
如上图所示,RealNVP 的多尺度编码从原始图像 <math>\mathbf{x}</math> 开始,逐尺度交替使用 checkerboard 与 channel-wise 掩码的仿射耦合层,并通过 Squeeze 减半空间分辨率;每个尺度末端的 Factor Out 将一半变量作为 <math>\mathbf{z}^{(i)}</math> 抽出,另一半继续进入下一尺度。最终所有 <math>\mathbf{z}^{(i)}</math> 拼接为完整潜变量 <math>\mathbf{z}</math>。
   −
=== 仿射耦合层:可逆的"条件变形" ===
+
== 仿射耦合层:可逆的"条件变形" ==
    
仿射耦合层是 RealNVP 的基本单元。给定 <math>D</math> 维输入 <math>\mathbf{x}</math>,输入被分为两部分:前 <math>d</math> 维"被动"(不变),后 <math>D-d</math> 维"主动"(被变形):
 
仿射耦合层是 RealNVP 的基本单元。给定 <math>D</math> 维输入 <math>\mathbf{x}</math>,输入被分为两部分:前 <math>d</math> 维"被动"(不变),后 <math>D-d</math> 维"主动"(被变形):
第61行: 第57行:       −
=== 掩码卷积的两种分区模式 ===
+
== 掩码卷积的两种分区模式 ==
    
上述将输入分成两部分的操作可以按不同方式实现。针对图像数据,RealNVP 设计了两种掩码:
 
上述将输入分成两部分的操作可以按不同方式实现。针对图像数据,RealNVP 设计了两种掩码:
第72行: 第68行:  
<!-- 图3:Checkerboard masking 与 Channel-wise masking 的对比示意图 -->
 
<!-- 图3:Checkerboard masking 与 Channel-wise masking 的对比示意图 -->
   −
=== 多尺度架构:分层打包潜在变量 ===
+
== 多尺度架构:分层打包潜在变量 ==
    
直接对高维图像(如 <math>64\times64\times3</math>)进行全维度耦合计算代价较高。RealNVP 采用 VGG 网络"降采样同时加深通道"的策略,引入两个关键操作:
 
直接对高维图像(如 <math>64\times64\times3</math>)进行全维度耦合计算代价较高。RealNVP 采用 VGG 网络"降采样同时加深通道"的策略,引入两个关键操作:
第87行: 第83行:  
<!-- 图4:多尺度架构流程图 -->
 
<!-- 图4:多尺度架构流程图 -->
   −
=== 批量归一化:训练深层的稳定器 ===
+
== 批量归一化:训练深层的稳定器 ==
    
在耦合层之间插入批量归一化(BatchNorm),对每个维度做线性缩放:
 
在耦合层之间插入批量归一化(BatchNorm),对每个维度做线性缩放:
第97行: 第93行:  
它的雅可比行列式是各维度缩放因子的乘积,可直接加入对数似然。此外,BatchNorm 起到训练深耦合层堆叠时的稳定作用——它抑制了由缩放参数 <math>\exp(\mathbf{s})</math> 引起的数值爆炸,使梯度稳定传播。
 
它的雅可比行列式是各维度缩放因子的乘积,可直接加入对数似然。此外,BatchNorm 起到训练深耦合层堆叠时的稳定作用——它抑制了由缩放参数 <math>\exp(\mathbf{s})</math> 引起的数值爆炸,使梯度稳定传播。
   −
== 数学原理 ==
+
= 数学原理 =
   −
=== 标准化流与变量替换公式 ===
+
== 标准化流与变量替换公式 ==
    
标准化流的核心是概率论中的'''变量替换公式'''(change of variables)。设 <math>\mathbf{z} \sim p_Z(\mathbf{z})</math> 是已知先验(通常取标准正态 <math>\mathcal{N}(0, \mathbf{I})</math>),<math>f = g^{-1}</math> 是从数据 <math>\mathbf{x}</math> 到 <math>\mathbf{z}</math> 的可逆映射(编码器)。则 <math>\mathbf{x}</math> 的密度为:
 
标准化流的核心是概率论中的'''变量替换公式'''(change of variables)。设 <math>\mathbf{z} \sim p_Z(\mathbf{z})</math> 是已知先验(通常取标准正态 <math>\mathcal{N}(0, \mathbf{I})</math>),<math>f = g^{-1}</math> 是从数据 <math>\mathbf{x}</math> 到 <math>\mathbf{z}</math> 的可逆映射(编码器)。则 <math>\mathbf{x}</math> 的密度为:
第125行: 第121行:  
采样时通过逆向进行:<math>\mathbf{z} \sim p_Z</math>,<math>\mathbf{x} = g(\mathbf{z}) = f_1^{-1} \circ \cdots \circ f_K^{-1}(\mathbf{z})</math>,所有步骤均可并行。
 
采样时通过逆向进行:<math>\mathbf{z} \sim p_Z</math>,<math>\mathbf{x} = g(\mathbf{z}) = f_1^{-1} \circ \cdots \circ f_K^{-1}(\mathbf{z})</math>,所有步骤均可并行。
   −
=== 仿射耦合的雅可比行列式与可逆性 ===
+
== 仿射耦合的雅可比行列式与可逆性 ==
    
仿射耦合层对前 <math>d</math> 维进行恒等映射,对后 <math>D-d</math> 维进行仿射映射,因而雅可比矩阵具有分块三角结构:
 
仿射耦合层对前 <math>d</math> 维进行恒等映射,对后 <math>D-d</math> 维进行仿射映射,因而雅可比矩阵具有分块三角结构:
第149行: 第145行:  
仿射耦合的逆变换为:对于公式 ({{EquationNote|1}}) 中的前向变换,经过代数变换即可得到公式 ({{EquationNote|2}}) 中的逆变换。无需对 <math>\mathbf{s}</math> 或 <math>\mathbf{t}</math> 求逆,只需按逆变换公式进行减法和除法即可。因此'''编码(求密度)和解码(采样)同样高效'''。
 
仿射耦合的逆变换为:对于公式 ({{EquationNote|1}}) 中的前向变换,经过代数变换即可得到公式 ({{EquationNote|2}}) 中的逆变换。无需对 <math>\mathbf{s}</math> 或 <math>\mathbf{t}</math> 求逆,只需按逆变换公式进行减法和除法即可。因此'''编码(求密度)和解码(采样)同样高效'''。
   −
=== 加性耦合、仿射耦合与体积保持 ===
+
== 加性耦合、仿射耦合与体积保持 ==
    
下表对比了三种耦合方式:
 
下表对比了三种耦合方式:
第166行: 第162行:  
其中 <math>\odot</math> 为逐元素乘积,体现为空间的拉伸。NICE 的加性耦合对应于平移变换——只改变位置,不拉伸空间;RealNVP 的仿射耦合则允许缩放与平移的组合,更适合匹配真实数据中不同维度、不同尺度的变化。后续理论表明,缺乏这种"非体积保持"能力的流模型,在表达能力上存在本质限制<ref name="Draxler2024" />。
 
其中 <math>\odot</math> 为逐元素乘积,体现为空间的拉伸。NICE 的加性耦合对应于平移变换——只改变位置,不拉伸空间;RealNVP 的仿射耦合则允许缩放与平移的组合,更适合匹配真实数据中不同维度、不同尺度的变化。后续理论表明,缺乏这种"非体积保持"能力的流模型,在表达能力上存在本质限制<ref name="Draxler2024" />。
   −
=== 损失函数与最大似然训练 ===
+
== 损失函数与最大似然训练 ==
    
RealNVP 通过最大化数据对数似然来训练,等价于最小化数据分布与模型分布的前向 KL 散度:
 
RealNVP 通过最大化数据对数似然来训练,等价于最小化数据分布与模型分布的前向 KL 散度:
第190行: 第186行:  
'''实际训练配置''':Adam 优化器,权重衰减 <math>5\times10^{-5}</math>,批量大小 64,先验为标准高斯。图像数据通常先经 logit 变换 <math>\operatorname{logit}(\alpha + (1-\alpha)\mathbf{x}/256)</math> 处理,以消除像素边界的边界效应。
 
'''实际训练配置''':Adam 优化器,权重衰减 <math>5\times10^{-5}</math>,批量大小 64,先验为标准高斯。图像数据通常先经 logit 变换 <math>\operatorname{logit}(\alpha + (1-\alpha)\mathbf{x}/256)</math> 处理,以消除像素边界的边界效应。
   −
== 优缺点 ==
+
= 优缺点 =
   −
=== 优势 ===
+
== 优势 ==
    
* '''精确且可处理的对数似然''':无需变分下界或对抗训练,直接给出数据的精确密度值,适用于异常检测、贝叶斯推断等需要显式概率的场景。
 
* '''精确且可处理的对数似然''':无需变分下界或对抗训练,直接给出数据的精确密度值,适用于异常检测、贝叶斯推断等需要显式概率的场景。
第200行: 第196行:  
* '''综合多种模型特性''':兼具自回归模型的精确似然、VAE 的快速采样、以及不依赖固定重建损失的生成能力。
 
* '''综合多种模型特性''':兼具自回归模型的精确似然、VAE 的快速采样、以及不依赖固定重建损失的生成能力。
   −
=== 局限 ===
+
== 局限 ==
    
* '''似然性能未达最优''':在 bits/dim 上仍略逊于 PixelRNN 等先进自回归基线。
 
* '''似然性能未达最优''':在 bits/dim 上仍略逊于 PixelRNN 等先进自回归基线。
第208行: 第204行:  
* '''分区固定性''':掩码模式在训练前固定,Glow 的可逆 <math>1\times1</math> 卷积通过学习置换提供了更灵活的分区<ref name="Glow2018">{{cite journal|author1=Kingma D. P.|author2=Dhariwal P.|title=Glow: Generative Flow with Invertible 1×1 Convolutions|journal=NeurIPS|year=2018}}</ref>。
 
* '''分区固定性''':掩码模式在训练前固定,Glow 的可逆 <math>1\times1</math> 卷积通过学习置换提供了更灵活的分区<ref name="Glow2018">{{cite journal|author1=Kingma D. P.|author2=Dhariwal P.|title=Glow: Generative Flow with Invertible 1×1 Convolutions|journal=NeurIPS|year=2018}}</ref>。
   −
=== 与相关框架的关系 ===
+
== 与相关框架的关系 ==
    
RealNVP 在标准化流的发展中处于承上启下的位置:
 
RealNVP 在标准化流的发展中处于承上启下的位置:
50

个编辑

导航菜单