稀疏模型与结构性稀疏模型
稀疏编码系列:
---------------------------------------------------------------------------
之前几次讲到了ScSPM,以及改进的LLC。SPM是不带结构性的稀疏编码,而LLC是考虑了结构性的稀疏编码。这次,我想更加全面地介绍一些结构性稀疏的内容。文章的最后会给出几个典型的例子,附加源代码(matlab版本的)和引文的pdf,供大家实验。
Data representation(不仅仅局限于图像)往往基于如下最小化问题:
(1)
其中X是观测到的数据的特征矩阵,D是字典
,Z是字典上的描述
。约束项
和
使得字典dictionary和描述code具有一定结构性。当D给定时,确定Z的过程叫做representation persuit。当D和Z同时未知时,确定D就是dictionary learning的问题。
稀疏表示,通常对Z做约束,使得Z中的每一列只能取少量的非0系数。其中最简单的约束项就是
(2)
这时问题就变成了LASSO。K-means + Hard-VQ则是一种更严格的稀疏编码,相比L1-norm的约束,Hard-VQ引入了严重的重建误差,所以效果会比较差。这是介绍ScSPM和LLC时候的内容了,这里简单重复一下。
LASSO被LLC改进的一个很重要原因,就是缺少smooth,其潜在的原因便是Z中的非0元素缺少结构信息(unstructured sparse coding)。所以,后面很多论文的工作就是提出带结构性的稀疏模型。我们将字典D中的每一个码字称为dictionary atoms。令表示为D中一些码字的集合,并将所有这类集合定义为G,即
。G中每一个group可以overlap也可以不overlap(这就对应于不同的group sparse model)。而约束项可以表示为:
(3)
其中是
的子向量(只取了group中的元素)。可以看出,对每一个group内部,利用了L2-norm。由于L2-norm本身不小于0,故group之间其实是L1-norm。这样的约束造成了group选择特性,即group成组地取0或不取0。这样仍然不够完美,因为group内部的各个atom不能满足稀疏性。于是就有方法提出,在(3)式之后再加(2)式作为约束,以保证group内的稀疏性,即:
(4)
可以看出当且各
,(3)就退化成了lasso。
关于常见的一些结构性稀疏,列举如下:
Hierarchical Sparse Coding[code | read more],认为非0的系数之间存在层次结构,即group与group之间要么不overlap,如果overlap则一个group必会包含另一个group。一种典型的层次结构就是tree结构
Overlapping group sparse coding[code |read more],则将约束relax,即允许group之间相互overlap。这个模型据说在genetic data的描述中十分有效,大家不妨试试
Graph-Guided Sparse Coding[code |read more],建立一个graph,graph中各结点是dictionary中的各个atom。Graph-Guided不同于以上的group sparse coding,它可以加入更加复杂的结构信息。它的形式是:
(5)
不同就不同在,这里
。从直观上理解,dictionary中的每个atom被视为图中的一个节点,而
则代表节点之间边的权重。而权重
是可以做很多文章的,比如考虑atom与atom之间在语义层次上的关联、结构层次上的关联,等等。
-----------------
作者:jiang1st2010
转载请注明出处:http://blog.csdn.net/jwh_bupt/article/details/12070273