稀疏編碼之字典學習


稀疏信號的一個最重要的部分就是字典A。那么選擇A?怎么樣選擇才是合理?

一、字典的選擇和學習

如何選擇合適的字典,一種基本的方法是選擇預定義的字典,如無抽樣小波、可操縱小波、輪廓博、曲波,等等。近期很多學者提出來主要針對圖像的字典,特別是類似於“卡通”的圖像內容,假設分段平滑並具有平滑邊界。

這些提出的字典附有詳細的理論分析,能夠對簡單信號建立稀疏表示系數。一個典型的應用時M項近似衰減率——用M個最佳的非零系數表示信號。

另一種選擇字典的方法是可調節的——通過在特定參數(連續或者離散的)控制下生成基或幀。兩個最熟知的例子就是小波包和Bandelets.

盡管預定義和自適應的字典通常具有較快的變換速度,他們無法處理稀疏信號,並且,這些字典限制於特定類型的圖像和信號,無法應用於新的,任意類型的信號。因此我們需要尋找克服這些限制的新方法——通過一種學習的觀點。

基於學習的方法首先需要構建一個訓練信號集,然后構建一個經驗學習字典,即通過經驗數據中生成潛在的原子,而不通過理論模型。這樣的字典可以實際應用,作為固定或冗余字典。

與預定義和自適應的字典不同,學習字典能夠適用於符合稀疏場定義的任何類型的信號。然而,這將帶來更重的計算負擔,且只能應用於低維信號(至少目前為止是這樣的)這是為什么這種方法只能應用於圖像塊。

二、字典學習算法

下面我們討論如何用學習算法構建A,假設訓練集yi已給出,且已知它是由未知的稀疏場模M生成的,這個訓練集能否定義唯一的生成模型,並選擇特定的字典A?這個問題比較復雜,由Field和Oishausen於1996年提出。
這里,我們介紹兩個機制,第一個叫優化方向法(MOD),由Engan提出,第二個叫K-SVD,由Aharon提出。
1.字典學習的核心內容
假設模型的偏差 已知,我們的目的是估計A。考慮如下的優化問題:

2.MOD算法

顯然,沒有一種通用的算法可以求解(12.1)和(12.2),和我們無法求解(P0)的原因類似。然而,沒有理由我們不去尋找一個啟發式算法,並研究它在特殊情況下的執行表現。

我們可以將(12.1)看成一種嵌套最小化策略:在第k步,我們利用第k-1步得到字典A(k-1),對數據庫中的M個實例yi求解對應的:這可以得到矩陣,然后我們通過最小二乘法求解

這里我們使用了Frobenius范數來評價誤差(矩陣的F范數為矩陣中所有元素的平方和的平方根)。允許對獲得的字典的元素進行縮放。遞增k並重復上述循環,直到滿足收斂准則。這樣的塊坐標松弛算法首先由Engan提出,稱為最優方向法(Method of Optimal Direction,MOD),這個算法描述如圖12.1

 

 

以下是本人對MOD算法的理解

1,匹配追蹤算法

在分析該算法前,先介紹下匹配追蹤算法

匹配追蹤最早是時頻分析的分析工具,目的是要將一已知訊號拆解成由許多被稱作為原子訊號的加權總和,而且企圖找到與原來訊號最接近的解。其中原子訊號為一極大的原子庫中的元素。以數學式子表示可以得到:

 f(t) = \sum_{n=0}^{+\infty} a_n g_{\gamma_n}(t)

其中,a_n是權重,g_{\gamma_n}是由字典D中獲得的原子訊號。

如同傅立葉級數將一訊號拆解成一系列的正弦波的相加,其中每個成分擁有不同的系數作為權重,其數學式子如下:

f(x) = \sum_{n=-\infty}^ \infty c_n e^{inx}.

而匹配追蹤也具有將訊號拆解成一系列原子相加的意涵,而甚至可以使用匹配追蹤去描述傅立葉級數,也就是原子庫對應到的所有正弦函數的集合

2.貪婪算法

為了找到最符合原訊號的一組原子加權總合,如果對原子庫進行所有組合的嘗試過於耗費時間。在1993年由Mallat SZhang Z的論文[1]中,提出了一個貪婪算法(Greedy Algorithm),並大幅降低找出近似解的時間。其作法首先在原子庫中尋找與原訊號內積結果最大的原子,找到此訊號以及其內積結果a_n之后再將原訊號減掉a_n g_{\gamma_n}作為下一次重復運算的原始訊號,如此反復做下去即可得到一系列的a_n以及原子,直到達到停止條件為止.

假設Y=D*X,Y為初始信號,大小為M*P,X是我們隨機生成一個N*P大小的矩陣,那么初始字典就可以求得了

其詳細的算法如下:

輸入: Signal: f(t), dictionary D.
輸出: List of coefficients:  \left( a_n, g_{\gamma_n}\right) .
初始化:
R_1\,\leftarrow\,f(t);
n\,\leftarrow\,1;
重復:
find g_{\gamma_n} \in D with maximum inner product  | \langle R_n, g_{\gamma_n} \rangle | ;
 a_n\,\leftarrow\,\langle R_n, g_{\gamma_n}\rangle ;
 R_{n+1}\,\leftarrow\,R_n - a_n g_{\gamma_n};
 n\,\leftarrow\,n + 1;
直到達到停止條件,例如: \|R_n\| < threshold )
此時的 是稀疏表示的

3.字典更新

2中的即為此式中的,將其代入,求解該方程的最小值,

到此獲得最終的字典

初次接觸,理解不到位,請各位大神多多指教


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM