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 而如今,稀疏編碼已經用於許多領域,如影象復原,訊號分類,人臉識別,分類等...