最近看了一些Sparse Coding的东西,Sparse Coding也算是Deep Learning中的一个例子。
为什么这么说呢,因为Sparse Coding的目标就是学习一个字典,而这个字典是一个抽象的字典,也就是说,如果我们给的是一组特征,那么学习出来的东西是一组抽象画的特征
你不知道自己学出来的是什么,这个好像也像是Deep Learning的东西了。
其实思想上有点PCA的感觉,只不过PCA出来的是特征向量,我们用特征向量去重建原有数据,而Sparse Coding也是用用字典去重建原有数据,不过这个字典更大,一般会远远
大于原有数据的个数。有了字典,会用一组系数表示重建的数据,这个系数中大部分是0,而只有少部分是大于零的,于是就符合的稀疏的思想。如下面的公式:
Y=\sum_i^k a_i Q_i
用了latex的格式,比较方便,这里的a就是稀疏,而Q就是字典。如何保证a是稀疏的呢?我们需要加入一定的限制条件。不同的问题,限制条件是不一样的。这里就不列举了。
到这里,我们应该有流程的概念了,就是说你得到一组特征,那么你需要先学特征,然后在去学系数表达。
目前最常用的是Spams 的函数包。