字典学习(Dictionary Learning)

字典学习——Dictionary Learning

我主要从一下几个方面分享一下。

  1. 什么是字典学习
  2. 字典学习的理论依据及公式
  3. 字典学习的应用

1、什么是字典学习?

在人类发展的近几千年历史中,文字对人类文明的推动起着举足轻重的作用。人类用文字记述了千年的历史,用文字留下了各种思想火花,用文字抒发了各种各样的情感等等。但是这一切的内容,只需要一本字典就能表述完。因为人在这环节中的功能,无非就是使用字典当中的字词进行了适当的排列了而已。

基于这种思想,先前的大佬提出了字典学习——Dictionary Learning。

字典学习的目标,就是提取事物最本质的特征(类似于字典当中的字或词语)。如果我们能都获取这本包括最本质的特征的字典,那我们就掌握了这个事物的最本质的内涵。换言之,字典学习将我们的到的对于物体的信息降维,减少了该物体一些无关紧要信息对我们定义这个物体的干扰。

 

2、字典学习的理论依据及公式

  • 稀疏模型

稀疏模型的作用如下:

稀疏模型将大量的冗余变量去除,只保留与响应变量最相关的解释变量,简化了模型的同时却保留了数据集中最重要的信息,有效地解决了高维数据集建模中的诸多问题——百度百科

可以发现,稀疏模型所能达到的效果与我们字典学习的目标一致。都是要将冗余的无关紧要的信息除去,将最重要的、本质的信息得以保留。也正因如此,所以“字典”的衡量标准也就产生了。字典创建的好不好,就要看它这个模型够不够稀疏。

ps:稀不稀疏,就是说你提取的特征是不是够关键,是不是够本质。 

  • 公式 

 

 

x:输入的图像(维度为 

D:字典模型(维度为

α:疏松矩阵(维度为K)

 

我们的目的就是:

各分向量平方之后开方。

 

  • 模型建立

我们可以将求D的问题看成一个优化问题,第一项是确保D和 能够很好地重构 (失真少),第二项是确保尽量稀疏(字典构建耦合性小,类似于在字典中我们解释一个字或词语尽可能的少用其他的词语)。

 

  • 初始化

从样本集X中随机挑选n个样本,作为D的初始值;并且初始化α为0

  • 求解xi

为了简单起见,我们抽出一个样本进行讨论,假定样本为x向量,稀疏代码为α向量。现在x和D算是已知的,求解α,同时满足α尽量的稀疏,也就是非零元素尽量的少。假设D为[d1,d2,d3,d4,d5],其中有5个原子。首先求出离x距离最近的原子,假设是d3。那么我们就可以求出一个初步的α为[0,0,c3,0,0],c3是一个未知系数,代表原子的权重。假定x=c3*d3。可求得c3的值。接着我们用求出的c3求残差向量x'=x-c3*d3(此处),x'是一个预设的阈值向量,当x'小于阈值的话,则停止计算,如果不小于的话,转到下一步。 计算剩余的原子d1,d2,d4,d5中与残差向量x'距离最近的,假设是d1,那么更新α为[c1,0,c3,0,0],假设x=c1*d1+c3*d3,求解出c1,然后更新残差向量x'=x-c1*d1-c3*d3(此处)。判断是否小于阈值,如果不满足,再继续求下一个最近的原子的系数。求解原子系数的数量也可以指定为一个常量,例如3,那就代表迭代3次。

  • 更新字典

通过上一个步骤可以求出所有的  ,接着就可以更新字典D了。
保持α不变,使用相同步骤更新D。再保持D不变,使用相同步骤更新α。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章