稀疏编码来源于神经科学,计算机科学和机器学习领域一般一开始就从稀疏编码算法讲起,上来就是找基向量(超完备基),但是我觉得其源头也比较有意思,知道根基的情况下,拓展其应用也比较有底气。哲学、神经科学、计算机科学、机器学习科学等领域的砖家、学生都想搞明白人类大脑皮层是如何处理外界信号的,大脑对外界的“印象”到底是什么东东。围绕这个问题,哲学家在那想、神经科学家在那用设备观察、计算机和机器学习科学家则是从数据理论和实验仿真上推倒、仿真。在神经编码和神经计算领域,我所能查到最早关于稀疏编码的文献是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

 
 

稀疏编码(Sparse Coding)的前世今生(一) 转自http://blog.csdn.net/marvin521/article/details/8980853的更多相关文章

  1. 稀疏编码(Sparse Coding)的前世今生(二)

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

  2. Sublime Text3 离线安装Package Control并使用GBK编码 --转自https://blog.csdn.net/swhard/article/details/78930371

    1.关闭Sublime Text 3,去https://github.com/wbond/package_control/releases下载一个zip包,我下载的是 2.将包内的顶层文件夹解压至C: ...

  3. ubuntu16.04 tomcat7安装和编码修改(转发:https://blog.csdn.net/zl544434558/article/details/76735564)

    有直接通过命令安装的,但是我还是喜欢把文件下载下来,然后自己配置. 1,下载tomcat7二进制文件 https://tomcat.apache.org/download-70.cgi 2,解压tom ...

  4. C++ IPv4与IPv6的兼容编码(转,出自http://blog.csdn.net/ligt0610/article/details/18667595)

    这里不再对IPv6 socket相关编程的基础知识进行讲解,只提供一个IP协议无关的服务端和客户端的代码,仅供参考. 服务端代码: #include <iostream> #include ...

  5. Sparsity稀疏编码(一)

    稀疏编码来源于神经科学,计算机科学和机器学习领域一般一开始就从稀疏编码算法讲起,上来就是找基向量(超完备基),但是我觉得其源头也比较有意思,知道根基的情况下,拓展其应用也比较有底气.哲学.神经科学.计 ...

  6. 理解sparse coding

    理解sparse coding 稀疏编码系列: (一)----Spatial Pyramid 小结 (二)----图像的稀疏表示——ScSPM和LLC的总结 (三)----理解sparse codin ...

  7. Sparsity稀疏编码(三)

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

  8. 稀疏编码概率解释(基于1996年Olshausen与Field的理论 )

    一.Sparse Coding稀疏编码 稀疏编码算法是一种无监督学习方法,它用来寻找一组“超完备”基向量来更高效地表示样本数据.稀疏编码算法的目的就是找到一组基向量 ,使得我们能将输入向量 表示为这些 ...

  9. k-svd字典学习,稀疏编码

    1.     K-SVD usage: Design/Learn a dictionary adaptively to betterfit the model and achieve sparse s ...

随机推荐

  1. The Moving Points - HDU - 4717 (模拟退火)

    题意 二维空间中有\(n\)个运动的点,每个点有一个初始坐标和速度向量.求出一个时间\(T\),使得此时任意两点之间的最大距离最小.输出\(T\)和最大距离. 题解 模拟退火. 这个题告诉了我,初始步 ...

  2. 笔记-python-standard library-9.6 random

    笔记-python-standard library-9.6 random 1.      random source code:Lib/random.py 1.1.    functions for ...

  3. 3 View视图 URLconf

    1.视图 视图接受Web请求并且返回Web响应 视图就是一个python函数,被定义在views.py中 响应可以是一张网页的HTML内容,一个重定向,一个404错误等等 响应处理过程如下图: 2 准 ...

  4. Python虚拟机类机制之填充tp_dict(二)

    填充tp_dict 在Python虚拟机类机制之对象模型(一)这一章中,我们介绍了Python的内置类型type如果要完成到class对象的转变,有一个重要的步骤就是填充tp_dict对象,这是一个极 ...

  5. pycharm中某些方法被标黄的原因及解决办法

    在编辑python文件时,会遇到上图所示,函数方法被标黄的问题,但是不影响使用. 引起原因:,如果不报错说明,这是因为你配置的python解释器中有该方法,但是pycharm没有找到这个方法,即加载失 ...

  6. 【LoadRunner】如何对GIS服务器进行性能测试

    1.需求了解 首先确定对gis服务器压测的测试范围,形成具体的测试用例,gis平台都是通过网页端的javascript api调用的gis集群服务接口,通过LR录制上一步中的业务操作,找到javasc ...

  7. URIs, URLs, and URN

    首先,URI,是uniform resource identifier,统一资源标识符,用来唯一的标识一个资源.而URL是uniform resource locator,统一资源定位器,它是一种具体 ...

  8. java基础-流

    大致列一下这个周末需要学习的内容 1 容器 2 线程 3 流 (本节内容) 一. 流 按方向-------------输入流输出流 按处理数据单位-----字节流字符流 按功能------------ ...

  9. ALPHA(五)

    目录 组员情况 组员1(组长):胡绪佩 组员2:胡青元 组员3:庄卉 组员4:家灿 组员5:凯琳 组员6:翟丹丹 组员7:何家伟 组员8:政演 组员9:黄鸿杰 组员10:刘一好 组员11:何宇恒 展示 ...

  10. ZigBee学习三 UART通信

    ZigBee学习三 UART通信 在使用串口时,只需掌握ZigBee协议栈提供的串口操作相关的三个函数即可. uint8 HalUARTOpen(uint8 port,halUARTCfg_t *co ...