k-svd


一、K-means算法

K—SVD方法是一种字典训练方法,于2006年由Michal Aharon(IEEE signal processing)提出,这种方法是K-均值算法的推广。因此,在介绍K-svd方法之前,首先学习和熟悉一下K-均值是有必要的。K-means是一种聚类方法,是指对于包含N个信号的集合Y进行分类,Y中各向量被归类于与之距离最小的代码所代表的类中。

矢量量化中,码本的训练可以用典型的K-means算法实现。当码本给定时,每个信号用最近的一个代码表示。这相当于稀疏编码的一个特例:只用一个原子表示信号,同时强制稀疏等于1.

k-svd_第1张图片

二、K-SVD算法-广义K-均值算法

当K-SVD算法中要求的每个信号只用一个原子来近似时,K-SVD算法退化为K-means聚类算法。同样,稀疏表示也可看做广义的矢量量化,其中每个信号用多个代码的线性组合表示。K-SVD训练算法的目标方程除满足重构误差最小的条件下,还需使得系数向量中非零个数小于预先给定的一个阈值。


上式的求解是一个迭代过程。首先,假设字典D是固定的,用MP、OMP或BP等算法可以得到字典D上,Y的稀疏表示的系数矩阵X;然后根据稀疏矩阵X,找到更好的字典D.

字典的更新是逐列进行的。首先假设系数矩阵X和字典D都是固定的,将要更新字典的第k列dk,令系数矩阵X中dk相应的第k行为,则目标函数式(6.21)中的惩罚项可以重写为










你可能感兴趣的:(k-svd)