try ai
科普
编辑
分享
反馈
  • 稀疏表示

稀疏表示

SciencePedia玻尔百科
核心要点
  • 稀疏表示将复杂信号建模为来自过完备字典中少数基本“原子”的简单线性组合。
  • 稀疏解的唯一性由字典的几何特性保证,这些特性可以通过其 spark 或互相关性 (mutual coherence) 来衡量。
  • 虽然找到绝对最稀疏的解在计算上是困难的,但可以使用凸优化方法(如基追踪,即 l1-最小化)高效地找到它。
  • 稀疏性原理是一个统一的概念,它推动了图像压缩、机器学习和量子化学等不同领域的突破。

引言

在一个数据泛濫的世界里,从海量复杂性中发现简单而有意义的模式至关重要。这正是稀疏表示的核心承诺——一个强有力的原理,它断言许多复杂信号都可以被高效地描述为少数基本构建模块的组合。但是,我们如何将这种“简单描述”的想法形式化呢?当存在多种可能性时,我们又如何找到它,甚至确定它是唯一真实的描述?本文将深入探讨解答这些问题的优雅数学框架。首先,在“原理与机制”一节中,我们将探讨其核心理论,定义稀疏性,检验保证解唯一性的 spark 和相关性 (coherence) 等条件,并介绍使其求解变得实用的算法。接着,在“应用与跨学科联系”一节中,我们将跨越图像处理、机器学习到量子化学等不同领域,见证这一概念如何为数据分析和科学发现提供统一的语言。

原理与机制

想象一下,你想描述一段复杂的音乐。你可以列出每毫秒你耳膜感受到的精确气压——这将是大量、密集的数字洪流。或者,你可以将其描述为钢琴、小提琴和大提琴音符的组合。第二种描述要紧凑得多,也更有意义。你正在将复杂的声音表示为少数简单、基本构建模块的组合。这就是​​稀疏表示​​的核心思想。

节俭的艺术:合成与分析

在信号与数据的世界里,我们用一个优美而简单的方程来形式化这个思想,即​​合成模型 (synthesis model)​​:

y=Dαy = D \alphay=Dα

在这里,yyy 是我们感兴趣的信号——一个图像块、一段音频或一个金融时间序列。矩阵 DDD 是我们的​​字典 (dictionary)​​,其列是基本的“构建模块”,我们称之为​​原子 (atoms)​​。向量 α\alphaα 是配方,即​​表示 (representation)​​。它告诉我们使用字典中的哪些原子,以及用多大的量来“合成”我们的信号 yyy。

如果 α\alphaα 中的大多数元素都为零,那么这个表示就称为​​稀疏的 (sparse)​​。这意味着我们只需要少数几个原子就能构建我们的信号。我们使用​​ℓ0\ell_0ℓ0​-“范数”​​来衡量这种稀疏性,记作 ∥α∥0\| \alpha \|_0∥α∥0​,它就是 α\alphaα 中非零元素的计数。如果一个信号可以用 kkk 个或更少的原子构建,我们称之为​​kkk-稀疏​​信号。

还有一种互补的思考方式,称为​​分析模型 (analysis model)​​。我们不再从稀疏的部分构建信号,而是设计一组“测试”,由一个分析算子 Ω\OmegaΩ 表示。当我们对信号应用这些测试,得到 Ωy\Omega yΩy 时,我们期望大部分结果为 zero。在这个模型中,如果得到的向量 Ωy\Omega yΩy 有许多零元素,那么该信号就被认为是稀疏的。这类似于体检;一个健康的人大多数测试结果会是阴性(或零),表示没有问题。Ωy\Omega yΩy 中零元素的数量有时被称为信号 yyy 的​​余稀疏度 (cosparsity)​​。

目前,让我们专注于合成模型,它为从简单部分构建复杂性提供了一个非常直观的画面。最强大的字典通常是​​过完备的 (overcomplete)​​,意味着它们包含的原子数量多于它们所表示信号的维度 (p>np > np>n)。这种丰富性给了我们灵活性,但也引入了一个深刻的问题:如果我们拥有的工具比需要的多,那么构建某物的方式是否只有一种简单的方法?

唯一性问题:一个信号,多种配方?

如果你有一个过完备字典,任何给定的信号 yyy 都可以用无穷多种方式表示。这似乎是个灾难。如果一个信号可以被描述为“一点原子1和一点原子5”,或者换一种方式,“少许原子7和些微原子22”,那么我们的“简单描述”就根本不简单了——它是有歧义的。

我们的希望在于节俭原则。我们不只是寻找任何表示;我们寻找的是最稀疏的表示。于是,关键问题就变成了:对于一个给定的信号 yyy,是否存在唯一的、最稀疏的表示?

在某些简单情况下,唯一性是有保证的。如果我们的字典是一个​​基 (basis)​​——意味着它是一个具有线性无关列的方阵 (n×nn \times nn×n)——那么每个信号都只有一个表示,毫无例外。从一开始就没有歧义。 但是基往往限制性太强。稀疏表示的真正威力来自于过完备字典所带来的自由度。

那么,我们如何应对过完备性带来的歧义呢?我们需要一种方法来刻画我们的字典,以便知道什么时候可以相信一个一旦找到的稀疏配方就是那个唯一的稀疏配方。

Spark:唯一性条件

让我们来扮演侦探。假设我们为同一个信号 yyy 找到了两种不同的 kkk-稀疏配方 α1\alpha_1α1​ 和 α2\alpha_2α2​。这意味着 y=Dα1y = D\alpha_1y=Dα1​ 和 y=Dα2y = D\alpha_2y=Dα2​,且 α1≠α2\alpha_1 \neq \alpha_2α1​=α2​。

将一个方程减去另一个,我们得到一个显著的结果:

Dα1−Dα2=0  ⟹  D(α1−α2)=0D\alpha_1 - D\alpha_2 = 0 \quad \implies \quad D(\alpha_1 - \alpha_2) = 0Dα1​−Dα2​=0⟹D(α1​−α2​)=0

让我们称差分向量为 z=α1−α2z = \alpha_1 - \alpha_2z=α1​−α2​。因为配方不同,zzz 是一个非零向量。方程 Dz=0Dz=0Dz=0 意味着 zzz 位于字典 DDD 的​​零空间 (null space)​​ 中。它表示了 DDD 的列的一种特定的线性组合,其结果为零向量。换句话说,zzz 揭示了我们字典中原子之间的一种线性相关性。

这个差分向量 zzz 能有多稀疏呢?由于 α1\alpha_1α1​ 和 α2\alpha_2α2​ 各自最多有 kkk 个非零元素,它们的差 zzz 最多可以有 2k2k2k 个非零元素。所以,我们知道如果存在一个非唯一的 kkk-稀疏表示,那么在 DDD 的零空间中必定存在一个非零向量 zzz,其满足 ∥z∥0≤2k\|z\|_0 \le 2k∥z∥0​≤2k。

这给了我们一条线索。非唯一解的存在与字典零空间中存在“不太稀疏”的向量有关。这促使我们定义字典本身的一个基本属性:它的 ​​spark​​。字典 DDD 的 ​​spark​​,记作 spark⁡(D)\operatorname{spark}(D)spark(D),是指 DDD 中线性相关的列的最小数量。 它是能够相互共谋以完全抵消的一组原子的最小可能规模。根据其定义,零空间中的任何非零向量 zzz 都必须涉及至少 spark⁡(D)\operatorname{spark}(D)spark(D) 个原子,这意味着 ∥z∥0≥spark⁡(D)\|z\|_0 \ge \operatorname{spark}(D)∥z∥0​≥spark(D)。

现在我们对 zzz 的稀疏性有两个相互矛盾的断言。非唯一性的假设意味着 ∥z∥0≤2k\|z\|_0 \le 2k∥z∥0​≤2k。spark 的定义要求 ∥z∥0≥spark⁡(D)\|z\|_0 \ge \operatorname{spark}(D)∥z∥0​≥spark(D)。这两个条件只有在 spark⁡(D)≤2k\operatorname{spark}(D) \le 2kspark(D)≤2k 时才能共存。

为了保证不存在这样的非零 zzz,我们必须确保这种情况不可能发生。这就引出了稀疏表示理论中最优雅和核心的结果之一:

如果一个 kkk-稀疏表示存在,并且 spark⁡(D)>2k\operatorname{spark}(D) > 2kspark(D)>2k,那么它就是唯一的、最稀疏的表示。

让我们通过一个具体的例子来看看它的实际作用。考虑下面这个简单的 2×42 \times 42×4 字典:

Φ=[1011011−1]\Phi=\begin{bmatrix} 1 0 1 1\\ 0 1 1 -1 \end{bmatrix}Φ=[1011011−1​]

这些原子是二维平面中的向量。其中任意两个都是线性无关的。然而,任意三个都必须是线性相关的(在一个二维空间中不可能有三个独立的向量)。例如,第三个原子就是前两个原子的和。因此,线性相关的列的最小数量是 3,所以 spark⁡(Φ)=3\operatorname{spark}(\Phi) = 3spark(Φ)=3。

现在,让我们检验一下我们的唯一性条件。

  • 如果我们寻找的是 ​​1-稀疏​​ 表示 (k=1k=1k=1),条件是 3>2×1=23 > 2 \times 1 = 23>2×1=2。这是成立的!所以,每个能用该字典中单个原子表示的信号都有唯一的此类表示。
  • 如果我们寻找的是 ​​2-稀疏​​ 表示 (k=2k=2k=2),条件是 3>2×2=43 > 2 \times 2 = 43>2×2=4。这不成立。唯一性无法保证。事实上,它确实失效了。信号 y=(11)y = \begin{pmatrix} 1 \\ 1 \end{pmatrix}y=(11​)可以写成 y=1⋅ϕ1+1⋅ϕ2y = 1 \cdot \phi_1 + 1 \cdot \phi_2y=1⋅ϕ1​+1⋅ϕ2​,这是一个 2-稀疏表示。但它也可以写成 y=1⋅ϕ3y = 1 \cdot \phi_3y=1⋅ϕ3​,这是一个 1-稀疏(因此也是 2-稀疏)表示。我们为同一个信号找到了两种不同的 2-稀疏配方,正如理论所预测的那样。

互相关性 (Coherence):一个实用但非完美的指南

spark 是一个完美的理论工具,但有个问题:对于任何合理大小的字典,计算它的 spark 是一个极其困难的问题,已知是 ​​NP-难​​的。 这意味着我们不能简单地为大型的、现实世界中的字典计算 spark。我们需要一个更实用、更容易计算的度量。

这就是​​互相关性 (mutual coherence)​​ 发揮作用的地方。字典的互相关性 μ(D)\mu(D)μ(D) 衡量任意两个不同原子之间的最坏情况下的相似度。为了计算它,我们首先将所有原子归一化为单位长度,然后找出任意两个不同原子之间内积(点积)绝对值的最大值。 直观地看,一个具有高度相似原子(高相关性)的字典更具冗余性,使得原子更容易形成线性相关性。这种直觉得到了 Welch 界的证实,这是一个关联了相关性和 spark 的不等式:spark⁡(D)≥1+1μ(D)\operatorname{spark}(D) \ge 1 + \frac{1}{\mu(D)}spark(D)≥1+μ(D)1​。

将此代入我们基于 spark 的唯一性条件,我们得到一个新的、实用的规则:如果 2k1+1μ(D)2k 1 + \frac{1}{\mu(D)}2k1+μ(D)1​,则唯一性得到保证,这可以重新排列为 k12(1+1μ(D))k \frac{1}{2}(1 + \frac{1}{\mu(D)})k21​(1+μ(D)1​)。 这个条件是充分但非必要的。一个字典可能因为相关性太高而无法通过这个测试,但其 spark 值仍然可能足够大,从而保证给定 kkk 值的唯一性。可以把相关性测试看作一个严格但可靠的安全检查。

从原理到实践:大海捞针

知道存在唯一的稀疏解是一回事;找到它则是另一回事。暴力破解的方法,即检查字典中所有可能的 kkk 个原子的组合,对于任何实际问题来说在计算上都是不可能的。

这就是该领域最令人惊讶和优美的结果之一发挥作用的地方。事实证明,在保证唯一性的相似条件下,我们可以通过解决一个简单得多的问题来找到最稀疏的解。我们不再最小化非凸的 ℓ0\ell_0ℓ0​-“范数”(非零元素的计数),而是最小化凸的 ​​ℓ1\ell_1ℓ1​-范数​​,即系数绝对值之和(∥α∥1=∑i∣αi∣\|\alpha\|_1 = \sum_i |\alpha_i|∥α∥1​=∑i​∣αi​∣)。这种方法被称为​​基追踪 (Basis Pursuit)​​。

从几何上看,最小化 ℓ1\ell_1ℓ1​-范数会促使解位于高维菱形的“角点”上,而这些角点对应着稀疏向量。一个非凡的事实是,一个低相关性的字典不仅保证了唯一的最稀疏解,还确保了实用、高效的 ℓ1\ell_1ℓ1​-最小化算法能够找到它。

这种美丽的融合——字典的几何特性既保证了解的理论唯一性,又保证了寻找该解的算法的实际成功——是该领域优雅性的标志。当然,在最简单的情况下,即我们的字典是一个​​标准正交基 (orthonormal basis, ONB)​​,一切都变得微不足道。分析和合成模型变得等价,最佳的 k-稀疏近似可以通过简单地计算所有系数并保留 kkk 个最大的系数来找到——这是一个简单的阈值操作。

学习语言:字典从何而来?

我们一直假设有一个好的字典交给我们使用。但是,对于特定类别的信号,比如自然图像或语音,什么才是一个“好”的字典?最终的一步是直接从数据中​​学习字典 (learn the dictionary)​​。

​​字典学习 (dictionary learning)​​ 的目标是找到最好的字典 DDD,使得给定的训练信号集 {xi}\{x_i\}{xi​} 尽可能地稀疏表示。这通常被构建为一个宏大的优化问题,我们试图同时找到字典 DDD 和稀疏编码 {αi}\{\alpha_i\}{αi​}。

为了使这个过程成功——即,为了使模型是​​可识别的 (identifiable)​​ 并且能够恢复生成数据的真实底层字典——必须满足一系列直观的条件。我们当然必须通过约束 DDD 的列来消除固有的尺度和排列模糊性。除此之外,真实的字典必须是行为良好的(例如,具有低相关性),编码必须足够稀疏,并且至关重要的是,我们需要一个足够大且足够多样化的数据集。这种​​样本多样性 (sample diversity)​​ 确保每个原子都有机会在许多不同的信号中“展示其能力”,从而让学习算法能够将其与同行区分开来。

这就形成了一个闭环。通过假设自然信号具有稀疏结构,我们可以设计算法,这些算法不仅能高效地找到这些稀疏表示,甚至能学习到表达这些信号的最佳“语言”——即原子字典。从一个简单的节俭原则中,诞生了一个用于理解数据基本结构的强大框架。

应用与跨学科联系

我们已经花了一些时间探索稀疏表示的机制——原子字典、稀疏性概念以及唯一性和稳定性原则。此时,人们可能会倾向于将其视为一个巧妙的数学游戏,一个适用于少数特定问题的优雅但专业的工具。没有什么比这更远离事实了。

稀疏性原理,其本质上是简约性原理 (principle of parsimony)。它相信,在世界的嘈杂、复杂和看似混乱的表象之下,存在着一个由少数基本组件构成的更简单、更优雅的结构。这个思想与科学本身一样古老——它是奥卡姆剃刀 (Occam’s razor) 的现代体现。值得注意的是,这个单一而强大的思想为破解人类众多领域的难题提供了一块罗塞塔石碑 (Rosetta Stone)。让我们开启一段穿越科学与工程的旅程,见证这种简约性的通用语言如何发挥作用。

視覺的藝術:解構信號与图像

或许,我们旅程最自然的起点是我们看到和听到的事物。计算机如何存储一张照片、一段音乐或一段视频?一种天真的方法是记录每一个像素的值或每一个声波採样的压力。但这极其低效。一张高分辨率图像有数百万像素;几分钟的音频有数百万个采样点。现代媒体的秘密在于,我们不存储数据本身;我们存储的是对数据的描述。而一个好的描述是简短的。

这正是稀疏性登场的地方。考虑一张典型的照片。它不是像素的随机集合。它有大片平滑的颜色或纹理——蓝天、白墙——其间点缀着定义物体的清晰边缘。像小波变换这样的变换是一个数学棱镜,它将图像分解为其组成部分:不同尺度下的粗略近似和精细细节。对于自然图像,这种变换会产生一种魔力:绝大多数的小波系数都接近于零。信号在小波域是稀疏的!重要信息——边缘和显著特征——都集中在少数几个大的系数中。

像 JPEG2000 这样的压缩方案直接利用了这一点。它们简单地丢弃大量微小的系数,只保留少数重要的系数。最小描述长度 (Minimum Description Length, MDL) 原则为我们思考这个问题提供了一个优美而正式的方式:我们数据的最佳模型是那个能对“模型+编码后的数据”给出最短描述的模型。一个稀疏模型,我们只需要指明少数非零系数的位置和值,它提供的描述远比列出每个原始像素值要紧凑得多。

但是,如果我们图像的基本“原子”不是小波那种简单的块状形态呢?如果我们试图表示物体错综复杂的弯曲边界呢?自然界不是用小方块来构建世界的。为了有效地表示一条平滑曲线,我们需要本身就像曲线的字典原子。这一洞见催生了诸如 curvelets 和 shearlets 等复杂字典的设计。它们是一族“针状”原子,在一个方向上拉长,在另一个方向上极薄,并具有特定的“抛物线”缩放关系,即宽度 www 与长度 ℓ\ellℓ 的平方成正比,即 w∝ℓ2w \propto \ell^2w∝ℓ2。这种精确的几何关系并非偶然;它恰好是完美追踪一条平滑曲线所需要的,因为曲线会以二次方的形式偏离其切线。通过创建一个过完备字典,其中充满了这些在所有可能位置、尺度和方向上的针状原子,我们确保对于图像中的任何边缘,都能找到与之完美对齐的原子。结果是一个极其稀疏的表示,以卓越的保真度和效率捕捉了复杂的几何形状。

表示的力量并不仅限于描述单个信号。它甚至可以帮助我们“分离”混合信号。想象一下,你身处一个房间,有两个人同时说话。你的大脑在某种程度上可以专注于一个声音并滤除另一个。计算机能做同样的事吗?这就是源分离 (source separation) 问题,而稀疏性提供了一个惊人优雅的解决方案。假设两个信号——比如一个男声和一个女声——在两个相互不相关的字典中是稀疏的。不相关 (incoherent) 意味着一个字典的构建模块(原子)非常不擅长表示由另一个字典构建的信号。这就像试图只用斯瓦希里语词典中的词来写一个英语句子——你会做得很糟糕。一个凸优化程序可以利用这一点,通过寻找一对信号,每个信号在各自的字典中都是稀疏的,并且它们的和等于我们观测到的混合信号。如果字典足够不相关,唯一的可行解就是真实的、未混合的那对信号。这一原理是实现分离录音中的乐器、去除天文图像噪声等非凡成就的基础。

在所有这些情况中,我们都假设我们知道正确的字典——小波、curvelets 或其他。但如果我们不知道呢?在许多领域,从地震成像到神经科学,底层的模式是未知的。在这里,我们发现了现代数据科学中最强大的思想之一:字典学习 (dictionary learning)。我们不再使用固定的、现成的字典,而是让数据本身来教给我们正确的语言。我们向算法提供一系列信号样本——比如,来自地球地下地震图像的数千个小块——并要求它同时找到一个字典和每个小块的稀疏编码。算法会一同调整字典原子和稀疏系数,直到找到一组能够简约地表示所有样本的原子。其结果是一个数据驱动的字典,专为数据中存在的特定结构而定制,揭示了可能永远不会被发现的基本模式。

智能的机制:计算与学习

高效表示的思想是如此基础,以至于它不仅出现在我们如何处理外部世界信号的方式中,而且出现在计算和智能本身的架构中。

考虑运行你电脑的操作系统。它为每个程序提供了自己巨大的虚拟地址空间,通常是数万亿字节。然而,在任何给定时刻,一个程序只使用这个空间中一个微小、稀疏的部分。为了追踪哪些虚拟地址映射到哪些物理内存位置,操作系统是否维护着一个有一万亿个条目的庞大表格?当然不是;那样会耗尽所有内存。相反,它使用巧妙的、分层的数据结构——多级或哈希页表——只存储地址空间中被活跃使用的部分的条目。这些本质上就是地址映射的稀疏表示。

同样的原理也使得“大数据”分析成为可能。在现代生物学中,科学家可以测量数十万个单细胞中成千上万个基因的活性。为了理解这些细胞之间的关系,像 t-SNE 和 UMAP 这样的算法会构建一个“最近邻”图,将每个细胞与其在高维基因空间中最相似的伙伴连接起来。这个图是数据可视化的基础。但是,一个有 100,000 个细胞的图可能有多达 101010^{10}1010 个可能的连接!关键在于每个细胞只与少数几个邻居相连,比如说 k=15k=15k=15。由此产生的邻接矩阵极其稀疏。通过以稀疏格式存储这个矩阵(只记录非零条目),我们可以将内存占用从数百 GB 减少到几 MB。这不仅仅是一个小小的优化;它是使大规模生物数据集的分析在计算上变得可行的关键步骤。

更为深刻的是,稀疏性似乎是生物智能和人工智能的核心原则。你的大脑包含数十亿个神经元,但当你看到一张熟悉的脸或听到一个词时,只有其中一小部分特定的神经元会被激活。大脑似乎使用一种“稀疏编码”来表示世界。受此启发,深度学习领域通过融入这一思想取得了巨大成功。许多现代神经网络使用一种名为修正线性单元 (Rectified Linear Unit, ReLU) 的激活函数,定义为 f(u)=max⁡(0,u)f(u) = \max(0, u)f(u)=max(0,u)。这个简单函数的直接后果是,对于任何给定的输入,网络中大部分神经元的输出将恰好为零。网络的活动是稀疏的。人们认为,这种诱导出的稀疏性是深度学习强大的关键原因之一。网络学习了一个庞大的特征字典,但通过只激活与特定输入最相关的少数特征来表示该输入,从而创建了一个组合式的、高效且鲁棒的世界表示。

解码自然:物理与生命科学

最后,我们的旅程让我们谦卑地认识到,稀疏性不仅仅是我们发明的巧妙计算技巧,更是一个编织在物理世界结构之中的深刻原理。

在量子化学中,科学家们试图求解薛定谔方程来预测分子的行为。对于一个大分子来说,这是一项复杂度惊人的任务,长期以来被认为在计算上是不可能的。突破来自于认识到化学家 Walter Kohn 首次阐明的物理原理:量子物质的“近视性” (nearsightedness)。一个大蛋白质一侧的电子行为,基本上不受遥远另一侧发生的事情的细节影响。这种物理局域性有一个直接的数学后果。当我们在以每个原子为中心定位的函数基(原子轨道)中表示量子力学算符(如动能)时,得到的矩阵天然就是稀疏的。为什么?因为连接两个原子的矩阵元素是由它们轨道函数的重叠决定的。如果原子相距很远,它们的轨道不重叠,矩阵元素就为零——不是近似为零,而是根本上为零。这种固有的稀疏性,是物理定律直接赋予的礼物,它使得开发“线性标度” (linear-scaling) 方法成为可能,从而能够模拟与医学和材料科学相关的大分子。

从压缩一张数字照片到理解大脑的架构,从设计一个操作系统到模拟分子中电子的量子之舞,稀疏性原理一再出现。它是一条统一的线索,将工程的实际挑战与科学最深刻的问题联系在一起。它教导我们,要理解一个复杂的系统,我们必须找到描述它的正确语言——而正确的语言几乎总是一种简约的语言。寻找稀疏表示,归根结底,就是寻找洞见本身。