Deep Learning(深度学习)学习笔记整理系列之(五)

Deep Learning(深度学习)学习笔记整理系列之(五)

Deep Learning(深度学习)学习笔记整理系列

zouxy09@qq.com

http://blog.csdn.net/zouxy09

作者:Zouxy

version 1.0 2013-04-08

声明:

1)该Deep Learning的学习系列是整理自网上非常大牛和机器学习专家所无私奉献的资料的。详细引用的资料请看參考文献。详细的版本号声明也參考原文献。

2)本文仅供学术交流,非商用。所以每一部分详细的參考资料并没有详细相应。假设某部分不小心侵犯了大家的利益,还望海涵,并联系博主删除。

3)本人才疏学浅,整理总结的时候难免出错,还望各位前辈不吝指正,谢谢。

4)阅读本文须要机器学习、计算机视觉、神经网络等等基础(假设没有也没关系了,没有就看看,能不能看懂,呵呵)。

5)此属于第一版本号,若有错误,还需继续修正与增删。还望大家多多指点。大家都共享一点点,一起为祖国科研的推进添砖加瓦(呵呵,好高尚的目标啊)。请联系:zouxy09@qq.com

文件夹:

一、概述

二、背景

三、人脑视觉机理

四、关于特征

       4.1、特征表示的粒度

       4.2、0基础(浅层)特征表示

       4.3、结构性特征表示

       4.4、须要有多少个特征?

五、Deep Learning的基本思想

六、浅层学习(Shallow Learning)和深度学习(Deep Learning)

七、Deep learning与Neural Network

八、Deep learning训练过程

       8.1、传统神经网络的训练方法

       8.2、deep learning训练过程

九、Deep Learning的经常使用模型或者方法

       9.1、AutoEncoder自己主动编码器

       9.2、Sparse Coding稀疏编码

       9.3、Restricted Boltzmann Machine(RBM)限制波尔兹曼机

       9.4、Deep BeliefNetworks深信度网络

       9.5、Convolutional Neural Networks卷积神经网络

十、总结与展望

十一、參考文献和Deep Learning学习资源

接上

 

9.2、Sparse Coding稀疏编码

       假设我们把输出必须和输入相等的限制放松,同一时候利用线性代数中基的概念,即O = a11 + a22+….+ ann, Φi是基,ai是系数,我们能够得到这样一个优化问题:

Min |I – O|,当中I表示输入,O表示输出。

       通过求解这个最优化式子,我们能够求得系数ai和基Φi,这些系数和基就是输入的第二种近似表达。

<span>Deep Learning(深度学习)学习笔记整理系列之(五)</span>

       因此,它们能够用来表达输入I,这个过程也是自己主动学习得到的。假设我们在上述式子上加上L1的Regularity限制,得到:

Min |I – O| + u*(|a1| + |a2| + … + |an |)

        这样的方法被称为Sparse Coding。通俗的说,就是将一个信号表示为一组基的线性组合,并且要求仅仅须要较少的几个基就能够将信号表示出来。“稀疏性”定义为:仅仅有非常少的几个非零元素或仅仅有非常少的几个远大于零的元素。要求系数 ai 是稀疏的意思就是说:对于一组输入向量,我们仅仅想有尽可能少的几个系数远大于零。选择使用具有稀疏性的分量来表示我们的输入数据是有原因的,由于绝大多数的感官数据,比方自然图像,能够被表示成少量基本元素的叠加,在图像中这些基本元素能够是面或者线。同一时候,比方与0基础视觉皮层的类比过程也因此得到了提升(人脑有大量的神经元,但对于某些图像或者边缘仅仅有非常少的神经元兴奋,其它都处于抑制状态)。

         稀疏编码算法是一种无监督学习方法,它用来寻找一组“超完备”基向量来更高效地表示样本数据。尽管形如主成分分析技术(PCA)能使我们方便地找到一组“完备”基向量,可是这里我们想要做的是找到一组“超完备”基向量来表示输入向量(也就是说,基向量的个数比输入向量的维数要大)。超完备基的优点是它们能更有效地找出隐含在输入数据内部的结构与模式。然而,对于超完备基来说,系数ai不再由输入向量唯一确定。因此,在稀疏编码算法中,我们另加了一个评判标准“稀疏性”来解决因超完备而导致的退化(degeneracy)问题。(详细过程请參考:UFLDL Tutorial稀疏编码

<span>Deep Learning(深度学习)学习笔记整理系列之(五)</span>

       比方在图像的Feature Extraction的最底层要做Edge Detector的生成,那么这里的工作就是从Natural Images中randomly选取一些小patch,通过这些patch生成能够描写叙述他们的“基”,也就是右边的8*8=64个basis组成的basis,然后给定一个test patch, 我们能够依照上面的式子通过basis的线性组合得到,而sparse matrix就是a,下图中的a中有64个维度,当中非零项仅仅有3个,故称“sparse”。

       这里可能大家会有疑问,为什么把底层作为Edge Detector呢?上层又是什么呢?这里做个简单解释大家就会明确,之所以是Edge Detector是由于不同方向的Edge就能够描写叙述出整幅图像,所以不同方向的Edge自然就是图像的basis了……而上一层的basis组合的结果,上上层又是上一层的组合basis……(就是上面第四部分的时候咱们说的那样)

       Sparse coding分为两个部分:

1)Training阶段:给定一系列的样本图片[x1, x 2, …],我们须要学习得到一组基[Φ1, Φ2, …],也就是字典。

       稀疏编码是k-means算法的变体,其训练过程也差点儿相同(EM算法的思想:假设要优化的目标函数包括两个变量,如L(W, B),那么我们能够先固定W,调整B使得L最小,然后再固定B,调整W使L最小,这样迭代交替,不断将L推向最小值。EM算法能够见我的博客:“从最大似然到EM算法浅解”)。

       训练过程就是一个反复迭代的过程,按上面所说,我们交替的更改a和Φ使得以下这个目标函数最小。

<span>Deep Learning(深度学习)学习笔记整理系列之(五)</span>

      每次迭代分两步:

a)固定字典Φ[k],然后调整a[k],使得上式,即目标函数最小(即解LASSO问题)。

b)然后固定住a [k],调整Φ [k],使得上式,即目标函数最小(即解凸QP问题)。

      不断迭代,直至收敛。这样就能够得到一组能够良好表示这一系列x的基,也就是字典。

2)Coding阶段:给定一个新的图片x,由上面得到的字典,通过解一个LASSO问题得到稀疏向量a。这个稀疏向量就是这个输入向量x的一个稀疏表达了。

<span>Deep Learning(深度学习)学习笔记整理系列之(五)</span>

比如:

<span>Deep Learning(深度学习)学习笔记整理系列之(五)</span>

 

下续

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/119131.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • vmware15激活码-激活码分享

    (vmware15激活码)JetBrains旗下有多款编译器工具(如:IntelliJ、WebStorm、PyCharm等)在各编程领域几乎都占据了垄断地位。建立在开源IntelliJ平台之上,过去15年以来,JetBrains一直在不断发展和完善这个平台。这个平台可以针对您的开发工作流进行微调并且能够提供…

    2022年3月22日
    147
  • 零拷贝技术_基因单拷贝

    零拷贝技术_基因单拷贝零拷贝技术概述零拷贝技术指在计算机执行操作时,CPU不需要先将数据从一个内存区域复制到另一个内存区域,从而可以减少上下文切换以及CPU的拷贝时间。它的作用是在数据报从网络设备到用户程序空间传递的过程中,减少数据拷贝次数,减少系统调用,实现CPU的零参与,彻底消除CPU的负载。实现零拷贝用到的主要技术是DMA数据传输技术和内存区域映射技术零拷贝机制可以减少数据在内核缓冲区和用户进程缓冲区之间反复的I/O拷贝操作零拷贝机制可以减少用户进程地址空间之间因为上下文切换而带来的CPU开销物理内存和虚拟

    2022年9月21日
    4
  • LTE通讯相关2:频带、信道带宽和频点号EARFCN「建议收藏」

    LTE通讯相关2:频带、信道带宽和频点号EARFCN「建议收藏」版权声明:本文为博主原创文章,遵循CC4.0BY-SA版权协议,转载请附上原文出处链接和本声明。…

    2022年10月7日
    2
  • 数据结构之循环队列C语言实现(详细)[通俗易懂]

    数据结构之循环队列C语言实现(详细)[通俗易懂]队列的一些说明队列的定义队列,一种特殊的线性表特点:只允许在一端输入,在另一端输出。输入端称为队尾,输出端称为队头因此,队列,又称为先进先出表(FIFO),类似于生活中的排队,先来的排在前头,后来的排在后头,一个一个办理业务。队列有两种,一种叫做循环队列(顺序队列),另一种叫做链式队列。这一篇讲的是循环队列,链式队列在另外一篇文章中循环数组循环队列使用的是数组,但是这个数组比较特别,为循环数组。为什么要使用循环数组呢?可以想象一下,假如我们使用通常的数组。那么在使用过程中,我们是从后面加

    2022年5月26日
    48
  • C语言实现推箱子游戏

    C语言实现推箱子游戏很早就想过做点小游戏了,但是一直没有机会动手。今天闲来无事,动起手来。过程还是蛮顺利的,代码也不是非常难。今天给大家分享一下~一、介绍开发语言:C语言开发工具:Dev-C++5.11日期:2019年9月28日作者:ZackSock也不说太多多余的话了,先看一下效果图:游戏中的人物、箱子、墙壁、球都是字符构成的。通过wasd键移动,规则的话就是推箱子的规则,也就不多说了。二、代…

    2022年5月18日
    35
  • 比特币p2p协议_协议栈p2p

    比特币p2p协议_协议栈p2p比特币网络节点具有所有四个功能(理论上的很多来自《精通比特币》):钱包:用户钱包也可以作为全节点的一部分(桌面比特币客户端中比较常见);当前,越来越多的用户钱包都是SPV节点(诸如智能手机)矿工:挖矿节点通过运行在特殊硬件设备上的工作量证明(proof-of-work)算法,以相互竞争的方式创建新的区块,一些挖矿节点同时也是全节点,保有区块链的完整拷贝;还有一些参与矿池挖矿的节点是轻量级节…

    2022年8月30日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号