可以把这一节看成一条非常清晰的主线:

很多看起来很复杂的信号,其实只由少数几个“基本成分”组成。既然真正有用的信息很少,我们就没必要把所有数据都完整采下来;只采少量“混合测量”,再利用稀疏性把原信号恢复出来。

整节内容其实就是围绕这句话逐步展开的。文中先从”稀疏表示”讲起,再讲”稀疏编码”,最后把它应用到”压缩感知”和”人脸识别”。


1. 先理解最核心的东西:什么叫”稀疏”

稀疏向量就是:

8 个元素里面只有 2 个非零。

所以我们说它是”稀疏的”。

文中定义得很直接:

  • 稀疏向量:大多数元素为 0;
  • 稀疏表示:使用少量基本信号的线性组合表示目标信号。

关键不是”原始信号里面有很多 0”。

真正重要的是:

能不能找到一种表示方法,使得表示它的系数里面有很多 0。


2. 什么是”稀疏表示”?

先举一个最简单的例子。

假设有三个基本向量:

现在有一个信号:

一种表示方法是:

也就是系数:

用了两个原子。

但还有一种:

对应:

只用了一个原子。

显然后一种更”稀疏”。

所以稀疏表示解决的问题就是:

一般写成:

其中:

叫做字典,每一列叫一个原子

就是对应的系数。

文中接下来专门讨论了 的情况,此时字典中的原子数量比信号维数还多,这叫”过完备字典”。


3. 为什么要故意弄一个”过完备字典”?

这一点第一次看特别容易疑惑。

例如二维空间只需要:

两个基向量就够了。

为什么还要搞 100 个方向?

原因是:

可选择的基本模式越多,就越有可能只用极少几个模式描述当前信号。

可以想象你在拼乐高。

如果你只有:

  • 方块;
  • 长条。

想拼一辆车,就需要很多块。

但如果你的零件库还有:

  • 轮子;
  • 车窗;
  • 车门;
  • 车头;
  • 底盘……

那么只需要少量零件就可以拼出来。

所以:

就相当于一个非常丰富的”零件库”。

这就是过完备字典

文中指出,这种情况下

是欠定方程,因此通常存在无穷多组


4. 有无穷多个解,那到底选哪个?

这正是这一节第一次真正进入核心问题。

例如:

因为

未知数比方程多。

于是:

可能有无穷多个。

那么我们就要加一个条件:

我不仅要求能解释 ,还希望这个解释尽量简单。

这里出现两种方法。


方法一:最小 范数

求:

满足:

这个方法的思想是:

从所有解里找”整体能量最小”的那个。

例如:

可能比:

的平方和更小。

所以 最小化经常倾向于:

把贡献分散到很多元素上。

这恰恰与稀疏相反。

所以文中说它虽然解唯一、可以理解成最小能量解,但系数通常不是稀疏的。


5. 真正想要的是 最小化

定义:

表示:

例如:

有两个非零元素,所以:

因此我们希望:

满足:

翻译成人话就是:

在所有能够还原 的方案里,找使用原子数量最少的方案。

比如:

方案 A:

使用三个原子。

方案 B:

只用了一个原子。

我们选 B。

这就是”最稀疏表示”。


6. 有噪声怎么办?

现实世界一般不会严格满足:

例如麦克风有噪声、摄像头有噪点、传感器有误差。

所以改成:

也就是说:

不要求完全一模一样,只要误差足够小就行。

然后仍然要求:

这时候叫稀疏逼近

例如真实声音:

实际录到的声音:

我们不需要连噪声也精确拟合,只要找出:

主要就是 1000 Hz 和 2000 Hz 两个频率。

这就是稀疏逼近的思想。


7. 那”稀疏编码”和”稀疏表示”有什么区别?

这一节这里很重要。

前面我们是假设:

已经知道。

然后求:

例如:

给你一本字典,问你应该选择哪几个词来描述一句话。

稀疏编码更进一步:

文中写成:

其中:

  • :大量原始数据;
  • :学出来的字典;
  • :稀疏系数。

并且 的每一列都是稀疏的。


8. 一个非常具体的稀疏编码例子:人脸图片

假设你给计算机 10000 张人脸图片。

一开始你什么都没告诉它:

  • 什么叫眼睛;
  • 什么叫鼻子;
  • 什么叫嘴;
  • 什么叫轮廓。

稀疏编码试图学习出一批基本模式,比如:

可能有一些原子学成了:

  • 水平边缘;
  • 垂直边缘;
  • 眼睛附近的纹理;
  • 鼻梁;
  • 嘴部轮廓;
  • 阴影。

对于某一张具体图片:

可能:

只有几个值非零。

意思就是:

这张图只激活了少数几个特征。

这就是文中所说的:

对一个输入向量而言,基矩阵中只有少数基向量被激活。


9. 为什么”稀疏”这么有用?

你可以把它理解成一种:

原始数据可能有:

个数字。

但真正决定这个信号的可能只有:

个重要成分。

那么我们只需要处理这 20 个。

所以好处很多:

  • 节省存储;
  • 减少计算量;
  • 压缩数据;
  • 去除无关成分;
  • 提取关键特征;
  • 有利于分类和识别。

文中最后也特别强调,如果一个 维向量只有 个非零元素,就没必要存储和运算剩下的 个零元素,因此计算复杂度更多取决于非零元素个数。


10. 接下来进入压缩感知

这才是这一节的第二个大核心。

传统采样理论说:

想还原一个信号,就得采足够多的点。

例如 Nyquist 定理:

如果信号最高频率是:

那么至少:

采样。

传统方案相当于:

例如一张图片原来:

拍下来以后再 JPEG 压缩成:

问题来了:

既然最后 18 MB 都扔掉了,我为什么一开始还非得把它们采下来?

这就是压缩感知提出的问题。


11. 压缩感知最核心的想法

压缩感知想做:

传统:

压缩感知:

其中:

假设:

也就是完整信号有 1000 个数据。

压缩感知可能只采:

也就是说:

但希望最后还能把 1000 维的 恢复出来。

这正是文中所说的:从低维感知数据 恢复高维 Nyquist 采样数据


12. 等等:100 个方程怎么求 1000 个未知数?

这也是压缩感知最神奇的地方。

现在:

其中:

只有 100 个方程,却有 1000 个未知数。

显然通常:

所以仅凭这个方程无法恢复

文中也明确指出,因为 ,直接求解欠定方程不能可靠地恢复高维信号。

但如果我们知道一件额外的信息:

事情就不同了。


13. 很多信号本身不稀疏,但”换个角度看”就稀疏了

这是压缩感知非常重要的思想。

例如一段纯正弦信号:

在时域看:

每个采样点几乎都不是 0。

所以:

一点也不稀疏。

但做 Fourier 变换后:

频谱中主要只有:

附近有成分。

于是频域系数可能类似:

一下变得非常稀疏。

所以写:

其中:

  • :表示基/变换基;
  • :稀疏系数。

文中称这种信号为可压缩信号,并列举 Fourier、小波、Gabor 等变换。


14. 把它代入压缩感知公式

有:

而测量:

代进去:

令:

于是:

问题一下变成:

已知 ,求一个最稀疏的

因为我们知道:

只有少数非零。

恢复出:

以后:

就把原始信号恢复了。

这就是整个压缩感知的数学核心。文中也用 表示感知与表示组合后的字典。

你可以直接记成这一条链:

而恢复时:

其中:

且:


15. 一个超级直观的压缩感知例子

假设我告诉你:

有一个 1000 维向量:

但我同时告诉你:

里面实际上只有 3 个数不是 0。

那么你真正需要确定的其实不是 1000 个自由变量,而只是:

  1. 哪三个位置非零;
  2. 它们分别是多少。

所以真实信息量远远小于 1000。

这就是为什么:

有稀疏性作为额外先验后,即使测量数 ,也仍有可能恢复

压缩感知利用的正是这一点。


16. 但采样矩阵 不能乱选

接下来文中开始讲一个看起来抽象、实际上很好理解的东西:

非相干性

简单来说:

采样方式不能和信号的稀疏表示方式太像。

为什么?

假设信号在标准坐标系里稀疏:

如果你采样的时候刚好只看:

那么:

你根本不知道第 4 个位置有个 8。

这就是一个非常糟糕的测量。

相反,如果每次测量都把很多元素混在一起,例如:

即使只做少量测量,每一个非零元素的信息都可能”扩散”到很多测量里面。

于是更容易恢复。

所以:

这就是非相干性的直觉。文中用相干度衡量列向量之间的相似程度:相干参数越小,列向量越接近正交;感知基与表示基越不相干,恢复所需的样本可以越少。


17. 为什么文中突然又从 讲到

因为:

虽然最符合我们的目标:

非零元素越少越好。

但是它很难算。

因为原则上要不断尝试:

到底哪几个位置应该非零?

组合数量会爆炸。

所以压缩感知里经常转化为:

其中:

文中给出的定理说明,在一定的稀疏性和非相干条件下,通过 最小化可以以高概率精确恢复稀疏系数。

你现在先不用纠结证明。

只要记住:

但:

后面学稀疏优化时你会反复见到。


18. 到底想表达什么?

这个公式第一次看很吓人:

其实它只是想告诉你:

到底需要采多少个数据。

这里最值得理解的是关系。

越大

说明信号越不稀疏。

需要:

也就是采更多数据。


越小

信号越稀疏。

只需要较少:


越大

表示感知基和表示基越相关。

恢复越困难。

所以:


越小

越不相干。

恢复越容易:

这就是文中的核心结论:

而不再单纯由信号带宽决定。


19. 最后的人脸识别其实是整节最漂亮的应用例子

假设现在数据库有三个人:

张三:

李四:

王五:

每一列都是这个人的一张训练照片。

把它们全部拼起来:

现在来了一张测试图片:

假设它实际上是李四。

那么理论上:

主要应该由李四的那些训练照片组合出来:

于是整体系数:

会表现出:

只有”李四对应的那部分”明显非零。

所以只要求:

中的稀疏解,就可以看:

非零系数集中在哪个人对应的训练样本上。

从而完成识别。文中正是把所有类别的训练图像组成总字典 ,再通过求稀疏系数 将人脸识别转化成线性求逆和 最小化问题。


20. 现在把整节压缩成一个完整故事

你可以这样理解这一节。

假设有一个复杂信号:

第一步,我们发现:

虽然 看起来复杂,但它可以由很少几个基本成分组成。

即:

而且:

非常稀疏。

于是就产生稀疏表示

接着我们发现:

甚至连这些”基本成分”是什么,都可以让机器从大量数据中自己学。

于是出现:

这叫稀疏编码

进一步:

既然真正的信息只有少数几个非零系数,那为什么还要完整采集所有数据?

于是只采:

这叫压缩感知

由于:

因此:

然后解决:

或者实际中常用:

恢复稀疏系数。

最后:

恢复原始信号。

所以整节真正应该记住的是:


你现阶段最值得真正搞懂的 5 个式子

第一:

字典中的少数原子组合成信号。

第二:

从无穷多个表示中找最稀疏的那个。

第三:

稀疏编码:字典 和稀疏系数 都从数据中学习。

第四:

原始信号可能不稀疏,但在某个变换域下的 很稀疏。

第五:

这是压缩感知最核心的公式

用少量测量 ,求稀疏的 ,再恢复原始

如果你把这五个公式之间的关系真正想明白,这一节大概已经掌握了 70%~80%。后面的相干性、 优化、RIP 等,本质上都是在回答一个问题:

另外,你这份笔记第 188 行写的是”通过 重构”,但按照前文定义 ,这里的记号与前文并不一致;学习时建议你优先沿用前文的 这条关系。