壓縮感知和稀疏訊號處理
一、The Shannon-Nyquist Sampling Theorem
問題:原始資料是連續函式,是否能用有限個取樣百分之百重現原始資料?
夏農回答了這個問題:如果原始資料中最大頻率為f,如果取樣頻率為2f,即每隔1/(2f)秒取一次樣,則可完全恢復原始資料。
陸吾生教授2010年的視訊中給出了非常直觀的解釋:
圖a是取樣和恢復過程,圖b表示原始函式的傅立葉變換得到的頻域分佈,圖c表示取樣後的頻域分佈,可以看到是原始頻域分佈複製貼上,且按取樣頻率位移,因為頻率分佈不能重疊,否則資訊就會丟失,這個用公式表示就是下圖的關係,所以可以很容易得到取樣頻率和原始頻率的關係,圖d是低通濾波器,圖e是低通部分,即原始資料的頻率分佈。
最終的恢復公式就是,可以看成是取樣後的訊號與sinc函式卷積的結果:
其中sinc(x)部分是,它的圖示曲線是:
二、Sparse and Compressible Signals
(我的理解)如果訊號是由某種分佈或者幾種分佈構成,則訊號是可以被壓縮的。
比如離散餘弦變換DCT和離散小波變換DWT,本質上即是預先設定的兩組正交基,通過θ=C’x或θ=W‘x即可將原始向量解釋為預設空間中的座標。將θ中接近0的部分設為0,得到θ‘,則轉換後的資料x' = Cθ'或x' = Wθ',其中C'和W’分別為C和W的轉置。
%Below is a MALAB code to generate matrix DCT. function C = gen_dct(n) alp = [sqrt(1/n) sqrt(2/n)*ones(1,n-1)]; ind = (1:2:(2*n-1))*pi/(2*n); C = zeros(n,n); for k = 1:n, C(k,:) = alp(k)*cos((k-1)*ind); end
%Our second example is about an orthonormal basis based on discrete wavelet transform <span style="font-family: Arial, Helvetica, sans-serif; font-size: 12px;">DWT.</span> % Suppose signal length n= 2^p %for some integer p, then the basis matrix Wof size nby n %associated with Daubechies’ orthogonal discrete wavelets can be readily constructed in MATLAB %using Toolbox Uvi_Wave toolbox as follows: % n -- signal length, must be a power of 2. % L -- length of Daubechies wavelet, must be an even integer. % W -- orthonormal DWT matrix of size n x n. function W = gen_wave(n,L) p = log2(n); [h0,h1,f0,f1] = daub(L); I = eye(n,n); W = I; for i = 1:n, Ii = I(:,i); W(:,i) = wt(Ii,h0,h1,p); end
上面兩圖為餘弦變換和小波變換的結果,50,100為對應的閾值,可以看出不同的正交基得到的結果不盡相同。
陸吾生教授的視訊裡小波變換講得非常好,想學習的一定要去看看。
三、Sensing a Sparse Signal
小波變換W,θ= W‘x,其實可以理解為用W中基底解釋x的過程,x的稀疏性取決於W基底的”完備性“。這個可以理解為W是一個字典,W中的基底就是字典中的詞,詞越多你對原句的解釋就可以越簡潔,比如”上海“可以解釋為”上“+”海“,也可以解釋為”滬“,因此增加一個矩陣得到[I W],可以得到更好的稀疏性。字典可以用其他已知的基底構成,比如單位矩陣I,離散餘弦變換DCT,離散小波變換DWT,離散傅立葉變換DFT,Hadamard-Walsh矩陣等等。
現在問題變為Dθ= x,D是n*l的字典,θ是l*1的解,x是輸入向量,如何找到最稀疏的θ?
Dθ = x其實是一個方程數小於變數數的線性方程組,所以這個方程的解一定是特解加通解的形式,特解是類似於廣義逆的形式,θ1 = D‘inv(DD')x,通解需要對D進行SVD分解D=UΛV,U是n*n的特徵向量矩陣,Λ是n*l特徵值矩陣,V是l*l的特徵向量矩陣,θ2 = Vn*δ,Vn是V後(l-n)列,即l*(l-n)的矩陣,δ是(l-n)*1的自由變數(隨便是啥),問題就變成了如何選擇δ確定的解空間中尋找最稀疏的θ1+θ2。
最優化問題形式化為:
其中0-norm表示θ中非0元素的個數,可是這個問題是NP-hard問題,不過可以轉化為:
1-norm就是絕對值的和,上面問題就可以轉化為另一個不帶絕對值的線性規劃問題,這個問題可以用sedumi這個工具求解(具體過程請看陸教授的視訊),得到的解比直接用DWT要好很多。
四、Compressed Sensing
按照夏農的理論,假設取樣頻率為f=n,則一秒鐘需要取樣n個數據,從線性代數的角度來看,是將無限維原始資料對映到n維正交空間。DCT和DWT或者他們構成的字典提供了巧妙的正交基,使得新向量變得稀疏。現在有個想法,為什麼不直接取樣到好空間?換句話說,能否在取樣時不是按照原始資料的頻率,而是按照原始資料資訊的頻率。
假設訊號在Ψ空間中是r-sparse,轉化為壓縮訊號θ:
現在有另外一個空間Φ,取樣x:
Φ^{\hat}是Φ隨機抽取m行的結果,y是m*1,Φ^{\hat}是m*n,x是n*1,m<n,所以這裡是壓縮取樣。
已知y重建x的過程就是最優化一個最稀疏的θ,然後用上面的公式求出x
當m滿足下面公式時,可以保證訊號可以恢復:
可以簡化為:
壓縮感知的Matlab tool可以用CalTech的l1-MAGIC。
Ψ的選擇很重要,直接確定原始資料中哪些資訊是noise哪些是真實資訊,也就是決定訊號是否可以壓縮以及壓縮後是否可以恢復,Φ可以是隨機的矩陣。