from:http://farmingyard.diandian.com/post/2013-04-07/40049536511php
来源:十一城 http://elevencitys.com/?p=1854html
深度学习是机器学习研究中的一个新的领域,其动机在于创建、模拟人脑进行分析学习的神经网络,它模仿人脑的机制来解释数据,例如图像,声音和文本。深度学习是无监督学习的一种。web
深度学习的概念源于人工神经网络的研究。含多隐层的多层感知器就是一种深度学习结构。深度学习经过组合低层特征造成更加抽象的高层表示属性类别或特征,以发现数据的分布式特征表示。面试
深度学习的概念由Hinton等人于2006年提出。基于深信度网(DBN)提出非监督贪心逐层训练算法,为解决深层结构相关的优化难题带来但愿,随后提出多层自动编码器深层结构。此外Lecun等人提出的卷积神经网络是第一个真正多层结构学习算法,它利用空间相对关系减小参数数目以提升训练性能。算法
【1】网络
图灵在 1950 年的论文里,提出图灵试验的设想,即,隔墙对话,你将不知道与你谈话的,是人仍是电脑 [1]。架构
这无疑给计算机,尤为是人工智能,预设了一个很高的指望值。可是半个世纪过去了,人工智能的进展,远远没有达到图灵试验的标准。这不只让多年翘首以待的人们,心灰意冷,认为人工智能是忽悠,相关领域是“伪科学”。机器学习
2008 年 6 月,“连线”杂志主编,Chris Anderson 发表文章,题目是 “理论的终极,数据的泛滥将让科学方法过期”。而且文中还引述经典著做 “人工智能的现代方法”的合著者,时任 Google 研究总监的 Peter Norvig 的言论,说 “一切模型都是错的。进而言之,抛弃它们,你就会成功”[2]。分布式
言下之意,精巧的算法是无心义的。面对海量数据,即使只用简单的算法,也能获得出色的结果。与其钻研算法,不如研究云计算,处理大数据。ide
若是这番言论,发生在 2006 年之前,可能我不会强力反驳。可是自 2006 年以来,机器学习领域,取得了突破性的进展。
图灵试验,至少不是那么可望而不可即了。至于技术手段,不只仅依赖于云计算对大数据的并行处理能力,并且依赖于算法。这个算法就是,Deep Learning。
借助于 Deep Learning 算法,人类终于找到了如何处理 “抽象概念”这个亘古难题的方法。
因而学界忙着延揽相关领域的大师。Alex Smola 加盟 CMU,就是这个背景下的插曲。悬念是 Geoffrey Hinton 和 Yoshua Bengio 这两位牛人,最后会加盟哪所大学。
Geoffrey Hinton 曾经转战 Cambridge、CMU,目前任教University of Toronto。相信挖他的名校必定很多。
Yoshua Bengio 经历比较简单,McGill University 得到博士后,去 MIT 追随 Mike Jordan 作博士后。目前任教 University of Montreal。
Deep Learning 引爆的这场革命,不只学术意义巨大,并且离钱很近,实在太近了。若是把相关技术难题比喻成一座山,那么翻过这座山,山后就是特大露天金矿。技术难题解决之后,剩下的事情,就是动用资本和商业的强力手段,跑马圈地了。
因而各大公司重兵集结,虎视眈眈。Google 兵分两路,左路以 Jeff Dean 和 Andrew Ng 为首,重点突破 Deep Learning 等等算法和应用 [3]。
Jeff Dean 在 Google 诸位 Fellows 中,名列榜首,GFS 就是他的杰做。Andrew Ng 本科时,就读 CMU,后来去 MIT 追随 Mike Jordan。Mike Jordan 在 MIT 人缘很差,后来愤然出走 UC Berkeley。Andrew Ng 绝不犹豫追随导师,也去了 Berkeley。拿到博士后,任教 Stanford,是 Stanford 新生代教授中的佼佼者,同时兼职 Google。
Google 右路军由 Amit Singhal 领军,目标是构建 Knowledge Graph 基础设施。
1996 年 Amit Singhal 从 Cornell University 拿到博士学位后,去 Bell Lab 工做,2000 年加盟 Google。听说他去 Google 面试时,对 Google 创始人 Sergey Brian 说,“Your engine is excellent, but let me rewirte it!”[4]
换了别人,说不定一个大巴掌就扇过去了。可是 Sergey Brian 大人大量,不只不怪罪小伙子的轻狂,反而真的让他从事新一代排名系统的研发。Amit Singhal 目前任职 Google 高级副总裁,掌管 Google 最核心的业务,搜索引擎。
Google 把王牌中之王牌,押宝在 Deep Learning 和 Knowledge Graph 上,目的是更快更大地夺取大数据革命的胜利果实。
Reference
[1] Turing Test.
http://en.wikipedia.org/wiki/Turing_test
[2] The End of Theory: The Data Deluge Makes the Scientific Method Obsolete
http://www.wired.com/science/discoveries/magazine/16-07/pb_theory
[3] Introduction to Deep Learning.
http://en.wikipedia.org/wiki/Deep_learning
[4] Interview with Amit Singhal, Google Fellow.
http://searchengineland.com/interview-with-amit-singhal-google-fellow-121342
【2】
1981 年的诺贝尔医学奖,颁发给了 David Hubel 和 Torsten Wiesel,以及 Roger Sperry。前两位的主要贡献,是 “发现了视觉系统的信息处理”[1]。
1958 年,David Hubel 和 Torsten Wiesel 在 John Hopkins University,研究瞳孔区域与大脑皮层神经元的对应关系。他们在猫的后脑头骨上,开了一个 3 毫米的小洞,向洞里插入电极,测量神经元的活跃程度。
而后,他们在小猫的眼前,展示各类形状、各类亮度的物体。而且,在展示每一件物体时,还改变物体放置的位置和角度。他们指望经过这个办法,让小猫瞳孔感觉不一样类型、不一样强弱的刺激。
之因此作这个试验,目的是去证实一个猜想。位于后脑皮层的不一样视觉神经元,与瞳孔所受刺激之间,存在某种对应关系。一旦瞳孔受到某一种刺激,后脑皮层的某一部分神经元就会活跃。
经历了数日反复的枯燥的试验,同时牺牲了若干只可怜的小猫,David Hubel 和 Torsten Wiesel 发现了一种被称为 “方向选择性细胞(Orientation Selective Cell)”的神经元细胞。当瞳孔发现了眼前的物体的边缘,并且这个边缘指向某个方向时,这种神经元细胞就会活跃。
这个发现激发了人们对于神经系统的进一步思考。神经-中枢-大脑的工做过程,或许是一个不断迭代、不断抽象的过程。
这里的关键词有两个,一个是抽象,一个是迭代。从原始信号,作低级抽象,逐渐向高级抽象迭代。人类的逻辑思惟,常用高度抽象的概念。
例如,从原始信号摄入开始(瞳孔摄入像素 Pixels),接着作初步处理(大脑皮层某些细胞发现边缘和方向),而后抽象(大脑断定,眼前的物体的形状,是圆形的),而后进一步抽象(大脑进一步断定该物体是只气球)。
这个生理学的发现,促成了计算机人工智能,在四十年后的突破性发展。
Reference,
[1] The Nobel Prize in Physiology or Medicine 1981.
http://www.nobelprize.org/nobel_prizes/medicine/laureates/1981/
【3】
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],基本上都是照片上不一样物体的边缘线,这些线段形状类似,区别在于方向。[1]
Bruno Olshausen 和 David Field 的算法结果,与 David Hubel 和 Torsten Wiesel 的生理发现,不谋而合!
人工智能更加逼近天然智能了!
图一. Illustration of Sparse Coding。
Reference,
[1] Emergence of Simple-Cell Receptive Field Properties by Learning a Sparse Code for Natural Images.
http://redwood.berkeley.edu/bruno/papers/nature-paper.pdf
原文连接:http://blog.sina.com.cn/s/blog_46d0a3930101fswl.html
做者微博:http://weibo.com/kandeng#1360336038853
实际生活中,人们为了解决一个问题,如对象的分类(对象但是是文档、图像等),首先必须作的事情是如何来表达一个对象,即必须抽取一些特征来表示一个对象,如文本的处理中,经常用词集合来表示一个文档,或把文档表示在向量空间中(称为VSM模型),而后才能提出不一样的分类算法来进行分类;又如在图像处理中,咱们能够用像素集合来表示一个图像,后来人们提出了新的特征表示,如SIFT,这种特征在不少图像处理的应用中表现很是良好,特征选取得好坏对最终结果的影响很是巨大。所以,选取什么特征对于解决一个实际问题很是的重要。
然而,手工地选取特征是一件很是费力、启发式的方法,能不能选取好很大程度上靠经验和运气;既然手工选取特征不太好,那么能不能自动地学习一些特征呢?答案是能!Deep Learning就是用来干这个事情的,看它的一个别名Unsupervised Feature Learning,就能够顾名思义了,Unsupervised的意思就是不要人参与特征的选取过程。所以,自动地学习特征的方法,统称为Deep Learning。
1)Deep Learning的基本思想
假设咱们有一个系统S,它有n层(S1,…Sn),它的输入是I,输出是O,形象地表示为: I =>S1=>S2=>…..=>Sn => O,若是输出O等于输入I,即输入I通过这个系统变化以后没有任何的信息损失,保持了不变,这意味着输入I通过每一层Si都没有任何的信息损失,即在任何一层Si,它都是原有信息(即输入I)的另一种表示。如今回到咱们的主题Deep Learning,咱们须要自动地学习特征,假设咱们有一堆输入I(如一堆图像或者文本),假设咱们设计了一个系统S(有n层),咱们经过调整系统中参数,使得它的输出仍然是输入I,那么咱们就能够自动地获取获得输入I的一系列层次特征,即S1,…, Sn。
另外,前面是假设输出严格地等于输入,这个限制太严格,咱们能够略微地放松这个限制,例如咱们只要使得输入与输出的差异尽量地小便可,这个放松会致使另一类不一样的Deep Learning方法。上述就是Deep Learning的基本思想。
2)Deep Learning的经常使用方法
a). AutoEncoder
最简单的一种方法是利用人工神经网络的特色,人工神经网络(ANN)自己就是具备层次结构的系统,若是给定一个神经网络,咱们假设其输出与输入是相同的,而后训练调整其参数,获得每一层中的权重,天然地,咱们就获得了输入I的几种不一样表示(每一层表明一种表示),这些表示就是特征,在研究中能够发现,若是在原有的特征中加入这些自动学习获得的特征能够大大提升精确度,甚至在分类问题中比目前最好的分类算法效果还要好!这种方法称为AutoEncoder。固然,咱们还能够继续加上一些约束条件获得新的Deep Learning方法,如若是在AutoEncoder的基础上加上L1的Regularity限制(L1主要是约束每一层中的节点中大部分都要为0,只有少数不为0,这就是Sparse名字的来源),咱们就能够获得Sparse AutoEncoder方法。
b). Sparse Coding
若是咱们把输出必须和输入相等的限制放松,同时利用线性代数中基的概念,即O = w1*B1 + W2*B2+….+ Wn*Bn, Bi是基,Wi是系数,咱们能够获得这样一个优化问题:
Min |I – O|
经过求解这个最优化式子,咱们能够求得系数Wi和基Bi,这些系数和基础就是输入的另一种近似表达,所以,它们能够特征来表达输入I,这个过程也是自动学习获得的。若是咱们在上述式子上加上L1的Regularity限制,获得:
Min |I – O| + u*(|W1| + |W2| + … + |Wn|)
这种方法被称为Sparse Coding。
c) Restrict Boltzmann Machine (RBM)
假设有一个二部图,每一层的节点之间没有连接,一层是可视层,即输入数据层(v),一层是隐藏层(h),若是假设全部的节点都是二值变量节点(只能取0或者1值),同时假设全几率分布p(v, h)知足Boltzmann 分布,咱们称这个模型是Restrict Boltzmann Machine (RBM)。下面咱们来看看为何它是Deep Learning方法。首先,这个模型由于是二部图,因此在已知v的状况下,全部的隐藏节点之间是条件独立的,即p(h|v) =p(h1|v)…..p(hn|v)。同理,在已知隐藏层h的状况下,全部的可视节点都是条件独立的,同时又因为全部的v和h知足Boltzmann 分布,所以,当输入v的时候,经过p(h|v) 能够获得隐藏层h,而获得隐藏层h以后,经过p(v|h) 又能获得可视层,经过调整参数,咱们就是要使得从隐藏层获得的可视层v1与原来的可视层v若是同样,那么获得的隐藏层就是可视层另一种表达,所以隐藏层能够做为可视层输入数据的特征,因此它就是一种Deep Learning方法。
若是,咱们把隐藏层的层数增长,咱们能够获得Deep Boltzmann Machine (DBM);若是咱们在靠近可视层的部分使用贝叶斯信念网络(即有向图模型,固然这里依然限制层中节点之间没有连接),而在最远离可视层的部分使用Restrict Boltzmann Machine,咱们能够获得Deep Belief Net (DBN) 。
固然,还有其它的一些Deep Learning 方法,在这里就不叙述了。总之,Deep Learning可以自动地学习出数据的另一种表示方法,这种表示能够做为特征加入原有问题的特征集合中,从而能够提升学习方法的效果,是目前业界的研究热点。
原文连接:http://blog.csdn.net/xianlingmao/article/details/8478562
查看最新论文
深度(Depth)
从一个输入中产生一个输出所涉及的计算能够经过一个流向图(flow graph)来表示:流向图是一种可以表示计算的图,在这种图中每个节点表示一个基本的计算而且一个计算的值(计算的结果被应用到这个节点的孩子节点的值)。考虑这样一个计算集合,它能够被容许在每个节点和可能的图结构中,并定义了一个函数族。输入节点没有孩子,输出节点没有父亲。
对于表达sin(a^2+b/a) 的流向图,能够经过一个有两个输入节点a和b的图表示,其中一个节点经过使用a和b做为输入(例如做为孩子)来表示b/a ;一个节点仅使用a做为输入来表示平方;一个节点使用a^2和b/a 做为输入来表示加法项(其值为a^2+b/a);最后一个输出节点利用一个单独的来自于加法节点的输入计算SIN。
这种流向图的一个特别属性是深度(depth):从一个输入到一个输出的最长路径的长度。
传统的前馈神经网络可以被看作拥有等于层数的深度(好比对于输出层为隐层数加1)。SVMs有深度2(一个对应于核输出或者特征空间,另外一个对应于所产生输出的线性混合)。
深度架构的动机
学习基于深度架构的学习算法的主要动机是:
不充分的深度是有害的;
大脑有一个深度架构;
认知过程是深度的;
在许多情形中深度2就足够(好比logical gates, formal [threshold] neurons, sigmoid-neurons, Radial Basis Function [RBF] units like in SVMs)表示任何一个带有给定目标精度的函数。可是其代价是:图中所须要的节点数(好比计算和参数数量)可能变的很是大。理论结果证明那些事实上所须要的节点数随着输入的大小指数增加的函数族是存在的。这一点已经在logical gates, formal [threshold] neurons 和rbf单元中获得证明。在后者中Hastad说明了但深度是d时,函数族能够被有效地(紧地)使用O(n)个节点(对于n个输入)来表示,可是若是深度被限制为d-1,则须要指数数量的节点数O(2^n)。
咱们能够将深度架构看作一种因子分解。大部分随机选择的函数不能被有效地表示,不管是用深地或者浅的架构。可是许多可以有效地被深度架构表示的却不能被用浅的架构高效表示(see the polynomials example in the Bengio survey paper)。一个紧的和深度的表示的存在乎味着在潜在的可被表示的函数中存在某种结构。若是不存在任何结构,那将不可能很好地泛化。
例如,视觉皮质获得了很好的研究,并显示出一系列的区域,在每个这种区域中包含一个输入的表示和从一个到另外一个的信号流(这里忽略了在一些层次并行路径上的关联,所以更复杂)。这个特征层次的每一层表示在一个不一样的抽象层上的输入,并在层次的更上层有着更多的抽象特征,他们根据低层特征定义。
须要注意的是大脑中的表示是在中间紧密分布而且纯局部:他们是稀疏的:1%的神经元是同时活动的。给定大量的神经元,任然有一个很是高效地(指数级高效)表示。
人类层次化地组织思想和概念;
人类首先学习简单的概念,而后用他们去表示更抽象的;
工程师将任务分解成多个抽象层次去处理;
学习/发现这些概念(知识工程因为没有检讨而失败?)是很美好的。对语言可表达的概念的检讨也建议咱们一个稀疏的表示:仅全部可能单词/概念中的一个小的部分是可被应用到一个特别的输入(一个视觉场景)。
学习深度架构的突破
2006年前,尝试训练深度架构都失败了:训练一个深度有监督前馈神经网络趋向于产生坏的结果(同时在训练和测试偏差中),而后将其变浅为1(1或者2个隐层)。
2006年的3篇论文改变了这种情况,由Hinton的革命性的在深度信念网(Deep Belief Networks, DBNs)上的工做所引领:
Hinton, G. E., Osindero, S. and Teh, Y., A fast learning algorithm for deep belief nets.Neural Computation 18:1527-1554, 2006
Yoshua Bengio, Pascal Lamblin, Dan Popovici and Hugo Larochelle, Greedy Layer-Wise Training of Deep Networks, in J. Platt et al. (Eds), Advances in Neural Information Processing Systems 19 (NIPS 2006), pp. 153-160, MIT Press, 2007
Marc’Aurelio Ranzato, Christopher Poultney, Sumit Chopra and Yann LeCun Efficient Learning of Sparse Representations with an Energy-Based Model, in J. Platt et al. (Eds), Advances in Neural Information Processing Systems (NIPS 2006), MIT Press, 2007
在这三篇论文中如下主要原理被发现:
表示的无监督学习被用于(预)训练每一层;
在一个时间里的一个层次的无监督训练,接着以前训练的层次。在每一层学习到的表示做为下一层的输入;
用无监督训练来调整全部层(加上一个或者更多的用于产生预测的附加层);
DBNs在每一层中利用用于表示的无监督学习RBMs。Bengio et al paper 探讨和对比了RBMs和auto-encoders(经过一个表示的瓶颈内在层预测输入的神经网络)。Ranzato et al paper在一个convolutional架构的上下文中使用稀疏auto-encoders(相似于稀疏编码)。Auto-encoders和convolutional架构将在之后的课程中讲解。
从2006年以来,大量的关于深度学习的论文被发表,一些探讨了其余原理来引导中间表示的训练,查看Learning Deep Architectures for AI
原文连接: http://www.cnblogs.com/ysjxw/archive/2011/10/08/2201782.html
Deep Learning 经典阅读材料:
The monograph or review paper Learning Deep Architectures for AI (Foundations & Trends in Machine Learning, 2009).
The ICML 2009 Workshop on Learning Feature Hierarchieswebpage has a list of references.
The LISA public wiki has a reading list and a bibliography.
Geoff Hinton has readings from last year’s NIPS tutorial.
Deep Learning工具—— Theano:
Theano是deep learning的Python库,要求首先熟悉Python语言和numpy,建议读者先看Theano basic tutorial,而后按照Getting Started 下载相关数据并用gradient descent的方法进行学习。
学习了Theano的基本方法后,能够练习写如下几个算法:
有监督学习:
Logistic Regression - using Theano for something simple
Multilayer perceptron - introduction to layers
Deep Convolutional Network - a simplified version of LeNet5
无监督学习:
Auto Encoders, Denoising Autoencoders - description of autoencoders
Stacked Denoising Auto-Encoders - easy steps into unsupervised pre-training for deep nets
Restricted Boltzmann Machines - single layer generative RBM model
Deep Belief Networks - unsupervised generative pre-training of stacked RBMs followed by supervised fine-tuning
最后呢,推荐给你们基本ML的书籍:
Chris Bishop, “Pattern Recognition and Machine Learning”, 2007
Simon Haykin, “Neural Networks: a Comprehensive Foundation”, 2009 (3rd edition)
Richard O. Duda, Peter E. Hart and David G. Stork, “Pattern Classification”, 2001 (2nd edition)
原文连接:http://blog.csdn.net/abcjennifer/article/details/7826917
一、计算机视觉。
ImageNet Classification with Deep Convolutional Neural Networks, Alex Krizhevsky, Ilya Sutskever, Geoffrey E Hinton, NIPS 2012.
Learning Hierarchical Features for Scene Labeling, Clement Farabet, Camille Couprie, Laurent Najman and Yann LeCun, IEEE Transactions on Pattern Analysis and Machine Intelligence, 2013.
Learning Convolutional Feature Hierachies for Visual Recognition, Koray Kavukcuoglu, Pierre Sermanet, Y-Lan Boureau, Karol Gregor, Michaël Mathieu and Yann LeCun, Advances in Neural Information Processing Systems (NIPS 2010), 23, 2010.
二、语音识别。
微软研究人员经过与hintion合做,首先将RBM和DBN引入到语音识别声学模型训练中,而且在大词汇量语音识别系统中得到巨大成功,使得语音识别的错误率相对减低30%。可是,DNN尚未有效的并行快速算法,目前,不少研究机构都是在利用大规模数据语料经过GPU平台提升DNN声学模型的训练效率。
在国际上,IBM、google等公司都快速进行了DNN语音识别的研究,而且速度飞快。
国内方面,科大讯飞、百度、中科院自动化所等公司或研究单位,也在进行深度学习在语音识别上的研究。
三、天然语言处理等其余领域
不少机构在开展研究,但目前深度学习在天然语言处理方面尚未产生系统性的突破。
1.http://baike.baidu.com/view/9964678.htm?subLemmaId=10105430&fromenter=deep+learning
2.http://www.cnblogs.com/ysjxw/archive/2011/10/08/2201819.html