[转]字典学习/稀疏编码

article/2025/10/14 14:00:16

本文转自https://zhuanlan.zhihu.com/p/26015351


机器学习——字典学习/稀疏编码学习笔记

Esquirrel Esquirrel
2 个月前

以下资料是小编学习字典学习/稀疏编码时,整理的高质量的网络博客,供大家参考。欢迎留言交流,批评指正理解不足。

最Highlight的地方

基于数据驱动,可以自适应的去学习基(字典),而不需要预先假设,在处理model free的任务上很有优势;

字典D是自己预先设定的大小;字典的系数X是尽可能让D稀疏且表达目标Y的时候自身稀疏(自己的理解)

研究历史

字典学习(Dictionary Learning)和稀疏表示(Sparse Representation)在学术界的正式称谓应该是稀疏字典学习(Sparse Dictionary Learning)。该算法理论包含两个阶段:字典构建阶段(Dictionary Generate)和利用字典(稀疏的)表示样本阶段(Sparse coding with a precomputed dictionary)。 参考资料:

Mallat, S.G. & Zhang, Z. 1993.Matching pursuit in a time-frequency dictionary. IEEE Transactions on Signal Processing 41(12): 3397–3415

Aharon M, Elad M, Bruckstein A. K-SVD: An Algorithm for Designing Overcomplete Dictionaries for Sparse Representation[J]. IEEE Transactions on Signal Processing, 2006, 54(11):4311-4322.

问题1:我们为什么需要字典学习?

无论人类的知识有多么浩繁,也无论人类的科技有多么发达,一本新华字典或牛津字典足以表达人类从古至今乃至未来的所有知识,那些知识只不过是字典中字的排列组合罢了!直到这里,我相信相当一部分读者或许在心中已经明白了字典学习的第一个好处(1)它实质上是对于庞大数据集的一种降维表示,或者说是信息的压缩(2)正如同字是句子最质朴的特征一样,字典学习总是尝试学习蕴藏在样本背后最质朴的特征(假如样本最质朴的特征就是样本最好的特征)。

这两条原因同时也是这两年深度学习之风日盛的情况下字典学习也开始随之升温的原因。

问题2:我们为什么需要稀疏表示?

[脑功能研究的启发]意大利罗马大学的Fabio Babiloni教授

回答这个问题毫无疑问就是要回答“稀疏字典学习”中稀疏两字的来历。不妨再举一个例子。相信大部分人都有这样一种感觉,当我们在解涉及到新的知识点的数学题时总有一种累心(累脑)的感觉。但是当我们通过艰苦卓绝的训练将新的知识点牢牢掌握时,再解决与这个知识点相关的问题时就不觉得很累了。这是为什么呢?意大利罗马大学的Fabio Babiloni教授曾经做过一项实验,他们让新飞行员驾驶一架飞机并采集了他们驾驶状态下的脑电,同时又让老飞行员驾驶飞机并也采集了他们驾驶状态下的脑电。

结论是熟练者的大脑(右图)可以调动尽可能少的脑区消耗尽可能少的能量进行同样有效的计算(所以熟悉知识点的你,大脑不会再容易觉得累了),并且由于调动的脑区很少,大脑计算速度也会变快,这就是我们称熟练者为熟练者的原理所在。站在我们所要理解的稀疏字典学习的角度上来讲就是大脑学会了知识的稀疏表示

稀疏表示的本质:用尽可能少的资源表示尽可能多的知识,这种表示还能带来一个附加的好处,即计算速度快。

适应性(泛化能力)和稀疏性之间找平衡,最优取决于代价函数。

这里再扯两点:

1)特征选择(Feature Selection)

大家对稀疏规则化趋之若鹜的一个关键原因在于它能实现特征的自动选择。一般来说,xi的大部分元素(也就是特征)都是和最终的输出yi没有关系或者不提供任何信息的,在最小化目标函数的时候考虑xi这些额外的特征,虽然可以获得更小的训练误差,但在预测新的样本时,这些没用的信息反而会被考虑,从而干扰了对正确yi的预测。稀疏规则化算子的引入就是为了完成特征自动选择的光荣使命,它会学习地去掉这些没有信息的特征,也就是把这些特征对应的权重置为0。

2)可解释性(Interpretability)

另一个青睐于稀疏的理由是,模型更容易解释。例如患某种病的概率是y,然后我们收集到的数据x是1000维的,也就是我们需要寻找这1000种因素到底是怎么影响患上这种病的概率的。假设我们这个是个回归模型:y=w1*x1+w2*x2+…+w1000*x1000+b(当然了,为了让y限定在[0,1]的范围,一般还得加个Logistic函数)。通过学习,如果最后学习到的w*就只有很少的非零元素,例如只有5个非零的wi,那么我们就有理由相信,这些对应的特征在患病分析上面提供的信息是巨大的,决策性的。也就是说,患不患这种病只和这5个因素有关,那医生就好分析多了。但如果1000个wi都非0,医生面对这1000种因素,累觉不爱。

参考Deep Learning(深度学习)学习笔记整理系列之(二)(四、关于特征)

----------------------------

稀疏字典学习在计算机视觉领域的发展

1995 年前后,Bruno Olshausen和 David Field 两位学者任职 Cornell University,他们试图同时用生理学和计算机的手段,双管齐下,研究视觉问题

他们收集了很多黑白风景照片,从这些照片中,提取出400个小碎片,每个照片碎片的尺寸均为 16x16 像素,不妨把这400个碎片标记为 S[i], i = 0,.. 399。接下来,再从这些黑白风景照片中,随机提取另一个碎片,尺寸也是 16x16 像素(思考:为什么定为16*16呢?64*64行吗?,相信原文有解答),不妨把这个碎片标记为 T。

我的理解:很多张图片的压缩才可能用到稀疏。表达最好的应该是1*1的基,最稀疏的矩阵应该是图像本身;大小为5*5还是50*50是一种权衡,取决于具体的任务。

原文:Olshausen, Bruno A., and David J. Field. "Emergence of simple-cell receptive field properties by learning a sparse code for natural images." Nature 381.6583 (1996): 607.

他们提出的问题是,如何从这400个碎片中,选取一组碎片,S[k], 通过叠加的办法,合成出一个新的碎片,而这个新的碎片,应当与随机选择的目标碎片 T,尽可能相似,同时,S[k] 的数量尽可能少。用数学的语言来描述,就是:

Sum_k (a[k] * S[k]) --> T, 其中 a[k] 是在叠加碎片 S[k] 时的权重系数。

为解决这个问题,Bruno Olshausen和 David Field 发明了一个算法,稀疏编码(Sparse Coding)。(此处衍生了好几种算法?有何异同呢?)

稀疏编码是一个重复迭代的过程,每次迭代分两步:

1)选择一组 S[k],然后调整 a[k],使得Sum_k (a[k] * S[k]) 最接近 T。

2)固定住 a[k],在 400 个碎片中,选择其它更合适的碎片S’[k],替代原先的 S[k],使得Sum_k (a[k] * S’[k]) 最接近 T。

经过几次迭代后,最佳的 S[k] 组合,被遴选出来了。令人惊奇的是,被选中的 S[k],基本上都是照片上不同物体的边缘线,这些线段形状相似,区别在于方向。

Bruno Olshausen和 David Field 的算法结果,与 David Hubel 和Torsten Wiesel 的生理发现,不谋而合!

也就是说,复杂图形,往往由一些基本结构组成。比如下图:一个图可以通过用64种正交的edges(可以理解成正交的基本结构)来线性表示。比如样例的x可以用1-64个edges中的三个按照0.8,0.3,0.5的权重调和而成。而其他基本edge没有贡献,因此均为0。

-----------------------------

K-SVD简述--字典学习,稀疏编码 - Rachel Zhang的专栏 - 博客频道 - CSDN.NET

K-SVD算法简介

K-SVD中每个信号是用多个原子的线性组合来表示的。K-SVD通过构建字典来对数据进行稀疏表示,经常用于图像压缩、编码、分类等应用。

主要问题

Y为要表示的信号,D为超完备矩阵(列数大于行数), X为系数矩阵,X与Y按列对应,表示D中元素按照Xi为系数线性组合为Y,我们的目的是找到让X尽量稀疏的D。

参考:Dictionary Learning(字典学习、稀疏表示以及其他)这篇博客从视觉生理角度给予解释

(什么叫完备?)完备性_百度百科

在希尔伯特空间(Hilbert space))中(或者略一般地,在线性内积空间(inner product space)中),一组标准正交基(orthonormal basis)就是一个完全而且正交的集合。

简单说:Hilbert空间就是定义了完备的内积空间。简单理解:不可能再多添加一个元素,基是独立的,所以叫完备。

(为什么要过完备?)

字典矩阵中所谓过完备性,指的是字典元素的个数远远大于信号y的长度(其长度很是n),即n<<k(D矩阵的列数)。(这个表述理解怪怪的?简单理解:基是不独立的,不正交(为了更好的简洁,稀疏的表示信号),过完备)

----------------------

我们的目的是找到让X尽量稀疏的D。

上面的式子本质上是相通的,只是表述形式不一样罢了。

寻找最优解(X最稀疏)是NP-Hard问题。

用追踪算法(Pursuit Algorithm)得到的次优解代替。

MatchingPursuit (MP)

OrthogonalMatching Pursuit (OMP)

BasisPursuit (BP)

FocalUnderdetermined System Solver (FOCUSS)

参考MP算法和OMP算法及其思想 - 逍遥剑客的专栏 - 博客频道 - CSDN.NET(对算法解释的很详细)


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

相关文章

【零散知识】字典学习(Dictionary Learning)

前言&#xff1a; { 之前的神经网络实践还卡在硬件上&#xff0c;不过目前已经打算先使用云设备&#xff0c;下次应该就会继续进行多目标识别的调试。这次就先写一点零散知识。 在专利[1]中我遇到了新的观点——字典学习&#xff08;Dictionary Learning&#xff09;。 } 正…

Python-字典学习

这次主要学习了字典学习的相关知识以及选择分支结构&#xff0c;根据课程编写了下图一些代码&#xff1a;

Python中的字典学习笔记

字典的格式&#xff1a;{"key":"value"} key表示数据的含义&#xff0c;value表示对应的数据的值字典是一种可变的数据类型&#xff0c;从python3.7开始&#xff0c;字典是有序的。 字典创建的方式 1、通过{}&#xff0c;要使用key:value的格式&#xff0c…

『ML笔记』字典学习3(Dictionary Learning,KSVD)

文章目录 一、字典学习数学模型1.1、数学描述1.2、求解问题1.3、字典学习算法实现 字典学习也是一种数据降维的方法&#xff0c;这里我用到SVD的知识&#xff0c;对SVD不太理解的地方&#xff0c;可以看看这篇博客&#xff1a; 奇异值分解SVD 一、字典学习数学模型 字典学习的…

字典学习日记

字典的创建 在定义字典时&#xff0c;每个元素都包含了两部分&#xff1a;键&#xff08;key&#xff09;和值&#xff08;value&#xff09;&#xff0c;并且在“键”和“值”之间使用英文冒号分隔&#xff0c;相邻两个元素使用英文逗号分离&#xff0c;所有的元素都放…

Dictionary Learning(字典学习、稀疏表示以及其他)

第一部分 字典学习以及稀疏表示的概要 字典学习&#xff08;Dictionary Learning&#xff09;和稀疏表示&#xff08;Sparse Representation&#xff09;在学术界的正式称谓应该是 稀疏字典学习&#xff08;Sparse Dictionary Learning&#xff09;。该算法理论包含两个阶段&am…

字典的学习笔记

列表 [] 单身什么是字典 {} 二人世界 python内置的数据结构之一&#xff0c;与列表一样是一个可变序列(可以增删改操作的) 以键值对的方式存储数据&#xff0c;字典是一个无序的序列 -> hash(key) 通过哈希函数来计算存储位置,key一定是不可变的字典的创建 使用花…

python学习之字典

目录 一、字典格式 二、操作 1、添加元素 2、修改value值 3、删除 4、遍历和查询 5、合并字典 三、小结 一、字典格式 特点&#xff1a;是以键值对的形式存储 结构&#xff1a;{键1&#xff1a;值&#xff0c;键2&#xff1a;值&#xff0c;键3&#xff1a;值} 字典…

『ML笔记』深入浅出字典学习1(Dictionary Learning)

目录 一、预备知识 二、字典学习以及稀疏表示的概要 2.1、我们为什么需要字典学习&#xff1f; 2.2、我们为什么需要稀疏表示&#xff1f; 三、下一节 参考文献 一、预备知识 稀疏向量&#xff1a;假设向量中的元素绝大部分为零元素&#xff0c;则称该向量是稀疏的。 …

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

k-svd字典学习 原文地址:http://blog.csdn.net/hjimce/article/details/50810129 作者&#xff1a;hjimce 一、字典学习 字典学习也可简单称之为稀疏编码&#xff0c;字典学习偏向于学习字典D。从矩阵分解角度&#xff0c;看字典学习过程&#xff1a;给定样本数据集Y&…

字典学习(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;…