稀疏編碼筆記1

2021-09-24 23:46:01 字數 1811 閱讀 5241

稀疏編碼近幾年來是個十分熱門的研究領域,它是一種無監督學習演算法,它通過尋找一組超完備基(即字典)來捕捉資料中的高層次語義,同時學習得到資料這組基下的稀疏座標。最早被用於建模人類視覺皮層(human visual cortex),而如今,稀疏編碼已經用於許多領域,如影象復原,訊號分類,人臉識別,分類等。

這裡,「超完備」指的是這組基的數量$k$大於原來的維數$p$,超完備基的好處是它們能更有效地找出隱含在輸入資料內部的結構與模式。通過稀疏編碼,我們可以高效地表示資料。假設原始空間中的乙個樣本為$x^$,則在這組稀疏基下,其可以表示為:

$$ x^ = \sum_^k s^_jb_j $$

其中,$b_j$是第$j$組基,$s^$是$x^$在這組基下的座標。上式可以寫為更簡化的矩陣形式:

$$ x^ = bs^ $$

這個形式可能有點難理解,不過回顧我們學過的線性代數課程中的線性方程組就可以知道,$bs^$就是$b$中每一列以向量$s^$每乙個元素為權重的線性組合。

我們熟悉的無監督降維演算法如pca也是通過找到一組基,然後將資料投影到這組基座標下,不同的是pca找到的基是完備的,即一般$kp$),這就產生了乙個問題:這樣產生的表示不唯一

這裡具體解釋一下,我們都學過線性代數,那麼可以把下面的式子想象為乙個線性方程組

$$  bs^ =x^ $$

式子中有$k$個變數,$p$個等式。由於$k>p$,即變元數大於方程數,因此有$k-p$個自由變元,所以導致這個方程組的解不唯一。

因此,在稀疏編碼演算法中,我們另加了乙個評判標準「稀疏性」來解決因超完備而導致的退化(degeneracy)問題。這種稀疏性帶來的結果是:$s^$中只有很少非0元素,其餘均是0。選擇使用具有稀疏性的分量來表示我們的輸入資料是有原因的,因為絕大多數的感官資料,比如自然影象,可以被表示成少量基本元素(即這裡的$b_j$)的疊加,在影象中這些基本元素可以是面或者線。同時,比如與初級視覺皮層的模擬過程也因此得到了提公升。

引入稀疏性的稀疏代價函式定義為:

$$ \sum_^n \left\|x^ - \sum_^ks^_jb_j\right\|^2+\lambda\sum_^n\sum_^k\omega(s^_j) $$

第一項是稀疏重構項,確保得到的表示能夠盡可能地擬合原始資料;第二項是稀疏懲罰項,確保得到的座標足夠稀疏,$\omega$是乙個稀疏代價函式,引數$\lambda$控制稀疏的程度,$\lambda$越大,結果越稀疏。

(注:參考資料1中的公式後一項沒有$\sum_^n$這一項,我覺得不對)

其可以進一步寫為矩陣形式:

$$ \sum_^n \left\|x - bs\right\|^2 + \lambda \sum_^n\sum_^k\omega(s^_j) $$

其中$x=[x^,x^,...,x^]$,$s=[s^,s^,...,s^]$

最簡單的稀疏代價函式是l0範數:$\omega(s^_j)=\begin1,&|s^_j|>0\\0,&|s^_j|=0\end$,即向量$s^$中非零元素的個數。一方面,l0範數是不可導的,另一方面,l0範數的組合問題是np-hard的,所以通常不用l0。

現實中最常用的是l1範數:$\omega(s^_j)=|s^_j|$。l1範數優化是與l0範數優化最接近的凸優化問題(convex optimization problem),並且相關研究發現,當得到的表示足夠稀疏時,l0範數與l1等價。

此外,減小$s_j$或增大$b_j$會使稀疏懲罰項變得很小,因此必須限制$\left\|b\right\|^2$小於某個常數$c$,即$\left\|b\right\|^2注意,稀疏編碼只是獲得稀疏表示的一種方式,但不是唯一的方式。

個人稀疏編碼筆記

b ax其中,a rn m b r n,x rm,n m 因為的行數 方程個數 n 多於未知引數的個數 m,因此上述方程組是欠定的,其解為 無解or無窮多解,為了保證上述方程有解,此後我們假定 a 是滿秩矩陣。我們追求的結果是找到 b 的稀疏表示方法,也即設法找到a,x使得在該對映變換下,x 是 b...

稀疏編碼 Sparse Coding

影象是有一些基的線性組合形成。自然影象是個稀疏結構,即任何給定影象都可以用大資料裡面的少數幾個描述符 基 來表示。尋找使得每個係數的概率分布是單模態並且在0處是峰分布的低熵 low entropy 方法。1988年,神經稀疏編碼的概念由mitchison提出,由牛津大學的rolls等正式引用。靈長目...

快速稀疏編碼演算法

self taught learning是 honglak lee 等開發的乙個 matlab 框架,能夠實現他們在 self taught learning transfer learningfrom unlabeled data 和efficient sparse coding algorith...