Sparse Filtering、Sparse Coding学习笔记

来源:互联网 发布:淘宝lol封号可以解封吗 编辑:程序博客网 时间:2024/05/22 00:40

     本来想用Sparse Autoencoder来提取图像特征,搞了半天只能提取第二层的,参数太多,编程是个大问题,而且理论基础少而薄弱。无聊之下,发现这个网址:http://fastml.com/deep-learning-made-easy/,接触到sparse filtering,大体上觉得需要调节的参数比较少,就找过论文来看,并作笔记如下:

      先来看看什么是滤波:简单地说,设定一个阈值,获取自己想要的信号,比如人的耳朵,只能获取一定范围频率的声音,当然耳朵的“阈值”是造物主设定的,哈哈

      2014.3.6:

      今天依葫芦画瓢,自己稀里糊涂地编了L3的代码,运行倒是可以,不知道为啥无法解释出来的结果。我把patches换成自己的图片,彩色图转化成灰度图,数据类型是uint8型的,应该变成double类型,(因为uint类型的数据进行加减时会产生溢出,unit类型的优势在于节省存储空间,matlab读入图像时默认为double类型,即64位浮点数;在涉及运算时时,都要将unit类型转换为double),我用double和im2double转换,imshow之后发现后者的效果更好,所以用im2double。

      2014.3.7:

      今天决心把sparse filtering看懂。看了几遍论文,基本流程差不多。我目前的理解,SAE的稀疏是对于模型参数的稀疏,即在cost function中加入了权值惩罚项;而SF,首先对特征矩阵的每一行进行正则化,除以其二范数,同样的方式对每一列进行正则化,最后我们最小化特征矩阵各项的绝对值和。貌似SF是从后(特征矩阵)向前(模型)的。贴图:

        代码阅读如下(硬伤啊,matlab编程能力):

(1)randn(M,N):产生M*N的、服从正态分布的伪随机数。这里作为寻优的起点。

(2)minfunc:使用线性搜索策略的非约束优化工具。function [x,f,exitflag,output] = minFunc(funObj,x0,options,

varargin)。输出:参1是要优化的函数;参2是寻优起点;参3默认是无,本例中是一个包含迭代次数和corrections数的结构体,minfunc使用L-BFGS时默认请款下corrections的次数是很多的;参4是funObj的所有输入。输入:1是找到的最值点,2是函数在最值点的值,3是约束,4是其他信息。

(3)reshape:

关于稀疏表示(和稀疏编码的区别?):

前段时间接触过稀疏表示,没有认真去看,今天总结了一下。不码文字了,直接上图:

1、关于字典:

理解:记起以前学习的线性代数解方程组,y=Ax。M为方程个数,N为未知数个数(求出的x是字典?),当M>N时,此时无解,即y中的有些量无法表示,对应于欠完备字典;M<N,未知数个数大于方程个数,有无穷多解,对应于过完备字典。

     这里还有一种说法:注意正交矩阵的性质:A'A=E.






0 0
原创粉丝点击