更改

跳到导航 跳到搜索
添加645字节 、 2026年7月19日 (星期日)
小
增加动图注解
第2行: 第2行:     
'''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 的正向与反向流程:正向通过复合可逆变换将数据分布映射为标准高斯分布;反向则从高斯分布采样并逐层逆变换还原为数据。]]
 
更形式化地说,RealNVP 将一系列可逆映射 <math>f_1, \dots, f_n</math> 复合为整体变换 <math>f = f_n \circ \cdots \circ f_1</math>,将服从复杂分布的 <math>\mathbf{x}</math> 映射到标准正态分布 <math>\mathbf{z} = f(\mathbf{x}) \sim \mathcal{N}(0, \mathbf{I})</math>。由于可逆性,生成样本时只需从正态分布采样 <math>\mathbf{z}</math>,再通过逆映射 <math>\mathbf{x} = f^{-1}(\mathbf{z})</math> 还原为数据。而 RealNVP 的关键设计在于:'''每一层变换的雅可比行列式都能高效解析计算''',因此整体对数似然 <math>\log p_X(\mathbf{x})</math> 可直接求出,无需借助变分下界或对抗训练。
 
更形式化地说,RealNVP 将一系列可逆映射 <math>f_1, \dots, f_n</math> 复合为整体变换 <math>f = f_n \circ \cdots \circ f_1</math>,将服从复杂分布的 <math>\mathbf{x}</math> 映射到标准正态分布 <math>\mathbf{z} = f(\mathbf{x}) \sim \mathcal{N}(0, \mathbf{I})</math>。由于可逆性,生成样本时只需从正态分布采样 <math>\mathbf{z}</math>,再通过逆映射 <math>\mathbf{x} = f^{-1}(\mathbf{z})</math> 还原为数据。而 RealNVP 的关键设计在于:'''每一层变换的雅可比行列式都能高效解析计算''',因此整体对数似然 <math>\log p_X(\mathbf{x})</math> 可直接求出,无需借助变分下界或对抗训练。
   第49行: 第49行:  
</math>
 
</math>
 
|{{EquationRef|1}}}}
 
|{{EquationRef|1}}}}
−
[[文件:Coupling anim.gif|缩略图|332x332像素|仿射耦合演示]]
+
[[文件:Coupling anim.gif|缩略图|332x332像素|上图示意仿射耦合层的前向与逆向过程:输入被分为两部分,一部分保持不变并作为条件输入 <nowiki><math>\mathbf{x}</nowiki>''{1:d}<nowiki></math></nowiki>,另一部分 <nowiki><math>\mathbf{x}</nowiki>''{d+1:D}<nowiki></math></nowiki> 由神经网络生成的缩放 <nowiki><math>\mathbf{s}</math></nowiki> 与平移 <nowiki><math>\mathbf{t}</math></nowiki> 参数进行变换;逆向时只需用同一组参数执行减法和除法即可恢复原始输入。]]
 
这里 <math>\mathbf{s}</math>(scale,缩放)和 <math>\mathbf{t}</math>(translation,平移)是两个深度神经网络(通常是 CNN)。<math>\odot</math> 为逐元素乘积。由于 <math>\mathbf{s}</math> 和 <math>\mathbf{t}</math> 的输入只来自不变的那一半,输出只作用在可变的那一半,整个变换的雅可比矩阵是下三角块结构,行列式即为对角线元素的乘积——计算复杂度从 <math>O(D^3)</math> 降到 <math>O(D)</math>。此外,逆变换为:
 
这里 <math>\mathbf{s}</math>(scale,缩放)和 <math>\mathbf{t}</math>(translation,平移)是两个深度神经网络(通常是 CNN)。<math>\odot</math> 为逐元素乘积。由于 <math>\mathbf{s}</math> 和 <math>\mathbf{t}</math> 的输入只来自不变的那一半,输出只作用在可变的那一半,整个变换的雅可比矩阵是下三角块结构,行列式即为对角线元素的乘积——计算复杂度从 <math>O(D^3)</math> 降到 <math>O(D)</math>。此外,逆变换为:
  
50

个编辑

导航菜单