K-SVD算法

K-SVD算法

  • 算法简介
    1. K-SVD可以看做K-means的一种泛化形式(由K-means扩展而来),K-means算法中每个信号量只能用一个原子来近似表示,而K-SVD中每个信号是用多个原子的线性组合来表示的。
    2. K-SVD通过构建字典来对数据进行稀疏表示,经常用于图像压缩、编码、分类等应用。

主要问题

Y=DX

其中 YR(nN) , DR(nK) , XR(kN) , N 是样例数, n是特征在字典中每一个Word的维度, K 是在训练字典中系数(原子的数量)的长度.
Y=DX
Y为要表示的信号, D 为超完备矩阵(列数大于行数), X为稀疏矩阵, X Y按列对应, 表示 D 中元素按照Xi为系数线性组合为 Y , 我们的目的就是找到X尽量稀疏的 D .
minD.X||YDX||2Fs.ti,||xi||0T0

minD.X||xi||0s.t||YDX||2Fε

(其中第一个函数的意思是指求矩阵 YDX 的F范数即矩阵中所有元素的绝对值平方再开方)(第二个式子是求 xi 的0范数即计算向量之中非零元素的个数. 范数)上述式子的本质上是相通的, 只是表述形式上不一样. 由于寻找最优解(X最稀疏)是NP难的问题, 因此用追逐算法(Pursuit Algorithm)得到的次优解代替. (MP, OMP, BP, FOCUSS)

算法求解

给定训练数据后一次找到全局最优解的字典为NP难的问题, 只能逐步逼近最优解. 构造D算法分为两步: 稀疏表示字典更新

稀疏表示

首先设定一个初始化的字典, 用该字典对给定数据进行稀疏表示(即用尽量少的系数尽可能近似的表示数据)得到系数矩阵 X . 此时, 应该把DX看成 D 中每列与X中每行乘积的和, 也就是把 DX 分片, 即:

DX=i=1Kdixi

di 表示 D 的列, xi表示 X 的行, 然后逐片优化.

字典更新

初始字典往往不是最优的, 满足稀疏性的系数矩阵表示的数据和原数据会有较大误差, 我们需要在满足稀疏度的条件下逐行逐列更新优化, 减少整体误差, 逼近可用字典. 剥离字典中第k(1k) dk 的贡献, 计算当前表示误差的矩阵:

E=Yikdixi

误差值为
En=||E||2F

上式可以看做把第 k 个基分量剥离后, 表达中产生空洞, 如何找到一个新基, 以更好地填补这个洞, 就是SVD方法的功能所在, 当误差值稳定的时候字典基本收敛.

求解流程

K-SVD是一个迭代的过程. 首先, 假设字典D是固定的, 用MP, OMP, BP等算法, 可以得到字典 D 上, Y的稀疏表示的系数是矩阵 X , 然后让X固定, 根据 X 更新字典D, 如此循环直到收敛为止.

字典D的更新是逐列进行的. 首先假设系数矩阵X和字典D都是固定的, 将要更新的是字典的第k列 dk , 系数矩阵X中 dk 对应第k行为 xkT , 则

||YDX||2F=||Yj=1kdjxjT||2F=||(YjkkdjxjT)djxkT||2F=||EkdkxkT||2F

得到当前误差矩阵 Ek 后, 我们只要调整 dk xk , 使其乘积与 Ek 的误差尽可能小.
对于上面的问题, 如果直接用 Ek 的SVD分解结果来更新 dk xk 则会导致 xk 不稀疏, 出现”发散”. 换句话说, xkT 中非零位置乘积后的那些项
. 形成 EkR , 将 EkR 做SVD分解, 更新 dk .
具体如下:
这里写图片描述

算法流程
这里写图片描述

参考:
1. http://blog.csdn.net/chlele0105/article/details/16886795
2. K-SVD: An algorithm fordesigning overcomplete dictionaries for sparse representation (IEEE Trans. OnSignal Processing 2006)
3. http://home.ustc.edu.cn/~zywvvd/files/K-SVD.pdf
4. http://blog.csdn.net/cc198877/article/details/9167989

  • 9
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值