SRC(稀疏)参考

今天学习了一下稀疏编码,自己做点笔记,SRC算法就是利用训练样本数据和测试样本数据之间的关系找到一个稀疏矩阵,本质就是寻找这样一个矩阵,即一个稀疏的、超完备基向量集,来覆盖我们的输入数据空间。

Xi表示第i类的训练样本,大小为d*li,d为特征维数,li为样本数量。将所有类别(K类)的训练样本组合成一个矩阵为D=[X1 ... Xi ... XK],大小为d*l。对于任意一个测试样本,可以表示成如下的线性方式:

                                                       y = Da                    (1)

根据线性代数的知识,已知Dy,系数a可以方便的求解出来。但是,一般情况下,远大于d。因此,公式(1)没有唯一的解。为了得到唯一的解,需要添加一个约束条件,即系数尽可能的稀疏。因此公式(1)演变为如下的最优问题

                  y = Da   s.t. min ||a|| 1            (2)

上述的问题等同于如下问题:

                                                       min ||a|| 1  s.t.y = Da        (3)

该问题属于一种线性约束的最优化问题。

求解得到合适的最优系数a*后,利用残差来确定相应的类别,方法如下:
                                             y* = arg mini ei(y), ei(y) = ||y - Xiai*||2          (4)
通过公式(4)求解对应的类别。


以下主要是根据SRC的部分改进,其中之一是利用每一类样本单独进行训练得到字典,我看的文章主要是针对测试样本不能用训练样本稀疏表示,采用的是先对测试样本进行效正,在利用效正后的测试样本进行稀疏表示求解。


算法模型如式5):   τ=argminx1+e1subj Tyτ=Ax+e5
其中y是原始图像τ是仿射变换参数T(·)是仿射变换算子Tyτ表示测试样本y 经过仿射变换与训练样本对齐后的图像

为了避免陷入局部最小值本算法将每一类用户的训练图像单独用作训练字典算法模型变为式6):
τ=argmine1subj Tyτ=Aix+ei=12k6其中k 表示训练图像中的种类
假设测试样本与训练样本只存在微小的平移偏差 则可以通过一阶泰勒展开式来近似校正后的测试图像

T(y,τ)≈y+Δx·Yx +Δy·Yy(7)其中 ,Yx是图像 y 水 平 方 向 的 一 阶 导 数 ,Yy表示图像 y竖直方向的一阶导数

再将每次得到的相对偏移量累加,最终得到原始的测试样本相对于同类训练样本偏移量。

τ=argmin‖e‖1 subj y+Δx·Yx+Δy·Yy=Ai x+e   (8)
等价τ=argmine1subj y=Aix-Δx·Yx-Δy·Yy+e=Bw9 

(中间计算和推理有省略)

最后将模型写成:
arg minx01+e01subj y=TAiτ-1i x+ei=12k) (10
Idetifyy=arg minei2i=12k) (11 

我想到了以下几点:
第一是正则化,个人认为就是原始模型拟合得不够理想的时候,加入正则化可以使得模型拟合得更为理想;
第二就是稀疏编码,自编码神经网络也属于稀疏编码,可以将以上的改进方法将稀疏自编码结合。

第三在求解的时候最后采用的是L1和L2范数的混合使用,可以考虑不同范数,比如Lp范数等等。

文章上面的内容是别人滴进行的个人总结,文章最后提出了自己的改进想法和观点





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章