sparse coding稀疏表达入门

时间:2022-08-09 06:29:41

最近在看sparse and redundant representations这本书,进度比较慢,不过力争看过的都懂,不把时间浪费掉。才看完了不到3页吧,书上基本给出了稀疏表达的概念以及传统的求法。我也用书中的例子来引入吧。

1:矩阵A(n*m),其中n远远小于m,一副图片经过缩小或者模糊处理导致该图片所占用的空间变小了,此时用向量b来表示,A表示图片所经过的处理,X代表原图片,那么这个就可以表示成为:

Ax=b

2:因为A是欠定的,一般情况下x的解有很多种,而我们要的是那种最稀疏的x。个人理解这个就是稀疏表达吧。

3:接下来文章引入了如何求x的方法,假定j(x)是求x最稀疏的函数,并且前提条件是Ax=b。用数学表达也就是

Min j(x) s.t. Ax=b

4:为了求出这个j(x),一般情况下这个j(x)对应的是x的范数||x||右下角2的平方最小值,为了求出||x||右下角2的平方最小值,我们引入了拉格朗日乘数。关于拉格朗日乘数,我在下面补充,省的再去找资料看了。

sparse coding稀疏表达入门

拉格朗日乘数:它是专门为某变量在其他约束条件下求极值的问题解决方案,当m个变量在K个约束条件下求极值的话,它把变成k+m个数来求变量的极值,给约束条件加一个乘子即可。也就是我们上面的列出来的。

为了求出x的最小值,对x求偏导(当导数为0的地方时极值点)最终得到结果如下:

sparse coding稀疏表达入门

那么X的最优化的解就是(是让上式为0得到的):

sparse coding稀疏表达入门

把该值代入最初的Ax=b中可以求得拉姆达的值,然后就得到X最优化的解为:

sparse coding稀疏表达入门

补充:个人对稀疏表达的理解是,如果输入为一个很复杂的A,为了得到稀疏的表达b,那么经过一系列的操作x得到b,我觉得目的是为了得到稀疏表达的b,但是书中给出的例子是这样,也可能我对信号处理这些地方从没有过接触,导致的不太理解。。目前看了3页书,实在觉得太难看下去了,看到一个点都要去复习几天的书,才能够连贯起来。。