稀疏表示與字典更新KSVD演算法

2021-08-19 21:15:46 字數 2207 閱讀 5365

1. 演算法簡介

k-svd可以看做k-means的一種泛化形式,k-means演算法總每個訊號量只能用乙個原子來近似表示,而k-svd中每個訊號是用多個原子的線性組合來表示的。

k-svd通過構建字典來對資料進行稀疏表示,經常用於影象壓縮、編碼、分類等應用。

2. 主要問題

y為要表示的訊號,d為超完備矩陣(列數大於行數), x為係數矩陣,x與y按列對應,表示d中元素按照xi為係數線性組合為y,

我們的目的是找到讓x盡量稀疏的d

上面的式子本質上是相通的,只是表述形式不一樣罷了。

尋找最優解(x最稀疏)是np-hard問題。

用追逐演算法(pursuit algorithm)得到的次優解代替。

matchingpursuit (mp)

orthogonalmatching pursuit (omp)

basispursuit (bp)

focalunderdetermined system solver (focuss)

3. 演算法求解     

給定訓練資料後一次找到全域性最優的字典為np問題,只能逐步逼近最優解.構造d演算法分兩步:稀疏表示和字典更新

稀疏表示

首先設定乙個初始化的字典,用該字典對給定資料迚行稀疏表示(即用盡量少的係數盡可能近似地表示資料),得到係數矩陣x。此時,應把dx看成d中每列不x中對應每行乘積的和,也就是把dx分「片」,即:

(di 表示d的列 , xi表示x的行),然後逐片優化。

字典更新

初始字典往往不是最優的,滿足稀疏性的係數矩陣表示的資料和原資料會有較大誤差,我們需要在滿足稀疏度的條件下逐行逐列更新優化,減小整體誤差,逼近可用字典。剝離字典中第k(1-k)項dk的貢獻,計算當前表示誤差矩陣:

誤差值為 :

上式可以看做把第k個基分量剝離後,表達中產生空洞,如何找到乙個新基,以更好的填補這個洞,就是svd 方法的功能所在,當誤差值穩定的時候字典基本收斂。

求解流程

k-svd的求解是乙個迭代過程。首先,假設字典d是固定的,用mp、omp、bp等演算法,可以得到字典d上,y的稀疏表示的係數系矩陣x,然後讓x固定,根據x更新字典d,如此迴圈直到收斂為止。

字典d的更新是逐列進行的。首先假設係數矩陣x和字典d都是固定的,將要更新的是字典的第k列dk ,係數矩陣x中dk對應第k行為

得到當前誤差矩陣ek後,我們只需要調整dk和xk,使其乘積與ek的誤差盡可能的小。

對於上面的問題,如果直接用ek的svd分解結果來更新dk和xk,則會導致xk不稀疏,出現」發散」。換句話說,

具體如下:

演算法流程

參考:

1)k-svd: an algorithm fordesigning overcomplete dictionaries for sparse representation (ieee trans. onsignal processing 2006)

2)3)

字典學習與稀疏表示

假設我們用乙個m n的矩陣表示資料集x,每一行代表乙個樣本,每一列代表樣本的乙個屬性,一般而言,該矩陣是稠密的,即大多數元素不為0。稀疏表示的含義是,尋找乙個係數矩陣a k n 以及乙個字典矩陣b m k 使得b a盡可能的還原x,且a盡可能的稀疏。a便是x的稀疏表示。x是y的稀疏表示 sparse...

稀疏表示 字典學習

online learning toolbox francesco orabona machine perception toolbox mpt 偶然的機會發現了這個工具箱,雖說05年都沒有再更新了,但是很多東西還是可以借鑑的。很好的乙個工具箱,功能包含face detection,eye dete...

稀疏表示 過完備 字典

目前已有很多方法和技術用於構造分類模型,如決策樹 神經網路 貝葉斯方法 fisher線性分析 fld 以及支援向量機 support vector machine,svm 基於超完備字典的訊號稀疏分解是一種新的訊號表示理論,其採用超完備的冗餘函式系統代替傳統的正交基函式,為訊號自適應的稀疏擴充套件提...