字典学习是Sparse Coding的重要部分,字典学习通常采用两种方法,一种是K-SVD,另一种则是On-line dictionary learning。两者的区别在于K-SVD是
K-SVD
假设系数X和字典D都是固定的,要更新字典的第k列dk,领稀疏矩阵X中与dk相乘的第k行记做,则目标函数可以重写为:
上式中,DX被分解为K个秩为1的矩阵的和,假设其中K-1项都是固定的,剩下的1列就是要处理更新的第k个。矩阵Ek表示去掉原子dk的成分在所有N个样本中造成的误差。
提取稀疏项
我们不能直接对上式进行SVD分解,通过轮换的方法求出,因为对应的是X的一行,我们并没有对此施加稀疏性约束。解决方法如下:
对(21)进行最小化等价于:
另外参考:http://blog.csdn.net/abcjennifer/article/details/8693342
On-line dictionary learning
=============================================================================
===============================================================================
推荐一个Sparse Coding 工具包:SPAMS [下载]
Reference:
1) An Introduction to Sparse Coding and Dictionary Learning
2) K-SVD: An Algorithm for Designing of Overcomplete Dictionaries for Sparse Representation
3) Online Dictionary Learning for Sparse Coding