快速稀疏編碼演算法

2021-07-11 06:53:24 字數 3002 閱讀 3789

self-taught learning是

honglak lee

等開發的乙個

matlab

框架,能夠實現他們在**

self-taught learning transfer learningfrom unlabeled data

和efficient sparse coding algorithms

中提出的快速實現影象稀疏編碼的演算法。

先看第一篇**《self-taught learning

:transfer learning from unlabeled data

主要思想:

在監督分類演算法的資料中,加入部分unlabel

的資料,未標資料不一定和訓練集資料從屬同一類類別,在建模過程中,首先根據未標資料訓練出一組基,然後對訓練集的資料用該空間的基表示,最後使用

svm或其他分類演算法進行分類。

ps.這種方法不同於semi-supervised learning

,後者需要加入的未標資料,必須跟訓練集具有相同型別的類別,例如想要對大象和犀牛的影象集分類,就必須加入大象和犀牛的未標影象,而

self-taught learning

可以加入任意影象比如自然景色等。

加入未標資料是為了使影象的特徵變得稀疏,能夠加速訓練的計算速度。

符號約定:

演算法介紹

第一步:根據未標資料學習一組表示影象的基。

對於未標資料,提出如下的優化公式:

優化的目標是基向量組b

和稀疏係數a。

k是輸入資料的個數,

s是新空間的維度,

n是原始輸入空間的維度。所以,b是

s*n的矩陣,a是

k*s的矩陣。上面的公式有兩項需要優化,左邊項的目的是用一組基來表示輸入資料,並且使得誤差最小,右邊項引入了

l1規則作為懲罰項,使得學習出來的係數

a大部分是零。

保持a不變求b

,或者保持

b不變求

a,都是凸優化問題,可以用梯度下降等方法求得。

這裡補充一下l1/l2

規則化。(在第二篇**裡提到過)

常用的規則化函式有下面三種:

第一種是l1

規則化,即

1範數。第二種是加上引數的

l1規則化。第三種是

log規則化。前兩種作為稀疏函式求解都是凸優化的問題,所以比較常用,而且

l1規則化通常用於產生稀疏,對不相關特徵也有很好的魯棒性。

第二步:根據上步的基,表示已標資料。

對每個已標資料,根據第一步中得到的一組基,通過優化下面的公式得到其稀疏係數a:

這就變成了l1

規則化最小二乘問題,可以優化出稀疏向量來表示輸入。

第三步:將得到的資料特徵輸入分類器進行分類。

將上步得到的訓練資料的特徵輸入分類器(例如svm

)中進行分類。

完整演算法偽**:

**中還涉及到了與其他演算法(pca

)的對比,以及實驗,這裡略過不提。

再看第二篇**《efficient sparse coding algorithms

》有了上面的基礎,如何快速稀疏編碼就會更容易理解,大體思路是一樣的,不同之處在於優化公式有所改變,如下:

生成模型的誤差服從(mean=0, cov=

σ2i)的高斯分布,上式用矩陣表示如下:

當b固定求

s,或者

s固定求

b的時候,都是凸優化問題。在這篇**裡,交替的求b和

s(保持另乙個固定)。當學習

b時,問題變成了最小二乘優化問題,解決方法有

qcqp

、梯度下降,問題是

qcqp

求解速度慢,梯度下降收斂慢,**提出使用「

lagrange dual

」求解。當學習

s時,問題變成了規則化最小二乘問題,**裡使用「

generic qp

」方法解決。

這篇**我還沒有看完,現在存在這樣的問題:

1、我還不太明白最小二乘、規則化最小二乘是啥意思。

2、lagrange dual方法還沒看具體是怎樣推導的。

3、generic qp也沒看怎麼推導的。

matlab**的使用方法

作者提供了self-taught learning

框架的matlab

**,。

使用方法:

1. download images.mat from 

2. copy images.mat to ./data directory

3. move to ./code 

4. run matlab and execute:

"demo_fast_sc(1)": epsilon-l1 sparsity penalty

"demo_fast_sc(2)": l1 sparsity penalty

稀疏編碼 Sparse Coding

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

個人稀疏編碼筆記

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

稀疏編碼筆記1

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