Efficient Sparse Coding Algorithm

来源:互联网 发布:java实现网络爬虫 编辑:程序博客网 时间:2024/05/21 06:38

Efficient Sparse Coding Algorithm

以后把一些算法性的文章阅读笔记就贴在space里面吧,有两个好处,一个是便于自己以后查看,另一个是便于别的同学查看.
其实就一个好处,被我说成两个了,哈哈!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
http://www.stanford.edu/~hllee/nips06-sparsecoding.pdf

NIPS2006讲sparse coding的文章,这篇文章讲的算法是如何对目标函数
argmin_{A,x} f(A, x) = || y - Ax ||^2 +  lambda || x ||_1
s.t. ||A_i||^2< c
进行优化,
找到参数A和x,使得f(x)最小;其中lambda,c是超参。

这个算法的intuitive idea是这样的,算法想模拟人脑处理信息的模式,人脑中可以处理各种各样的信息,比如文本,图形,声音,气味,视觉,味觉,触觉等等。但是这些信息最根本的是通过什么来表达呢?哪就是neuron,和 activation. 人脑中neuron的个数我不知道确切的有多少,但是我想是billion 甚至是更多的数量级上的。但是,显然不是每个信息的表示都需要所有neuron参与,参与表示的neuron其实是被激活的,这就是activation的概念。这个算法中neuron对应着A,activation对应x (可能说反了,不过无所谓,以后看这个的时候能明白怎么回事)。Sparse coding的意思就包含在x里面,也就是说x是一个sparse的向量,因为在A中,只有一部分的basis 需要激活。

具体的算法,需要参看文章了。这里说一下他的大概思想,因为f(A,x)是convex的,相对于每一个参数单独来看的话。所以f(A,x)有global minimum?(不太懂2个参数的凸函数,这个是不确定的) 可以把两个参数分开看。当把G(x)=f(A,x)来看的话,G(x)是一个L-1 regularized least square problem; 当把 H(A)=f(A,x)来看的话,H(A)是一个L-2 constrained least square problem. H(A)通过解dual problem可以得到解。 G(x)通过他的feature sign search算法可以得到,search算法,先是initialize 一个x 通过在H(x)值下降的方向上去搜索合适的x和xi的符号,最后得到全局最优解。算法比较的时候,比LARS算法和其他算法快。

读完这个文章有一些问题:
1.这个文章是ICML07 self taught learning算法最重要的参考文献,还可以有别的应用么? 算法实际上会不会很慢呢?
2.Sparse coding和ICA算法有什么区别和联系呢?
3.Sparse coding, PCA, SVD, topic model都是把original feature space 投影到 new feature space当中来,什么时候适合用那一种投影方式?不知道那个paper有讲过。
我个人认为,sparse coding和pca最大的不同是, sparse coding 的target是两个方面的, 一方面要要最少的基(模版)来代表y, 二方面是误差最小。从它的目标函数可以看出来。 而pca的target是一个方面的,就是找出最少的基来代表整个数据整体(数据空间), 所以,pca是sub space learning, 而sparse coding 我觉得是一个基于模版的表示。 pca--> 基; sparse coding --> 模版. pca 用最少的基,保存最多的信息;sparse 是用大量的基cover整个空间,从而使得每一个数据只用少数的基就可以代表~~