什么是“diffeomorphisms”(微分同胚)?从数学到深度学习的视角
什么是Diffeomorphisms?从数学到深度学习的视角
如果你在研究生成模型,尤其是正态化流(Normalizing Flows),你可能会频繁遇到“diffeomorphisms”(微分同胚)这个术语。它听起来像是数学中的高深概念,但实际上在深度学习中有着非常直观的应用。今天,我们就来聊聊什么是微分同胚,为什么它在正态化流中如此重要,以及它的数学定义。
1. 微分同胚的直观理解
在最简单的层面上,微分同胚是一种“可逆的、平滑的变换”。想象你有一张橡皮泥,把它拉伸、扭曲成不同的形状,但不能撕破或粘连——这种变换如果是可逆的(可以变回去),而且整个过程是“平滑”的(没有尖角或断裂),那它就可能是一个微分同胚。
在正态化流中,我们用这种变换来连接两个概率分布:一个简单的基分布(如标准正态分布)和一个复杂的目标分布(如图像数据的分布)。这种变换必须是可逆的,因为我们需要既能从基分布生成目标分布,也能从目标分布推回基分布。
2. 数学定义
更正式地,假设我们有两个 (DDD) 维实向量空间(通常是 (RD\mathbb{R}^DRD)),一个函数 (T:RD→RDT: \mathbb{R}^D \to \mathbb{R}^DT:RD→RD) 被称作微分同胚,如果它满足以下条件:
- 可逆性:(TTT) 是一个双射(bijective),也就是说存在逆函数 (T−1T^{-1}T−1),使得 (T∘T−1=idT \circ T^{-1} = \text{id}T∘T−1=id) 且 (T−1∘T=idT^{-1} \circ T = \text{id}T−1∘T=id)。这里 (id\text{id}id) 是恒等映射。
- 平滑性:(TTT) 和 (T−1T^{-1}T−1) 都是可微的(differentiable),甚至通常要求是连续可微的(即 (C∞C^\inftyC∞),无穷阶可微,但至少是 (C1C^1C1),一阶连续可微)。
从数学上看,微分同胚是一种特殊的同胚(homeomorphism),加上了可微性的约束。同胚只需要连续可逆,而微分同胚要求变换和它的逆在每一点都有定义良好的导数。
3. 为什么需要微分同胚?
在正态化流中,我们定义一个随机变量 (x=T(u)x = T(u)x=T(u)),其中 (uuu) 是从基分布 (pu(u)p_u(u)pu(u)) 中采样的(比如标准正态分布 (u∼N(0,I)u \sim \mathcal{N}(0, I)u∼N(0,I))),而 (xxx) 是我们希望建模的目标分布(如高维数据分布)。为了计算 (xxx) 的概率密度 (px(x)p_x(x)px(x)),我们需要用到变量变换公式:
px(x)=pu(u)∣detJT(u)∣−1,其中u=T−1(x) p_x(x) = p_u(u) \left| \det J_T(u) \right|^{-1}, \quad \text{其中} \quad u = T^{-1}(x) px(x)=pu(u)∣detJT(u)∣−1,其中u=T−1(x)
这里:
- (JT(u)J_T(u)JT(u)) 是变换 (TTT) 在点 (uuu) 处的雅可比矩阵(Jacobian matrix),即 (JT(u)=∂T∂uJ_T(u) = \frac{\partial T}{\partial u}JT(u)=∂u∂T)。
- (detJT(u)\det J_T(u)detJT(u)) 是雅可比矩阵的行列式,表示变换在局部引起的体积缩放。
- (∣detJT(u)∣−1\left| \det J_T(u) \right|^{-1}∣detJT(u)∣−1) 是逆变换的体积调整因子。
这个公式成立的前提是:
- (TTT) 是可逆的(否则 (u=T−1(x)u = T^{-1}(x)u=T−1(x)) 无定义)。
- (TTT) 是可微的(否则雅可比矩阵 (JT(u)J_T(u)JT(u)) 无定义)。
因此,(TTT) 必须是一个微分同胚,才能保证概率密度的计算是合法且可操作的。
4. 一个简单的例子
假设 (D=1D = 1D=1),定义一个变换 (T(u)=u3T(u) = u^3T(u)=u3)。我们来检查它是否是微分同胚:
- 可逆性:逆函数是 (T−1(x)=x1/3T^{-1}(x) = x^{1/3}T−1(x)=x1/3)。在 (R\mathbb{R}R) 上,(TTT) 是单调递增的,因此是双射。
- 可微性:(T(u)=u3T(u) = u^3T(u)=u3) 的导数是 (T′(u)=3u2T'(u) = 3u^2T′(u)=3u2),在 (R\mathbb{R}R) 上连续可微;逆函数 (T−1(x)=x1/3T^{-1}(x) = x^{1/3}T−1(x)=x1/3) 的导数是 (ddxx1/3=13x−2/3\frac{d}{dx} x^{1/3} = \frac{1}{3} x^{-2/3}dxdx1/3=31x−2/3),在 (x≠0x \neq 0x=0) 时可微,但在 (x=0x = 0x=0) 处不可微(导数趋于无穷)。
结论:(T(u)=u3T(u) = u^3T(u)=u3) 在 (R∖{0}\mathbb{R} \setminus \{0\}R∖{0}) 上是微分同胚,但在整个 (R\mathbb{R}R) 上不是,因为逆函数在 (x=0x = 0x=0) 不满足平滑性。
5. 在深度学习中的应用
在正态化流中,(TTT) 通常由神经网络参数化(例如耦合流、autoregressive 流等),这些网络被设计为可逆且可微。例如:
- 仿射变换:(T(u)=a⋅u+bT(u) = a \cdot u + bT(u)=a⋅u+b)(其中 (a≠0a \neq 0a=0)),雅可比行列式是常数 (aaa)。
- 神经网络流:如 RealNVP 或 Glow,通过精心设计的结构保证可逆性和可微性。
微分同胚的平滑性和可逆性让正态化流能够高效地进行概率密度估计和采样,这也是它在生成模型中大放异彩的原因。
6. 总结
微分同胚是正态化流的核心数学工具,它保证了从基分布到目标分布的变换既可逆又平滑。通过变量变换公式,我们可以用它来计算复杂的概率密度。理解微分同胚不仅能帮助你掌握正态化流的理论,还能启发你在深度学习中设计更灵活的模型。
附录:什么是双射?
“双射”(bijective)是函数的一种性质,在数学和深度学习中非常重要。简单来说,一个函数 (T:A→BT: A \to BT:A→B) 是双射,如果它同时满足以下两个条件:
- 单射(Injective):对于任意不同的输入 (a1≠a2a_1 \neq a_2a1=a2),输出也不同,即 (T(a1)≠T(a2)T(a_1) \neq T(a_2)T(a1)=T(a2))。这意味着没有两个不同的输入会被映射到同一个输出,避免了信息丢失。
- 满射(Surjective):对于 (BBB) 中的每一个元素 (bbb),都存在 (AAA) 中的某个 (aaa),使得 (T(a)=bT(a) = bT(a)=b)。这意味着 (TTT) 的输出覆盖了整个目标空间 (BBB),没有遗漏。
结合起来,双射是一个“一对一且覆盖全部”的映射,因此它必然存在逆函数 (T−1:B→AT^{-1}: B \to AT−1:B→A)。
例如:
- (T(u)=2uT(u) = 2uT(u)=2u) 在 (R\mathbb{R}R) 上是双射:既是单射(不同的 (uuu) 映射到不同的 (2u2u2u)),又是满射(对于任意 (xxx),总有 (u=x/2u = x/2u=x/2))。
- (T(u)=u2T(u) = u^2T(u)=u2) 不是双射:它不是单射(例如 (T(2)=T(−2)=4T(2) = T(-2) = 4T(2)=T(−2)=4)),在非负实数范围上也不是满射(无法输出负数)。
在正态化流中,双射性质保证了变换 (TTT) 的可逆性,这是计算概率密度和实现采样的基础。
后记
2025年3月31日20点21分于上海,在grok 3大模型辅助下完成。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐



所有评论(0)