神经辐射场(Neural Radiance Fields, NeRF)代表了计算机图形学中场景表示的范式转变。通过使用神经网络对连续体积密度和颜色场进行编码,NeRF统一了几何和外观建模,同时提供了前所未有的视图合成质量。本章探讨NeRF的数学基础,将其置于我们统一体积渲染框架内,并建立与后续章节中更高级神经表示方法的联系。
完成本章后,您将能够:
传统的场景表示方法,如体素网格、点云或网格,本质上是离散的。它们在固定分辨率下采样3D空间,导致内存需求与分辨率立方成正比的问题。具体而言,对于分辨率为 $N^3$ 的体素网格,存储复杂度为 $\mathcal{O}(N^3)$,这在高分辨率下变得不可行。神经辐射场通过使用神经网络作为连续函数逼近器来解决这一限制。
考虑传统离散表示的数学形式。体素网格可表示为:
\[\rho_{\text{voxel}}(\mathbf{x}) = \sum_{i,j,k} \rho_{ijk} \cdot \mathbb{1}_{V_{ijk}}(\mathbf{x})\]其中 $\mathbb{1}{V{ijk}}$ 是体素 $(i,j,k)$ 的指示函数,$\rho_{ijk}$ 是存储的属性值。这种表示存在几个根本限制:
从信息论角度,离散表示的基本限制可以通过采样定理理解。对于带宽为 $B$ 的信号,Nyquist-Shannon定理要求采样率至少为 $2B$。在3D空间中,这转化为:
\[N_{\min} \geq (2B)^3\]其中 $N_{\min}$ 是最小体素数。这表明高频细节需要指数级增长的存储。
神经辐射场通过将场景表示为神经网络参数化的连续函数来克服这些限制:
\[F_\Theta: (\mathbf{x}, \mathbf{d}) \mapsto (\sigma, \mathbf{c})\]其中 $\mathbf{x} \in \mathbb{R}^3$ 是空间位置,$\mathbf{d} \in \mathbb{S}^2$ 是视角方向,$\sigma \in \mathbb{R}_+$ 是体积密度,$\mathbf{c} \in [0,1]^3$ 是RGB颜色,$\Theta \in \mathbb{R}^p$ 是神经网络的 $p$ 个参数。
连续表示的信息论优势:
考虑Kolmogorov复杂度 $K(S)$,即描述场景 $S$ 所需的最短程序长度。对于许多自然场景:
\[K(S_{\text{neural}}) \ll K(S_{\text{voxel}})\]这是因为神经网络可以利用场景中的规律性和对称性。例如,一个包含重复纹理的表面在体素表示中需要 $\mathcal{O}(N^2)$ 存储,但神经网络可以通过学习周期函数以 $\mathcal{O}(1)$ 复杂度表示。
这种表示与我们在第3章中建立的统一体积渲染方程自然契合:
\[L(\mathbf{r}) = \int_{t_n}^{t_f} T(t) \sigma(\mathbf{r}(t)) \mathbf{c}(\mathbf{r}(t), \mathbf{d}) dt\]其中透射率定义为:
\[T(t) = \exp\left(-\int_{t_n}^t \sigma(\mathbf{r}(s)) ds\right)\]射线参数化为 $\mathbf{r}(t) = \mathbf{o} + t\mathbf{d}$,其中 $\mathbf{o}$ 是射线原点,$\mathbf{d}$ 是单位方向向量。
这个方程的深层数学结构揭示了几个关键洞察:
指数衰减的物理意义:透射率 $T(t)$ 满足微分方程: \(\frac{dT}{dt} = -\sigma(\mathbf{r}(t)) T(t)\)
这是Beer-Lambert定律在参与介质中的表现,描述了光在传播过程中的指数衰减。
测度论解释:体积渲染积分可以理解为关于测度 $d\mu = \sigma(\mathbf{r}(t)) dt$ 的Lebesgue-Stieltjes积分: \(L(\mathbf{r}) = \int_{[t_n, t_f]} T(t) \mathbf{c}(\mathbf{r}(t), \mathbf{d}) d\mu(t)\)
这提供了处理不连续密度场(如表面)的严格框架。
算子理论视角:定义渲染算子 $\mathcal{R}$: \(\mathcal{R}[\sigma, \mathbf{c}] (\mathbf{r}) = \int_{t_n}^{t_f} \exp\left(-\int_{t_n}^t \sigma(\mathbf{r}(s)) ds\right) \sigma(\mathbf{r}(t)) \mathbf{c}(\mathbf{r}(t), \mathbf{d}) dt\)
这是一个非线性算子,其Fréchet导数为: \(D\mathcal{R}[\sigma, \mathbf{c}] [\delta\sigma, \delta\mathbf{c}] = \int_{t_n}^{t_f} T(t) \left[\delta\sigma(t) \mathbf{c}(t) + \sigma(t) \delta\mathbf{c}(t) - \sigma(t) \mathbf{c}(t) \int_{t_n}^t \delta\sigma(s) ds\right] dt\)
这对理解梯度传播至关重要。
神经网络表示提供了几个理论优势:
压缩表示:根据Kolmogorov-Arnold表示定理,任何连续函数可以表示为有限个单变量连续函数的组合。神经网络通过其层次结构自然实现这种分解。
更精确地,Kolmogorov-Arnold定理指出:对于任意连续函数 $f: [0,1]^n \rightarrow \mathbb{R}$,存在连续函数 $\phi_q$ 和 $\psi_{pq}$ 使得: \(f(x_1, ..., x_n) = \sum_{q=0}^{2n} \phi_q\left(\sum_{p=1}^n \psi_{pq}(x_p)\right)\)
神经网络的层次结构提供了这种分解的可学习实现。
隐式正则化:神经网络的参数化引入了隐式的平滑性先验,这可以通过神经切线核(NTK)理论来理解: \(K_{\text{NTK}}(\mathbf{x}, \mathbf{x}') = \lim_{m \to \infty} \frac{1}{m} \sum_{i=1}^m \frac{\partial f(\mathbf{x}; \Theta)}{\partial \Theta_i} \frac{\partial f(\mathbf{x}'; \Theta)}{\partial \Theta_i}\)
其中 $m$ 是网络宽度。这个核决定了函数空间的归纳偏置。
定理(NTK的RKHS特性):在适当的初始化下,NTK诱导的再生核希尔伯特空间(RKHS)包含所有满足某种平滑性条件的函数。具体地,对于深度 $L$ 的网络: \(\|f\|_{\mathcal{H}_{\text{NTK}}}^2 \approx \int |\hat{f}(\mathbf{k})|^2 (1 + |\mathbf{k}|^2)^L d\mathbf{k}\)
这表明深度网络隐式地施加了高阶平滑性约束。
自适应分辨率:不同于固定分辨率的离散表示,神经网络可以自适应地分配容量到场景的不同部分。信息论分析表明,对于熵为 $H$ 的场景,神经网络可以达到接近最优的压缩率 $R \approx H$。
率失真理论分析:设场景的概率分布为 $p(S)$,失真度量为 $d(S, \hat{S})$。率失真函数: \(R(D) = \inf_{p(\hat{S}|S): \mathbb{E}[d(S,\hat{S})] \leq D} I(S; \hat{S})\)
神经网络通过变分推断近似这个最优编码: \(\min_\Theta \mathbb{E}_{S \sim p(S)} [d(S, F_\Theta)] + \beta \cdot \text{Complexity}(\Theta)\)
函数空间的几何结构:神经网络参数空间诱导了场景空间的黎曼度量: \(g_{ij}(\Theta) = \mathbb{E}_{\mathbf{x}, \mathbf{d}} \left[\frac{\partial F_\Theta(\mathbf{x}, \mathbf{d})}{\partial \Theta_i} \frac{\partial F_\Theta(\mathbf{x}, \mathbf{d})}{\partial \Theta_j}\right]\)
这个Fisher信息度量提供了理解优化景观和泛化的几何框架。
在我们的统一计算机图形学框架中,NeRF占据了一个特殊位置,连接了几个重要概念:
与基于点的渲染的联系(第3章):NeRF可以视为无限密集点云的极限情况,其中每个空间点都有定义的属性。
数学上,点云表示: \(\rho_{\text{points}}(\mathbf{x}) = \sum_{i=1}^N w_i \delta(\mathbf{x} - \mathbf{x}_i)\)
NeRF提供了平滑逼近: \(\rho_{\text{NeRF}}(\mathbf{x}) = \lim_{\epsilon \to 0} \sum_{i=1}^N w_i K_\epsilon(\mathbf{x} - \mathbf{x}_i)\)
其中 $K_\epsilon$ 是宽度为 $\epsilon$ 的平滑核。
与基于图像的渲染的联系(第4章):NeRF隐式编码了光场,可以生成任意视角的图像。
光场 $L(\mathbf{x}, \mathbf{d})$ 与NeRF的关系: \(L(\mathbf{x}, \mathbf{d}) = \int_0^\infty T(t) \sigma(\mathbf{x} + t\mathbf{d}) \mathbf{c}(\mathbf{x} + t\mathbf{d}, -\mathbf{d}) dt\)
这建立了4D光场与5D辐射场之间的积分变换。
与物理渲染的联系(第5章):通过适当的修改,NeRF可以扩展到建模参与介质和次表面散射。
扩展到完整的辐射传输方程: \(\frac{d L(\mathbf{x}, \mathbf{d})}{dt} = -\sigma_t L + \sigma_s \int_{\mathbb{S}^2} p(\mathbf{d}' \rightarrow \mathbf{d}) L(\mathbf{x}, \mathbf{d}') d\mathbf{d}' + \sigma_a L_e\)
NeRF的简化假设相当于忽略散射项($\sigma_s = 0$)。
向波动光学的桥梁(第15-20章):连续表示为后续引入相位信息和波动效应提供了自然基础。
从标量场到复值场的推广: \(F_\Theta: (\mathbf{x}, \mathbf{d}, \lambda) \mapsto (A e^{i\phi}, \mathbf{c}) \in \mathbb{C} \times \mathbb{R}^3\)
这允许建模干涉、衍射等波动现象。
与逆向渲染的联系(第11-14章):NeRF的可微性使其成为逆向问题的理想表示。
逆向渲染可表述为变分问题: \(\min_\Theta \sum_{i} \|\mathcal{R}[F_\Theta] (\mathbf{r}_i) - I_i\|^2 + \mathcal{R}_{\text{reg}}(\Theta)\)
其中 $\mathcal{R}$ 是渲染算子,$I_i$ 是观测图像。
隐式表示将几何编码为水平集函数或占用场。对于NeRF,我们扩展这一概念以包含外观信息。核心思想是学习一个函数 $F_\Theta$,它隐式地编码场景的几何和外观属性。
考虑几种经典的隐式表示及其与NeRF的关系:
有符号距离函数(SDF): \(\phi: \mathbb{R}^3 \rightarrow \mathbb{R}, \quad \text{其中} \quad |\nabla \phi| = 1 \text{ a.e.}\)
表面定义为零水平集:$\mathcal{S} = {\mathbf{x} : \phi(\mathbf{x}) = 0}$
Eikonal方程约束:SDF满足偏微分方程: \(|\nabla \phi(\mathbf{x})| = 1, \quad \forall \mathbf{x} \in \mathbb{R}^3 \setminus \mathcal{S}_{\text{skeleton}}\)
其中 $\mathcal{S}_{\text{skeleton}}$ 是中轴骷髅。这保证了到表面的最短距离属性。
占用场(Occupancy Field): \(o: \mathbb{R}^3 \rightarrow [0,1], \quad o(\mathbf{x}) = \mathbb{P}[\mathbf{x} \in \mathcal{V}]\)
其中 $\mathcal{V}$ 是占用体积。
与SDF的关系:通过sigmoid函数转换: \(o(\mathbf{x}) = \text{sigmoid}(-\alpha \phi(\mathbf{x})) = \frac{1}{1 + \exp(\alpha \phi(\mathbf{x}))}\)
其中 $\alpha$ 控制过渡的锐度。
NeRF的体积密度场: \(\sigma: \mathbb{R}^3 \rightarrow \mathbb{R}_+\)
| 这可以理解为微分不透明度:$\sigma(\mathbf{x}) = -\frac{d\log T}{dt} | _{\mathbf{x}}$ |
物理解释:$\sigma(\mathbf{x})$ 表示单位长度内光子被吸收的概率密度。在微小距离 $dt$ 内: \(\mathbb{P}[\text{absorption}] = \sigma(\mathbf{x}) dt + o(dt)\)
广义隐式神经表示: \(F_\Theta: \mathcal{X} \times \mathcal{D} \rightarrow \mathcal{Y}\)
其中:
NeRF通过联合表示几何和外观扩展了这些概念: \(F_\Theta: \mathbb{R}^3 \times \mathbb{S}^2 \rightarrow \mathbb{R}_+ \times [0,1]^3\)
定理(表示能力):对于紧支撑集 $K \subset \mathbb{R}^3$ 上的任意连续密度场 $\sigma^$ 和颜色场 $\mathbf{c}^$,以及任意 $\epsilon > 0$,存在一个有限参数的神经网络 $F_\Theta$ 使得:
\[\sup_{(\mathbf{x},\mathbf{d}) \in K \times \mathbb{S}^2} \|F_\Theta(\mathbf{x},\mathbf{d}) - (\sigma^*(\mathbf{x}), \mathbf{c}^*(\mathbf{x},\mathbf{d}))\| < \epsilon\]证明要点:利用Stone-Weierstrass定理的神经网络版本。由于 $K \times \mathbb{S}^2$ 是紧致的Hausdorff空间,且神经网络形成的函数类分离点、包含常函数且在点乘下封闭,故在连续函数空间中稠密。
复杂度分析:
这种表示的优势包括:
考虑离散体素表示与连续神经表示之间的数学关系。离散体素网格可以视为:
\[\sigma_{\text{voxel}}(\mathbf{x}) = \sum_{i,j,k} \sigma_{ijk} \cdot \mathbb{1}_{V_{ijk}}(\mathbf{x})\]其中 $\mathbb{1}{V{ijk}}$ 是体素 $(i,j,k)$ 的指示函数。这种表示本质上是在函数空间中使用了阶跃基函数。
函数空间理论视角:
设 $\mathcal{F}$ 为紧支撑上的连续函数空间 $C_c(\mathbb{R}^3)$。不同的表示方法对应于 $\mathcal{F}$ 中不同的子空间:
| 样条空间:$\mathcal{F}_{\text{spline}} = {f : f \in C^k, f | {V{ijk}} \in \mathcal{P}^k}$ |
我们可以将这种表示推广到更一般的基函数展开:
\[\sigma(\mathbf{x}) = \sum_{n=1}^N c_n \psi_n(\mathbf{x})\]不同的基函数选择导致不同的表示:
| 三线性插值:$\psi_n = \prod_{i=1}^3 (1- | x_i - x_i^n | /h)_+$ - 一阶连续 |
神经网络表示可以理解为使用自适应、可学习基函数的推广:
\[\sigma_{\text{neural}}(\mathbf{x}) = g\left(\sum_{l=1}^L W_l^{(L)} \phi_{l-1}\left(\cdots \phi_1(W_1^{(1)}\mathbf{x} + \mathbf{b}_1^{(1)})\cdots\right)\right)\]其中 $g$ 是输出激活函数(如softplus),$\phi_l$ 是隐藏层激活函数。
定理(基函数等价性):具有ReLU激活的深度神经网络定义了分片线性基函数的自适应划分,其中:
证明要点:ReLU神经网络 $f(\mathbf{x}) = \max(0, W\mathbf{x} + b)$ 在超平面 ${\mathbf{x}: W_i\mathbf{x} + b_i = 0}$ 上不可微。这些超平面将 $\mathbb{R}^3$ 划分成多个凸多面体区域,每个区域内网络是仿射函数。
压缩效率分析:
这种表示通过神经网络的组合性质实现了更高效的场景编码,其压缩率可以通过率失真理论分析:
\[R(D) = \inf_{F_\Theta} \{H(\Theta) : \mathbb{E}[\|\sigma - F_\Theta(\cdot)\|^2] \leq D\}\]其中 $H(\Theta)$ 是参数的熵,$D$ 是允许的失真。
定理(神经压缩效率):对于具有Lipschitz常数 $L$ 的场景函数,神经网络表示的压缩率满足: \(R(D) \leq C \cdot \log\left(\frac{L^3 \text{Vol}(K)}{D}\right)\)
其中 $\text{Vol}(K)$ 是场景体积,$C$ 是常数。这表明神经网络可以达到近乎最优的压缩率。
标准的NeRF架构使用多层感知器(MLP)作为函数逼近器。让我们详细分析其架构设计和数学性质。
基本架构:
\(\mathbf{h}_0 = \gamma(\mathbf{x})\) \(\mathbf{h}_{l+1} = \phi(W_l \mathbf{h}_l + \mathbf{b}_l), \quad l = 0, ..., L-1\)
对于密度预测: \(\mathbf{f}_\sigma = \mathbf{h}_L\) \(\sigma = \text{softplus}(w_\sigma^T \mathbf{f}_\sigma + b_\sigma) = \log(1 + \exp(w_\sigma^T \mathbf{f}_\sigma + b_\sigma))\)
对于颜色预测: \(\mathbf{f}_c = [\mathbf{h}_L, \gamma(\mathbf{d})]\) \(\mathbf{c} = \text{sigmoid}(W_c \mathbf{f}_c + \mathbf{b}_c) = \frac{1}{1 + \exp(-W_c \mathbf{f}_c - \mathbf{b}_c)}\)
其中 $\gamma$ 是位置编码函数,$\phi$ 是ReLU激活函数:$\phi(x) = \max(0, x)$。
架构的关键设计原则:
视角无关的几何:密度 $\sigma$ 仅依赖于位置 $\mathbf{x}$,确保几何的视角一致性
数学上,这意味着: \(\frac{\partial \sigma}{\partial \mathbf{d}} = 0\)
这保证了从不同视角看到的几何是一致的。
视角相关的外观:颜色 $\mathbf{c}$ 依赖于位置和方向 $(\mathbf{x}, \mathbf{d})$,允许建模镜面反射等效果
这可以建模复杂的BRDF: \(\mathbf{c}(\mathbf{x}, \mathbf{d}) \approx \int_{\Omega} f_r(\mathbf{x}, \mathbf{d}_i \rightarrow \mathbf{d}) L_i(\mathbf{x}, \mathbf{d}_i) (\mathbf{n} \cdot \mathbf{d}_i) d\mathbf{d}_i\)
跳跃连接:在第 $l^*$ 层重新注入位置编码 \(\mathbf{h}_{l^{*}+1} = \phi(W_{l^*} [\mathbf{h}_{l^*}, \gamma(\mathbf{x})] + \mathbf{b}_{l^*})\)
这改善了梯度流并保留了高频信息。
理论分析:跳跃连接可以视为残差学习: \(F(\mathbf{x}) = F_{\text{low}}(\mathbf{x}) + F_{\text{high}}(\mathbf{x})\)
其中 $F_{\text{low}}$ 由前 $l^*$ 层学习,$F_{\text{high}}$ 由后续层学习。
网络容量分析:
对于深度 $L$、宽度 $w$ 的全连接网络,其表达能力可以通过以下度量:
参数数量:$p = \mathcal{O}(Lw^2)$
具体地: \(p = \sum_{l=0}^{L-1} (w_l \cdot w_{l+1} + w_{l+1}) \approx Lw^2 + Lw\)
线性区域数量:$N_{\text{regions}} = \mathcal{O}((w/L)^L)$
定理(Montufar et al., 2014):具有 $L$ 层、每层 $w$ 个神经元的ReLU网络最多可以表示: \(N_{\text{regions}} \leq \left(\prod_{l=1}^{L-1} \lfloor w/d \rfloor^d\right) \cdot \sum_{j=0}^d \binom{w}{j}\)
其中 $d$ 是输入维度。
Lipschitz常数:$\text{Lip}(F_\Theta) \leq \prod_{l=1}^L |W_l|_2$
这决定了函数的平滑性: \(|F_\Theta(\mathbf{x}_1) - F_\Theta(\mathbf{x}_2)| \leq \text{Lip}(F_\Theta) \cdot \|\mathbf{x}_1 - \mathbf{x}_2\|\)
VC维:$\text{VCdim} = \mathcal{O}(pL)$
这决定了泛化能力。
激活函数选择的理论依据:
Softplus用于密度:确保 $\sigma \geq 0$,且在零点处平滑 \(\text{softplus}'(x) = \text{sigmoid}(x) \in (0, 1)\) \(\text{softplus}''(x) = \text{sigmoid}(x)(1 - \text{sigmoid}(x)) \geq 0\)
这保证了密度函数的凸性。
Sigmoid用于颜色:确保 $\mathbf{c} \in [0,1]^3$,物理上对应归一化的RGB值
Sigmoid的对称性:$\text{sigmoid}(-x) = 1 - \text{sigmoid}(x)$
ReLU用于隐藏层:计算效率高,且保持了分片线性性质
ReLU的正同性:$\text{ReLU}(\alpha x) = \alpha \text{ReLU}(x), \forall \alpha \geq 0$
初始化策略:
适当的初始化对于避免梯度消失/爆炸至关重要:
Xavier/He初始化: \(W_{ij} \sim \mathcal{N}(0, \sqrt{2/n_{\text{in}}})\)
这保持了前向传播中激活值的方差稳定。
SIREN初始化(用于周期激活函数): \(W_{ij} \sim \mathcal{U}(-\sqrt{6/n_{\text{in}}}, \sqrt{6/n_{\text{in}}})\)
密度和颜色的耦合通过共享的特征表示实现:
\(\mathbf{f} = F_{\text{backbone}}(\gamma(\mathbf{x}))\) \(\sigma = F_{\text{density}}(\mathbf{f})\) \(\mathbf{c} = F_{\text{color}}(\mathbf{f}, \gamma(\mathbf{d}))\)
这种分解确保了物理合理性:
信息论解释:
从信息论角度,这种分解可以视为学习一个充分统计量: \(\mathbf{f} = T(\mathbf{x})\)
其中 $T$ 满足: \(I(\mathbf{x}; \sigma, \mathbf{c} | \mathbf{d}) = I(T(\mathbf{x}); \sigma, \mathbf{c} | \mathbf{d})\)
这意味着 $\mathbf{f}$ 包含了从位置预测密度和颜色所需的所有信息。
分离表示的优势:
参数共享:减少参数数量,提高效率 \(p_{\text{shared}} < p_{\text{separate}} = p_{\sigma} + p_{\mathbf{c}}\)
一致性约束:密度和颜色共享底层特征,保证了几何和外观的一致性
梯度传播:来自颜色预测的梯度也会影响底层特征,间接改善密度预测
理论分析:解耦学习:
| 设联合分布为 $p(\sigma, \mathbf{c} | \mathbf{x}, \mathbf{d})$,我们可以分解为: | ||
| $$p(\sigma, \mathbf{c} | \mathbf{x}, \mathbf{d}) = p(\sigma | \mathbf{x}) \cdot p(\mathbf{c} | \mathbf{x}, \mathbf{d}, \sigma)$$ |
由于密度与视角无关: \(p(\sigma | \mathbf{x}, \mathbf{d}) = p(\sigma | \mathbf{x})\)
这种因式分解指导了网络架构设计。
物理约束的编码:
能量守恒:通过限制颜色输出范围 \(\|\mathbf{c}\|_\infty \leq 1\)
空间连续性:通过网络的Lipschitz性质 \(\|\mathbf{c}(\mathbf{x}_1) - \mathbf{c}(\mathbf{x}_2)\| \leq L_c \|\mathbf{x}_1 - \mathbf{x}_2\|\)
视角一致性:对于漫反射表面 \(\mathbf{c}(\mathbf{x}, \mathbf{d}_1) \approx \mathbf{c}(\mathbf{x}, \mathbf{d}_2)\)
标准神经网络表现出强烈的频谱偏差,倾向于学习低频函数。这种现象可以从多个理论角度理解。
频谱偏差的傅里叶分析:
考虑目标函数的傅里叶展开: \(f(\mathbf{x}) = \int_{\mathbb{R}^3} \hat{f}(\mathbf{k}) e^{i\mathbf{k} \cdot \mathbf{x}} d\mathbf{k}\)
标准神经网络在训练初期主要捕获低频成分: \(f_{\text{neural}}(\mathbf{x}; t) \approx \int_{|\mathbf{k}| < k_c(t)} \hat{f}(\mathbf{k}) e^{i\mathbf{k} \cdot \mathbf{x}} d\mathbf{k}\)
其中截止频率 $k_c(t)$ 随训练时间缓慢增长。
神经切线核(NTK)视角:
在无限宽度极限下,神经网络的训练动态由NTK控制: \(\frac{\partial f(\mathbf{x}; \Theta_t)}{\partial t} = -\eta \int K(\mathbf{x}, \mathbf{x}') \nabla_f \mathcal{L}(\mathbf{x}') d\mathbf{x}'\)
其中核函数为: \(K(\mathbf{x}, \mathbf{x}') = \lim_{w \to \infty} \frac{1}{w} \sum_{i=1}^w \frac{\partial f(\mathbf{x}; \Theta)}{\partial \Theta_i} \frac{\partial f(\mathbf{x}'; \Theta)}{\partial \Theta_i}\)
对于ReLU网络,NTK具有特定的频谱特性: \(\hat{K}(\mathbf{k}, \mathbf{k}') = \mathcal{F}[K] (\mathbf{k}, \mathbf{k}') \propto \exp(-c|\mathbf{k}|^\alpha)\)
其中 $\alpha > 0$,表明高频成分被指数抑制。
学习动态的频率依赖性:
定义频率 $\mathbf{k}$ 的学习率为: \(\tau_\mathbf{k}^{-1} = \lambda_\mathbf{k} \cdot \eta\)
其中 $\lambda_\mathbf{k}$ 是NTK在频率 $\mathbf{k}$ 处的特征值。对于标准初始化: \(\lambda_\mathbf{k} \propto |\mathbf{k}|^{-\beta}, \quad \beta > 0\)
这导致高频成分的学习时间尺度: \(\tau_\mathbf{k} \propto |\mathbf{k}|^\beta\)
| 因此,学习频率 $\mathbf{k}$ 所需的迭代次数随 $ | \mathbf{k} | $ 多项式增长。 |
为了克服频谱偏差,NeRF使用位置编码将输入映射到高维空间。这种技术基于随机傅里叶特征的理论,但使用确定性的频率选择。
标准位置编码:
\[\gamma(\mathbf{x}) = \left[\mathbf{x}, \sin(2^0\pi\mathbf{x}), \cos(2^0\pi\mathbf{x}), ..., \sin(2^{L-1}\pi\mathbf{x}), \cos(2^{L-1}\pi\mathbf{x})\right]^T\]展开后,对于 $\mathbf{x} = (x, y, z)$: \(\gamma(\mathbf{x}) = [x, y, z, \sin(\pi x), \cos(\pi x), \sin(\pi y), \cos(\pi y), ..., \sin(2^{L-1}\pi z), \cos(2^{L-1}\pi z)]^T\)
输出维度:$d_{\gamma} = 3 + 6L$(原始坐标 + 每个频率级别的正弦余弦对)。
一般化的傅里叶特征:
更一般的形式使用任意频率矩阵: \(\gamma(\mathbf{x}) = \left[\sin(\mathbf{B}\mathbf{x}), \cos(\mathbf{B}\mathbf{x})\right]^T\)
其中 $\mathbf{B} \in \mathbb{R}^{m \times 3}$ 是频率矩阵。不同的 $\mathbf{B}$ 选择导致不同的编码:
与核方法的联系:
位置编码等价于在特征空间中使用线性模型: \(f(\mathbf{x}) = \mathbf{w}^T \gamma(\mathbf{x})\)
这对应于原始空间中的核函数: \(K(\mathbf{x}, \mathbf{x}') = \gamma(\mathbf{x})^T \gamma(\mathbf{x}')\)
对于傅里叶特征: \(K(\mathbf{x}, \mathbf{x}') = \sum_{j=1}^m \cos(\mathbf{b}_j^T(\mathbf{x} - \mathbf{x}'))\)
这是平稳核,其频谱由 $\mathbf{B}$ 的行向量 $\mathbf{b}_j$ 决定。
位置编码从根本上改变了神经网络的逼近性质。让我们严格分析其数学效果。
频谱扩展定理:
| 定理 6.1:设 $f: \mathbb{R}^3 \rightarrow \mathbb{R}$ 是带限函数,其傅里叶变换满足 $\text{supp}(\hat{f}) \subseteq {\mathbf{k}: | \mathbf{k} | _\infty \leq K}$。使用位置编码 $\gamma$ 且最大频率 $2^{L-1}\pi \geq K$ 的单层线性网络可以精确表示 $f$。 |
证明概要:由Nyquist-Shannon定理,$f$ 可以表示为: \(f(\mathbf{x}) = \sum_{\mathbf{n} \in \mathbb{Z}^3} f(\mathbf{n}/2K) \text{sinc}(2K\mathbf{x} - \mathbf{n})\)
使用傅里叶级数展开和位置编码的完备性,存在权重 $\mathbf{w}$ 使得: \(f(\mathbf{x}) = \mathbf{w}^T \gamma(\mathbf{x})\)
组合核分析:
位置编码诱导的核函数: \(K_\gamma(\mathbf{x}, \mathbf{x}') = \gamma(\mathbf{x})^T \gamma(\mathbf{x}')\)
对于NeRF的标准编码: \(K_\gamma(\mathbf{x}, \mathbf{x}') = \mathbf{x}^T\mathbf{x}' + \sum_{l=0}^{L-1} \sum_{i=1}^3 \cos(2^l\pi(x_i - x_i'))\)
这个核的频谱具有离散支撑: \(\hat{K}_\gamma(\mathbf{k}) = \delta(\mathbf{k}) + \sum_{l=0}^{L-1} \sum_{\epsilon \in \{-1,1\}^3} \delta(\mathbf{k} - \epsilon 2^l\pi)\)
收敛速率分析:
定理 6.2:对于Lipschitz连续函数 $f$ 和使用位置编码的神经网络 $f_\Theta$,逼近误差满足: \(\|f - f_\Theta\|_{L^2} \leq C \cdot 2^{-L} \cdot \text{Lip}(f) + \mathcal{O}(n^{-1/2})\)
其中 $n$ 是网络参数数量,$L$ 是编码的频率级别数。
这表明:
除了傅里叶编码,还有其他方案:
学习的编码: \(\gamma(\mathbf{x}) = \text{MLP}_\text{small}(\mathbf{x})\)
球谐函数编码(用于方向): \(\gamma(\mathbf{d}) = [Y_l^m(\theta, \phi)]_{l=0}^{L_\text{max}}\)
哈希编码(用于加速): \(\gamma(\mathbf{x}) = \bigoplus_{l=1}^L \text{hash}_l(\lfloor 2^l \mathbf{x} \rfloor)\)
每种编码在表达能力、计算效率和内存需求之间有不同权衡。
体积渲染方程需要评估积分:
\[C(\mathbf{r}) = \int_{t_n}^{t_f} T(t) \sigma(\mathbf{r}(t)) \mathbf{c}(\mathbf{r}(t), \mathbf{d}) dt\]实际中,我们使用数值积分:
\[\hat{C}(\mathbf{r}) = \sum_{i=1}^N T_i (1 - \exp(-\sigma_i \delta_i)) \mathbf{c}_i\]其中:
这种离散化引入了两种误差:
定理(万能逼近):对于任意连续函数 $f: K \rightarrow \mathbb{R}$($K$ 是紧集)和 $\epsilon > 0$,存在一个神经网络 $F_\Theta$ 使得:
\[\sup_{\mathbf{x} \in K} |f(\mathbf{x}) - F_\Theta(\mathbf{x})| < \epsilon\]对于NeRF,这意味着存在网络参数 $\Theta^*$ 使得:
\[\sup_{\mathbf{x}, \mathbf{d}} |(\sigma^*(\mathbf{x}), \mathbf{c}^*(\mathbf{x}, \mathbf{d})) - F_{\Theta^*}(\mathbf{x}, \mathbf{d})| < \epsilon\]然而,找到这样的 $\Theta^*$ 是非凸优化问题。
采样点的选择显著影响渲染质量。考虑误差界:
\[|C(\mathbf{r}) - \hat{C}(\mathbf{r})| \leq \frac{(t_f - t_n)^2}{8N} \max_{t \in [t_n, t_f]} \left|\frac{d^2}{dt^2}[T(t)\sigma(t)\mathbf{c}(t)]\right|\]这表明:
NeRF使用两阶段采样策略:
粗采样: \(t_i^c \sim \text{Uniform}[t_n, t_f], \quad i = 1, ..., N_c\)
细采样:基于粗采样的权重分布 \(w_i = T_i(1 - \exp(-\sigma_i \delta_i))\) \(\hat{w}_i = w_i / \sum_j w_j\) \(t^f \sim \sum_{i=1}^{N_c} \hat{w}_i \cdot \text{Uniform}[t_i^c, t_{i+1}^c]\)
这种重要性采样减少了方差:
\[\text{Var}[\hat{C}_{\text{hierarchical}}] \leq \text{Var}[\hat{C}_{\text{uniform}}]\]NeRF的基本损失函数是渲染图像与真实图像之间的光度误差:
\[\mathcal{L}_{\text{photo}} = \sum_{\mathbf{r} \in \mathcal{R}} \|\hat{C}(\mathbf{r}) - C_{\text{gt}}(\mathbf{r})\|_2^2\]其中 $\mathcal{R}$ 是训练射线集合。这可以扩展为:
\[\mathcal{L}_{\text{total}} = \mathcal{L}_{\text{photo}} + \lambda_{\text{reg}} \mathcal{L}_{\text{reg}}\]常见的正则化项包括:
考虑单个采样点的梯度:
\[\frac{\partial \mathcal{L}}{\partial \sigma_i} = 2(\hat{C} - C_{\text{gt}})^T \frac{\partial \hat{C}}{\partial \sigma_i}\]其中: \(\frac{\partial \hat{C}}{\partial \sigma_i} = T_i \delta_i \mathbf{c}_i - \sum_{j>i} \frac{\partial \hat{C}}{\partial T_j} \delta_i\)
这显示了梯度通过透射率的传播,创建了长程依赖关系。
梯度消失问题:当 $T_i \approx 0$(被遮挡的点),梯度 $\frac{\partial \mathcal{L}}{\partial \sigma_i} \approx 0$。这可能导致遮挡区域的学习困难。
标准选择是Adam优化器,具有以下考虑:
\(\mathbf{m}_t = \beta_1 \mathbf{m}_{t-1} + (1-\beta_1) \mathbf{g}_t\) \(\mathbf{v}_t = \beta_2 \mathbf{v}_{t-1} + (1-\beta_2) \mathbf{g}_t^2\) \(\Theta_{t+1} = \Theta_t - \alpha \frac{\mathbf{m}_t}{\sqrt{\mathbf{v}_t} + \epsilon}\)
典型超参数:
在理想条件下,NeRF优化可以视为随机梯度下降。收敛速率取决于:
在凸情况下,收敛速率为: \(\mathbb{E}[\mathcal{L}(\Theta_T)] - \mathcal{L}^* \leq \mathcal{O}\left(\frac{L}{\sqrt{T}} + \frac{\sigma^2}{T}\right)\)
然而,NeRF优化是高度非凸的,实际收敛依赖于:
NeRF容易过拟合训练视图,特别是在稀疏视图设置下。考虑经验风险最小化:
\[\hat{\Theta} = \arg\min_\Theta \frac{1}{|\mathcal{D}|} \sum_{(\mathbf{r}, C) \in \mathcal{D}} \|\hat{C}(\mathbf{r}; \Theta) - C\|^2\]泛化误差界可以通过Rademacher复杂度分析:
\[\mathbb{E}[\mathcal{L}_{\text{test}}] \leq \mathcal{L}_{\text{train}} + 2\mathcal{R}_n(\mathcal{F}) + \mathcal{O}\left(\sqrt{\frac{\log(1/\delta)}{n}}\right)\]其中 $\mathcal{R}_n(\mathcal{F})$ 是函数类 $\mathcal{F}$ 的Rademacher复杂度。
几何正则化鼓励物理合理的密度场:
深度先验: \(\mathcal{L}_{\text{depth}} = \sum_{\mathbf{r}} |\hat{d}(\mathbf{r}) - d_{\text{sensor}}(\mathbf{r})|\) 其中 $\hat{d}(\mathbf{r}) = \sum_i t_i w_i$ 是期望深度
表面法线一致性: \(\mathcal{L}_{\text{normal}} = \sum_{\mathbf{x}} \left\|\nabla_{\mathbf{x}} \sigma(\mathbf{x}) - \mathbf{n}_{\text{gt}}(\mathbf{x})\right\|^2\)
Eikonal正则化(用于SDF变体): \(\mathcal{L}_{\text{eikonal}} = \sum_{\mathbf{x}} (|\nabla_{\mathbf{x}} f(\mathbf{x})| - 1)^2\)
外观正则化改善颜色预测:
视角一致性: \(\mathcal{L}_{\text{view}} = \sum_{\mathbf{x}, \mathbf{d}_1, \mathbf{d}_2} w(\mathbf{d}_1, \mathbf{d}_2) \|\mathbf{c}(\mathbf{x}, \mathbf{d}_1) - \mathbf{c}(\mathbf{x}, \mathbf{d}_2)\|^2\) 其中 $w(\mathbf{d}_1, \mathbf{d}_2)$ 根据材质属性加权
语义一致性: \(\mathcal{L}_{\text{semantic}} = -\sum_{\mathbf{r}, k} s_k(\mathbf{r}) \log \hat{s}_k(\mathbf{r})\) 其中 $\hat{s}_k$ 是渲染的语义标签
密度稀疏性: \(\mathcal{L}_{\text{sparse}} = \sum_{\mathbf{x}} \rho(\sigma(\mathbf{x}))\)
常用的 $\rho$ 函数:
| L1:$\rho(x) = | x | $ |
空间平滑性: \(\mathcal{L}_{\text{smooth}} = \sum_{\mathbf{x}} \|\nabla^2 \sigma(\mathbf{x})\|_F^2\)
这促进了二阶平滑性,减少了高频噪声。
信息瓶颈正则化: \(\mathcal{L}_{\text{IB}} = \beta I(Z; X) - I(Z; Y)\)
其中 $Z$ 是潜在表示,平衡压缩与保真度。
本章介绍了神经辐射场(NeRF)的数学基础,展示了如何使用神经网络表示连续的体积密度和颜色场。关键概念包括:
核心方程汇总:
练习 6.1:推导透射率的离散近似误差界。给定连续透射率 $T(t) = \exp(-\int_0^t \sigma(s)ds)$ 和离散近似 $\hat{T}i = \exp(-\sum{j=1}^{i-1} \sigma_j \delta_j)$,证明: \(|T(t_i) - \hat{T}_i| \leq T(t_i) \cdot \mathcal{O}(\max_j \delta_j^2)\)
练习 6.2:分析位置编码对神经网络表达能力的影响。证明使用 $L$ 个频率级别的位置编码可以精确表示频率最高为 $2^{L-1}\pi$ 的带限函数。
练习 6.3:推导层次采样的方差减少。设均匀采样的估计量方差为 $\text{Var}[\hat{C}_{\text{uniform}}]$,证明层次采样满足: \(\text{Var}[\hat{C}_{\text{hierarchical}}] \leq \text{Var}[\hat{C}_{\text{uniform}}]\)
练习 6.4:设计一个自适应位置编码方案,根据局部场景复杂度调整频率。推导选择最优频率的准则。
练习 6.5:分析NeRF中的模糊-锐利权衡。给定有限数量的训练视图,推导重建质量与细节保留之间的理论界限。
练习 6.6:提出一种结合物理约束的NeRF变体。推导如何将能量守恒和互易性纳入损失函数。
练习 6.7:开放性问题:如何将NeRF扩展到处理波动光学效应(如衍射和干涉)?概述所需的数学框架修改。