UVADLC Notebooks项目中的变分去量化与对数雅可比行列式计算解析
在UVADLC Notebooks项目的第11个教程中,涉及了变分去量化(Variational Dequantization)和对数雅可比行列式(log Jacobian determinant)的计算方法。本文将深入解析这些关键技术的数学原理和实现细节。
去量化与变分去量化的基本原理
去量化是将离散的像素值转换为连续分布的过程。在8位图像处理中,像素值通常是0-255的整数。去量化通过添加均匀噪声并缩放,将这些离散值转换为连续空间中的均匀分布。
变分去量化则更进一步,它通过学习一个条件分布来建模去量化过程,而不是简单地使用均匀分布。这使得模型能够更好地适应数据的真实分布。
对数雅可比行列式的计算
在归一化流模型中,保持变换的可逆性至关重要。对数雅可比行列式记录了变量变换过程中概率密度的变化,是模型训练中的关键组成部分。
Sigmoid变换的雅可比行列式
sigmoid函数的导数为: σ'(z) = σ(z)(1-σ(z))
其对数形式为: log σ'(z) = log σ(z) + log (1-σ(z))
通过展开可以得到: log σ(z) = -log(1+exp(-z)) log (1-σ(z)) = -z - log(1+exp(-z))
合并后得到: log σ'(z) = -z - 2·log(1+exp(-z)) = -z - 2·softplus(-z)
这正是代码中实现的形式,其中softplus函数由PyTorch的F.softplus提供数值稳定的计算。
缩放操作的雅可比行列式
在去量化过程中,图像数据会进行缩放操作: z = z / quants
这是一个线性变换,其雅可比行列式为: log |J| = -log(quants)
由于这个变换应用于图像的所有像素点(不包括batch维度),需要对所有空间位置求和,等价于乘以像素总数np.prod(z.shape[1:])。
数值稳定性的处理
为了避免在sigmoid变换时遇到边界值问题,代码实现了以下处理: z = z * (1 - alpha) + 0.5 * alpha
这是一个仿射变换,其雅可比行列式仅由缩放因子决定: log |J| = log(1 - alpha)
加性常数0.5 * alpha不影响导数计算,因此不出现在雅可比行列式中。
实现细节与注意事项
-
在反向变换时,需要将连续值重新量化为离散值,同时保持概率密度的正确转换。
-
所有变换都需要保持可逆性,并且要准确计算每一步的对数雅可比行列式。
-
数值稳定性处理是实际实现中的关键,特别是在处理接近0和1的边界值时。
-
对于图像数据,需要考虑空间维度的影响,正确计算所有像素点的累积变化。
理解这些数学原理对于实现和调试归一化流模型至关重要,特别是在处理图像数据时。通过精确计算每一步的变换和对数雅可比行列式,模型能够学习到数据空间的复杂分布,同时保持概率密度的正确转换。
kernelopenEuler内核是openEuler操作系统的核心,既是系统性能与稳定性的基石,也是连接处理器、设备与服务的桥梁。C042
MiniMax-M2.1从多语言软件开发自动化到复杂多步骤办公流程执行,MiniMax-M2.1 助力开发者构建下一代自主应用——全程保持完全透明、可控且易于获取。Python00
kylin-wayland-compositorkylin-wayland-compositor或kylin-wlcom(以下简称kywc)是一个基于wlroots编写的wayland合成器。 目前积极开发中,并作为默认显示服务器随openKylin系统发布。 该项目使用开源协议GPL-1.0-or-later,项目中来源于其他开源项目的文件或代码片段遵守原开源协议要求。C01
PaddleOCR-VLPaddleOCR-VL 是一款顶尖且资源高效的文档解析专用模型。其核心组件为 PaddleOCR-VL-0.9B,这是一款精简却功能强大的视觉语言模型(VLM)。该模型融合了 NaViT 风格的动态分辨率视觉编码器与 ERNIE-4.5-0.3B 语言模型,可实现精准的元素识别。Python00
GLM-4.7GLM-4.7上线并开源。新版本面向Coding场景强化了编码能力、长程任务规划与工具协同,并在多项主流公开基准测试中取得开源模型中的领先表现。 目前,GLM-4.7已通过BigModel.cn提供API,并在z.ai全栈开发模式中上线Skills模块,支持多模态任务的统一规划与协作。Jinja00
agent-studioopenJiuwen agent-studio提供零码、低码可视化开发和工作流编排,模型、知识库、插件等各资源管理能力TSX0121
Spark-Formalizer-X1-7BSpark-Formalizer 是由科大讯飞团队开发的专用大型语言模型,专注于数学自动形式化任务。该模型擅长将自然语言数学问题转化为精确的 Lean4 形式化语句,在形式化语句生成方面达到了业界领先水平。Python00