K-SVD算法总结

这几天看了稀疏表示的一些文章,对字典学习方法K-SVD[1]查阅了相关资料,特此总结如下,如有理解上不正确的地方,还望指正,本人还处于初学者的状态。

一、概述

K-SVD是一种迭代算法,是K-means算法的扩展,一般是用来在稀疏表示问题中的字典训练方面。这里的“字典”是一个过完备的矩阵,由其,使得一个信号向量可以表示成字典中原子(字典的列向量)的稀疏线性组合。
K-SVD和K-means方法本质上都属于一种压缩的思想,都主要包含以下两个步骤:
1) 稀疏编码
2) 字典更新
在K-means方法中,K-means 先随机选择K个初始点作为字典,K个初始点就代表K类。然后在每次迭代过程中,稀疏编码阶段:计算数据集中每个数据点与这K个点的距离,距离最短则代表改点属于该类;字典更新:每一类中所有点的均值作为新的字典。
而在K-SVD中,稀疏编码可以采用任何基方法(MP、OMP、BP);字典更新采用SVD奇异值分解。文章原文引用如下:The K-SVD algorithm is an iterative method that alternates between sparse coding of the examples based on the current dictionary and an update process for the dictionary atoms so as to better fit the data, generalizing the K-means algorithm. The update of the dictionary columns is done jointly with an update the sparse representation coefficients related to it, resulting in accelerated convergence.

二、K-SVD方法

这里给出文章中对K-SVD方法的描述
这里写图片描述

以下简要描述该算法:
用数学表达式表示稀疏表示问题,K-SVD即是求解满足以下式子的字典D
minD,X{ YDX2F}subjecttoi,xi0T0
其中 Y 是信号 (n×N) , D 是过完备字典矩阵 (n×K) , X 为系数矩阵 (K×N)
1、初始化操作:初始化字典矩阵D,D中原子(列向量)必须是单位向量, t=1

2、重复以下步骤直到满足收敛条件:

1)稀疏编码:这里使用OMP(正交匹配基)来得到每一个信号样本 yi 对应的稀疏系数向量 xi 的近似逼近解。
- OMP算法
本质思想:以贪婪迭代的方法选择字典原子,使得每次迭代的过程中原子与信号最大相关(内积最大),从信号向量减去相关部分得到残差,残差按照上述方法反复迭代,直到迭代次数达到稀疏度K 或者残差小于误差阈值,停止迭代。
OMP算法步骤:
输入:字典矩阵D, 采样信号

  • 3
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值