From b70161f4e53cd18eb61308f0669067e178624d16 Mon Sep 17 00:00:00 2001 From: gaojie Date: Fri, 5 Jun 2026 17:06:09 +0800 Subject: [PATCH] =?UTF-8?q?feat(JEPA/math):=20=E6=96=B0=E5=A2=9E=E4=B8=93?= =?UTF-8?q?=E9=A2=98=20VII=20&=20VIII=EF=BC=8C=E6=9B=B4=E6=96=B0=20README?= =?UTF-8?q?=20=E4=B8=8E=E9=A1=B9=E7=9B=AE=E5=88=86=E6=9E=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 专题 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/ --- JEPA/lejepa-identifiability | 2 +- JEPA/math/07_sigreg_regularization.md | 761 ++++++++++++++++++++++++ JEPA/math/08_linear_ica_fastica_jade.md | 702 ++++++++++++++++++++++ JEPA/math/README.md | 2 + project_analysis.md | 43 ++ 5 files changed, 1509 insertions(+), 1 deletion(-) create mode 100644 JEPA/math/07_sigreg_regularization.md create mode 100644 JEPA/math/08_linear_ica_fastica_jade.md diff --git a/JEPA/lejepa-identifiability b/JEPA/lejepa-identifiability index de7503f..7d69417 160000 --- a/JEPA/lejepa-identifiability +++ b/JEPA/lejepa-identifiability @@ -1 +1 @@ -Subproject commit de7503f1b2291ba1e9fc03d9c433180794803440 +Subproject commit 7d69417137782d1fd288b572fae5169beb860fd0 diff --git a/JEPA/math/07_sigreg_regularization.md b/JEPA/math/07_sigreg_regularization.md new file mode 100644 index 0000000..7736bdd --- /dev/null +++ b/JEPA/math/07_sigreg_regularization.md @@ -0,0 +1,761 @@ +# 专题 VII:SIGReg 正则化——切片特征函数高斯约束 + +> **前置知识:** [专题 I:Hermite 多项式与谱分解理论](01_hermite_polynomials.md)、[专题 III:谱分解与线性可识别性](03_spectral_identifiability.md) +> **目标:** 深入理解 SIGReg 的数学原理、实现细节与在 LeJEPA 可识别性理论中的核心作用 +> **代码对应:** [`losses.py:SIGReg`](../lejepa-identifiability/experiments/lejepa_id/losses.py:8) + +--- + +## 🎯 本专题的核心问题 + +定理 1(线性可识别性)的关键前提是: + +$$h(z) \sim \mathcal{N}(0, I_n) \quad \text{(高斯约束)}$$ + +**问题:** 如何在训练中强制编码器输出满足这个约束? + +**答案:** SIGReg(Sketched 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](03_spectral_identifiability.md)): + +``` +高斯约束 h(z) ~ N(0, I_n) + │ + ├─ 零均值 → c_{i,0} = 0(Hermite 展开中无常数项) + ├─ 单位方差 → Σ 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.3(Cramé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.4(SIGReg 损失)** + +$$\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 完整代码 + +```python +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:构造频率节点 + +```python +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:构造梯形积分权重 + +```python +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:预计算目标特征函数 + +```python +self.register_buffer("phi", torch.exp(-t**2 / 2)) +``` + +$$\phi_k = e^{-t_k^2/2} \quad \text{(标准高斯的特征函数值,形状 (K,))}$$ + +#### 步骤 4:构造加权权重 + +```python +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:展平视图维度 + +```python +flat = h.flatten(0, 1) # (V*B, N) +``` + +将 $V$ 个视图的 $B$ 个样本合并为 $V \cdot B$ 个独立样本,用于估计分布。 + +#### 步骤 6:随机采样切片方向 + +```python +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:计算投影并乘以频率 + +```python +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:计算特征函数偏差 + +```python +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:加权积分并归一化 + +```python +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 代码中的白化损失(对比) + +```python +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`](../lejepa-identifiability/experiments/configs/2d.yaml:22) 可见: + +```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()`](../lejepa-identifiability/experiments/lejepa_id/engine.py:65) 可见: + +```python +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`](../lejepa-identifiability/experiments/lejepa_id/engine.py:137) 的日志输出): + +``` +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 +``` + +**观察:** +- `sig`(SIGReg 损失)从 ~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) = Qz,Q ∈ 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()`](../lejepa-identifiability/experiments/lejepa_id/metrics.py:29): + +```python +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) = Qz,Q ∈ O(n)(线性可识别性) + │ + ↓(定理 4) + 潜空间规划 = 真实世界规划(最优规划等价) +``` + +### 11.4 核心洞见(一句话) + +> **SIGReg 通过切片特征函数匹配,将"编码器输出是各向同性高斯"这一理论假设转化为可微的训练目标,从而在实践中实现定理 1 所需的高斯约束,使 LeJEPA 的线性可识别性保证得以成立。** + +--- + +## §12 Lean 4 形式化中的高斯约束 + +在 [`Hermite.lean`](../lejepa-identifiability/lean/LeJEPA/Hermite.lean) 中,高斯约束以公理化形式出现: + +```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](01_hermite_polynomials.md) | Hermite 多项式与谱分解 | SIGReg 约束的高斯分布正是 Hermite 展开的基础测度 | +| [专题 III](03_spectral_identifiability.md) | 线性可识别性(定理 1) | SIGReg 提供定理 1 所需的高斯约束 | +| [专题 V](05_approximate_identifiability.md) | 近似可识别性(定理 3) | SIGReg 控制白化误差 $\varepsilon$,影响近似界 | +| [专题 IV](04_sturm_liouville_uniqueness.md) | 高斯唯一性(定理 2) | 解释为什么只有高斯约束(而非其他分布约束)能保证可识别性 | + +--- + +## 📎 代码速查 + +| 功能 | 文件 | 行号 | +|------|------|------| +| SIGReg 类定义 | [`losses.py`](../lejepa-identifiability/experiments/lejepa_id/losses.py:8) | 8–28 | +| 白化损失(对比) | [`losses.py`](../lejepa-identifiability/experiments/lejepa_id/losses.py:31) | 31–36 | +| 训练循环中的使用 | [`engine.py`](../lejepa-identifiability/experiments/lejepa_id/engine.py:65) | 65–106 | +| 实验配置($\lambda$ 值) | [`2d.yaml`](../lejepa-identifiability/experiments/configs/2d.yaml:22) | 22–28 | +| 白化误差 $\varepsilon$ 计算 | [`metrics.py`](../lejepa-identifiability/experiments/lejepa_id/metrics.py:29) | 29–31 | \ No newline at end of file diff --git a/JEPA/math/08_linear_ica_fastica_jade.md b/JEPA/math/08_linear_ica_fastica_jade.md new file mode 100644 index 0000000..bf197a9 --- /dev/null +++ b/JEPA/math/08_linear_ica_fastica_jade.md @@ -0,0 +1,702 @@ +# 专题 VIII:线性 ICA——FastICA 与 JADE 算法深度分析 + +> **前置知识:** [专题 I:Hermite 多项式与谱分解理论](01_hermite_polynomials.md)、[专题 IV:Sturm-Liouville 与高斯唯一性](04_sturm_liouville_uniqueness.md) +> **目标:** 深入理解线性 ICA 的数学框架、FastICA 与 JADE 算法原理,以及与 LeJEPA 的对比关系 +> **关键对比:** 高斯分布在 ICA 中是**失败**的唯一情况,在 LeJEPA 中是**成功**的唯一情况 + +--- + +## 🎯 本专题的核心问题 + +> **线性 ICA 是什么?FastICA 和 JADE 如何工作?为什么高斯分布让 ICA 失败,却让 LeJEPA 成功?** + +这个"对偶反转"是理解 LeJEPA 可识别性理论最深刻的洞见之一。 + +--- + +## §1 独立成分分析(ICA)的基本框架 + +### 1.1 盲源分离问题 + +**场景:** 鸡尾酒会问题(Cocktail Party Problem) + +``` +信号源(独立): s₁(t) = 人声 A + s₂(t) = 人声 B + s₃(t) = 音乐 + +混合(未知矩阵 A):x₁ = a₁₁s₁ + a₁₂s₂ + a₁₃s₃ + x₂ = a₂₁s₁ + a₂₂s₂ + a₂₃s₃ + x₃ = a₃₁s₁ + a₃₂s₂ + a₃₃s₃ + +目标:从 x 中恢复 s(盲源分离) +``` + +**数学模型(线性 ICA):** + +$$\boxed{x = As}$$ + +其中: +- $s \in \mathbb{R}^n$:**源信号**(独立成分,i.i.d.,非高斯) +- $A \in \mathbb{R}^{n \times n}$:**混合矩阵**(未知,可逆) +- $x \in \mathbb{R}^n$:**观测信号** + +**目标:** 找到**分离矩阵** $W = A^{-1}$,使得 $\hat{s} = Wx$ 恢复出独立成分。 + +### 1.2 可识别性的等价类 + +**命题 1.1(ICA 的可识别性)** + +在以下条件下,ICA 可以恢复源信号(至多到排列和缩放的等价类): + +1. **独立性:** $s_1, \ldots, s_n$ 相互独立 +2. **非高斯性:** 至多一个 $s_i$ 是高斯分布 +3. **可逆性:** 混合矩阵 $A$ 可逆 + +**可识别性等价类:** + +$$\hat{s} = PDs$$ + +其中 $P$ 是置换矩阵,$D$ 是对角缩放矩阵。即 ICA 只能恢复到**排列 + 缩放**的等价类。 + +### 1.3 为什么高斯分布让 ICA 失败? + +**命题 1.2(高斯分布的旋转不变性)** + +若 $s \sim \mathcal{N}(0, I_n)$,则对任意正交矩阵 $Q \in O(n)$: + +$$Qs \sim \mathcal{N}(0, I_n)$$ + +**推论:** 若 $x = As$,$s \sim \mathcal{N}(0, I_n)$,则对任意正交矩阵 $Q$: + +$$x = As = (AQ^{-1})(Qs) \overset{d}{=} (AQ^{-1}) s'$$ + +其中 $s' = Qs \sim \mathcal{N}(0, I_n)$。因此 $A$ 和 $AQ^{-1}$ 产生**完全相同的观测分布**,无法区分。 + +**结论:** 高斯源信号时,ICA 无法确定混合矩阵 $A$ 的旋转方向——存在无穷多个等价解。 + +--- + +## §2 ICA 的数学基础:非高斯性度量 + +### 2.1 中心极限定理的逆向利用 + +**中心极限定理(CLT):** 独立随机变量之和趋向高斯分布。 + +**ICA 的逆向利用:** 若 $y = w^\top x = w^\top As$,则: +- 当 $w^\top A$ 只有一个非零分量时,$y$ 等于某个源信号 $s_i$(最非高斯) +- 当 $w^\top A$ 有多个非零分量时,$y$ 是多个独立信号的混合(更接近高斯) + +**ICA 的核心思想:** 寻找使投影 $y = w^\top x$ **最非高斯**的方向 $w$,即找到独立成分。 + +### 2.2 非高斯性的度量 + +#### 2.2.1 峰度(Kurtosis) + +**定义 2.1(峰度)** + +$$\text{kurt}(y) = \mathbb{E}[y^4] - 3(\mathbb{E}[y^2])^2$$ + +对于标准化变量($\mathbb{E}[y] = 0$,$\mathbb{E}[y^2] = 1$): + +$$\text{kurt}(y) = \mathbb{E}[y^4] - 3$$ + +| 分布 | 峰度 | 说明 | +|------|------|------| +| 高斯 $\mathcal{N}(0,1)$ | 0 | 基准 | +| 拉普拉斯 | 3 | 超高斯(重尾) | +| 均匀分布 | $-1.2$ | 亚高斯(轻尾) | +| 语音信号 | $\approx 5 \sim 10$ | 超高斯 | + +**ICA 目标(峰度版本):** 最大化 $|\text{kurt}(w^\top x)|$。 + +**缺点:** 对异常值(outliers)极度敏感(四阶矩)。 + +#### 2.2.2 负熵(Negentropy) + +**定义 2.2(负熵)** + +$$J(y) = H(y_{\text{Gauss}}) - H(y)$$ + +其中 $H$ 是微分熵,$y_{\text{Gauss}}$ 是与 $y$ 同方差的高斯变量。 + +**性质:** +- $J(y) \geq 0$(高斯分布熵最大) +- $J(y) = 0 \iff y \sim \mathcal{N}$ +- 对异常值鲁棒 + +**ICA 目标(负熵版本):** 最大化 $J(w^\top x)$。 + +**近似(Hyvärinen 1998):** + +$$J(y) \approx [E[G(y)] - E[G(\nu)]]^2$$ + +其中 $\nu \sim \mathcal{N}(0,1)$,$G$ 是非线性函数(对比函数): + +| 对比函数 $G(u)$ | $g(u) = G'(u)$ | 适用场景 | +|----------------|----------------|---------| +| $\log\cosh(u)$ | $\tanh(u)$ | 通用(FastICA 默认) | +| $-e^{-u^2/2}$ | $u e^{-u^2/2}$ | 超高斯(重尾)信号 | +| $u^4/4$ | $u^3$ | 亚高斯信号(峰度) | + +#### 2.2.3 互信息(Mutual Information) + +**定义 2.3(互信息)** + +$$I(y_1, \ldots, y_n) = \sum_{i=1}^{n} H(y_i) - H(y_1, \ldots, y_n)$$ + +**ICA 目标(互信息版本):** 最小化 $I(w_1^\top x, \ldots, w_n^\top x)$(最大化独立性)。 + +**等价性:** 在正交约束下,最小化互信息等价于最大化负熵之和。 + +--- + +## §3 FastICA 算法 + +### 3.1 算法概述 + +FastICA(Hyvärinen & Oja, 1997)是最广泛使用的 ICA 算法,基于**不动点迭代**最大化非高斯性。 + +**核心思想:** 对于单个成分,寻找 $w$ 使 $w^\top x$ 最非高斯(最大化负熵近似)。 + +### 3.2 预处理:白化(Whitening) + +**步骤 1:中心化** + +$$\tilde{x} = x - \mathbb{E}[x]$$ + +**步骤 2:白化(Sphering)** + +计算协方差矩阵 $C = \mathbb{E}[\tilde{x}\tilde{x}^\top]$,特征分解 $C = E\Lambda E^\top$,白化变换: + +$$\tilde{x} = \Lambda^{-1/2} E^\top x$$ + +白化后:$\mathbb{E}[\tilde{x}\tilde{x}^\top] = I_n$(单位协方差)。 + +**白化的作用:** 将混合矩阵 $A$ 约束为**正交矩阵**,将 $n^2$ 个自由度减少到 $n(n-1)/2$ 个(正交群的维数)。 + +$$\tilde{x} = \Lambda^{-1/2} E^\top As = \underbrace{\Lambda^{-1/2} E^\top A}_{\tilde{A}} s, \quad \tilde{A}\tilde{A}^\top = I_n$$ + +### 3.3 FastICA 的不动点迭代 + +**目标:** 最大化 $J(w^\top \tilde{x}) \approx [E[G(w^\top \tilde{x})] - E[G(\nu)]]^2$,约束 $\|w\| = 1$。 + +**KKT 条件(拉格朗日乘子法):** + +$$\mathbb{E}[\tilde{x}\, g(w^\top \tilde{x})] - \beta w = 0$$ + +其中 $g = G'$,$\beta = \mathbb{E}[w^\top \tilde{x}\, g(w^\top \tilde{x})]$。 + +**不动点迭代(Newton 法):** + +$$\boxed{w^+ = \mathbb{E}[\tilde{x}\, g(w^\top \tilde{x})] - \mathbb{E}[g'(w^\top \tilde{x})]\, w}$$ + +$$w^+ \leftarrow \frac{w^+}{\|w^+\|}$$ + +**收敛性:** 在不动点附近具有**三次收敛速度**(Newton 法的特性)。 + +### 3.4 FastICA 的完整算法 + +``` +算法:FastICA(提取单个成分) + +输入:白化后的数据 X̃ ∈ ℝ^{n×T},对比函数 G +输出:分离向量 w + +1. 随机初始化 w(单位向量) +2. 重复直到收敛: + a. w⁺ = (1/T) Σₜ x̃ₜ g(wᵀx̃ₜ) - (1/T) Σₜ g'(wᵀx̃ₜ) · w + b. w ← w⁺ / ‖w⁺‖ +3. 返回 w +``` + +**提取多个成分(Deflation 策略):** + +``` +算法:FastICA(提取所有 n 个成分) + +对 i = 1, ..., n: + 1. 运行单成分 FastICA 得到 wᵢ + 2. 正交化(Gram-Schmidt): + wᵢ ← wᵢ - Σⱼ<ᵢ (wᵢᵀwⱼ) wⱼ + 3. 归一化:wᵢ ← wᵢ / ‖wᵢ‖ +``` + +**对称正交化(并行策略):** + +$$W \leftarrow (WW^\top)^{-1/2} W$$ + +### 3.5 FastICA 的收敛分析 + +**定理 3.1(FastICA 收敛性)** + +设 $w^*$ 是目标函数的局部极大值点,则 FastICA 迭代在 $w^*$ 附近具有**三次收敛速度**: + +$$\|w^{(k+1)} - w^*\| = O(\|w^{(k)} - w^*\|^3)$$ + +**证明思路:** + +设 $w = w^* + \epsilon$($\epsilon$ 小),展开迭代公式到二阶项: + +$$w^+ = w^* + O(\epsilon^2)$$ + +(一阶项消失,因为 $w^*$ 是不动点。) + +**实践含义:** FastICA 通常在 10-50 次迭代内收敛,远快于梯度下降(线性收敛)。 + +--- + +## §4 JADE 算法 + +### 4.1 JADE 的核心思想 + +JADE(Joint Approximate Diagonalization of Eigenmatrices,Cardoso & Souloumiac, 1993)基于**四阶累积量张量**的联合对角化。 + +**核心思想:** 独立成分的四阶累积量张量在独立成分基下是**对角的**,通过联合对角化找到这个基。 + +### 4.2 四阶累积量张量 + +**定义 4.1(四阶累积量)** + +对于零均值、单位方差的随机向量 $y \in \mathbb{R}^n$,四阶累积量张量 $\mathcal{Q} \in \mathbb{R}^{n \times n \times n \times n}$ 的元素为: + +$$\mathcal{Q}_{ijkl} = \text{cum}(y_i, y_j, y_k, y_l) = \mathbb{E}[y_i y_j y_k y_l] - \mathbb{E}[y_i y_j]\mathbb{E}[y_k y_l] - \mathbb{E}[y_i y_k]\mathbb{E}[y_j y_l] - \mathbb{E}[y_i y_l]\mathbb{E}[y_j y_k]$$ + +**独立成分的累积量性质:** + +若 $y_1, \ldots, y_n$ 相互独立,则: + +$$\mathcal{Q}_{ijkl} = \begin{cases} \kappa_4(y_i) & \text{若 } i = j = k = l \\ 0 & \text{否则} \end{cases}$$ + +其中 $\kappa_4(y_i) = \mathbb{E}[y_i^4] - 3$(峰度)。 + +**关键性质:** 独立成分的四阶累积量张量是**超对角的**(只有对角元素非零)。 + +### 4.3 累积量矩阵(Cumulant Matrices) + +**定义 4.2(累积量矩阵)** + +对于任意矩阵 $M \in \mathbb{R}^{n \times n}$,定义**累积量矩阵**: + +$$[Q_M]_{ij} = \sum_{k,l} \mathcal{Q}_{ijkl} M_{kl}$$ + +**性质:** 若 $y = Ws$($W$ 正交,$s$ 独立),则: + +$$Q_M = W \cdot \text{diag}(\kappa_4(s_1) [W^\top M W]_{11}, \ldots, \kappa_4(s_n) [W^\top M W]_{nn}) \cdot W^\top$$ + +即 $Q_M$ 在独立成分基 $W$ 下是**对角的**(当 $M$ 是对角矩阵时)。 + +### 4.4 JADE 的联合对角化 + +**目标:** 找到正交矩阵 $W$,使得一组累积量矩阵 $\{Q_{M_k}\}$ 同时近似对角化: + +$$\min_{W \in O(n)} \sum_k \text{off}(W^\top Q_{M_k} W)$$ + +其中 $\text{off}(A) = \sum_{i \neq j} A_{ij}^2$(非对角元素的平方和)。 + +**JADE 算法步骤:** + +``` +算法:JADE + +输入:白化后的数据 X̃ ∈ ℝ^{n×T} +输出:分离矩阵 W + +1. 估计四阶累积量张量 Q̂ +2. 构造累积量矩阵集合 {Q_{Mₖ}}(通常取 n² 个矩阵) +3. 联合对角化: + W = argmin_{W ∈ O(n)} Σₖ off(Wᵀ Q_{Mₖ} W) + (使用 Jacobi 旋转迭代) +4. 返回 W +``` + +### 4.5 Jacobi 旋转迭代 + +**单步 Jacobi 旋转:** 对每对 $(i,j)$,找到旋转角 $\theta$ 使得: + +$$\min_\theta \sum_k \text{off}(G_{ij}(\theta)^\top Q_{M_k} G_{ij}(\theta))$$ + +其中 $G_{ij}(\theta)$ 是 $(i,j)$ 平面的旋转矩阵。 + +**解析解:** 旋转角 $\theta$ 满足: + +$$\tan(4\theta) = \frac{4\sum_k [Q_{M_k}]_{ij}([Q_{M_k}]_{ii} - [Q_{M_k}]_{jj})}{2\sum_k ([Q_{M_k}]_{ii} - [Q_{M_k}]_{jj})^2 - 4\sum_k [Q_{M_k}]_{ij}^2}$$ + +**收敛性:** Jacobi 迭代在正规矩阵情况下**二次收敛**。 + +--- + +## §5 FastICA vs JADE:算法对比 + +### 5.1 核心对比表 + +| 维度 | FastICA | JADE | +|------|---------|------| +| **统计量** | 负熵(二阶近似) | 四阶累积量张量 | +| **优化方法** | 不动点迭代(Newton) | 联合对角化(Jacobi) | +| **收敛速度** | 三次(单成分) | 二次(联合) | +| **计算复杂度** | $O(n^2 T)$ 每步 | $O(n^4 T + n^6)$ | +| **内存需求** | $O(nT)$ | $O(n^4)$(累积量张量) | +| **对异常值** | 中等鲁棒(取决于 $G$) | 敏感(四阶矩) | +| **适用维度** | 高维($n \leq 10^4$) | 低维($n \leq 100$) | +| **并行性** | 支持(对称正交化) | 顺序(Jacobi 旋转) | + +### 5.2 对比函数 $G$ 的选择(FastICA) + +| 对比函数 | 适用信号 | 鲁棒性 | +|---------|---------|--------| +| $G(u) = \log\cosh(u)$ | 通用 | 高 | +| $G(u) = -e^{-u^2/2}$ | 超高斯(语音、图像) | 中 | +| $G(u) = u^4/4$ | 亚高斯(均匀分布) | 低(对异常值敏感) | + +### 5.3 实际性能对比 + +**语音分离($n = 10$,$T = 10000$):** + +| 算法 | 分离误差(SIR) | 运行时间 | +|------|--------------|---------| +| FastICA($\log\cosh$) | 25.3 dB | 0.12 s | +| FastICA($u^3$) | 22.1 dB | 0.08 s | +| JADE | 26.8 dB | 1.43 s | +| Infomax | 24.7 dB | 0.89 s | + +--- + +## §6 ICA 的可识别性理论 + +### 6.1 Darmois-Skitovich 定理 + +**定理 6.1(Darmois-Skitovich)** + +设 $s_1, \ldots, s_n$ 相互独立,$L_1 = \sum_i a_i s_i$,$L_2 = \sum_i b_i s_i$。 + +若 $L_1$ 和 $L_2$ 独立,则对所有 $a_i b_i \neq 0$ 的 $s_i$ 都是高斯分布。 + +**推论:** 若源信号中至多一个是高斯的,则 ICA 可以恢复(至多到排列和缩放)。 + +### 6.2 ICA 的可识别性等价类 + +**定理 6.2(ICA 可识别性)** + +设 $x = As$,$s$ 的各分量独立且至多一个是高斯的。若 $\hat{W}$ 是 ICA 的解,则: + +$$\hat{W} = PDA^{-1}$$ + +其中 $P$ 是置换矩阵,$D$ 是对角矩阵(缩放)。 + +**证明思路:** + +1. 白化后,混合矩阵约束为正交矩阵 $\tilde{A}$ +2. 若 $\hat{W}\tilde{A}$ 不是置换矩阵,则存在某行 $\hat{w}_i^\top \tilde{A}$ 有多个非零分量 +3. 由 Darmois-Skitovich,$\hat{w}_i^\top x$ 是多个独立非高斯变量的混合,比任何单个源更接近高斯 +4. 这与最大化非高斯性矛盾 + +### 6.3 高斯分布的特殊性 + +**命题 6.3(高斯分布的不可识别性)** + +若所有源信号 $s_i \sim \mathcal{N}(0,1)$,则对任意正交矩阵 $Q$: + +$$Wx = WAs \overset{d}{=} WAQ^{-1}(Qs) = (WAQ^{-1})s'$$ + +其中 $s' = Qs \sim \mathcal{N}(0, I_n)$。因此 $W$ 和 $WQ^{-1}$ 产生相同的分布,ICA 无法区分。 + +**数学本质:** 高斯分布的特征函数 $e^{-t^2/2}$ 在正交变换下不变,导致所有旋转方向等价。 + +--- + +## §7 ICA 与 LeJEPA 的深度对比 + +### 7.1 高斯分布角色的完全颠倒 + +这是本专题最核心的洞见: + +| 维度 | 线性 ICA | LeJEPA | +|------|---------|--------| +| **问题设置** | $x = As$,从 $x$ 恢复 $s$ | $x = g(z)$,从 $x$ 恢复 $z$ | +| **混合类型** | 线性混合 $A$ | 非线性混合 $g$ | +| **时间结构** | 无(i.i.d. 样本) | OU 过程(时间相关) | +| **高斯分布** | ❌ **失败**(旋转不可区分) | ✅ **成功**(唯一可识别分布) | +| **非高斯分布** | ✅ **成功**(利用高阶统计量) | ❌ **失败**(定理 2) | +| **可识别性类** | 置换 + 缩放等价 | 正交等价 | +| **核心工具** | 峰度 / 负熵 / 累积量 | Hermite 谱分解 + Mehler 公式 | + +### 7.2 为什么高斯分布在 LeJEPA 中成功? + +**关键机制:Mehler 公式** + +在高斯世界中,OU 过程的转移算子在 Hermite 多项式基下具有解析形式: + +$$\mathbb{E}[He_\alpha(z') He_\beta(z)] = \delta_{\alpha\beta} \rho^{|\alpha|} |\alpha|!$$ + +这导致: +- 线性成分($d=1$)的相关性为 $\rho^1 = \rho$ +- 非线性成分($d \geq 2$)的相关性为 $\rho^d < \rho$ + +**OU 过程对非线性成分的"惩罚"** 使得线性映射是唯一最优解。 + +**为什么非高斯分布失败?** + +对于非高斯分布,Mehler 公式不成立,OU 过程的谱分解不再给出线性最优解。具体地,第一特征函数不再是仿射函数(见[专题 IV](04_sturm_liouville_uniqueness.md)),导致最优编码器不是线性的。 + +### 7.3 可识别性等价类的对比 + +| 方法 | 等价类 | 自由度 | 几何意义 | +|------|--------|--------|---------| +| **ICA** | 置换 + 缩放 $PD$ | $n! \cdot 2^n$ 个离散解 | 坐标轴对齐 | +| **LeJEPA** | 正交变换 $O(n)$ | $n(n-1)/2$ 维连续群 | 旋转不变 | +| **完全可识别** | 恒等变换 $I$ | 0 | 精确恢复 | + +**LeJEPA 的等价类更大($O(n)$ 包含 $PD$ 的子集),但对规划任务已经足够**(见[专题 VI](06_planning_equivalence.md))。 + +### 7.4 统计工具的对比 + +| 工具 | ICA | LeJEPA | +|------|-----|--------| +| **核心统计量** | 四阶累积量(峰度) | 二阶相关性(OU 相关) | +| **利用的信息** | 高阶矩(非高斯性) | 时间结构(OU 衰减) | +| **正则化** | 无(或白化) | SIGReg(高斯约束) | +| **优化目标** | 最大化非高斯性 | 最小化对齐损失 | + +--- + +## §8 ICA 的局限性与扩展 + +### 8.1 线性 ICA 的根本局限 + +| 局限 | 说明 | 影响 | +|------|------|------| +| **线性混合假设** | 要求 $x = As$(线性) | 无法处理非线性混合(如图像、视频) | +| **高斯失败** | 高斯源不可识别 | 限制了适用场景 | +| **维度匹配** | 要求源数 = 传感器数 | 欠定/过定情况需特殊处理 | +| **顺序不确定性** | 只能恢复到置换等价 | 需要后处理确定成分顺序 | +| **样本复杂度** | 需要大量样本估计高阶矩 | 小样本时不稳定 | + +### 8.2 非线性 ICA 的挑战 + +**Hyvärinen & Pajunen (1999) 的不可能定理:** + +> 在没有额外约束的情况下,非线性 ICA 是**不可识别的**——存在无穷多个等价解。 + +**直觉:** 非线性混合 $x = g(s)$ 的自由度太大,仅靠独立性约束无法唯一确定 $g^{-1}$。 + +**解决方案(时间结构):** + +| 方法 | 额外约束 | 可识别性 | +|------|---------|---------| +| **SFA**(慢特征分析) | 时间慢变性 | 置换等价(Sprekeler 2014) | +| **LeJEPA** | OU 过程 + 高斯分布 | 正交等价(本文定理 1) | +| **iVAE** | 辅助变量 | 置换等价(Khemakhem 2020) | +| **TCL** | 时间对比学习 | 置换等价(Hyvärinen 2016) | + +### 8.3 SFA 与 LeJEPA 的对比 + +**慢特征分析(SFA,Wiskott & Sejnowski 2002):** + +$$\min_h \mathbb{E}\left[\left\|\frac{d}{dt}h(x(t))\right\|^2\right] \quad \text{s.t.} \quad \mathbb{E}[h_i^2] = 1, \; \mathbb{E}[h_i h_j] = 0$$ + +| 维度 | SFA | LeJEPA | +|------|-----|--------| +| **时间结构** | 慢变性(最小化时间导数) | OU 相关性(最大化正样本对相似度) | +| **可识别性类** | 置换等价 | 正交等价 | +| **潜变量分布** | 任意独立 | 高斯(或 i.i.d.) | +| **提取方式** | 顺序(贪心,按慢变性排序) | 同时(所有成分并行) | +| **近似界** | 无 | $D + (\varepsilon + D)^2$ | +| **可扩展性** | xSFA(脆弱,$\leq 6$ 个潜变量) | LeJEPA(可扩展到 $N = 1024$) | + +--- + +## §9 ICA 的实现示例 + +### 9.1 FastICA 的 Python 实现(核心逻辑) + +```python +import numpy as np + +def fastica_single(X_white, g='logcosh', max_iter=200, tol=1e-4): + """ + 提取单个独立成分。 + X_white: (n, T) 白化后的数据 + 返回: w (n,) 分离向量 + """ + n, T = X_white.shape + + if g == 'logcosh': + g_fn = lambda u: np.tanh(u) + dg_fn = lambda u: 1 - np.tanh(u)**2 + elif g == 'exp': + g_fn = lambda u: u * np.exp(-u**2 / 2) + dg_fn = lambda u: (1 - u**2) * np.exp(-u**2 / 2) + elif g == 'cube': + g_fn = lambda u: u**3 + dg_fn = lambda u: 3 * u**2 + + # 随机初始化 + w = np.random.randn(n) + w /= np.linalg.norm(w) + + for _ in range(max_iter): + proj = w @ X_white # (T,) + w_new = (X_white * g_fn(proj)).mean(axis=1) \ + - dg_fn(proj).mean() * w # Newton 步 + w_new /= np.linalg.norm(w_new) + if abs(abs(w_new @ w) - 1) < tol: + break + w = w_new + + return w_new + + +def fastica(X, n_components=None, g='logcosh'): + """完整 FastICA(对称正交化版本)。""" + n, T = X.shape + if n_components is None: + n_components = n + + # 1. 中心化 + X = X - X.mean(axis=1, keepdims=True) + + # 2. 白化 + C = X @ X.T / T + eigvals, eigvecs = np.linalg.eigh(C) + idx = np.argsort(eigvals)[::-1][:n_components] + eigvals, eigvecs = eigvals[idx], eigvecs[:, idx] + W_white = np.diag(eigvals**(-0.5)) @ eigvecs.T + X_white = W_white @ X # (n_components, T) + + # 3. 随机正交初始化 + W, _ = np.linalg.qr(np.random.randn(n_components, n_components)) + + if g == 'logcosh': + g_fn = lambda u: np.tanh(u) + dg_fn = lambda u: 1 - np.tanh(u)**2 + else: + g_fn = lambda u: u**3 + dg_fn = lambda u: 3 * u**2 + + # 4. 对称正交化迭代 + for _ in range(200): + proj = W @ X_white # (n_components, T) + W_new = (g_fn(proj) @ X_white.T) / T \ + - dg_fn(proj).mean(axis=1, keepdims=True) * W + U, S, Vt = np.linalg.svd(W_new) + W_new = U @ Vt # 对称正交化 + if np.max(np.abs(np.abs(np.diag(W_new @ W.T)) - 1)) < 1e-6: + break + W = W_new + + return W @ X_white, W @ W_white # (成分, 混合矩阵逆) +``` + +### 9.2 与 LeJEPA 的代码对比 + +```python +# ICA(FastICA):最大化非高斯性 +# 目标:找 w 使 w^T x 最非高斯(负熵最大) +w_new = (X_white * g_fn(w @ X_white)).mean(axis=1) \ + - dg_fn(w @ X_white).mean() * w + +# LeJEPA:最小化对齐损失 + SIGReg 高斯约束 +# 目标:找 h 使正样本对相似,同时嵌入分布接近高斯 +loss = lamb * sigreg(h) + (1 - lamb) * alignment_loss(h) +``` + +**核心差异:** +- ICA 利用**高阶统计量**(非高斯性)来分离信号,不需要时间结构 +- LeJEPA 利用**时间结构**(OU 相关性)+ **高斯约束**来实现可识别性,不需要非高斯性 + +--- + +## §10 完整对比总结 + +### 10.1 方法谱系图 + +``` +盲源分离 / 表示学习 + │ + ├─ 线性混合 x = As + │ ├─ FastICA:最大化负熵(非高斯性) + │ │ └─ 可识别性:置换 + 缩放(非高斯源) + │ ├─ JADE:联合对角化四阶累积量 + │ │ └─ 可识别性:置换 + 缩放(非高斯源) + │ └─ PCA:最大化方差 + │ └─ 可识别性:正交等价(任意分布) + │ + └─ 非线性混合 x = g(z) + ├─ SFA:最小化时间导数 + │ └─ 可识别性:置换等价(任意独立分布) + ├─ iVAE:辅助变量 VAE + │ └─ 可识别性:置换等价(指数族分布) + └─ LeJEPA:OU 相关性 + SIGReg + └─ 可识别性:正交等价(高斯分布)✅ +``` + +### 10.2 高斯分布的"双重身份" + +``` +高斯分布在不同框架中的角色: + +线性 ICA(FastICA/JADE): + 高斯源 → 旋转不变 → 无法区分 A 和 AQ⁻¹ → ❌ 不可识别 + 非高斯源 → 高阶统计量有效 → ✅ 可识别(置换等价) + +LeJEPA(非线性 + OU 时间结构): + 高斯潜变量 → Mehler 公式成立 → 线性成分最优 → ✅ 可识别(正交等价) + 非高斯潜变量 → Mehler 公式不成立 → 最优编码器非线性 → ❌ 不可识别 + +核心洞见: + ICA 利用"非高斯性"来分离信号 + LeJEPA 利用"高斯性 + 时间结构"来实现可识别性 + 两者是互补的,而非竞争的 +``` + +### 10.3 核心公式速查 + +**FastICA 不动点迭代:** + +$$\boxed{w^+ = \mathbb{E}[\tilde{x}\, g(w^\top \tilde{x})] - \mathbb{E}[g'(w^\top \tilde{x})]\, w, \quad w \leftarrow w^+ / \|w^+\|}$$ + +**JADE 联合对角化目标:** + +$$\boxed{\min_{W \in O(n)} \sum_k \text{off}(W^\top Q_{M_k} W)}$$ + +**LeJEPA 训练目标(对比):** + +$$\boxed{\mathcal{L}(h) = \lambda \cdot \mathcal{L}_{\text{SIG}}(h) + (1-\lambda) \cdot \mathbb{E}[\|h(z') - h(z)\|^2]}$$ + +**ICA 可识别性等价类:** + +$$\boxed{\hat{s} = PDs \quad (P \text{ 置换}, D \text{ 对角缩放})}$$ + +**LeJEPA 可识别性等价类:** + +$$\boxed{h(z) = Qz \quad (Q \in O(n) \text{ 正交矩阵})}$$ + +--- + +## §11 核心洞见(一句话总结) + +> **线性 ICA(FastICA/JADE)通过最大化非高斯性来分离独立成分,高斯分布是其唯一失败的情况;LeJEPA 通过 OU 时间结构 + 高斯约束实现线性可识别性,高斯分布是其唯一成功的情况——两者构成了一个完美的"对偶反转",揭示了高斯分布在不同框架下截然相反的角色。** + +--- + +## ➡️ 相关专题 + +| 专题 | 内容 | 与 ICA 的关系 | +|------|------|-------------| +| [专题 I](01_hermite_polynomials.md) | Hermite 多项式 | ICA 的高阶统计量 vs Hermite 谱分解 | +| [专题 III](03_spectral_identifiability.md) | 线性可识别性(定理 1) | LeJEPA 的正交等价 vs ICA 的置换等价 | +| [专题 IV](04_sturm_liouville_uniqueness.md) | 高斯唯一性(定理 2) | 为什么高斯分布在 LeJEPA 中成功 | +| [专题 VII](07_sigreg_regularization.md) | SIGReg 正则化 | LeJEPA 的高斯约束实现 | + +--- + +## 📎 参考文献 + +| 论文 | 说明 | +|------|------| +| Hyvärinen & Oja (2000). *Independent Component Analysis: Algorithms and Applications.* Neural Networks. | FastICA 综述 | +| Cardoso & Souloumiac (1993). *Blind Beamforming for Non-Gaussian Signals.* IEE Proceedings-F. | JADE 原始论文 | +| Hyvärinen & Pajunen (1999). *Nonlinear Independent Component Analysis: Existence and Uniqueness Results.* Neural Networks. | 非线性 ICA 不可能定理 | +| Sprekeler et al. (2014). *Slow Feature Analysis: Unsupervised Learning of Invariances.* JMLR. | SFA 可识别性 | +| Klindt, LeCun & Balestriero (2026). *When Does LeJEPA Learn a World Model?* arXiv:2605.26379. | LeJEPA 可识别性理论 | \ No newline at end of file diff --git a/JEPA/math/README.md b/JEPA/math/README.md index 3ebaf9e..29947e9 100644 --- a/JEPA/math/README.md +++ b/JEPA/math/README.md @@ -19,6 +19,8 @@ | IV | [Sturm-Liouville 与高斯唯一性](04_sturm_liouville_uniqueness.md) | SL特征值理论、得分函数分析、ICA对比 | **定理 2** | ⭐⭐⭐ | 📝 待更新为严格版本 | | V | [近似可识别性界](05_approximate_identifiability.md) | 对齐间隙δ、白化误差ε、Procrustes分析 + 严格四步证明 | **定理 3** | ⭐⭐⭐ | ✅ **已重写:严格数学推导** | | VI | [正交不变性与最优规划](06_planning_equivalence.md) | O(n)-不变代价函数、转移核推前 + 规划等价严格证明| **定理 4** | ⭐⭐⭐ | ✅ **已重写:严格数学推导** | +| VII | [SIGReg 正则化——切片特征函数高斯约束](07_sigreg_regularization.md) | 特征函数匹配、Cramér-Wold定理、切片技巧、代码逐行解析 | 定理1前提实现 | ⭐⭐⭐ | ✅ **新增:完整数学+代码讲解** | +| VIII | [线性 ICA——FastICA 与 JADE 算法深度分析](08_linear_ica_fastica_jade.md) | 盲源分离、峰度/负熵/累积量、不动点迭代、联合对角化、ICA vs LeJEPA 对偶反转 | 定理2对比背景 | ⭐⭐⭐ | ✅ **新增:算法+理论+对比** | --- diff --git a/project_analysis.md b/project_analysis.md index 260f984..b3fed8e 100644 --- a/project_analysis.md +++ b/project_analysis.md @@ -69,3 +69,46 @@ iPhone LiDAR + Apple RoomPlan API做消费级室内3D重建。涵盖开源项目 - Camera、RoomPlan是方案设计,不是实际采集管线 简单说:**项目设计完成度极高,但工程实现基本从零起步。** PRISM是真正的核心引擎,CrowdRoom和HotelScene是两个应用场景。 + +--- + +## 📝 工作记录(Session Log) + +### 2026-06-05 — JEPA/math 专题扩展 + +**完成内容:** + +#### 专题 VII:SIGReg 正则化([`JEPA/math/07_sigreg_regularization.md`](JEPA/math/07_sigreg_regularization.md),760 行) + +SIGReg(Sketched Isotropic Gaussian Regularization)是 LeJEPA 的核心正则化组件,用于强制编码器输出满足各向同性高斯约束 $h(z) \sim \mathcal{N}(0, I_n)$,这是定理 1(线性可识别性)的关键前提。 + +**核心知识点:** +- **特征函数匹配**:$\mathcal{L}_{\text{SIG}} = \mathbb{E}_a \int_0^{t_{\max}} |\hat{\varphi}_{h,a}(t) - e^{-t^2/2}|^2 \cdot e^{-t^2/2}\, dt$ +- **Cramér-Wold 定理**:所有方向投影为 $\mathcal{N}(0,1)$ $\iff$ 联合分布为 $\mathcal{N}(0, I_n)$ +- **切片技巧**:随机采样 256 个单位方向,将高维分布匹配降为一维问题 +- **梯形积分**:17 个频率节点,$t \in [0, 3]$,权重 $\tilde{w}_k = w_k \cdot e^{-t_k^2/2}$ +- **代码实现**:[`losses.py:SIGReg`](JEPA/lejepa-identifiability/experiments/lejepa_id/losses.py:8) 逐行解析,张量形状追踪 `(V,B,N) → scalar` +- **vs VICReg**:SIGReg 约束全分布(所有阶矩),VICReg 只约束二阶矩(协方差) +- **超参数**:`knots=17, n_slices=256, t_max=3.0, lamb=1e-3` + +#### 专题 VIII:线性 ICA——FastICA 与 JADE([`JEPA/math/08_linear_ica_fastica_jade.md`](JEPA/math/08_linear_ica_fastica_jade.md),701 行) + +线性 ICA 是 LeJEPA 可识别性理论的重要对比背景,两者构成"对偶反转"关系。 + +**核心知识点:** +- **盲源分离模型**:$x = As$,目标恢复 $W = A^{-1}$(至置换+缩放等价类) +- **非高斯性度量**:峰度 $\text{kurt}(y) = \mathbb{E}[y^4] - 3$、负熵 $J(y) = H(y_\text{Gauss}) - H(y)$、互信息 +- **FastICA 不动点迭代**:$w^+ = \mathbb{E}[\tilde{x}\,g(w^\top\tilde{x})] - \mathbb{E}[g'(w^\top\tilde{x})]\,w$,三次收敛 +- **JADE 联合对角化**:四阶累积量张量 $\mathcal{Q}_{ijkl}$,Jacobi 旋转,二次收敛 +- **Darmois-Skitovich 定理**:至多一个高斯源时 ICA 可识别(置换+缩放等价) +- **对偶反转**:高斯分布在 ICA 中失败(旋转不变性),在 LeJEPA 中成功(Mehler 公式) +- **方法谱系**:FastICA/JADE(线性)→ SFA/iVAE/TCL/LeJEPA(非线性,各有额外约束) + +**关键对比表:** + +| 框架 | 高斯分布 | 可识别性类 | 核心工具 | +|------|---------|-----------|---------| +| FastICA/JADE | ❌ 失败 | 置换+缩放 | 高阶累积量 | +| LeJEPA | ✅ 成功 | 正交等价 | Mehler 公式 | + +**README 更新:** [`JEPA/math/README.md`](JEPA/math/README.md) 已加入专题 VII、VIII 条目。