稀疏模型与结构性稀疏模型

稀疏编码系列:

---------------------------------------------------------------------------

       

        之前几次讲到了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之间在语义层次上的关联、结构层次上的关联,等等。

posted @ 2014-10-14 11:07  代码学习者coding  阅读(2217)  评论(0编辑  收藏  举报