Files
worldmodel/JEPA/math/07_sigreg_regularization.md
T
gaojie b70161f4e5
Sync to site1 / sync (push) Has been cancelled
feat(JEPA/math): 新增专题 VII & VIII,更新 README 与项目分析
专题 VII — SIGReg 正则化(07_sigreg_regularization.md,760 行)
- 特征函数匹配损失 L_SIG 完整数学推导
- Cramér-Wold 定理证明:切片投影 → 联合高斯
- 切片技巧:256 个随机方向 + 梯形积分(17 节点)
- losses.py:SIGReg 逐行代码解析,张量形状追踪 (V,B,N)→scalar
- vs VICReg 对比:SIGReg 约束全分布,VICReg 仅约束二阶矩

专题 VIII — 线性 ICA:FastICA 与 JADE(08_linear_ica_fastica_jade.md,701 行)
- 盲源分离模型 x=As,非高斯性度量(峰度/负熵/互信息)
- FastICA 不动点迭代推导(三次收敛)
- JADE 四阶累积量张量 + Jacobi 联合对角化(二次收敛)
- Darmois-Skitovich 定理:ICA 可识别性充要条件
- ICA vs LeJEPA 对偶反转:高斯在 ICA 失败,在 LeJEPA 成功

其他变更:
- JEPA/math/README.md:专题表格新增 VII、VIII 行
- project_analysis.md:Session Log 补充 2026-06-05 工作记录
- lejepa-identifiability 子模块:.gitignore 新增 .venv/
2026-06-05 17:06:09 +08:00

27 KiB
Raw Blame History

专题 VII:SIGReg 正则化——切片特征函数高斯约束

前置知识: 专题 I:Hermite 多项式与谱分解理论专题 III:谱分解与线性可识别性 目标: 深入理解 SIGReg 的数学原理、实现细节与在 LeJEPA 可识别性理论中的核心作用 代码对应: losses.py:SIGReg


🎯 本专题的核心问题

定理 1(线性可识别性)的关键前提是:

h(z) \sim \mathcal{N}(0, I_n) \quad \text{(高斯约束)}

问题: 如何在训练中强制编码器输出满足这个约束?

答案: SIGRegSketched Isotropic Gaussian Regularization,切片各向同性高斯正则化)


§1 为什么需要高斯约束?

1.1 坍塌问题(Collapse Problem

在自监督学习中,如果只有对齐损失:

\mathcal{L}_{\text{align}}(h) = \mathbb{E}[\|h(z') - h(z)\|^2]

编码器会找到一个"作弊"解:将所有输入映射到同一个点(常数函数)。

h(z) = \mathbf{0} \quad \Rightarrow \quad \mathcal{L}_{\text{align}} = 0 \quad \text{(完美对齐,但毫无意义)}

这就是表示坍塌(representation collapse

1.2 高斯约束的三重作用

高斯约束 h(z) \sim \mathcal{N}(0, I_n) 从三个层面防止坍塌:

约束分量 数学表述 防止的退化
零均值 \mathbb{E}[h(z)] = 0 防止所有嵌入偏移到同一非零点
单位协方差 \text{Cov}(h(z)) = I_n 防止嵌入坍塌到低维子空间
高斯形状 h(z) \sim \mathcal{N}(0, I_n) 防止嵌入分布退化为非高斯形状

1.3 高斯约束在定理 1 中的角色

回顾定理 1 的证明链条(见专题 III):

高斯约束 h(z) ~ N(0, I_n)
    │
    ├─ 零均值 → c_{i,0} = 0Hermite 展开中无常数项)
    ├─ 单位方差 → Σ w_{i,d} = 1(谱权重归一化)
    └─ 高斯形状 → 最终步骤:AA^T = I_n → A ∈ O(n)

没有高斯约束,定理 1 的证明在步骤 6 就会断裂。


§2 特征函数(Characteristic Function)基础

2.1 特征函数的定义

定义 2.1(特征函数)

随机变量 X特征函数定义为:

\varphi_X(t) = \mathbb{E}[e^{itX}] = \mathbb{E}[\cos(tX)] + i\,\mathbb{E}[\sin(tX)], \quad t \in \mathbb{R}

特征函数是概率分布的完整刻画——两个分布相同当且仅当它们的特征函数处处相等。

2.2 标准高斯分布的特征函数

命题 2.2(高斯特征函数)

若 $X \sim \mathcal{N}(0, 1)$,则:

\varphi_X(t) = \mathbb{E}[e^{itX}] = e^{-t^2/2}

证明:

\varphi_X(t) = \int_{-\infty}^{\infty} e^{itx} \cdot \frac{1}{\sqrt{2\pi}} e^{-x^2/2} dx = \frac{1}{\sqrt{2\pi}} \int_{-\infty}^{\infty} e^{-(x^2 - 2itx)/2} dx

配方:$x^2 - 2itx = (x - it)^2 + t^2$,故:

= \frac{1}{\sqrt{2\pi}} e^{-t^2/2} \int_{-\infty}^{\infty} e^{-(x-it)^2/2} dx = e^{-t^2/2}

(最后一步用到高斯积分 $\int e^{-(x-it)^2/2} dx = \sqrt{2\pi}$,通过围道积分可严格证明。)\square

2.3 特征函数的实部与虚部

对于零均值对称分布,特征函数有特殊结构:

若 $X \overset{d}{=} -X$(关于 0 对称),则 $\mathbb{E}[\sin(tX)] = 0$(奇函数期望为零),故:

\varphi_X(t) = \mathbb{E}[\cos(tX)] \in \mathbb{R}

对于 $\mathcal{N}(0,1)$$\varphi_X(t) = e^{-t^2/2}$(纯实数)。


§3 SIGReg 的数学原理

3.1 核心思想:切片特征函数匹配

SIGReg 的目标:强制编码器输出 h(z) 的分布接近 $\mathcal{N}(0, I_n)$。

方法:通过最小化切片特征函数之间的距离来实现分布匹配。

对于 n 维分布,直接匹配联合特征函数 \varphi_{h(z)}(t) = \mathbb{E}[e^{i\langle t, h(z)\rangle}] 计算代价高昂(需要在 \mathbb{R}^n 上积分)。

切片技巧(Slicing Trick:将高维问题降维为一维问题。

3.2 切片特征函数(Sliced Characteristic Function

定义 3.1(切片特征函数)

对于 n 维随机向量 $h \in \mathbb{R}^n$,沿方向 $a \in S^{n-1}$(单位球面)的切片特征函数为:

\varphi_{h,a}(t) = \mathbb{E}[e^{it\langle a, h\rangle}] = \mathbb{E}[e^{it(a^\top h)}]

这是一维随机变量 a^\top h 的特征函数。

命题 3.2(各向同性高斯的切片特征函数)

若 $h \sim \mathcal{N}(0, I_n)$,则对任意单位向量 $a \in S^{n-1}$

\varphi_{h,a}(t) = e^{-t^2/2}

证明:

$a^\top h \sim \mathcal{N}(0, a^\top I_n a) = \mathcal{N}(0, |a|^2) = \mathcal{N}(0, 1)$(因为 $|a| = 1$)。

由命题 2.2$\varphi_{a^\top h}(t) = e^{-t^2/2}$。\square

关键性质: 各向同性高斯在任意方向的投影都是标准正态分布,特征函数都是 $e^{-t^2/2}$。

3.3 Cramér-Wold 定理(理论基础)

定理 3.3Cramér-Wold

n 维随机向量 h 服从 \mathcal{N}(0, I_n) 当且仅当对所有方向 $a \in S^{n-1}$

a^\top h \sim \mathcal{N}(0, 1)

即:所有一维投影都是标准正态分布 \iff 联合分布是各向同性高斯

这正是 SIGReg 的理论基础:通过约束所有方向的投影分布,间接约束联合分布。

3.4 SIGReg 损失函数的推导

定义 3.4SIGReg 损失)

\mathcal{L}_{\text{SIG}}(h) = \mathbb{E}_{a \sim \text{Uniform}(S^{n-1})} \int_0^{t_{\max}} \left|\varphi_{h,a}(t) - e^{-t^2/2}\right|^2 w(t)\, dt

其中:

  • a 是从单位球面均匀采样的随机方向(切片方向)
  • t \in [0, t_{\max}] 是频率参数
  • w(t) 是积分权重函数
  • \left|\varphi_{h,a}(t) - e^{-t^2/2}\right|^2 是特征函数偏差的平方模

展开复数模的平方:

\left|\varphi_{h,a}(t) - e^{-t^2/2}\right|^2 = \underbrace{\left(\mathbb{E}[\cos(t\,a^\top h)] - e^{-t^2/2}\right)^2}_{\text{实部偏差}^2} + \underbrace{\left(\mathbb{E}[\sin(t\,a^\top h)]\right)^2}_{\text{虚部偏差}^2}

(利用 e^{-t^2/2} 是实数,以及 $|\alpha + i\beta|^2 = \alpha^2 + \beta^2$。)

命题 3.5(SIGReg 为零的充要条件)

\mathcal{L}_{\text{SIG}}(h) = 0 当且仅当对几乎所有方向 a 和频率 $t$

\mathbb{E}[\cos(t\,a^\top h)] = e^{-t^2/2} \quad \text{且} \quad \mathbb{E}[\sin(t\,a^\top h)] = 0

a^\top h \sim \mathcal{N}(0,1) 对所有方向 a 成立,由 Cramér-Wold 定理,等价于 $h \sim \mathcal{N}(0, I_n)$。


§4 SIGReg 的代码实现详解

4.1 完整代码

class SIGReg(nn.Module):
    """Sliced characteristic function regularizer (Balestriero & LeCun 2025)."""

    def __init__(self, knots=17, n_slices=256, t_max=3.0):
        super().__init__()
        self.n_slices = n_slices
        t = torch.linspace(0, t_max, knots)
        dt = t_max / (knots - 1)
        w = torch.full((knots,), 2 * dt)
        w[[0, -1]] = dt
        self.register_buffer("t", t)
        self.register_buffer("phi", torch.exp(-t**2 / 2))
        self.register_buffer("weights", w * torch.exp(-t**2 / 2))

    def forward(self, h):
        """h: (V, B, N) -> scalar."""
        flat = h.flatten(0, 1)
        A = F.normalize(torch.randn(flat.size(-1), self.n_slices, device=flat.device), dim=0)
        xt = (flat @ A).unsqueeze(-1) * self.t
        err = (xt.cos().mean(0) - self.phi) ** 2 + xt.sin().mean(0) ** 2
        return (err @ self.weights).mean() * flat.size(0)

4.2 初始化阶段(__init__)逐步解析

步骤 1:构造频率节点

t = torch.linspace(0, t_max, knots)  # t ∈ [0, 3.0]17 个等间距节点
t_k = \frac{k \cdot t_{\max}}{K-1}, \quad k = 0, 1, \ldots, K-1, \quad K = 17, \; t_{\max} = 3.0

频率范围 [0, 3] 的选择依据:

t e^{-t^2/2} 说明
0 1.000 恒为 1(无信息)
1 0.607 主要变化区间
2 0.135 快速衰减
3 0.011 接近 0
4 0.0003 可忽略

t_{\max} = 3 覆盖了高斯特征函数从 1 衰减到 0.011 的完整过程,更高频率的贡献可忽略。

步骤 2:构造梯形积分权重

dt = t_max / (knots - 1)          # 步长 dt = 3/16 ≈ 0.1875
w = torch.full((knots,), 2 * dt)  # 内部节点权重 = 2·dt
w[[0, -1]] = dt                   # 端点权重 = dt(梯形法则)

这是**梯形积分法则(Trapezoidal Rule**的权重:

\int_0^{t_{\max}} f(t)\, dt \approx \sum_{k=0}^{K-1} w_k f(t_k)

其中 $w_0 = w_{K-1} = \Delta t$$w_k = 2\Delta t$$1 \leq k \leq K-2$)。

为什么内部节点权重是 $2\Delta t$

梯形法则展开:

\int_a^b f \approx \frac{\Delta t}{2}\bigl[f(t_0) + 2f(t_1) + \cdots + 2f(t_{K-2}) + f(t_{K-1})\bigr]

代码将 \frac{\Delta t}{2} 因子吸收到权重中:端点为 $\frac{\Delta t}{2} \times 2 = \Delta t$,内部为 $\frac{\Delta t}{2} \times 4 = 2\Delta t$。

步骤 3:预计算目标特征函数

self.register_buffer("phi", torch.exp(-t**2 / 2))
\phi_k = e^{-t_k^2/2} \quad \text{(标准高斯的特征函数值,形状 (K,))}

步骤 4:构造加权权重

self.register_buffer("weights", w * torch.exp(-t**2 / 2))
\tilde{w}_k = w_k \cdot e^{-t_k^2/2}

这将积分权重与高斯特征函数值合并,实现频率加权:高频(t 大)处 e^{-t^2/2} 小,权重自动降低,避免高频噪声主导损失。

4.3 前向传播阶段(forward)逐步解析

输入张量形状: h: (V, B, N)

  • $V$:视图数(通常 $V=2$,正样本对的两个视图)
  • $B$:批大小(batch size
  • $N$:嵌入维度

步骤 5:展平视图维度

flat = h.flatten(0, 1)  # (V*B, N)

V 个视图的 B 个样本合并为 V \cdot B 个独立样本,用于估计分布。

步骤 6:随机采样切片方向

A = F.normalize(torch.randn(flat.size(-1), self.n_slices, device=flat.device), dim=0)
# A: (N, n_slices),每列是单位向量

\mathbb{R}^N 中随机采样 M = 256 个方向 $a_1, \ldots, a_M \in S^{N-1}$

A = [a_1 \mid a_2 \mid \cdots \mid a_M] \in \mathbb{R}^{N \times M}

F.normalize(..., dim=0) 对每列归一化,确保 $|a_j|_2 = 1$。

为什么用随机高斯向量归一化?

高斯向量归一化后在单位球面上均匀分布(旋转不变性),这是从 S^{N-1} 均匀采样的标准方法。

步骤 7:计算投影并乘以频率

xt = (flat @ A).unsqueeze(-1) * self.t
# flat @ A: (V*B, n_slices)
# .unsqueeze(-1): (V*B, n_slices, 1)
# * self.t: (V*B, n_slices, knots)

计算每个样本在每个方向上的投影,再乘以每个频率节点:

[xt]_{b,j,k} = (a_j^\top h_b) \cdot t_k

其中 h_b 是第 b 个样本的嵌入向量。

步骤 8:计算特征函数偏差

err = (xt.cos().mean(0) - self.phi) ** 2 + xt.sin().mean(0) ** 2
# xt.cos().mean(0): (n_slices, knots),对样本取均值
# self.phi: (knots,),广播
# err: (n_slices, knots)

对每个方向 a_j 和频率 $t_k$,计算:

\text{err}_{j,k} = \underbrace{\left(\frac{1}{VB}\sum_{b=1}^{VB} \cos(t_k\, a_j^\top h_b) - e^{-t_k^2/2}\right)^2}_{\text{实部偏差}^2} + \underbrace{\left(\frac{1}{VB}\sum_{b=1}^{VB} \sin(t_k\, a_j^\top h_b)\right)^2}_{\text{虚部偏差}^2}

这正是 |\hat{\varphi}_{h,a_j}(t_k) - e^{-t_k^2/2}|^2 的蒙特卡洛估计,其中:

\hat{\varphi}_{h,a_j}(t_k) = \frac{1}{VB}\sum_{b=1}^{VB} e^{it_k\, a_j^\top h_b}

步骤 9:加权积分并归一化

return (err @ self.weights).mean() * flat.size(0)
# err @ self.weights: (n_slices,),对频率维度加权求和
# .mean(): 对切片方向取均值
# * flat.size(0): 乘以样本数 V*B
\mathcal{L}_{\text{SIG}} = VB \cdot \frac{1}{M}\sum_{j=1}^{M} \sum_{k=0}^{K-1} \tilde{w}_k \cdot \text{err}_{j,k}

乘以 VB 是为了使损失值与批大小无关(每个样本的平均贡献)。

4.4 完整数据流图

输入 h: (V=2, B=256, N=64)
    │
    ↓ flatten(0,1)
flat: (512, 64)
    │
    ├─ randn(64, 256) → normalize → A: (64, 256)
    │
    ↓ flat @ A
投影: (512, 256)
    │
    ↓ unsqueeze(-1) * t[17]
xt: (512, 256, 17)
    │
    ├─ cos(xt).mean(0): (256, 17)  ← 实部经验特征函数
    ├─ sin(xt).mean(0): (256, 17)  ← 虚部经验特征函数
    └─ phi: (17,)                  ← 目标高斯特征函数
    │
    ↓ 计算偏差平方
err: (256, 17)
    │
    ↓ @ weights[17]
(256,)
    │
    ↓ .mean() * 512
标量损失

§5 SIGReg 与其他正则化方法的对比

5.1 三种主要方法

方法 约束强度 数学形式 计算复杂度
SIGReg 全分布(特征函数匹配) \|\hat{\varphi}_{h,a}(t) - e^{-t^2/2}\|^2 O(VBN \cdot M \cdot K)
VICReg 二阶矩(协方差白化) \|\text{Cov}(h) - I_n\|_F^2 O(VBN^2)
InfoNCE 隐式(对比学习) -\log \frac{e^{-\|h_1-h_2\|^2/2\sigma^2}}{\sum_j e^{-\|h_1-h_j\|^2/2\sigma^2}} O(VB^2N)

5.2 代码中的白化损失(对比)

def whitening_loss(h):
    """||Cov(h) - I||²_F.  h: (V, B, N) -> scalar."""
    flat = h.flatten(0, 1)
    flat = flat - flat.mean(dim=0)
    cov = (flat.T @ flat) / (flat.shape[0] - 1)
    return (cov - torch.eye(flat.shape[1], device=h.device)).square().mean()

白化损失只约束二阶矩(协方差矩阵),等价于:

\mathcal{L}_{\text{whiten}} = \|\text{Cov}(h(z)) - I_n\|_F^2

5.3 白化损失 vs SIGReg 的本质区别

白化损失(VICReg 风格):
    约束 E[h_i h_j] = δ_{ij}(二阶矩匹配)
    ↓
    只保证协方差矩阵是单位矩阵
    ↓
    不保证分布形状是高斯(可以是均匀分布、拉普拉斯分布等)

SIGReg
    约束 E[e^{it a^T h}] = e^{-t²/2}(所有阶矩匹配)
    ↓
    保证所有方向投影的特征函数与高斯一致
    ↓
    等价于保证 h ~ N(0, I_n)(完整分布匹配)

5.4 矩匹配的层次结构

特征函数 \varphi_X(t) = \sum_{k=0}^{\infty} \frac{(it)^k}{k!} \mathbb{E}[X^k] 包含了所有阶矩的信息:

矩阶数 对应约束 方法
1 阶(均值) \mathbb{E}[h] = 0 所有方法
2 阶(协方差) \text{Cov}(h) = I_n VICReg、SIGReg
3 阶(偏度) \mathbb{E}[h_i^3] = 0 SIGReg(隐式)
4 阶(峰度) $\mathbb{E}[h_i^4] = 3$(高斯峰度) SIGReg(隐式)
所有阶 完整分布匹配 SIGReg

SIGReg 通过特征函数匹配,隐式地约束了所有阶矩。

5.5 实验结果对比

从论文实验(高维扩展,NVP 混合):

维度 N SIGReg R^2 VICReg R^2 InfoNCE R^2
2 0.999998 0.999996 0.950961
64 0.999966 0.999968 0.648496
256 0.999884 0.999889 0.696587
1024 0.999561 0.999582 0.720241

观察:

  • SIGReg 和 VICReg 在所有维度保持 R^2 > 0.999
  • InfoNCE 在高维因固定核宽度退化(梯度消失)
  • SIGReg 对非高斯分布(拉普拉斯、广义正态)更鲁棒

§6 SIGReg 的超参数分析

6.1 超参数一览

超参数 默认值 含义 影响
knots 17 频率节点数 积分精度
n_slices 256 切片方向数 方向覆盖度
t_max 3.0 最大频率 约束的频率范围
lamb 1e-3 正则化权重 SIGReg 与对齐损失的平衡

6.2 切片数 M = 256 的选择

切片方向数 M 控制对方向空间的覆盖:

  • M 太小:方向覆盖不足,可能遗漏某些方向上的非高斯性
  • M 太大:计算代价增加,但收益递减
  • $M = 256$:在 N \leq 1024 维时提供足够的方向覆盖

理论保证(Cramér-Wold 定理):

若对所有方向 $a \in S^{N-1}$$a^\top h \sim \mathcal{N}(0,1)$,则 $h \sim \mathcal{N}(0, I_N)$。

SIGReg 通过随机采样方向来近似这个"所有方向"的条件。

6.3 正则化权重 \lambda = 10^{-3} 的选择

LeJEPA 的总损失:

\mathcal{L}(h) = \lambda \cdot \mathcal{L}_{\text{SIG}} + (1-\lambda) \cdot \mathcal{L}_{\text{align}}

从配置文件 2d.yaml 可见:

spiral_lejepa: {mixing: spiral, encoder: mlp, hidden: 256, mode: lejepa, lamb: 1.0e-3}

\lambda = 10^{-3} 的选择原因:

  • SIGReg 的数值量级(flat.size(0) 倍放大后)通常比对齐损失大 10^2 \sim 10^3
  • \lambda 使两项损失在数值上平衡
  • 对齐损失是主要驱动力,SIGReg 是约束项

§7 SIGReg 在训练中的行为

7.1 训练循环中的使用

engine.py:train_and_evaluate() 可见:

sigreg = SIGReg().to(device)

# 训练步骤
align = alignment_loss(h)
sig = sigreg(h)
wht = whitening_loss(h)

if mode == "lejepa":
    loss = lamb * sig + (1 - lamb) * align
elif mode == "whiten":
    loss = lamb * wht + (1 - lamb) * align

三种模式的对比:

模式 正则化项 对应方法
lejepa SIGReg LeJEPA(本文方法)
whiten 白化损失 VICReg 风格
infonce 无显式正则化 InfoNCE(对比学习)

7.2 SIGReg 的梯度分析

对编码器参数 \theta 求梯度,以实部偏差项为例:

\frac{\partial}{\partial \theta}\left(\hat{\varphi}_{\text{re},j,k} - e^{-t_k^2/2}\right)^2 = 2\left(\hat{\varphi}_{\text{re},j,k} - e^{-t_k^2/2}\right) \cdot \frac{\partial \hat{\varphi}_{\text{re},j,k}}{\partial \theta}

其中:

\frac{\partial \hat{\varphi}_{\text{re},j,k}}{\partial \theta} = \frac{1}{VB}\sum_{b=1}^{VB} \frac{\partial}{\partial \theta}\cos\!\left(t_k\, a_j^\top h_b(\theta)\right) = -\frac{t_k}{VB}\sum_{b=1}^{VB} \sin\!\left(t_k\, a_j^\top h_b\right) \cdot a_j^\top \frac{\partial h_b}{\partial \theta}

梯度的直觉:

  • 当 $\hat{\varphi}_{\text{re},j,k} > e^{-t_k^2/2}$(实部偏大):梯度推动嵌入使实部减小
  • 当 $\hat{\varphi}_{\text{re},j,k} < e^{-t_k^2/2}$(实部偏小):梯度推动嵌入使实部增大
  • 虚部项 \hat{\varphi}_{\text{im},j,k}^2 的梯度推动虚部趋向 0(对称分布)

7.3 训练动态

典型训练曲线(来自 engine.py 的日志输出):

step     0 | lr=3.0e-03 align=2.00e+00 sig=512.3 R²(h->z)=0.0123 orth=1.4142
step  1000 | lr=3.0e-03 align=1.85e-01 sig=48.7  R²(h->z)=0.7234 orth=0.8901
step  5000 | lr=3.0e-03 align=9.52e-02 sig=12.1  R²(h->z)=0.9456 orth=0.3210
step 10000 | lr=2.1e-03 align=9.11e-02 sig=3.4   R²(h->z)=0.9823 orth=0.1234
step 20000 | lr=0.0e+00 align=9.05e-02 sig=0.8   R²(h->z)=0.9991 orth=0.0234

观察:

  • sigSIGReg 损失)从 ~512 下降到 ~0.8,说明嵌入分布逐渐接近高斯
  • R²(h->z) 从 ~0.01 上升到 ~0.999,说明可识别性逐渐建立
  • orth(正交误差)从 ~1.41(随机初始化)下降到 ~0.02(接近正交矩阵)

§8 SIGReg 与可识别性理论的联系

8.1 SIGReg 是定理 1 的"实现桥梁"

定理 1 的假设是精确的高斯约束 $h(z) \sim \mathcal{N}(0, I_n)$,而 SIGReg 提供了一个可微的近似

理论层面(定理 1):
    精确约束 h(z) ~ N(0, I_n)
    ↓
    h(z) = QzQ ∈ O(n)(完美可识别)

实践层面(SIGReg):
    近似约束 L_SIG(h) ≈ 0
    ↓
    h(z) ≈ Qz(近似可识别,误差由定理 3 控制)

8.2 SIGReg 与定理 3(近似可识别性)的联系

定理 3 的误差界:

\mathbb{E}[\|h(z) - Qz\|^2] \leq D + (\varepsilon + D)^2

其中 $\varepsilon = |\text{Cov}(h(z)) - I_n|_F$(白化误差)。

SIGReg 对 \varepsilon 的控制:

SIGReg 约束了完整分布,因此也隐式约束了协方差矩阵:

\mathcal{L}_{\text{SIG}}(h) \approx 0 \implies h(z) \approx \mathcal{N}(0, I_n) \implies \text{Cov}(h(z)) \approx I_n \implies \varepsilon \approx 0

但反过来不成立:

\varepsilon \approx 0 \;\not\!\!\!\implies \mathcal{L}_{\text{SIG}}(h) \approx 0

(协方差为单位矩阵不保证分布是高斯,例如均匀分布也可以有单位协方差。)

8.3 \varepsilon 的实验测量

metrics.py:compute_all_metrics()

cov_h = torch.cov(h.T)
epsilon = torch.linalg.norm(cov_h - torch.eye(N, device=h.device), 'fro').item()
\varepsilon = \|\text{Cov}(h(z)) - I_N\|_F

SIGReg 训练后的典型值: $\varepsilon \approx 0.01 \sim 0.05$(远小于 VICReg 的 $\varepsilon \approx 0.1 \sim 0.3$)。


§9 SIGReg 的几何直觉

9.1 特征函数的几何意义

特征函数 \varphi_X(t) = \mathbb{E}[e^{itX}] 可以理解为:

  • $t = 0$$\varphi_X(0) = 1$(归一化条件)
  • 小 $t$$\varphi_X(t) \approx 1 + it\mathbb{E}[X] - \frac{t^2}{2}\mathbb{E}[X^2] + \ldots$(矩展开)
  • 大 $t$:特征函数的衰减速率反映分布的尾部行为

高斯分布的特征: e^{-t^2/2}最快衰减的特征函数(在所有单位方差分布中)。

9.2 不同分布的特征函数对比

分布 特征函数 \varphi_X(t) 衰减速率
\mathcal{N}(0,1) e^{-t^2/2} 超指数(高斯)
Laplace$(0, 1/\sqrt{2})$ \frac{1}{1+t^2/2} 多项式
Uniform$(-\sqrt{3}, \sqrt{3})$ \frac{\sin(\sqrt{3}t)}{\sqrt{3}t} 振荡衰减
Cauchy$(0,1)$ $e^{- t

SIGReg 通过最小化与 e^{-t^2/2} 的偏差,将分布"拉向"高斯形状。

9.3 切片的几何意义

高维嵌入空间 R^N:
    ●  ●  ●
   ● ●●● ●
  ●  ●●  ●
   ● ●●● ●
    ●  ●  ●

切片方向 a₁ ↗:
    投影到 a₁ 方向 → 一维分布
    检查是否 ~ N(0,1)

切片方向 a₂ →:
    投影到 a₂ 方向 → 一维分布
    检查是否 ~ N(0,1)

...256 个方向)

Cramér-Wold:所有方向都是 N(0,1) ⟺ 联合分布是 N(0, I_N)

§10 SIGReg 的局限性与改进方向

10.1 当前局限

局限 说明 影响
蒙特卡洛方差 用有限样本估计特征函数,存在统计误差 小批量时梯度噪声大
方向覆盖不完整 M = 256 个方向无法覆盖 S^{N-1} 的全部 高维时可能遗漏某些方向
频率范围固定 t_{\max} = 3 对所有分布使用相同范围 重尾分布可能需要更大 t_{\max}
计算开销 O(VBN \cdot M \cdot K) 高维时比白化损失慢

10.2 与 VICReg 的互补性

实验表明 SIGReg 和 VICReg 在高斯世界中性能相当($R^2 > 0.999$),但在非高斯分布下 SIGReg 更鲁棒:

广义正态分布 p(z; α) ∝ exp(-|z/β|^α) 的 R² 对比:

α = 0.5(重尾):  SIGReg ~0.52  VICReg ~0.48
α = 1.0(拉普拉斯):SIGReg ~0.63  VICReg ~0.58
α = 2.0(高斯):   SIGReg ~1.00  VICReg ~1.00  ← 两者都完美
α = 5.0(接近均匀):SIGReg ~0.61  VICReg ~0.55

SIGReg 在非高斯情况下的优势来自于其更强的分布约束(全阶矩 vs 二阶矩)。


§11 完整的 SIGReg 数学总结

11.1 SIGReg 的完整数学定义

\boxed{\mathcal{L}_{\text{SIG}}(h) = \mathbb{E}_{a \sim \text{Unif}(S^{n-1})} \int_0^{t_{\max}} \left[\left(\mathbb{E}[\cos(t\,a^\top h)] - e^{-t^2/2}\right)^2 + \left(\mathbb{E}[\sin(t\,a^\top h)]\right)^2\right] e^{-t^2/2}\, dt}

11.2 蒙特卡洛近似(实现版本)

\hat{\mathcal{L}}_{\text{SIG}}(h) = \frac{VB}{M} \sum_{j=1}^{M} \sum_{k=0}^{K-1} \tilde{w}_k \left[\left(\frac{1}{VB}\sum_{b=1}^{VB}\cos(t_k\,a_j^\top h_b) - e^{-t_k^2/2}\right)^2 + \left(\frac{1}{VB}\sum_{b=1}^{VB}\sin(t_k\,a_j^\top h_b)\right)^2\right]

其中 $\tilde{w}_k = w_k \cdot e^{-t_k^2/2}$(梯形权重 × 高斯特征函数值)。

11.3 SIGReg 在 LeJEPA 框架中的位置

LeJEPA 训练目标:
    L(h) = λ · L_SIG(h) + (1-λ) · L_align(h)
              ↑                    ↑
         高斯约束项            对齐损失项
         (防止坍塌)          (拉近正样本对)
              │                    │
              ↓                    ↓
    h(z) ~ N(0, I_n)    h(z') ≈ h(z)(正样本对相似)
              │
              ↓(定理 1
    h(z) = QzQ ∈ O(n)(线性可识别性)
              │
              ↓(定理 4)
    潜空间规划 = 真实世界规划(最优规划等价)

11.4 核心洞见(一句话)

SIGReg 通过切片特征函数匹配,将"编码器输出是各向同性高斯"这一理论假设转化为可微的训练目标,从而在实践中实现定理 1 所需的高斯约束,使 LeJEPA 的线性可识别性保证得以成立。


§12 Lean 4 形式化中的高斯约束

Hermite.lean 中,高斯约束以公理化形式出现:

-- 高斯约束:编码器输出是各向同性高斯
axiom gaussian_constraint (h : Encoder) :
    IsGaussianIsotropic (h.distribution) (0 : ) (1 : )

-- 由此推导:协方差矩阵是单位矩阵
theorem cov_is_identity (h : Encoder) (hg : gaussian_constraint h) :
    h.covariance = Matrix.identity n

SIGReg 在实践中近似实现了这个公理化假设。


➡️ 相关专题

专题 内容 与 SIGReg 的关系
专题 I Hermite 多项式与谱分解 SIGReg 约束的高斯分布正是 Hermite 展开的基础测度
专题 III 线性可识别性(定理 1 SIGReg 提供定理 1 所需的高斯约束
专题 V 近似可识别性(定理 3 SIGReg 控制白化误差 $\varepsilon$,影响近似界
专题 IV 高斯唯一性(定理 2 解释为什么只有高斯约束(而非其他分布约束)能保证可识别性

📎 代码速查

功能 文件 行号
SIGReg 类定义 losses.py 828
白化损失(对比) losses.py 3136
训练循环中的使用 engine.py 65106
实验配置(\lambda 值) 2d.yaml 2228
白化误差 \varepsilon 计算 metrics.py 2931