本章关键词:平移不变性、卷积稀疏编码 (CSC)、傅里叶域 ADMM、Sherman-Morrison 公式、卷积字典学习 (CDL)、算法展开 (Unrolling)
在第10章中,我们详细讨论了基于图像块(Patch-based)的稀疏模型。尽管 K-SVD 和 OMP 等算法在去噪和修复任务中表现出色,但它们在数学建模上存在一种尴尬的“不自然感”:
卷积稀疏编码(Convolutional Sparse Coding, CSC) 的提出,正是为了在数学上优雅地解决这些问题。CSC 不再将图像“切碎”,而是引入了卷积算子作为构建基石。
核心直觉:如果不把图像看作是“拼图”(Tiles),而是看作是“图章”(Stamps)的叠加呢?每一个图章(滤波器)可以在图像的任意位置盖下,且可以重叠。
让我们定义 CSC 的核心组件:
生成模型:图像是由 $K$ 个特征图与对应滤波器卷积后求和而成的: \(y = \sum_{k=1}^K d_k * z_k + n\) 其中 $*$ 表示二维卷积,$n$ 是噪声。
ASCII 直观图解:
Feature Map 1 (Sparse) Filter 1
+----------------------+ +---+
| . . . . 1 . . . . . | * | d |
| . . -0.5. . . . . . | +---+
+----------------------+ |
+ |
Feature Map 2 (Sparse) Filter 2 Reconstructed Image
+----------------------+ +---+ +----------------------+
| . . . . . . . . . . | * | d | = | (Edges, Textures) |
| . . 0.8 . . . . . . | +---+ +----------------------+
+----------------------+
+ ...
注意,$z_k$ 中的非零点位置指示了“哪里”出现了某种结构,而非零点的值指示了该结构的“强度”。
CSC 的标准形式是求解以下约束优化或无约束优化问题:
\[\min_{\{z_k\}} \underbrace{\frac{1}{2} \left\| \sum_{k=1}^K d_k * z_k - y \right\|_2^2}_{\text{数据保真项}} + \underbrace{\lambda \sum_{k=1}^K \| z_k \|_1}_{\text{稀疏正则项}}\]这个模型看起来很简单,但在计算上极具挑战性。
直接使用 ISTA(迭代收缩阈值算法)虽然可行,但每次迭代需要计算 $K$ 次全图卷积及其转置卷积,收敛极慢。我们需要更强大的工具:傅里叶域 ADMM。
这是本章的技术高潮。我们将展示如何将一个看似不可解的大规模卷积问题,分解为一系列极小的独立线性方程组。
引入辅助变量 ${u_k}$ 以解耦正则项与卷积数据项:
\[\min_{\{z_k, u_k\}} \frac{1}{2} \left\| \sum_{k=1}^K d_k * z_k - y \right\|_2^2 + \lambda \sum_{k=1}^K \| u_k \|_1 \quad \text{s.t. } \quad z_k = u_k, \forall k\]构建增广拉格朗日函数(Scaled Form): \(\mathcal{L}_\rho(z, u, \eta) = \frac{1}{2} \left\| \sum_k d_k * z_k - y \right\|_2^2 + \lambda \sum_k \| u_k \|_1 + \frac{\rho}{2} \sum_k \| z_k - u_k + \eta_k \|_2^2\)
ADMM 的三个标准步骤是:
其中 $u$ 步非常简单,就是大家熟悉的软阈值算子(Soft Thresholding): \(u_k = \text{prox}_{\lambda/\rho}(z_k + \eta_k) = \text{sign}(z_k+\eta_k)\max(|z_k+\eta_k| - \frac{\lambda}{\rho}, 0)\)
真正的难点在于 $z$ 步。
$z$ 步是一个二次优化问题。令偏导为 0,得到正规方程(Normal Equations): \(\sum_{j=1}^K d_j^T * \left( \sum_{k=1}^K d_k * z_k - y \right) + \rho (z_j - u_j + \eta_j) = 0, \quad \forall j=1\dots K\) 其中 $d^T$ 表示翻转后的滤波器(相关算子)。这是一个庞大的线性方程组。
利用 Parseval 定理转换到频域: 假设采用循环边界条件,卷积等价于频域乘法。设 $\hat{x}$ 为 $x$ 的二维 DFT。 \(\left( \hat{d}_j^* \odot \sum_{k=1}^K (\hat{d}_k \odot \hat{z}_k) \right) + \rho \hat{z}_j = \hat{d}_j^* \odot \hat{y} + \rho(\hat{u}_j - \hat{\eta}_j)\) 这里 $\odot$ 是逐元素乘法,${}^*$ 是复共轭。
关键洞察:频率解耦(Frequency Decoupling) 注意,上述方程对于图像中的每一个频率点 $(p, q)$ 都是独立的!我们不需要解一个 $MNK \times MNK$ 的大矩阵,而是对于每个频率点 $(p, q)$,求解一个 $K \times K$ 的小线性系统。
让我们固定某个频率 $(p, q)$,令 $\mathbf{z} \in \mathbb{C}^K$ 为该频率下所有 $K$ 个特征图的值组成的列向量,$\mathbf{d} \in \mathbb{C}^K$ 为该频率下 $K$ 个滤波器的值。 上述方程可以重写为矩阵形式: \((\mathbf{d} \mathbf{d}^H + \rho I) \mathbf{z} = \mathbf{b}\) 其中:
直接求解上述 $K \times K$ 系统需要 $O(K^3)$ 的复杂度。由于每个像素都要算一次,且 $K$ 可能较大(如 64 或 128),这依然太慢。
观察系数矩阵 $\mathbf{A} = \rho I + \mathbf{d}\mathbf{d}^H$。这正是 Sherman-Morrison 公式 的用武之地! \((\mathbf{A} + \mathbf{u}\mathbf{v}^H)^{-1} = \mathbf{A}^{-1} - \frac{\mathbf{A}^{-1}\mathbf{u}\mathbf{v}^H\mathbf{A}^{-1}}{1 + \mathbf{v}^H\mathbf{A}^{-1}\mathbf{u}}\) 在这里,$\mathbf{A}=\rho I$,$\mathbf{u}=\mathbf{d}$,$\mathbf{v}=\mathbf{d}$。代入公式: \((\rho I + \mathbf{d}\mathbf{d}^H)^{-1} = \frac{1}{\rho} I - \frac{1}{\rho^2} \frac{\mathbf{d}\mathbf{d}^H}{1 + \frac{1}{\rho}\mathbf{d}^H\mathbf{d}}\)
计算复杂度分析:
Rule-of-Thumb:在 CSC 的实现中,Sherman-Morrison 公式是区分“玩具代码”和“高效求解器”的分水岭。它使得计算量不再随滤波器数量 $K$ 立方增长,而是线性增长。
如果不知道滤波器 $d_k$,我们需要从数据中学习。这就是 卷积字典学习 (CDL)。 CDL 通常是一个双凸(Bi-convex)问题,采用交替最小化 (Alternating Minimization) 策略。
稀疏编码步 (Sparse Coding Step): 固定 $d$,求解 $z$。这就是上面讨论的 CSC 问题(使用 ADMM)。
字典更新步 (Dictionary Update Step): 固定 $z$,求解 $d$。 \(\min_{\{d_k\}} \frac{1}{2} \left\| \sum_k z_k * d_k - y \right\|_2^2 \quad \text{s.t.} \quad \|d_k\|_2 \le 1, \quad d_k \text{ has restricted support}\) 注意:这里交换了卷积顺序,$z_k * d_k$ 和 $d_k * z_k$ 是一样的,但把 $d_k$ 视为变量时, $z_k$ 就充当了“滤波器”的角色。
对于 RGB 图像,输入 $y$ 有 3 个通道。
对于视频,$y$ 是 $T \times H \times W$。
CSC 与卷积神经网络 (CNN) 有着惊人的同构性。
多层 CSC (Multi-layer CSC): Deep CSC 模型假设 $z$ 本身也是由下一层原子生成的:$z = D_2 * z_2$。这直接对应多层 CNN 结构。Papyan 等人 (2017) 证明了多层 CSC 的前向传播就是 CNN 的一次 Pass。
卷积尺寸计算: 设图像大小 $256 \times 256$,滤波器 $11 \times 11$,边界填充方式为 ‘same’。 (a) $z_k$ 的尺寸是多少? (b) 如果不使用 Padding(’valid’ 模式),$z_k$ 的尺寸是多少?这对重建图像边缘有何影响? (Hint: CSC 通常要求 $z_k$ 与 $y$ 同尺寸以便求和。’valid’ 模式会导致边缘无法重建。)
Sherman-Morrison 应用: 给定矩阵 $A = I + uv^T$,其中 $u=[1, 2]^T, v=[1, 1]^T$。 (a) 直接计算 $A^{-1}$。 (b) 使用 Sherman-Morrison 公式计算 $A^{-1}$。 (Hint: 验证两者结果一致,感受秩-1 更新的计算过程。)
计算复杂度: 假设图像总像素数为 $N$,滤波器数为 $K$。 (a) 比较空域直接卷积 $\sum d_k * z_k$ 和频域计算的复杂度。 (b) 在频域 ADMM 中,哪一步不仅与 $N$ 有关,还主要受 $K$ 影响?
边界伪影的数学根源: 在频域使用 FFT 求解 CSC 隐含了图像是周期延拓的假设。 (a) 这种假设会导致图像四个边缘出现什么具体的视觉伪影?(尤其是当图像上下边界亮度差异大时)。 (b) 提出一种基于“Masking”或“Padding”的修正方案,并分析这是否会破坏 Sherman-Morrison 的使用条件? (Hint: 引入空域 Mask 算子 $W$ 后,系统变成 $W^T \mathcal{F}^{-1} \dots$,不再是对角化的。可能需要改用 Conjugate Gradient (CG) 求解 $z$ 步。)
梯度推导与反向传播: 假设我们将 CSC 的求解过程展开为一个网络层 $z = f(y; d)$。为了进行端到端的判别式训练(例如分类),我们需要计算 $\frac{\partial z}{\partial y}$ 和 $\frac{\partial z}{\partial d}$。 请基于隐函数定理(Implicit Function Theorem)或 ADMM 的定点方程,推导 $\frac{\partial z}{\partial y}$ 的解析形式。 (Hint: 当 ADMM 收敛时,定点满足 KKT 条件。对 KKT 条件两边微分。)
多层 CSC 的退化: 如果我们简单地堆叠两层 CSC:$y = D_1 * z_1, z_1 = D_2 * z_2$。 证明:这在数学上等价于单层 CSC,其等效字典为 $D_{eff} = D_1 * D_2$。那么,为什么深度学习需要非线性激活函数? (Hint: 卷积的结合律。非线性打破了这种线性坍缩。)
edge (replicate) padding 或 tapered padding(使边缘平滑衰减到 0)来减少高频干扰。