机器学习(十三)k-svd字典学习

article/2025/10/14 15:14:33

k-svd字典学习

原文地址:http://blog.csdn.net/hjimce/article/details/50810129

作者:hjimce

一、字典学习

字典学习也可简单称之为稀疏编码,字典学习偏向于学习字典D。从矩阵分解角度,看字典学习过程:给定样本数据集Y,Y的每一列表示一个样本;字典学习的目标是把Y矩阵分解成D、X矩阵:


同时满足约束条件:X尽可能稀疏,同时D的每一列是一个归一化向量。

D称之为字典,D的每一列称之为原子;X称之为编码矢量、特征、系数矩阵;字典学习可以有三种目标函数形式

(1)第一种形式:


这种形式因为L0难以求解,所以很多时候用L1正则项替代近似。

(2)第二种形式:


ε是重构误差所允许的最大值。

(3)第三种形式:

 

L是一个常数,稀疏度约束参数,上面三种形式相互等价。

因为目标函数中存在两个未知变量D、X,K-svd是字典学习的一种经典算法,其求解方法跟lasso差不多,固定其中一个,然后更新另外一个变量,交替迭代更新。

如果D的列数少于Y的行数,就相当于欠完备字典,类似于PCA降维;如果D的列数大于Y的行数,称之为超完备字典;如果刚好等于,那么就称之为完备字典。

二、k-svd字典学习算法概述

给定训练数据Y,Y的每一列表示一个样本,我们的目标是求解字典D的每一列(原子)。K-svd算法,个人感觉跟k-means差不多,是k-means的一种扩展,字典D的每一列就相当于k-means的聚类中心。其实球面k-means也是一种特殊的稀疏编码(具体可参考文献《Learning Feature Representations with K-means》),只不过k-means的编码矩阵X是一个高度稀疏的矩阵,X的每一列就只有一个非零的元素,对应于该样本所归属的聚类中心;而稀疏编码X的每一列允许有几个非零元素。

1、随机初始化字典D(类似k-means一样初始化)

从样本集Y中随机挑选k个样本,作为D的原子;并且初始化编码矩阵X为0矩阵。

2、固定字典,求取每个样本的稀疏编码

编码过程采用如下公式:


ε是重构误差所允许的最大值。

假设我们的单个样本是向量y,为了简单起见我们就假设原子只有这4个,也就是字典D=[α1、α2、α3、α4],且D是已经知道的;我们的目标是计算y的编码x,使得x尽量的稀疏。

(1)首先从α1、α2、α3、α4中找出与向量y最近的那个向量,也就是分别计算点乘:

α1*y、α2*y、α3*y、α4*y

然后求取最大值对应的原子α。

(2)假设α2*y最大,那么我们就用α2,作为我们的第一个原子,然后我们的初次编码向量就为:

x1=(0,b,0,0)

b是一个未知参数。

(3)求解系数b:

y-b*α2=0

方程只有一个未知参数b,是一个高度超静定方程,求解最小二乘问题。

(4)然后我们用x1与α2相乘重构出数据,然后计算残差向量:

y’=y-b*α2

如果残差向量y’满足重构误差阈值范围ε,那么就结束,否则就进入下一步;

(5)计算剩余的字典α1、α3、α4与残差向量y’的最近的向量,也就是计算

α1*y’、α3*y’、α4*y’

然后求取最大值对应的向量α,假设α3*y’为最大值,那么就令新的编码向量为:

x2=(0,b,c,0)

b、c是未知参数。

(6)求解系数b、c,于是我们可以列出方程:

y-b*α2-c*α3=0

方程中有两个未知参数b、c,我们可以进行求解最小二乘方程,求得b、c。

(7)更新残差向量y’:

y’=y-b*α2-c*α3

如果y’的模长满足阈值范围,那么就结束,否则就继续循环,就这样一直循环下去。

3、逐列更新字典、并更新对应的非零编码

通过上面那一步,我们已经知道样本的编码。接着我们的目标是更新字典、同时还要更新编码。K-svd采用逐列更新的方法更新字典,就是当更新第k列原子的时候,其它的原子固定不变。假设我们当前要更新第k个原子αk,令编码矩阵X对应的第k行为xk,则目标函数为:


上面的方程,我们需要注意的是xk不是把X一整行都拿出来更新(因为xk中有的是零、有的是非零元素,如果全部抽取出来,那么后面计算的时候xk就不再保持以前的稀疏性了),所以我们只能抽取出非零的元素形成新的非零向量,然后Ek只保留xk对应的非零元素项。

上面的方程,我们可能可以通过求解最小二乘的方法,求解αk,不过这样有存在一个问题,我们求解的αk不是一个单位向量,因此我们需要采用svd分解,才能得到单位向量αk。进过svd分解后,我们以最大奇异值所对应的正交单位向量,作为新的αk,同时我们还需要把系数编码xk中的非零元素也给更新了(根据svd分解)。

然后算法就在1和2之间一直迭代更新,直到收敛。

#更新字典第k列,<span style="font-family: Arial, Helvetica, sans-serif;">phi为字典,y为样本集、sparse为上面稀疏编码矩阵X</span>
def dict_update(phi, matrix_y, matrix_sparse, k):indexes = np.where(matrix_sparse[k, :] != 0)[0]#取出稀疏编码中,第k行不为0的列的索引phi_temp = phisparse_temp = matrix_sparseif len(indexes) > 0:phi_temp[:, k][:] = 0#把即将更新的字典的第k列先给设置为0matrix_e_k = matrix_y[:, indexes] - phi_temp.dot(sparse_temp[:, indexes])#取出样本数据中,字典第k列有贡献的值,并求Eku, s, v = svds(np.atleast_2d(matrix_e_k), 1)phi_temp[:, k] = u[:, 0]sparse_temp[k, indexes] = np.asarray(v)[0] * s[0]return phi_temp, sparse_temp

参考文献:

1、《Learning Feature Representations with K-means》

2、Restauration parcimonieuse d'unsignal multidimensionnel :algorithme K-SVD

**********作者:hjimce     联系qq:1393852684    原创文章,转载请保留原文地址、作者信息******************


http://chatgpt.dhexx.cn/article/bJ5UH3go.shtml

相关文章

字典学习(KSVD)详解

关于字典学习 对于一个事物&#xff0c;我们如何表征它呢&#xff1f;很明显&#xff0c;这个事物是有特征的&#xff0c;或者说&#xff0c;这个事物它是由许多个不同的特征经过一定的组合而形成的。字典学习的目标是提取实物的最本质特征。用字典来表征该事物的特征。&#…

语音增强———字典学习介绍

语音增强--------------字典学习 字典学习就是用较少的特征&#xff08;原子&#xff09;来表示信号&#xff0c;那么信号的多个特征组合就相当于多个原子组成的字典&#xff0c;那么信号就可以用字典中少量的原子进行表示。信号在字典下的表示系数越系数&#xff0c;那么重构…

字典学习(Dictionary Learning)

字典学习——Dictionary Learning 我主要从一下几个方面分享一下。 什么是字典学习字典学习的理论依据及公式字典学习的应用 1、什么是字典学习&#xff1f; 在人类发展的近几千年历史中&#xff0c;文字对人类文明的推动起着举足轻重的作用。人类用文字记述了千年的历史&a…

为什么我们需要机器学习,机器学习主要应用在哪几方面?

一、为什么需要机器学习&#xff1f; 有些任务直接编码较为复杂&#xff0c;我们不能处理所有的细微之处和简单编码&#xff0c;因此&#xff0c;机器学习很有必要。相反&#xff0c;我们向机器学习算法提供大量数据&#xff0c;让算法不断探索数据并构建模型来解决问题。比如…

什么是机器学习,目前机器学习的应用有哪些?

机器学习 机器学习就是让机器具备人一样学习的能力&#xff0c;专门研究计算机怎样模拟或实现人类的学习行为&#xff0c;以获取新的知识或技能&#xff0c;重新组织已有的知识结构使之不断改善自身的性能&#xff0c;它是人工智能的核心。 机器学习已经有了十分广泛的应用&a…

【机器学习】浅析机器学习各大算法的适用场景

最近在参加一个分类算法竞赛&#xff0c;也正好整理各个分类机器学习算法的简单介绍&#xff0c;应用场景和优缺点。资源来自网上和自己个人理解。 一、逻辑回归模型 1、理解逻辑回归模型&#xff08;LR&#xff09; 逻辑回归是一种分类算法&#xff0c;其原理是将线性回归预测…

什么是机器学习?有哪些应用?终于有人讲明白了

作者&#xff1a;星环科技人工智能平台团队 来源&#xff1a;大数据DT&#xff08;ID&#xff1a;hzdashuju&#xff09; 导读&#xff1a;人工智能的快速发展&#xff0c;带动了相关技术的繁荣。近些年&#xff0c;国内外的科技公司对机器学习人才都有大量需求。怎样入行机器学…

各种机器学习的应用场景分别是什么?

[转] https://www.leiphone.com/news/201712/RqsxWpjPOPFy6Qm4.html 关于这个问题我今天正好看到了这个文章&#xff0c;讲的正是各个算法的优劣分析&#xff0c;很中肯。 正好14年的时候有人做过一个实验[1]&#xff0c;比较在不同数据集上&#xff08;121个&#xff09;&…

【机器学习】机器学习在社会科学中的应用

机器学习在社会科学中的应用 在科学研究中&#xff0c;从方法论上来讲&#xff0c;都应先见森林&#xff0c;再见树木。当前&#xff0c;人工智能科技迅猛发展&#xff0c;万木争荣&#xff0c;更应系统梳理脉络。为此&#xff0c;我们特别精选国内外优秀的综述论文&#xff0c…

机器学习应用

监督学习和非监督学习 监督学习&#xff1a; 有标签的&#xff0c;回归和分类&#xff0c;场景&#xff1a;用户流失预测 非监督学习&#xff1a;无标签&#xff0c;聚类和降维&#xff0c;场景&#xff1a;用户细分 数据不平衡 类别不平衡。数据在某些维度上多&#xff0c;…

【机器学习】为什么机器学习难于应用

摘要&#xff1a; 本文主要讲述了如何管理机器学习应用方面的棘手问题 应用机器学习是有挑战性的。 在机器学习领域&#xff0c;你必须要在没有正确答案的问题上做出很多决定&#xff01;例如&#xff1a; 用什么框架&#xff1f; 用什么数据作为输入&#xff0c;要输出什么数…

机器学习在社会科学中的应用

本文把目前机器学习技术在社会科学研究中的应用分成三类&#xff1a;第一&#xff0c;数据生成&#xff08;Data Generating Process&#xff09;&#xff1a;机器学习可以帮助学者获得以前很难或无法获得的数据&#xff1b;第二&#xff0c;预测&#xff08;Prediction&#x…

【Machine Learning】20.应用机器学习的一些建议

20.应用机器学习的一些建议 1.导入包2. 评估学习算法&#xff08;以线性回归为例&#xff09;2.1 分离数据集可视化数据集 2.2 误差计算2.3 比较模型在训练集和测试集上的表现 3.Bias and Variance3.1 可视化数据集3.2 找到optimal degree最佳次数3.3 Tuning Regularization调整…

机器学习之应用举例

#Photo OCR Photo Optical Character Recognition&#xff08;照片光学字符识别&#xff09;&#xff0c;注重的问题是如何让计算机读出图片中的文字信息。 1、给定某种图片&#xff0c;它将图像扫描一遍&#xff0c;然后找出照片中的文字信息&#xff1b; 2、重点关注这些文…

机器学习的应用–大数据

说完机器学习的方法&#xff0c;下面要谈一谈机器学习的应用了。无疑&#xff0c;在2010年以前&#xff0c;机器学习的应用在某些特定领域发挥了巨大的作用&#xff0c;如车牌识别&#xff0c;网络攻击防范&#xff0c;手写字符识别等等。但是&#xff0c;从2010年以后&#xf…

什么是机器学习?有哪些算法和分类?又有哪些应用?看完你就懂了

导读&#xff1a;本文从大数据的概念讲起&#xff0c;主要介绍机器学习的基础概念&#xff0c;以及机器学习的发展过程&#xff0c;用一个形象的例子讲解大数据生态中的机器学习&#xff0c;并按照传统机器学习&#xff08;包括分类、聚类、回归、关联规则、协同过滤、数据降维…

1.2 机器学习的应用

机器学习无处不在。 问&#xff1a;为什么机器学习已经成为人工智能的一个子领域&#xff1f; 答&#xff1a;通过编程能够让机器做一些事情&#xff0c;比如&#xff1a;如何找到从A到B的最短距离&#xff0c;现实生活对应着GPS导航。但是&#xff0c;有时候编程也存在难点&…

什么是机器学习?应用场景以及未来趋势

机器学习 (ML) 被定义为人工智能 (AI) 的一门学科&#xff0c;它使机器能够自动从数据和过去的经验中学习&#xff0c;以识别模式并在最少的人工干预下做出预测。本文介绍了机器学习的基础知识、其类型以及最重要的五个应用程序。它还分享了 2022 年机器学习的十大趋势。 目录…

学机器学习有什么用?机器学习可以应用哪些领域?

机器学习的目前在各个领域都非常实用&#xff0c;可以带来很多好处&#xff0c;包括以下几点&#xff1a; 学机器学习有什么用&#xff1f; 自动化&#xff1a;机器学习可以帮助自动处理大量数据和任务&#xff0c;减少人工处理的工作量。 预测性能&#xff1a;机器学习模型可…

机器学习有哪些应用场景?机器学习有什么用?

机器学习是一种广泛应用于各个领域的技术&#xff0c;以下列举几个机器学习的应用场景&#xff1a; 机器学习有哪些应用场景&#xff1f;机器学习有什么用&#xff1f; 金融领域&#xff1a;机器学习可以应用于信用评估、风险管理、欺诈检测等方面&#xff0c;帮助银行和保险公…