3373 words
17 minutes
Fourier and Wavelets for Deep Learning
首次发布: 2025-12-08
... 次访问

1. 为什么需要小波:从傅里叶的局限开始#

fL2(R)f\in L^2(\mathbb{R})。傅里叶变换(在 L2L^2 意义下)把信号表示为全局正弦基的叠加:

f^(ω)=f(t)eiωtdt.\hat f(\omega) = \int_{-\infty}^{\infty} f(t) e^{-i\omega t}\,dt.

它非常适合回答“有哪些频率成分”,但它天然是全局积分

  • 如果 ff 在某个时刻出现瞬态/突变(非平稳),f^\hat f 仍是全局混合的;
  • “频率在哪里发生”这个问题,傅里叶域本身不回答。

短时傅里叶(STFT)通过窗函数 g(t)g(t) 提供局部化:

STFTgf(τ,ω)=f(t)g(tτ)eiωtdt.\mathrm{STFT}_g f(\tau,\omega)=\int f(t)\,\overline{g(t-\tau)}\,e^{-i\omega t}\,dt.

但 STFT 的窗宽是固定的:同一把尺子同时量低频与高频,总会不合适。

小波的核心动机是:让“窗”随频率缩放。高频用短窗(好定位),低频用长窗(好分辨)。这正是多分辨率(multi-resolution)的来源。

2. 连续小波变换(CWT):严格的数学定义#

2.1 母小波、伸缩与平移#

选取一个母小波(mother wavelet)ψL2(R)\psi\in L^2(\mathbb{R})。对尺度 aR{0}a\in\mathbb{R}\setminus\{0\} 和位置 bRb\in\mathbb{R},定义一族函数:

ψa,b(t)=1aψ(tba).\psi_{a,b}(t)=\frac{1}{\sqrt{|a|}}\,\psi\left(\frac{t-b}{a}\right).

其中 1a\frac{1}{\sqrt{|a|}} 保证 ψa,b2=ψ2\|\psi_{a,b}\|_2=\|\psi\|_2(能量归一)。

2.2 CWT 的定义(内积/相关)#

连续小波变换定义为

Wψf(a,b)=f,ψa,b=f(t)ψa,b(t)dt.\mathcal{W}_\psi f(a,b) = \langle f,\psi_{a,b}\rangle = \int_{-\infty}^{\infty} f(t)\,\overline{\psi_{a,b}(t)}\,dt.

可以把 Wψf(a,b)\mathcal{W}_\psi f(a,b) 理解为:

  • 在位置 bb 附近,信号与“尺度为 aa 的模板”ψa,b\psi_{a,b} 的相似度;
  • 相似度越大,说明在该位置确实存在该尺度的结构。

2.3 可容许性(admissibility)与可逆性#

要让 CWT 可逆,需要母小波满足可容许性条件:

Cψ=0ψ^(ω)2ωdω<.C_\psi = \int_0^{\infty} \frac{|\hat\psi(\omega)|^2}{\omega}\,d\omega < \infty.

一个常见的充要特征是 零均值(zero mean):

ψ(t)dt=0ψ^(0)=0.\int \psi(t)\,dt = 0 \quad \Longleftrightarrow \quad \hat\psi(0)=0.

零均值意味着小波是“带通/高通”的:它对常数(直流分量)不响应。

在合适的函数空间假设下,有反演公式(给出思想即可):

f(t)=1Cψ0Wψf(a,b)ψa,b(t)dadba2.f(t) = \frac{1}{C_\psi}\int_{-\infty}^{\infty}\int_0^{\infty} \mathcal{W}_\psi f(a,b)\,\psi_{a,b}(t)\,\frac{da\,db}{a^2}.

2.4 能量与内积的观点#

CWT 是在一族缩放平移的函数上做“投影系数”。当“在小波域做损失/相似度”时,本质上就是在另一个坐标系统里度量能量与相关。

3. 小波的原理:尺度对应频率,多分辨率来自缩放#

尺度 aa 与频率大致呈反比。直觉上:

  • a|a| 越大,ψa,b\psi_{a,b} 越“宽”,更像低频模板;
  • a|a| 越小,ψa,b\psi_{a,b} 越“窄”,更像高频模板。

因此 CWT 系数 Wψf(a,b)\mathcal{W}_\psi f(a,b) 是一种“时-尺度(time-scale)”表示,也常被视为时频联合表示。

这也是小波常被用于非平稳信号:突变/边缘在小尺度(高频)会产生显著响应,同时其发生位置 bb 也被保留下来。

4. 小波的关键性质(选小波时真正关心的东西)#

不同小波家族(Haar、Daubechies、Symlets、Coiflets、双正交 CDF 等)差异主要体现在以下性质上。

4.1 零均值与带通特性#

零均值 ψ(t)dt=0\int \psi(t)dt=0 使得小波更像“差分/导数”算子:对缓慢变化的趋势不敏感,但对变化(边缘、纹理、瞬态)敏感。

4.2 消失矩(vanishing moments):为何小波适合稀疏表示#

ψ\psi 满足

tkψ(t)dt=0,k=0,1,,p1,\int t^k\psi(t)\,dt = 0,\quad k=0,1,\dots,p-1,

则称它有 pp 阶消失矩。含义是:

  • 小波对低阶多项式趋势“正交”,因此对平滑区域响应很弱;
  • 对分段光滑信号/自然图像,小波系数往往高度稀疏(大多接近 0,少数显著系数集中在边缘/纹理处)。

这就是压缩(JPEG2000)与去噪(阈值化)的数学原因之一。

4.3 正交 / 双正交:能量是否保留、重构是否稳定#

  • 正交小波:变换可看作正交矩阵(在离散有限维情形),保内积与范数;
  • 双正交小波:分析与合成使用不同基(更灵活,比如线性相位),但不再严格保内积。

4.4 紧支撑、正则性与边界效应#

  • 紧支撑决定局部性与计算量;
  • **正则性(光滑性)**影响频谱泄漏与重构质量;
  • 实际实现必须处理边界延拓(periodic / symmetric / zero-pad),这会影响是否严格正交。

5. 离散小波变换(DWT):多分辨率分析(MRA)与滤波器组#

深度学习里常用的是 DWT / FWT(fast wavelet transform),它来自 MRA。

5.1 多分辨率分析的结构#

MRA 给出一串嵌套子空间:

Vj+1VjVj1L2(R),\cdots \subset V_{j+1}\subset V_j\subset V_{j-1}\subset \cdots \subset L^2(\mathbb{R}),

并且存在细节空间 WjW_j 使得

Vj1=VjWj.V_{j-1} = V_j \oplus W_j.

直觉上:VjV_j 表示“分辨率为 2j2^{-j} 的近似”,WjW_j 表示“从更粗到更细需要补的细节”。

5.2 尺度函数与两尺度方程#

用尺度函数(scaling function)φ\varphi 生成 VjV_j,它满足两尺度关系

φ(t)=2nh[n]φ(2tn),\varphi(t) = \sqrt{2}\sum_{n} h[n]\,\varphi(2t-n),

小波函数满足

ψ(t)=2ng[n]φ(2tn).\psi(t) = \sqrt{2}\sum_{n} g[n]\,\varphi(2t-n).

这里 h[n]h[n] 是低通滤波器,g[n]g[n] 是高通滤波器。

5.3 Mallat 算法:分析/合成滤波器组#

对离散信号 x[n]x[n],一级分解通常写成

a1[k]=nh[n2k]x[n],d1[k]=ng[n2k]x[n].a_1[k] = \sum_n h[n-2k]x[n],\quad d_1[k] = \sum_n g[n-2k]x[n].

也就是:低通/高通卷积后再下采样(2\downarrow 2)。多层分解对 a1a_1 继续重复。

如果使用正交小波并选取匹配的合成滤波器,则可实现完美重构(perfect reconstruction)。

5.4 2D 图像:四个子带的意义#

对二维图像做可分离 DWT,一层得到四个子带:

  • LL:低频近似(整体结构/光照/大形状)
  • LH:水平细节(对“水平边缘/竖向变化”敏感,取决于具体的约定)
  • HL:垂直细节
  • HH:对角细节(高频纹理)

更重要的理解是:它们对应不同方向的带通滤波响应。

6. 小波的物理意义:局部带通滤波 + 局部差分#

从信号处理角度,小波系数就是:

  • 在某一尺度上,用一个“带通滤波器”去扫过信号;
  • 系数的大小表示该位置是否存在该尺度的振荡/边缘/纹理。

零均值 + 消失矩让它类似“局部差分/局部导数”。因此在图像里:

  • 边缘位置会在高频子带产生大系数;
  • 平滑区域系数接近 0。

这也是为什么小波看起来很像“多尺度的边缘检测器”。

7. 小波在特征提取中的作用#

把“系数 = 局部尺度-方向响应”这句话吃透,就能理解它在特征提取中的价值。

7.1 稀疏化与去噪:把“结构”从“噪声”里分离#

对分段光滑信号,噪声往往在高频子带里均匀铺开,而真实结构对应少量大系数。典型做法是对子带做软阈值:

ildew=sign(w)max(wλ,0).ilde w = \mathrm{sign}(w)\max(|w|-\lambda,0).

这是一种很直接的“特征提纯”。

7.2 多尺度边缘与纹理:比单尺度算子更稳定#

Sobel/Laplacian 是单尺度;小波给出一组尺度。很多视觉结构(文字笔画、纹理颗粒、轮廓)本质是多尺度的,小波系数把它们自然地分开。

7.3 可解释的频带解耦:低频=内容,高频=细节#

在生成/压缩/蒸馏里经常使用“低频对齐语义,高频对齐纹理”的说法。这里“低频/高频”不是口号,而是通过 LL vs (LH,HL,HH) 子带有了明确操作对象。

7.4 小波散射(Wavelet Scattering):把小波当作固定的特征提取前端#

如果希望在理论上更“稳”,散射网络用固定小波滤波器组 + 非线性 + 平均池化构造对平移/形变稳定的表征。它强调的是:

  • 用小波获得多尺度局部响应;
  • 用非线性把能量折叠到可用特征上;
  • 用平均聚合得到稳定性。

(这部分可以作为“把小波引入深度学习”最干净的数学入口。)

8. 小波与深度学习:在网络里到底扮演什么角色#

这里不把小波当“频域花活”,而是明确它提供的能力。

8.1 作为结构化下采样(替代 pooling/stride)#

用 DWT 替代 stride/pooling 的关键收益:

  • 不是简单丢弃信息,而是把信息分流到不同子带;
  • 网络可以选择保留/强调某些频带。

8.2 作为归纳偏置:让网络天然具备多尺度与方向选择性#

卷积当然也能学到类似滤波器,但小波提供了一个“开局就合理”的基底:

  • 低层特征更容易对齐到边缘/纹理;
  • 对小数据或强噪声场景更稳。

8.3 作为可解释的对齐/蒸馏/损失空间#

可以在每个子带上分别设计损失:

  • 对 LL 强约束(结构/语义);
  • 对 HH/LH/HL 软约束(纹理/边缘),或者反过来强调细节。

这比“在傅里叶幅度谱上做全局约束”更容易保持空间局部性。

9. 小波域 vs 空域:余弦相似度何时相等?#

余弦相似度定义为

CosSim(f,g)=f,gf2g2.\mathrm{CosSim}(f,g)=\frac{\langle f,g\rangle}{\|f\|_2\,\|g\|_2}.

如果离散小波变换可以表示为一个正交矩阵 WRn×n\mathbf{W}\in\mathbb{R}^{n\times n}(这需要:正交小波 + 全系数拼接 + 合适的边界条件,使其整体是正交变换),则

Wf,Wg=f,g,Wf2=f2,\langle \mathbf{W}f,\mathbf{W}g\rangle = \langle f,g\rangle,\quad \|\mathbf{W}f\|_2=\|f\|_2,

从而 CosSim(Wf,Wg)=CosSim(f,g)\mathrm{CosSim}(\mathbf{W}f,\mathbf{W}g)=\mathrm{CosSim}(f,g)

实践中常见导致“不相等”的原因:

  • 使用双正交小波(整体不再正交);
  • 只取部分子带(例如只拿 LL),这是投影/降维,不可能保内积;
  • 边界延拓导致严格正交性被破坏;
  • 分子带分别算相似度再加权求和:那已经是另一个度量。

10. 在 PyTorch 里怎么把 DWT 用起来#

默认输入是图像特征图 xRB×C×H×Wx\in\mathbb{R}^{B\times C\times H\times W}

10.1 一层 2D DWT 的张量形状#

最常见实现会输出四个子带,每个子带空间尺寸减半:

  • LL,LH,HL,HHRB×C×H2×W2LL, LH, HL, HH \in \mathbb{R}^{B\times C\times \frac{H}{2}\times \frac{W}{2}}

有两种常见组织方式:

  1. 返回四个张量(更清晰):return ll, lh, hl, hh

  2. 在通道维拼接(更方便接卷积):

cat(LL,LH,HL,HH)RB×(4C)×H2×W2.\mathrm{cat}(LL,LH,HL,HH)\in\mathbb{R}^{B\times (4C)\times \frac{H}{2}\times \frac{W}{2}}.

对应的逆变换(iDWT)把这些子带重构回 RB×C×H×W\mathbb{R}^{B\times C\times H\times W}

10.2 一个可跑的实现思路:分离滤波 + stride=2#

工程上可以把 2D DWT 看成“对行/列分别做 1D 分解”。对于 Haar 小波:

  • 低通 h=[12,12]h=[\tfrac{1}{\sqrt{2}},\tfrac{1}{\sqrt{2}}]
  • 高通 g=[12,12]g=[\tfrac{1}{\sqrt{2}},-\tfrac{1}{\sqrt{2}}]

一次 2D 分解等价于:先在宽度方向做低/高通并下采样,再在高度方向再做一次。

import torch
import torch.nn.functional as F

def dwt2_haar(x: torch.Tensor):
	# x: [B, C, H, W], H/W 必须是偶数(或者自己做 padding)
	B, C, H, W = x.shape
	assert H % 2 == 0 and W % 2 == 0

	# 先按宽度做 1D Haar
	x0 = x[..., 0::2]  # [B,C,H,W/2]
	x1 = x[..., 1::2]  # [B,C,H,W/2]
	lo = (x0 + x1) / (2 ** 0.5)
	hi = (x0 - x1) / (2 ** 0.5)

	# 再按高度做 1D Haar
	lo0 = lo[:, :, 0::2, :]
	lo1 = lo[:, :, 1::2, :]
	hi0 = hi[:, :, 0::2, :]
	hi1 = hi[:, :, 1::2, :]

	ll = (lo0 + lo1) / (2 ** 0.5)
	lh = (lo0 - lo1) / (2 ** 0.5)
	hl = (hi0 + hi1) / (2 ** 0.5)
	hh = (hi0 - hi1) / (2 ** 0.5)
	return ll, lh, hl, hh

def pack_subbands(ll, lh, hl, hh):
	# -> [B, 4C, H/2, W/2]
	return torch.cat([ll, lh, hl, hh], dim=1)

这段 Haar 的实现优点是:不用显式卷积核,速度快、形状直观;缺点是:只覆盖 Haar,小波家族换了就要改。

10.3 边界处理(padding)是“工程坑点”#

理论里我们常假设无限长信号或周期延拓;工程里必须选一种边界方案:

  • periodic:适合周期信号,但图像边缘可能引入接缝;
  • symmetric/reflect:视觉任务里更常见;
  • zero-pad:简单但会引入边缘伪影。

注意:边界处理会影响“整体是否正交”,进而影响在第 9 节讨论的“相似度是否严格不变”。

10.4 DWT 替代下采样时,后续网络怎么接#

常见两种接法:

  1. 保留所有子带:把 [B,4C,H/2,W/2] 送入后续卷积,让网络自己学会用哪些频带。

  2. 只保留 LL:等价于一种“更结构化的低通下采样”,但明确丢掉了高频细节(更像传统金字塔)。

经验上:如果是做分割/超分/生成,保留高频子带更有意义;如果做分类且数据噪声大,先只用 LL 有时更稳。

10.5 小波域损失/蒸馏:怎么写得可控#

假设对教师/学生特征分别做 DWT 得到子带 Sb,TbS_b, T_b,一个可控的对齐损失是

L=b{LL,LH,HL,HH}αbSbTb1.\mathcal{L}=\sum_{b\in\{LL,LH,HL,HH\}} \alpha_b\,\|S_b-T_b\|_1.

工程上建议:

  • αLL\alpha_{LL} 大、αHH\alpha_{HH} 小开始(先对齐结构,再对齐纹理);
  • 或者按任务反过来(例如去噪/细节增强)。

10.6 常见检查清单#

  • 形状:H,W 是否为偶数;多层 DWT 时是否一直满足。
  • 归一化:不同实现对滤波器系数/能量归一可能不同,导致系数幅值尺度变化。
  • 子带约定:LH/HL 的方向含义在不同库/实现里可能互换,做可视化检查最靠谱。
  • 反传:若把 DWT 当网络层,确保实现是可微的(上面的 Haar 版本天然可微)。

11. 小结:一句话抓住小波的价值#

小波不是“另一个频域”,而是一种可局部化、可多尺度、可方向分解的表示方式:

  • 数学上:它通过缩放/平移的一族函数对信号做内积投影;
  • 原理上:尺度随频率自适应,天然适配非平稳结构;
  • 性质上:零均值与消失矩带来稀疏性与“像导数一样”的敏感性;
  • 在特征提取中:它把“结构(低频)/细节(高频)/方向(子带)/尺度(层级)”变成可操作的分量。
Fourier and Wavelets for Deep Learning
https://adalovelemon.github.io/blog/en/posts/content/coursenotes/mathslab/frequency/
Author
Ada Lovelemon
Published at
2025-12-08

Comments Section