Deep Learning(深度学习)学习系列之(二)

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

声明:

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

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

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

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

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

目录:

一、概述

二、背景

三、人脑视觉机理

四、关于特征

4.1、特征表示的粒度

4.2、初级(浅层)特征表示

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学习资源

接上

因为我们要学习的是特征的表达,那么关于特征,或者说关于这个层级特征,我们需要了解地更深入点。所以在说Deep Learning之前,我们有必要再啰嗦下特征(呵呵,实际上是看到那么好的对特征的解释,不放在这里有点可惜,所以就塞到这了)。

四、关于特征

特征是机器学习系统的原材料,对最终模型的影响是毋庸置疑的。如果数据被很好的表达成了特征,通常线性模型就能达到满意的精度。那对于特征,我们需要考虑什么呢?

4.1、特征表示的粒度

学习算法在一个什么粒度上的特征表示,才有能发挥作用?就一个图片来说,像素级的特征根本没有价值。例如下面的摩托车,从像素级别,根本得不到任何信息,其无法进行摩托车和非摩托车的区分。而如果特征是一个具有结构性(或者说有含义)的时候,比如是否具有车把手(handle),是否具有车轮(wheel),就很容易把摩托车和非摩托车区分,学习算法才能发挥作用。

4.2、初级(浅层)特征表示

既然像素级的特征表示方法没有作用,那怎样的表示才有用呢?

1995 年前后,Bruno Olshausen和 David Field 两位学者任职 Cornell University,他们试图同时用生理学和计算机的手段,双管齐下,研究视觉问题。

他们收集了很多黑白风景照片,从这些照片中,提取出400个小碎片,每个照片碎片的尺寸均为 16x16 像素,不妨把这400个碎片标记为 S[i], i = 0,.. 399。接下来,再从这些黑白风景照片中,随机提取另一个碎片,尺寸也是 16x16 像素,不妨把这个碎片标记为 T。

他们提出的问题是,如何从这400个碎片中,选取一组碎片,S[k], 通过叠加的办法,合成出一个新的碎片,而这个新的碎片,应当与随机选择的目标碎片 T,尽可能相似,同时,S[k] 的数量尽可能少。用数学的语言来描述,就是:

Sum_k (a[k] * S[k]) --> T,     其中 a[k] 是在叠加碎片 S[k] 时的权重系数。

为解决这个问题,Bruno Olshausen和 David Field 发明了一个算法,稀疏编码(Sparse Coding)。

稀疏编码是一个重复迭代的过程,每次迭代分两步:

1)选择一组 S[k],然后调整 a[k],使得Sum_k (a[k] * S[k]) 最接近 T。

2)固定住 a[k],在 400 个碎片中,选择其它更合适的碎片S’[k],替代原先的 S[k],使得Sum_k (a[k] * S’[k]) 最接近 T。

经过几次迭代后,最佳的 S[k] 组合,被遴选出来了。令人惊奇的是,被选中的 S[k],基本上都是照片上不同物体的边缘线,这些线段形状相似,区别在于方向。

Bruno Olshausen和 David Field 的算法结果,与 David Hubel 和Torsten Wiesel 的生理发现,不谋而合!

也就是说,复杂图形,往往由一些基本结构组成。比如下图:一个图可以通过用64种正交的edges(可以理解成正交的基本结构)来线性表示。比如样例的x可以用1-64个edges中的三个按照0.8,0.3,0.5的权重调和而成。而其他基本edge没有贡献,因此均为0 。

另外,大牛们还发现,不仅图像存在这个规律,声音也存在。他们从未标注的声音中发现了20种基本的声音结构,其余的声音可以由这20种基本结构合成。

 

4.3、结构性特征表示

小块的图形可以由基本edge构成,更结构化,更复杂的,具有概念性的图形如何表示呢?这就需要更高层次的特征表示,比如V2,V4。因此V1看像素级是像素级。V2看V1是像素级,这个是层次递进的,高层表达由底层表达的组合而成。专业点说就是基basis。V1取提出的basis是边缘,然后V2层是V1层这些basis的组合,这时候V2区得到的又是高一层的basis。即上一层的basis组合的结果,上上层又是上一层的组合basis……(所以有大牛说Deep
learning就是“搞基”,因为难听,所以美其名曰Deep learning或者Unsupervised Feature Learning)

直观上说,就是找到make sense的小patch再将其进行combine,就得到了上一层的feature,递归地向上learning feature。

在不同object上做training是,所得的edge basis 是非常相似的,但object parts和models 就会completely different了(那咱们分辨car或者face是不是容易多了):

从文本来说,一个doc表示什么意思?我们描述一件事情,用什么来表示比较合适?用一个一个字嘛,我看不是,字就是像素级别了,起码应该是term,换句话说每个doc都由term构成,但这样表示概念的能力就够了嘛,可能也不够,需要再上一步,达到topic级,有了topic,再到doc就合理。但每个层次的数量差距很大,比如doc表示的概念->topic(千-万量级)->term(10万量级)->word(百万量级)。

一个人在看一个doc的时候,眼睛看到的是word,由这些word在大脑里自动切词形成term,在按照概念组织的方式,先验的学习,得到topic,然后再进行高层次的learning。

4.4、需要有多少个特征?

我们知道需要层次的特征构建,由浅入深,但每一层该有多少个特征呢?

任何一种方法,特征越多,给出的参考信息就越多,准确性会得到提升。但特征多意味着计算复杂,探索的空间大,可以用来训练的数据在每个特征上就会稀疏,都会带来各种问题,并不一定特征越多越好。

好了,到了这一步,终于可以聊到Deep learning了。上面我们聊到为什么会有Deep learning(让机器自动学习良好的特征,而免去人工选取过程。还有参考人的分层视觉处理系统),我们得到一个结论就是Deep learning需要多层来获得更抽象的特征表达。那么多少层才合适呢?用什么架构来建模呢?怎么进行非监督训练呢?

时间: 2024-11-08 10:11:54

Deep Learning(深度学习)学习系列之(二)的相关文章

oracle学习入门系列之二 数据库基础知识

oracle学习入门系列之二 数据库基础知识 本篇蛤蟆要梳理下那些被淡忘的数据库基础知识,也许根本就没被人记住过.不管是哪种情况,该记住的必须记住,记不住就把他记下来吧. 首先问几个问题如下: 数据库基础知识是什么? 好吧,蛤蟆直接吐后而不亡,看目录开始吧. 本人邮箱:[email protected] 微信公众号:HopToad 欢迎各界交流 1      基本概念 概念就是概念,大伙对这些名词不要死磕,但是对定义一定要理解,理解方能领悟,领悟方能运用自如后创新. 1.1      数据 数据

Deep Learning 深度学习 学习教程网站集锦

http://blog.sciencenet.cn/blog-517721-852551.html 学习笔记:深度学习是机器学习的突破 2006-2007年,加拿大多伦多大学教授.机器学习领域的泰斗Geoffrey Hinton和他的学生RuslanSalakhutdinov在<科学>以及在Neural computation 和 NIPS上发表了4篇文章,这些文章有两个主要观点: 1)多隐层的人工神经网络具有优异的特征学习能力,学习得到的特征对数据有更本质的刻画,从而有利于可视化或分类: 2

Deep Reinforcement Learning 深度增强学习资源

1 学习资料 增强学习课程 David Silver (有视频和ppt): http://www0.cs.ucl.ac.uk/staff/D.Silver/web/Teaching.html 最好的增强学习教材: Reinforcement Learning: An Introduction https://webdocs.cs.ualberta.ca/~sutton/book/the-book.html 深度学习课程 (有视频有ppt有作业) https://www.cs.ox.ac.uk/p

【干货总结】| Deep Reinforcement Learning 深度强化学习

在机器学习中,我们经常会分类为有监督学习和无监督学习,但是尝尝会忽略一个重要的分支,强化学习.有监督学习和无监督学习非常好去区分,学习的目标,有无标签等都是区分标准.如果说监督学习的目标是预测,那么强化学习就是决策,它通过对周围的环境不断的更新状态,给出奖励或者惩罚的措施,来不断调整并给出新的策略.简单来说,就像小时候你在不该吃零食的时间偷吃了零食,你妈妈知道了会对你做出惩罚,那么下一次就不会犯同样的错误,如果遵守规则,那你妈妈兴许会给你一些奖励,最终的目标都是希望你在该吃饭的时候吃饭,该吃零食

A guide to convolution arithmetic for deep learning(深度学习卷积算法指导书)

A guide to convolution arithmetic for deep learning 的原文链接地址:http://pan.baidu.com/s/1pKUd5vP 以下内容是自己的理解和翻译,其中有错误的地方希望大家指正.同时很乐意与大家进行讨论. 未完待续......

Deep Learning(1)-Introduction学习总结

学习DL搁置很久了,终于下定决心开始咯~~ Deep Learning(Ian Goodfellow&&Yoshua Bengio&&Aaron Courville)-原书来源:http://www.deeplearningbook.com/ 从人工智能说起,谈到人工智能要解决的问题.在早期,人工智能倾向于研究那些对人类来说困难,但对机器来说相对直接而简单的问题,这些问题的共同点在于可以很容易用形式化的数学规则来描述.而人工智能面临的真正挑战在于解决那些对人来说容易,但很难

Deep Learning for NLP学习翻译笔记(2)

Deep Learning for NLP Deep Learning for NLP Lecture 2:Introduction to Teano enter link description here Neural Networks can be expressed as one long function of vector and matrix operations. (神经网络可以表示为一个向量和矩阵运算的长函数.) Common Frameworks(常用框架) C/C++ if

WebService学习笔记系列(二)

soap(简单对象访问协议),它是在http基础之上传递xml格式数据的协议.soap协议分为两个版本,soap1.1和soap1.2. 在学习webservice时我们有一个必备工具叫做tcpmon,该工具可以直接下载得到.使用tcpmon可以嗅探网络中传输的数据,便于我们更好的理解soap协议. 下载好tcpmon之后,打开该软件,如图简单设置 tcpmon相当于一个代理服务器,打开tcpmon后,如果把监听端口设置为9999,目标端口设置为8888,当用户访问9999端口时,消息会被tcp

《神经网络和深度学习》系列文章二:感知机

出处: Michael Nielsen的<Neural Network and Deep Leraning>,点击末尾“阅读原文”即可查看英文原文. 本节译者:哈工大SCIR硕士生 徐梓翔 (https://github.com/endyul) 声明:我们将在每周一,周四,周日定期连载该书的中文翻译,如需转载请联系[email protected],未经授权不得转载. “本文转载自[哈工大SCIR]微信公众号,转载已征得同意.” 使用神经网络识别手写数字 感知机 sigmoid神经元 神经网络

Deep Active Learning 深度主动学习

Deep Active Learning 最上方为监督学习,对面为非监督学习,之间包括增强学习.半监督学习.在线学习.主动学习. Supervised Learing 将未标记的数据交给Work进行标记,然后将标记数据交给Learner进行训练. Semi-Supervised Learning 在监督学习的基础上加了一条线,也就是把大量的未标记数据和少量的标记数据交给Learner进行训练,这样可以减少人工标记的时间. Active Learning 通过Learner来决定哪些数据需要被标记