研究领域总结(一):稀疏——字典学习 - aezero - 博客园

Pre:

面试发现自己老讲不条理自己的研究工作,还是要先梳理下。鉴于motivation,本文是侧重结构化的15分钟talk draft,而非务求详尽。有兴趣的欢迎私下讨论。

 

Abstract:

本文主要介绍稀疏模型相关,侧重于字典学习和具体应用。

1.sparse background

2.DL(DIctionary Learning)是什么,用途,为什么好

3.我的DC(Customization)工作

 

I.稀疏模型

  稀疏模型是最近几年比较hot的技术,在信号处理(压缩感知)、计算机视觉(比如JPEG压缩)领域影响比较大,在机器学习框架则可以看做是一种特征处理相关的模型。

稀疏模型架构和稠密_迭代

D(超完备是说字典行数小于列数)中用尽可能少的原子来表示信号

稀疏模型架构和稠密_经典算法_02

x,即:

 

稀疏模型架构和稠密_经典算法_03

稀疏模型架构和稠密_经典算法_04

稀疏模型架构和稠密_经典算法_05

稀疏模型架构和稠密_数据集_06

稀疏模型架构和稠密_迭代_07

稀疏模型架构和稠密_迭代_08

稀疏模型架构和稠密_迭代_07

稀疏模型架构和稠密_数据集_10

稀疏模型架构和稠密_经典算法_11

稀疏模型架构和稠密_稀疏模型架构和稠密_12

稀疏模型架构和稠密_数据集_13

稀疏模型架构和稠密_迭代_14

稀疏模型架构和稠密_数据集_13

稀疏模型架构和稠密_经典算法_02

稀疏模型架构和稠密_经典算法_17

稀疏模型架构和稠密_迭代

稀疏模型架构和稠密_迭代_08

稀疏模型架构和稠密_数据集_13

minα∥α∥0,s.t.x=Dα.

 

考虑噪声就是

 

稀疏模型架构和稠密_经典算法_03

稀疏模型架构和稠密_经典算法_04

稀疏模型架构和稠密_经典算法_05

稀疏模型架构和稠密_数据集_06

稀疏模型架构和稠密_迭代_07

稀疏模型架构和稠密_经典算法_02

稀疏模型架构和稠密_迭代_27

稀疏模型架构和稠密_迭代

稀疏模型架构和稠密_迭代_08

稀疏模型架构和稠密_迭代_07

稀疏模型架构和稠密_数据集_31

稀疏模型架构和稠密_数据集_31

稀疏模型架构和稠密_迭代_33

稀疏模型架构和稠密_数据集_34

稀疏模型架构和稠密_迭代_07

稀疏模型架构和稠密_迭代_08

稀疏模型架构和稠密_迭代_07

稀疏模型架构和稠密_数据集_10

稀疏模型架构和稠密_经典算法_11

minα∥x−Dα∥22+λ∥α∥0,

 

稀疏模型架构和稠密_迭代_08

α的size比

稀疏模型架构和稠密_经典算法_02

x大很多,但是非零元素比

稀疏模型架构和稠密_经典算法_02

x的size小很多很多。

  稀疏的优点主要在于它是非线性模型,所以表达能力更强。具体来说,每个信号稀疏系数的非零元素位置不同(所谓的support),所以每个信号可以看做被投影到了不同的线性子空间,这是和正交字典-PCA之类的最大区别。而为什么在视觉图像里应用尤其多,也正是因为每张图像(如人脸)可以看做处于高维空间的一个低维子空间上(其实还有些研究用流形做子空间建模的)。

稀疏模型架构和稠密_迭代_43

稀疏模型架构和稠密_经典算法_44

稀疏模型架构和稠密_数据集_45

稀疏模型架构和稠密_数据集_31

l1/2非凸松弛),字典学习(获得更好的

稀疏模型架构和稠密_迭代

D,经典算法有MOD和K-SVD交替迭代)和模型应用。

  

II.字典学习

  显然稀疏表达的效果好坏和我们用的字典有着密切的关系。字典分两类,一种是预先给定的分析字典,比如小波基、DCT等,另一种则是针对特定数据集学习出特定的字典。这种学出来的字典能大大提升在特定数据集的效果。

稀疏模型架构和稠密_经典算法_48

稀疏模型架构和稠密_经典算法_17

稀疏模型架构和稠密_经典算法_50

稀疏模型架构和稠密_经典算法_02

稀疏模型架构和稠密_经典算法_52

稀疏模型架构和稠密_迭代_07

稀疏模型架构和稠密_迭代_54

稀疏模型架构和稠密_经典算法_52

稀疏模型架构和稠密_经典算法_56

稀疏模型架构和稠密_经典算法_44

X={xi∥i=1n,我们要所有样本在字典

稀疏模型架构和稠密_迭代

D上有稀疏表达

稀疏模型架构和稠密_迭代_59

稀疏模型架构和稠密_经典算法_17

稀疏模型架构和稠密_经典算法_50

稀疏模型架构和稠密_经典算法_62

稀疏模型架构和稠密_经典算法_52

稀疏模型架构和稠密_迭代_64

稀疏模型架构和稠密_迭代_54

稀疏模型架构和稠密_经典算法_52

稀疏模型架构和稠密_经典算法_56

稀疏模型架构和稠密_经典算法_44

W={wi}i=1n,所以优化目标是

 

稀疏模型架构和稠密_经典算法_03

稀疏模型架构和稠密_经典算法_04

稀疏模型架构和稠密_经典算法_05

稀疏模型架构和稠密_迭代_72

稀疏模型架构和稠密_迭代_73

稀疏模型架构和稠密_迭代_74

稀疏模型架构和稠密_迭代_07

稀疏模型架构和稠密_经典算法_48

稀疏模型架构和稠密_迭代_27

稀疏模型架构和稠密_迭代

稀疏模型架构和稠密_迭代_59

稀疏模型架构和稠密_迭代_07

稀疏模型架构和稠密_数据集_31

稀疏模型架构和稠密_经典算法_82

稀疏模型架构和稠密_经典算法_11

稀疏模型架构和稠密_稀疏模型架构和稠密_12

稀疏模型架构和稠密_数据集_13

稀疏模型架构和稠密_迭代_14

稀疏模型架构和稠密_数据集_13

稀疏模型架构和稠密_迭代_07

稀疏模型架构和稠密_经典算法_62

稀疏模型架构和稠密_经典算法_52

稀疏模型架构和稠密_迭代_07

稀疏模型架构和稠密_数据集_10

稀疏模型架构和稠密_迭代_93

稀疏模型架构和稠密_稀疏模型架构和稠密_12

稀疏模型架构和稠密_数据集_13

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)

稀疏模型架构和稠密_经典算法_02

稀疏模型架构和稠密_稀疏模型架构和稠密_97

xh和对应的低分辨率图像的patches 

稀疏模型架构和稠密_经典算法_02

稀疏模型架构和稠密_迭代_99

xl,在相应的字典

稀疏模型架构和稠密_迭代

稀疏模型架构和稠密_稀疏模型架构和稠密_97

Dh和

稀疏模型架构和稠密_迭代

稀疏模型架构和稠密_迭代_99

Dl上有相同的系数。这样的话,就可以把低分辨率图像先根据

稀疏模型架构和稠密_迭代

稀疏模型架构和稠密_迭代_99

Dl得到稀疏系数,再根据

稀疏模型架构和稠密_迭代

稀疏模型架构和稠密_稀疏模型架构和稠密_97

Dh重建patches。

稀疏模型架构和稠密_迭代

稀疏模型架构和稠密_迭代_99

Dl和

稀疏模型架构和稠密_迭代

稀疏模型架构和稠密_稀疏模型架构和稠密_97

Dh,即对于大量训练样本 patch-pairs  

稀疏模型架构和稠密_数据集_112

稀疏模型架构和稠密_经典算法_48

稀疏模型架构和稠密_迭代_99

稀疏模型架构和稠密_经典算法_11

稀疏模型架构和稠密_经典算法_48

稀疏模型架构和稠密_稀疏模型架构和稠密_97

稀疏模型架构和稠密_经典算法_118

(Xl,Xh), 优化目标函数:

 

稀疏模型架构和稠密_经典算法_03

稀疏模型架构和稠密_经典算法_04

稀疏模型架构和稠密_经典算法_05

稀疏模型架构和稠密_迭代_72

稀疏模型架构和稠密_稀疏模型架构和稠密_123

稀疏模型架构和稠密_迭代_73

稀疏模型架构和稠密_迭代_72

稀疏模型架构和稠密_迭代_126

稀疏模型架构和稠密_迭代_73

稀疏模型架构和稠密_迭代_74

稀疏模型架构和稠密_迭代_07

稀疏模型架构和稠密_经典算法_48

稀疏模型架构和稠密_稀疏模型架构和稠密_97

稀疏模型架构和稠密_迭代_27

稀疏模型架构和稠密_迭代

稀疏模型架构和稠密_稀疏模型架构和稠密_97

稀疏模型架构和稠密_迭代_59

稀疏模型架构和稠密_迭代_07

稀疏模型架构和稠密_数据集_31

稀疏模型架构和稠密_经典算法_82

稀疏模型架构和稠密_迭代_33

稀疏模型架构和稠密_迭代_07

稀疏模型架构和稠密_经典算法_48

稀疏模型架构和稠密_迭代_99

稀疏模型架构和稠密_迭代_27

稀疏模型架构和稠密_迭代

稀疏模型架构和稠密_迭代_99

稀疏模型架构和稠密_迭代_59

稀疏模型架构和稠密_迭代_07

稀疏模型架构和稠密_数据集_31

稀疏模型架构和稠密_经典算法_82

稀疏模型架构和稠密_经典算法_11

稀疏模型架构和稠密_稀疏模型架构和稠密_12

稀疏模型架构和稠密_数据集_13

稀疏模型架构和稠密_迭代_14

稀疏模型架构和稠密_数据集_13

稀疏模型架构和稠密_迭代_07

稀疏模型架构和稠密_经典算法_62

稀疏模型架构和稠密_经典算法_52

稀疏模型架构和稠密_迭代_07

稀疏模型架构和稠密_数据集_10

稀疏模型架构和稠密_迭代_93

稀疏模型架构和稠密_稀疏模型架构和稠密_12

稀疏模型架构和稠密_数据集_13

minDh,Dl,W∥Xh−DhW∥F2+∥Xl−DlW∥F2,s.t.∥wi∥0≤s.

 

稀疏模型架构和稠密_经典算法_48

稀疏模型架构和稠密_迭代_99

Xl,特征用Bicubic和高通滤波做了拓展。

稀疏模型架构和稠密_迭代

稀疏模型架构和稠密_迭代_99

Dl,而

稀疏模型架构和稠密_迭代

稀疏模型架构和稠密_稀疏模型架构和稠密_97

Dh通过下式得到

 

稀疏模型架构和稠密_迭代

稀疏模型架构和稠密_稀疏模型架构和稠密_97

稀疏模型架构和稠密_经典算法_17

稀疏模型架构和稠密_经典算法_48

稀疏模型架构和稠密_稀疏模型架构和稠密_97

稀疏模型架构和稠密_迭代_59

稀疏模型架构和稠密_迭代_175

稀疏模型架构和稠密_数据集_112

稀疏模型架构和稠密_迭代_59

稀疏模型架构和稠密_迭代_59

稀疏模型架构和稠密_迭代_175

稀疏模型架构和稠密_经典算法_118

稀疏模型架构和稠密_数据集_181

稀疏模型架构和稠密_经典算法_44

稀疏模型架构和稠密_数据集_13

Dh=XhWT(WWT)−1.

 

  3.人脸识别(Jiang)

稀疏模型架构和稠密_经典算法_184

y,投影方法一般是用一个随机产生的mean为0的高斯分布(参考随机投影保距降维相关资料)。这里介绍Jiang Zuolin的工作,他把字典

稀疏模型架构和稠密_迭代

D和线性分类器

稀疏模型架构和稠密_迭代_59

W一同学习得到,具体损失函数是

 

稀疏模型架构和稠密_经典算法_03

稀疏模型架构和稠密_经典算法_04

稀疏模型架构和稠密_经典算法_05

稀疏模型架构和稠密_迭代_72

稀疏模型架构和稠密_迭代_73

稀疏模型架构和稠密_迭代_74

稀疏模型架构和稠密_迭代_73

稀疏模型架构和稠密_经典算法_194

稀疏模型架构和稠密_迭代_73

稀疏模型架构和稠密_稀疏模型架构和稠密_196

稀疏模型架构和稠密_迭代_07

稀疏模型架构和稠密_数据集_198

稀疏模型架构和稠密_迭代_27

稀疏模型架构和稠密_迭代

稀疏模型架构和稠密_经典算法_48

稀疏模型架构和稠密_迭代_07

稀疏模型架构和稠密_数据集_31

稀疏模型架构和稠密_经典算法_82

稀疏模型架构和稠密_迭代_33

稀疏模型架构和稠密_迭代_08

稀疏模型架构和稠密_迭代_07

稀疏模型架构和稠密_稀疏模型架构和稠密_208

稀疏模型架构和稠密_迭代_27

稀疏模型架构和稠密_经典算法_210

稀疏模型架构和稠密_经典算法_48

稀疏模型架构和稠密_迭代_07

稀疏模型架构和稠密_数据集_31

稀疏模型架构和稠密_经典算法_82

稀疏模型架构和稠密_迭代_33

稀疏模型架构和稠密_数据集_216

稀疏模型架构和稠密_迭代_07

稀疏模型架构和稠密_迭代_218

稀疏模型架构和稠密_迭代_27

稀疏模型架构和稠密_迭代_59

稀疏模型架构和稠密_经典算法_48

稀疏模型架构和稠密_迭代_07

稀疏模型架构和稠密_数据集_31

稀疏模型架构和稠密_经典算法_82

稀疏模型架构和稠密_经典算法_11

稀疏模型架构和稠密_稀疏模型架构和稠密_12

稀疏模型架构和稠密_数据集_13

稀疏模型架构和稠密_迭代_14

稀疏模型架构和稠密_数据集_13

稀疏模型架构和稠密_稀疏模型架构和稠密_230

稀疏模型架构和稠密_经典算法_231

稀疏模型架构和稠密_经典算法_11

稀疏模型架构和稠密_迭代_07

稀疏模型架构和稠密_经典算法_02

稀疏模型架构和稠密_经典算法_52

稀疏模型架构和稠密_迭代_07

稀疏模型架构和稠密_数据集_10

稀疏模型架构和稠密_迭代_93

稀疏模型架构和稠密_数据集_239

minD,W,A,X∥Y−DX∥F2+α∥Q−AX∥F2+β∥H−WX∥F2, s.t.∀i,∥xi∥0≤T

 

这里

稀疏模型架构和稠密_数据集_112

稀疏模型架构和稠密_数据集_198

稀疏模型架构和稠密_经典算法_11

稀疏模型架构和稠密_迭代_218

稀疏模型架构和稠密_经典算法_118

(Y,H)是训练样本(feature,label),Q那一项是一个label consistent项,用来加大字典原子的类别区分度的,构建方法不赘述了。

这个问题可以化为一个标准的字典学习问题,然后用一般字典学习方法求解。  

 

稀疏模型架构和稠密_经典算法_03

稀疏模型架构和稠密_经典算法_04

稀疏模型架构和稠密_经典算法_05

稀疏模型架构和稠密_迭代_72

稀疏模型架构和稠密_迭代_73

稀疏模型架构和稠密_迭代_74

稀疏模型架构和稠密_迭代_73

稀疏模型架构和稠密_经典算法_194

稀疏模型架构和稠密_迭代_73

稀疏模型架构和稠密_稀疏模型架构和稠密_196

稀疏模型架构和稠密_迭代_07

稀疏模型架构和稠密_数据集_256

稀疏模型架构和稠密_迭代_257

稀疏模型架构和稠密_经典算法_258

稀疏模型架构和稠密_经典算法_258

稀疏模型架构和稠密_数据集_198

稀疏模型架构和稠密_迭代_08

稀疏模型架构和稠密_数据集_262

稀疏模型架构和稠密_稀疏模型架构和稠密_208

稀疏模型架构和稠密_数据集_216

稀疏模型架构和稠密_迭代_265

稀疏模型架构和稠密_迭代_218

稀疏模型架构和稠密_数据集_267

稀疏模型架构和稠密_迭代_268

稀疏模型架构和稠密_数据集_269

稀疏模型架构和稠密_数据集_269

稀疏模型架构和稠密_迭代_27

稀疏模型架构和稠密_数据集_256

稀疏模型架构和稠密_迭代_257

稀疏模型架构和稠密_经典算法_258

稀疏模型架构和稠密_经典算法_258

稀疏模型架构和稠密_迭代

稀疏模型架构和稠密_迭代_08

稀疏模型架构和稠密_数据集_262

稀疏模型架构和稠密_经典算法_210

稀疏模型架构和稠密_数据集_216

稀疏模型架构和稠密_迭代_265

稀疏模型架构和稠密_迭代_59

稀疏模型架构和稠密_数据集_267

稀疏模型架构和稠密_迭代_268

稀疏模型架构和稠密_数据集_269

稀疏模型架构和稠密_数据集_269

稀疏模型架构和稠密_经典算法_48

稀疏模型架构和稠密_迭代_07

稀疏模型架构和稠密_数据集_31

稀疏模型架构和稠密_经典算法_82

稀疏模型架构和稠密_稀疏模型架构和稠密_12

稀疏模型架构和稠密_数据集_13

稀疏模型架构和稠密_迭代_14

稀疏模型架构和稠密_数据集_13

稀疏模型架构和稠密_稀疏模型架构和稠密_230

稀疏模型架构和稠密_经典算法_231

稀疏模型架构和稠密_经典算法_11

稀疏模型架构和稠密_迭代_07

稀疏模型架构和稠密_经典算法_02

稀疏模型架构和稠密_经典算法_52

稀疏模型架构和稠密_迭代_07

稀疏模型架构和稠密_数据集_10

稀疏模型架构和稠密_迭代_93

稀疏模型架构和稠密_数据集_239

minD,W,A,X  ∥(  Y  αQ  βH  )  −  (  D  αA  βW  )  X∥F2  s.t.∀i,∥xi∥0≤T

 

这样的话,每新来一个样本,就先随机投影得到特征向量,然后用

稀疏模型架构和稠密_迭代

D得到稀疏系数,再用W对稀疏预测得出label。

此外,还有种方法是每个人对应一个字典,新来一张图,算和哪个字典构建误差最小来预测。

顺便比较下和deep learning,第一,潜力不如deep learning(吐槽下大量搞稀疏的人跑去搞deep learning了),第二,某种程度,deep learning也是稀疏思想,第三,dictionary learning相比优点就是没有那么多蛋疼的调参和tricks,简单有效代价低。

 

III.我的字典个性化工作

首先来说字典学习的思想,本质上,字典学习是学得一个更specialized的字典,这样的话对于特定的数据集就更加有效了。但是还是有几个问题,第一,学习的效果需要充足的样本来guarantee,第二,学习的代价是时间和计算,这就导致了很多时候不够specialized。比如往往只是specialize到了人类,而没有specialize到某个人。

所以我做的工作主要是得到更specialized的字典,也即字典个性化。鉴于还在审稿,具体方法不描述了。

ζั͡ޓއ genji - 至此只为原地流浪.......