稀疏编码来源于神经科学,计算机科学和机器学习领域一般一开始就从稀疏编码算法讲起,上来就是找基向量(超完备基),但是我觉得其源头也比较有意思,知道根基的情况下,拓展其应用也比较有底气。哲学、神经科学、计算机科学、机器学习科学等领域的砖家、学生都想搞明白人类大脑皮层是如何处理外界信号的,大脑对外界的“印象”到底是什么东东。围绕这个问题,哲学家在那想、神经科学家在那用设备观察、计算机和机器学习科学家则是从数据理论和实验仿真上推倒、仿真。在神经编码和神经计算领域,我所能查到最早关于稀疏编码的文献是1996年,在此之前的生命科学家的实验观察和假设都不说了,1996年Cornell大学心理学院的Bruno在Nature上发表了一篇题名为:“emergence of simple-cell receptive fieldproperties by learning a sparse code for nature images”的文章,大意是讲哺乳动物的初级视觉的简单细胞的感受野具有空域局部性、方向性和带通性(在不同尺度下,对不同结构具有选择性),和小波变换的基函数具有一定的相似性。当时描述这些性质主要从自然图像编码的统计结构上来理解这些视觉细胞的特性,但是大部分都没有成功,接着Bruno在文章中提出通过最大化稀疏编码假说成功描述了上述细胞的性质,然后稀疏编码就火了。先来看看这篇文章的核心思想,作者基于一个基本假设,图像是有一些基的线性组合形成,如(公式一)所示:

(公式一)

其中fai(x,y)是基函数,alpha是系数,随着不同的图像变化而变化。有效编码的目标就是为了寻找完备的基函数来生成图像空间,而且要求系数尽可能独立,只所以独立就是为了寻找信号的本质结构。当时的淫们很自然的想到PCA,因为PCA可以找到一些统计结构上的空间轴(类似坐标轴)来构成基函数,但是PCA一对噪声太敏感,也就是只能对一些类似高斯分布的数据有效,这样的干净数据可以很好的找到空间轴,对更复杂分布的数据(比如现在的流形分布)无效,作者受信息论启发,即相关变量的联合熵小于个体熵之和(当变量alpha之间互相独立时,二者相等,二者之间差了一个互信息),如果保持图像的联合熵不变,一个使得降低变量相关性的可能方法就是降低个体的熵,因此基于Barlow’s term,作者寻找一个最小熵编码(注:Barlow’s term那本书因年代久远,我找不到源头了,大意是统计独立降低编码冗余度),基于上面,作者猜测自然图像是个稀疏结构,即任何给定图像都可以用大数据里面的少数几个描述符(基)来表示。稀疏编码出生咯,作者开始寻找使得每个系数的概率分布是单模态并且在0处是峰分布的低熵(low-entropy)方法。作者提出稀疏编码的寻找方案可以通过最小化(公式二)来完成:

(公式二)

其中第一项就是保持信息的代价(cost),如(公式三)所示:

(公式三)

当然如果基于基函数重建的图像和原图像I(x,y)一致的话,代价为0(为最小)。

(公式二)的第二项则是稀疏价值函数,其中的lambda是个常量正系数,平衡下稀疏系数alpha的重要性,和SVM的常量C有异曲同工之妙。作者提出了三个稀疏价值函数,如(图一)所示:

(图一)

可以惊喜的发现,现在经常用的L1正则赫然在列,其他两个应该被淘汰了,其实当时LASSO也开始出现了,只是当时的人们没有直接意识到L1正则可以增加稀疏性。至于为什么L1正则可以增加稀疏性,推荐读下MIT的博士pluskid的这篇博文:http://freemind.pluskid.org/machine-learning/sparsity-and-some-basics-of-l1-regularization/

Pluskid的数学功底雄厚,阅读者也需要一些功底才行。继续我们今天的话题,要最小化公式二,参数变量只有alpha,对其求导,然后用梯度下降法迭代更新alpha即可,更新alpha后,也要继续更新基函数,二者的步骤一并通过(图二)给出:

(图二)

求出后的参数alpha和系数如(图三)所示:

(图三)

其中a是基函数,b是其系数,c则是验证感受野的特性,d表明系数是在0处单峰。通过图像展示,对于初级视觉细胞的感受野信号的那些属性得到了验证,图像信息得到了保持,而且编码是稀疏的,至此稀疏编码拉开了序幕,衍生了后续各种优化版本和应用。

参考文献:

[1] emergence of simple-cell receptive field properties by learning a sparse code for nature images. 1996

[2] Sparse Coding with an Overcomplete BasisSet: A Strategy Employed by V1 ?  1997

转载请注明链接:http://blog.csdn.net/cuoqu/article/details/8980853

Sparsity稀疏编码(一)相关推荐

  1. Sparsity稀疏编码(三)

    稀疏编码(sparse coding)和低秩矩阵(low rank)的区别 上两个小结介绍了稀疏编码的生命科学解释,也给出一些稀疏编码模型的原型(比如LASSO),稀疏编码之前的探讨文章就不说了,今天 ...

  2. Stanford UFLDL教程 稀疏编码自编码表达

    稀疏编码自编码表达 Contents [hide] 1稀疏编码 2拓扑稀疏编码 3稀疏编码实践 3.1将样本分批为"迷你块" 3.2良好的s初始值 3.3可运行算法 4中英文对照 ...

  3. Stanford UFLDL教程 稀疏编码

    稀疏编码 Contents [hide] 1稀疏编码 2概率解释 [基于1996年Olshausen与Field的理论] 3学习算法 4中英文对照 5中文译者 稀疏编码 稀疏编码算法是一种无监督学习方 ...

  4. 深度学习系列(四):什么是稀疏编码

    上节使用简单方法阐述了自编码问题与简单操作,本节将正式开始探索深度学习的相关问题,第一个问题就是稀疏编码. 关于稀疏编码需要理解的几点: (1)什么是稀疏编码? (2)为什么要稀疏编码? (3)稀疏编 ...

  5. 深度学习基础(九)—— 稀疏编码(sparse coding)

    稀疏编码算法是一种无监督学习方法,它用来寻找一组"超完备"基向量来更高效地表示样本数据.稀疏编码算法的目的就是找到一组基向量 (自然图像的小波基?) ϕi \mathbf{\phi ...

  6. 为什么需要稀疏编码及解释

    参考:(1) UFLDL (2) Why sparse coding works 稀疏编码算法是一种无监督学习方法,它用来寻找一组"超完备"基向量来更高效地表示样本数据.稀疏编码算 ...

  7. 卷积学习与传统稀疏编码、ICA模型学习区别(逐步补充)

    逐步总结(有待补充) 无监督学习知识框架: 这种分类不合适,稀疏编码等也可以从统计学角度看做模型学习与参数选择.实际上,稀疏编码是从1维信号发展起来的表示方法. 近年来,稀疏编码逐渐引入信号的先验信息 ...

  8. Sparse Coding 稀疏编码

    稀疏编码是无监督学习的一种,它学习一组超完备基的集合用以高效地表示数据,即 x=∑i=1kaiϕi \begin{align} \mathbf{x} = \sum_{i=1}^k a_i \mathb ...

  9. 稀疏编码(Sparse Coding)(二)

    为了更进一步的清晰理解大脑皮层对信号编码的工作机制(策略),需要把他们转成数学语言,因为数学语言作为一种严谨的语言,可以利用它推导出期望和要寻找的程式.本节就使用概率推理(bayes views)的方 ...

最新文章

  1. 【Qt】菜单栏、工具栏、状态栏、右键菜单的实现
  2. 【LeetCode从零单排】No21.MergeTwoSortedLists
  3. python中count()方法
  4. 设计模式[3] -单例模式-代码
  5. hibernate之工具类
  6. 4.3 Siamese 网络
  7. android开发realm多线程操作,数据库的设计:深入理解 Realm 的多线程处理机制
  8. JVM 内存管理、自带性能监测调优工具 (jstack、jstat)及 JVM GC 调优
  9. Starting MySQL. ERROR! The server quit without updating PID file
  10. Cisco iOS的两种配置文件(思科命令的保存)
  11. java中级课程_完整的JAVA中级程序员全面学习路线教程
  12. R 语言assign 和get 函数用法
  13. 爬取金山词霸在线翻译
  14. 虚拟化平台安装并升级显卡驱动
  15. 怎么取消只读模式?硬盘进入只读模式怎么办?
  16. 计算机控制技术包括数控机床,《数控机床原理与系统》教学大纲
  17. led灯模组是什么东西_【轻工标准抢先知】LED灯、LED灯具和LED模组的测试方法
  18. java实现时间转换器
  19. 微信公众号关闭H5页面,回到公众号首页
  20. 我们谈论的Exactly once到底是什么?

热门文章

  1. 阶段-关口系统-stage2立项分析阶段---学习记录
  2. Python3 文件读写(持续更新)
  3. 【HIMI转载推荐之三】新手教程之如何向APP STORE提交应用
  4. 交换机生成树协议配置
  5. 11G中自动收集统计信息
  6. 数据结构快速回顾——栈
  7. linux shell编程学习笔记(9)正则表达式
  8. 《0 bug ---- C/C++商用工程之道》目录
  9. [InnoDB系列] -- SHOW INNODB STATUS 探秘
  10. c语言flash里能存文件吗,STM32内部FLASH打包读写