pre:
面試發現自己老講不條理自己的研究工作,還是要先梳理下。鑑於motivation,本文是側重結構化的15分鐘talk draft,而非務求詳盡。有興趣的歡迎私下討論。
abstract:
1.sparse background
2.dl(dictionary learning)是什麼,用途,為什麼好
3.我的dc(customization)工作
i.稀疏模型
稀疏模型是最近幾年比較hot的技術,在訊號處理(壓縮感知)、計算機視覺(比如jpeg壓縮)領域影響比較大,在機器學習框架則可以看做是一種特徵處理相關的模型。
具體的,稀疏表示是指在超完備字典
d d
(超完備是說字典行數小於列數)中用盡可能少的原子來表示訊號
x x
,即:
minα∥
α∥0,
s.t.
x=dα
. minα∥α∥0,s.t.x=dα.
考慮雜訊就是
minα∥x
−dα∥
22+λ
∥α∥0
, minα∥x−dα∥22+λ∥α∥0,
α α
的size比
x x
大很多,但是非零元素比
x x
的size小很多很多。
稀疏的優點主要在於它是非線性模型,所以表達能力更強。具體來說,每個訊號稀疏係數的非零元素位置不同(所謂的support),所以每個訊號可以看做被投影到了不同的線性子空間,這是和正交字典-pca之類的最大區別。而為什麼在視覺影象裡應用尤其多,也正是因為每張影象(如人臉)可以看做處於高維空間的乙個低維子空間上(其實還有些研究用流形做子空間建模的)。
稀疏模型研究方向主要包括係數求解(即上面那個問題,經典演算法有omp貪心、lasso凸鬆弛和l1
/2l1/2
非凸鬆弛),字典學習(獲得更好的
d d
,經典演算法有mod和k-svd交替迭代)和模型應用。
ii.字典學習
顯然稀疏表達的效果好壞和我們用的字典有著密切的關係。字典分兩類,一種是預先給定的分析字典,比如小波基、dct等,另一種則是針對特定資料集學習出特定的字典。這種學出來的字典能大大提公升在特定資料集的效果。
給定訓練樣本x=
ni=1
w=i=1n
,所以優化目標是
mind,w
∥x−d
w∥2f
,s.t
.∥wi
∥0≤s
. mind,w∥x−dw∥f2,s.t.∥wi∥0≤s.
這個目標函式非凸,一般用交替迭代思想來解,即分別固定d和w,更新另乙個,很多變種演算法。目標函式分析起來比較難,所以這方面理論還比較弱,agarwal,gribonval等一幫人在搞。
應用方面往往稀疏表達和字典學習是混雜的,這裡主要介紹下影象去噪、超解析度和人臉識別,這三個例子效果都很好,貌似已經拿到工業界用了。
1.影象去噪(elad)
對乙個noisy image,把乙個patch看做乙個sample或signal,比如可以是乙個8乘8的patch,拉成一列64維的向量,乙個image可以從左上角到右下角視窗1滑動取樣得到很多這樣的patch。
(1)拿這些patches作為訓練樣本,用如k-svd之類的演算法可以學得字典d。(也可以用dct等做字典)
(2)用d對patch進行稀疏表達,拿稀疏係數再根據字典d重建patch,丟失掉的那部分資訊主要就是雜訊資訊,這樣就起到了去噪的作用(這是利用雜訊的性質,去噪後整個會變得光滑)。
2.超解析度(mayi)
(1)最主要的假設是高解析度影象的patches xh
xh和對應的低解析度影象的patches xl
xl,在相應的字典dh
dh和d
l dl
上有相同的係數。這樣的話,就可以把低解析度影象先根據dl
dl得到稀疏係數,再根據dh
dh重建patches。
(2)剩下的問題是怎樣學習得到dl
dl和d
h dh
,即對於大量訓練樣本 patch-pairs (x
l,xh
) (xl,xh)
, 優化目標函式:
mindh,
dl,w
∥xh−
dhw∥
2f+∥
xl−d
lw∥2
f,s.
t.∥w
i∥0≤
s.mindh,dl,w∥xh−dhw∥f2+∥xl−dlw∥f2,s.t.∥wi∥0≤s.
(3)tricks: 對於xl
xl,特徵用bicubic和高通濾波做了拓展。
(4)elad學字典換了種方法,先k-svd學dl
dl,而d
h dh
通過下式得到
dh=xhw
t(ww
t)−1
. dh=xhwt(wwt)−1.
3.人臉識別(jiang)
上面兩個應用都是把單個patch作為sample,在做分類是則通常把一張image作為乙個sample。因為一張拉成一列向量太大,首先會把投影到m維特徵向量
y y
這裡介紹jiang zuolin的工作,他把字典
d d
和線性分類器
w w
一同學習得到,具體損失函式是
mind,w
,a,x
∥y−d
x∥2f
+α∥q
−ax∥
2f+β
∥h−w
x∥2f
,s.t
.∀i,
∥xi∥
0≤t mind,w,a,x∥y−dx∥f2+α∥q−ax∥f2+β∥h−wx∥f2, s.t.∀i,∥xi∥0≤t
這裡(y,h)
(y,h)
是訓練樣本(feature,label),q那一項是乙個label consistent項,用來加大字典原子的類別區分度的,構建方法不贅述了。
這個問題可以化為乙個標準的字典學習問題,然後用一般字典學習方法求解。
mind,w
,a,x
∥⎛⎝⎜
yα√q
β√h⎞
⎠⎟−⎛
⎝⎜dα
√aβ√
w⎞⎠⎟
x∥2f
s.t.
∀i,∥
xi∥0
≤tmind,w,a,x ∥( y αq βh ) − ( d αa βw ) x∥f2 s.t.∀i,∥xi∥0≤t
這樣的話,每新來乙個樣本,就先隨機投影得到特徵向量,然後用
d d
得到稀疏係數,再用w對稀疏**得出label。
此外,還有種方法是每個人對應乙個字典,新來一張圖,算和哪個字典構建誤差最小來**。
順便比較下和deep learning,第一,潛力不如deep learning(吐槽下大量搞稀疏的人跑去搞deep learning了),第二,某種程度,deep learning也是稀疏思想,第三,dictionary learning相比優點就是沒有那麼多蛋疼的調參和tricks,簡單有效代價低。
iii.我的字典個性化工作
首先來說字典學習的思想,本質上,字典學習是學得乙個更specialized的字典,這樣的話對於特定的資料集就更加有效了。但是還是有幾個問題,第一,學習的效果需要充足的樣本來guarantee,第二,學習的代價是時間和計算,這就導致了很多時候不夠specialized。比如往往只是specialize到了人類,而沒有specialize到某個人。
所以我做的工作主要是得到更specialized的字典,也即字典個性化。鑑於還在審稿,具體方法不描述了。
稀疏表示 字典學習
online learning toolbox francesco orabona machine perception toolbox mpt 偶然的機會發現了這個工具箱,雖說05年都沒有再更新了,但是很多東西還是可以借鑑的。很好的乙個工具箱,功能包含face detection,eye dete...
字典學習與稀疏表示
假設我們用乙個m n的矩陣表示資料集x,每一行代表乙個樣本,每一列代表樣本的乙個屬性,一般而言,該矩陣是稠密的,即大多數元素不為0。稀疏表示的含義是,尋找乙個係數矩陣a k n 以及乙個字典矩陣b m k 使得b a盡可能的還原x,且a盡可能的稀疏。a便是x的稀疏表示。x是y的稀疏表示 sparse...
稀疏編碼和字典學習
這個問題一直想解決,看了很久都沒有想通,deep learning 深度學習 學習筆記整理系列之 五 寫的通俗易懂,作為csdn的部落格專家,以後經常拜讀他的文章。sparse coding稀疏編碼 如果我們把輸出必須和輸入相等的限制放鬆,同時利用線性代數中基的概念,即o a1 1 a2 2 an ...