K-SVD: An Algorithm for Designing Overcomplete Dictionaries for Sparse Representation
Paper:http://sites.fas.harvard.edu/~cs278/papers/ksvd.pdf
参考周志华《机器学习》
(阅读笔记,如有不当,敬请谅解)
1、写在前面
该篇论文是一篇methodology的论文,主要是解决稀疏表示的经典论文。
1.1、基本术语
- 什么是稀疏:一个数据的所有特征中,有很多的特征与当前要解决的问题是无关的(一般会在矩阵中就直接以0表示),这样就是稀疏。
- 优点:稀疏性很明显的具有数据开销小(0较多)的优点,学习器训练的难度也可能会很小。
- 如果数据本身它不是稀疏的,是稠密的,那么我们想让它有稀疏的优点,所以我们就可以对数据进行稀疏表示(Sparse Representation),而这个学习的过程就是字典学习,找到合适的字典,来转换成稀疏的表示形式。
1.2、稀疏表示的过程
给定数据集
X:{x1,x2,...,xm},即有:
B,αimini=1∑m∥xi−Bαi∥22+λi=1∑m∥αi∥1
其中
B∈Rd×k是字典矩阵(转换的桥梁),
k是字典的词汇量(样本数),
d是样本特征数。很明显的,通过矩阵运算,上述公式目标有两点,其一:通过2范数,使
Bαi=xi,其二:通过1范数,
αi尽可能稀疏(0变多)。
即
αi∈Rk是样本
xi∈Rd的稀疏表示,
αi和
xi都是列向量,列向量中的元素就是该样本的特征数据。
1.3、如何求
B和
αi
分成两个步骤,先固定字典矩阵
B求
αi,再固定
αi求
B:
αimin∥xi−Bαi∥22+λ∥αi∥1
统一把
αi和
xi合并成矩阵
A和
X,该矩阵即包含了所有的信息,第二步固定
αi求
B即转换成了矩阵F范数。
Bmin∥X−BA∥F2
其中
X=(x1,x2,...,xm)∈Rd×m,
A=(α1,α2,...,αm)∈Rk×m,
X和
A就是将每一列(列向量)组合起来,直接就变成了矩阵。
F−norm:∥X∥F=i∑j∑xi,j2
而K-SVD就是求解字典矩阵
B的方法。
2、K-SVD
上式
minB∥X−BA∥F2可改写。
首先对
BA进行改写,其中下标表示列数,上标表示行数:
BA=⎣⎢⎢⎢⎢⎢⎢⎡b11b12⋅⋅⋅b1db21b22⋅⋅⋅b2d⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅bk1bk2⋅⋅⋅bkd⎦⎥⎥⎥⎥⎥⎥⎤d×k×⎣⎢⎢⎢⎢⎢⎢⎡α11α12⋅⋅⋅α1kα21α22⋅⋅⋅α2k⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅αm1αm2⋅⋅⋅αmk⎦⎥⎥⎥⎥⎥⎥⎤k×m=⎣⎢⎢⎢⎢⎢⎢⎢⎡∑j=1kbj1α1j∑j=1kbj2α1j⋅⋅⋅∑j=1kbjdα1j∑j=1kbj1α2j∑j=1kbj2α2j⋅⋅⋅∑j=1kbjdα2j⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅∑j=1kbj1αmj∑j=1kbj2αmj⋅⋅⋅∑j=1kbjdαmj⎦⎥⎥⎥⎥⎥⎥⎥⎤d×m
然后有
bjαj:
bjαj=⎣⎢⎢⎢⎢⎢⎢⎡bj1bj2⋅⋅⋅bjd⎦⎥⎥⎥⎥⎥⎥⎤×[α1jα2j⋅⋅⋅αmj]=⎣⎢⎢⎢⎢⎢⎢⎡bj1α1jbj2α1j⋅⋅⋅bjdα1jbj1α2jbj2α2j⋅⋅⋅bjdα2j⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅bj1αmjbj2αmj⋅⋅⋅bjdαmj⎦⎥⎥⎥⎥⎥⎥⎤d×m
求和有:
j=1∑kbjαj=BA=⎣⎢⎢⎢⎢⎢⎢⎢⎡∑j=1kbj1α1j∑j=1kbj2α1j⋅⋅⋅∑j=1kbjdα1j∑j=1kbj1α2j∑j=1kbj2α2j⋅⋅⋅∑j=1kbjdα2j⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅∑j=1kbj1αmj∑j=1kbj2αmj⋅⋅⋅∑j=1kbjdαmj⎦⎥⎥⎥⎥⎥⎥⎥⎤d×m
所以用
∑j=1kbjαj来表示
BA,即有下式,其中
Ei=∑i=jbjαj,即直接求解特定的
bi。
Bmin∥X−BA∥F2=bimin∥X−j=1∑kbjαj∥F2=bimin∥(X−i=j∑bjαj)−biαi∥F2=bimin∥Ei−biαi∥F2
特别地,因为其他列都是固定的,所以在化简的时候可以简便,直接对
Ei进行化简即可。
Tips
奇异值分解其实与特征值分解有很紧密的相似性,我们针对的特征值分解
λ一般都是方阵,用来提取这个矩阵最主要的特征,而现实中方阵的要求却较为严格。那么一般矩阵就是用奇异值分解来提取特征信息。
- 实矩阵
A∈Rm×m,特征值分解:
A=Qm×mΣQm×m−1,
Q是矩阵
A的正交特征向量组成的矩阵,
Q是正交阵,所以转置和逆都是一样的
(Q−1=QT),另外
∑是对称阵,且只有主对角线上有元素,值是矩阵
A的各特征值
λ(
λ的位置对应特征向量的位置)。
- 实矩阵
A∈Rm×n,奇异值分解:
A=Um×mΣm×nVn×nT,其中
∑也同特征值分解一样,是由奇异值组成的对称阵,仅主对角线上有元素。
- Eckart-Young-Mirsky 定理:给定一个秩为
r的矩阵
A,欲求其最优
k秩的近似矩阵
A^,其中
k≤r,可以用F范数表示为如下:
A^∈Rm×nmin∥A−A^∥Frank(A^)=k.rank(A)=r.k≤r
对矩阵
A奇异值分解后
A=Um×mΣm×nVn×nT,仅保留矩阵
Σ的最大的
k个奇异值,其他的置0,那么即得到了秩为
k的矩阵
A^k=UΣkVT,很明显地,矩阵
A^即变得稀疏了,秩也低了。
即我们上述的式子
minbi∥Ei−biαi∥F2,所以最后相当于只需要对
Ei进行奇异值分解得到最大奇异值对应的正交向量即可(Eckart-Young-Mirsky 定理)。直接对
Ei进行奇异值分解会同时修改
bi和
αi,从而可能破坏原本地稀疏性。K-SVD对
Ei进行专门处理,
αi仅保留非零元素,
Ei则仅保留
bi和
αi的乘积项,然后再进行奇异值分解,这样就保持了稀疏性。