1、引言
在介绍压缩感知算法(Compressed Sensing,CS)之前,博主先描述一下数据生成的过程。
首先,信号采集装置会以大于奈奎斯特采样频率的频率进行工作(这是一个巨大的工作,有时候可能还会对目标物体造成一定的损伤),由于巨大的数据量,所以在数据传输之前通常会对数据进行压缩,然后在信号接收端再对数据解压缩。
从上面的过程来看,大量数据在传输之前,终究要丢弃,那么是否可以在数据采集的时候就不采集这些数据呢?
从香农采样定理角度来看是不可以的,如果这样,复现出来的信号就会产生失真。
那么压缩过的信号为什么可以很好地复现信号呢?这是因为压缩算法根据信号本身的情况进行有选择的舍弃。比如说10000000这一串二进制数,我们知道了该数据的全部内容,只需要保存1的位置信息就相当于保存全部信息了(当然实际的压缩算法没有这么简单)。
为了解决这一问题,经过几位科学家的努力证明了,如果原始的信号是稀疏的,通过一定规则的欠采样,也能很好地恢复原始信号。其实也好理解,根据不变性,在一方面损失了部分信息,只有在其它方面获得更多的信息,才能保证信息的完整性。
但是,现实世界中哪里有那么多的稀疏信号,显得这个算法好像很鸡肋,其实不然,将信号稀疏表示很早之前就有相关算法了,我们只需要拿来用就可以了。
引言写了很多,这些其实都是博主个人的学习过程,纯粹是为了讲明白。下面关于压缩感知理论的内容,我会从数学的角度来讲解,毕竟数学其实才是算法的本质,但是我也会尽量讲的通俗易懂。
2、信号稀疏表示
首先给出信号稀疏表示的数学模型,
设\({\bf{x}} \in {C^N}\),在一组基\(\Psi \)上是稀疏的,那么可以表示为,\[{\bf{x}} = {\bf{\Psi \alpha }}\]
其中\({\bf{\Psi }}\)为\(N \times N\)的稀疏变换矩阵,\({\bf{\alpha }}\)是\(N \times 1\)的系数向量,也就是稀疏变换后的信号,同时也是采样得到的信号。
观察各个变量的维度,不难发现这是一个适定方程,只要确定了\({\bf{\Psi }}\),\({\bf{x}}\)和\({\bf{\alpha }}\)就是等价的。
那么如何来确定稀疏变换矩阵\({\bf{\Psi }}\)呢?有两种办法,一个字典学习的方法,这需要很多计算资源,但是自适应较好。另外一种方法是建立超完备原子字典,简单但是自适应不好。
由于博主水平有限,这两种具体的方法就不展开了。
3、测量矩阵
我们假设原始信号已经是稀疏的了(由第二节可知,稀疏前信号和稀疏后的信号是等价的),那么现在还要实现什么功能呢?一、数据要能压缩;二、压缩后还能恢复
关于第一点,可以采用一个\(M \times N\)的映射矩阵(M<<N),称为测量矩阵,使得, \[{\bf{y = \Phi x}}\]
其中\(y\)是压缩后的信号,维度为\(M \times 1\)。
从第二节可以得到, \[{\bf{y = \Phi x = \Phi \Psi \alpha = \Theta \alpha }}\]
从\({\bf{\Theta }}\)是\(M \times N\)的矩阵,称为感知矩阵,所以这是一个欠定方程,有无数个解,剩下的很多操作其实都是为了给这个等式增加约束,使不定方程的解固定下来。
关于求解这个方程,是从\({\bf{\Theta }}\)矩阵出发,压缩感知理论给出了\({\bf{\Theta }}\)矩阵需要满足约束等距原则(RIP), \[(1 - \delta )\left\| {\bf{\alpha }} \right\|_2^2 \le \left\| {{\bf{\Theta \alpha }}} \right\|_2^2 \le (1 + \delta )\left\| {\bf{\alpha }} \right\|_2^2\]
其中\(\delta \)是满足上式的最小值。
我们尝试理解一下这个不等式(个人理解,不能保证十分正确),在极端的条件\(\delta \)=0,那么满足上式不等式,\({\bf{\Theta }}\)需要是单位矩阵(实际却是\({\bf{\Theta }}\)是\(M \times N\)的矩阵,所以\(\delta \)也不可能等于0);
让\(\left\| {{\bf{\Theta \alpha }}} \right\|_2^2 = \eta \left\| {\bf{\alpha }} \right\|_2^2\),其中\((1 - \delta ) \le \eta \le (1 + \delta )\),所以我们可以假设\({\bf{\Theta \alpha }} = \lambda {\bf{\alpha }}\),其中\(1 - \delta \le \sqrt \lambda \le 1 + \delta \)。如果需要任意的\({\bf{\alpha }}\)都满足上面这些等式和不等式,我们可以令\(\lambda = 1\),这样的话\({\bf{\Theta \alpha }} = {\bf{\alpha }}\),也就是说,我们通过\({\bf{\Theta }}\)对\({\bf{\alpha }}\)映射的结果唯一确定。
那么怎么来设计才能让\({\bf{\Theta }}\)满足RIP性质呢?科学家们证明了,只要使得测量矩阵\({\bf{\Phi }}\)和稀疏矩阵\({\bf{\Psi }}\)满足不相干条件,\({\bf{\Theta }}\)就会有很大概率满足RIP性质。常用的测量矩阵\({\bf{\Phi }}\)有高斯随机矩阵等。
4、信号重建
我们已经知道了,只要设计好测量矩阵就能把稀疏信号唯一性地映射到输出空间,也就是说只有一个确定的解,那么我们也就可以对, \[{\bf{y = \Phi x = \Phi \Psi \alpha = \Theta \alpha }}\]
进行求解了。但是由于这个方程没有封闭解,所以即使知道了等式的解唯一确定,也没有办法求出来,就需要利用另外一个约束条件,方程的解是稀疏的,我们只需要找到这个方程里面所有解中最稀疏的那个就行了(注意,很明显最稀疏的解有可能不是真正的解,但是很接近,所以压缩感知算法实际上是一种有损的压缩了)。
求解上述方程的问题,一般有两种主要的思路,凸优化和贪心算法。这里给出常用的一种方法OMP(Orthogonal Matching Pursuit)算法,实际上是通过迭代线性逼近的思想,算法的步骤:
输入:\(M \times N\)的感知矩阵\({\bf{\Phi }}\)(内部列向量已经进行了施密特正交化),采样信号\({\bf{y}}\),稀疏度k;
输出:索引集\({{\bf{\Lambda }}_t}\),重建信号\({\bf{\hat X}}\),余量\({{\bf{r}}_t}\);
- 初始化: \({{\bf{r}}_0} = {\bf{Y}},t = 1;\)
- 找索引集\({{\bf{\Lambda }}_t}\),是的\({{\bf{\Lambda }}_t} = {\arg _{i = 1,2, \cdots ,N}}\max \left| { < {{\bf{r}}_{t - 1}},{\phi _i} > } \right|\);
- 计算:\({{\bf{b}}_t} = < {{\bf{r}}_{t - 1}},{\bf{\Phi }} > ,{{\bf{r}}_t} = {\bf{Y}} - {{\bf{b}}_t}\);
- t=t+1,如果t<k,返回第2步。
5、总结
这篇博文到这里就结束了,通篇写下来并没有感觉很顺畅,也看了一些资料,即使这样文章中仍然有一些问题没有讲,比如说为什么测量矩阵和稀疏矩阵满足非相干性,感知矩阵就能满足RIP性质了呢?这些问题博主自己也没有明白,而且也不是做这方面研究,所以就不在这里献丑了,仅仅希望这篇博文能够给感兴趣的同学入个门。如果有同学发现博文中有错误的地方,麻烦指正出来,博主十分感谢。