2017-07-25 16:10:44 epubit17 阅读数 4518
  • 机器学习&深度学习系统实战!

    购买课程后,可扫码进入学习群,获取唐宇迪老师答疑 数学原理推导与案例实战紧密结合,由机器学习经典算法过度到深度学习的世界,结合深度学习两大主流框架Caffe与Tensorflow,选择经典项目实战人脸检测与验证码识别。原理推导,形象解读,案例实战缺一不可!具体课程内容涉及回归算法原理推导、决策树与随机森林、实战样本不均衡数据解决方案、支持向量机、Xgboost集成算法、神经网络基础、神经网络整体架构、卷积神经网络、深度学习框架--Tensorflow实战、案例实战--验证码识别、案例实战--人脸检测。 专属会员卡优惠链接:http://edu.csdn.net/lecturer/1079

    39685 人正在学习 去看看 唐宇迪


通过历史背景了解深度学习是最简单的方式。这里我们仅指出深度学习的几个关键趋势,而不是提供其详细的历史:

深度学习有着悠久而丰富的历史,但随着许多不同哲学观点的渐渐消逝,与之对应的名称也渐渐尘封。 随着可用的训练数据量不断增加,深度学习变得更加有用。 随着时间的推移,针对深度学习的计算机软硬件基础设施都有所改善,深度学习模型的规模也随之增长。 随着时间的推移,深度学习已经解决日益复杂的应用,并且精度不断提高。

神经网络的众多名称和命运变迁

许多人都听说过深度学习这一激动人心的新技术。事实上,深度学习的历史可以追溯到 20 世纪 40 年代。深度学习看似是一个全新的领域,只不过因为在目前流行的前几年它还是相对冷门的,同时也因为它被赋予了许多不同的名称 (其中大部分已经不再使用),最近才成为众所周知的“深度学习”。这个领域已经更换了很多名称,它反映了不同的研究人员和不同观点的影响。一般认为,迄今为止深度学习已经经历了 3 次发展浪潮:20 世纪 40 年代到 60 年代,深度学习的雏形出现在控制论(cybernetics) 中;20 世纪 80 年代到 90 年代,深度学习表现为联结主义(connectionism);直到 2006 年,才真正以深度学习之名复兴。图 1 给出了定量的展示。

我们今天知道的一些最早的学习算法,旨在模拟生物学习的计算模型,即大脑怎样学习或为什么能学习的模型。其结果是深度学习以人工神经网络(artificial neural network, ANN) 之名而淡去。彼时,深度学习模型被认为是受生物大脑 (无论人类大脑或其他动物的大脑) 所启发而设计出来的系统。尽管有些机器学习的神经网络有时被用来理解大脑功能 (Hinton and Shallice, 1991),但它们一般都没有设计成生物功能的真实模型。深度学习的神经观点受两个主要思想启发:一个想法是,大脑作为例子证明智能行为是可能的,因此,概念上,建立智能的直接途径是逆向大脑背后的计算原理,并复制其功能;另一种看法是,理解大脑和人类智能背后的原理也非常有趣,因此机器学习模型除了解决工程应用的能力,如果能让人类对这些基本的科学问题有进一步的认识,也将会很有用。

图像说明文字

图1

图 1 根据 Google 图书中短语“控制论”“联结主义”或“神经网络”频率衡量的人工神经网络研究的历史浪潮 ( 图中展示了 3 次浪潮的前两次,第 3 次最近才出现)。第 1 次浪潮开始于 20 世纪 40 年代到 20 世纪 60 年代的控制论,随着生物学习理论的发展 (McCulloch and Pitts, 1943; Hebb, 1949) 和第一个模型的实现 (如感知机 (Rosenblatt, 1958)),能实现单个神经元的训练。第 2 次浪潮开始于 1980—1995 年间的联结主义方法,可以使用反向传播 (Rumelhart et al., 1986a) 训练具有一两个隐藏层的神经网络。当前第 3 次浪潮,也就是深度学习,大约始于 2006 年 (Hinton et al., 2006a; Bengio et al., 2007a; Ranzato et al., 2007a),并且于 2016 年以图书的形式出现。另外,前两次浪潮类似地出现在书中的时间比相应的科学活动晚得多。

现代术语“深度学习”超越了目前机器学习模型的神经科学观点。它诉诸于学习多层次组合这一更普遍的原理,这一原理也可以应用于那些并非受神经科学启发的机器学习框架。

现代深度学习最早的前身是从神经科学的角度出发的简单线性模型。这些模型设计为使用一组 n 个输入 x1,…,xn,并将它们与一个输出 y 相关联。这些模型希望学习一组权重 w1,…,wn,并计算它们的输出 f(x,w) = x1w1 + … + xnwn。如图 1 所示,第一次神经网络研究浪潮称为控制论。

McCulloch-Pitts 神经元 (McCulloch and Pitts,1943) 是脑功能的早期模型。该线性模型通过检验函数 f(x,w) 的正负来识别两种不同类别的输入。显然,模型的权重需要正确设置后才能使模型的输出对应于期望的类别。这些权重可以由操作人员设定。20 世纪 50 年代,感知机 (Rosenblatt,1956,1958) 成为第一个能根据每个类别的输入样本来学习权重的模型。大约在同一时期,自适应线性单元(adaptive linear element, ADALINE) 简单地返回函数 f(x) 本身的值来预测一个实数 (Widrow and Hoff,1960),并且它还可以学习从数据预测这些数。

这些简单的学习算法大大影响了机器学习的现代景象。用于调节 ADALINE 权重的训练算法是被称为随机梯度下降(stochastic gradient descent) 的一种特例。稍加改进后的随机梯度下降算法仍然是当今深度学习的主要训练算法。

基于感知机和ADALINE中使用的函数 f(x,w) 的模型称为线性模型(linear model)。尽管在许多情况下,这些模型以不同于原始模型的方式进行训练,但仍是目前最广泛使用的机器学习模型。

线性模型有很多局限性。最著名的是,它们无法学习异或 (XOR) 函数,即 f([0,1],w) = 1 和 f([1,0],w) = 1,但 f([1,1],w) = 0 和 f([0,0],w) = 0。观察到线性模型这个缺陷的批评者对受生物学启发的学习普遍地产生了抵触 (Minsky and Papert, 1969)。这导致了神经网络热潮的第一次大衰退。

现在,神经科学被视为深度学习研究的一个重要灵感来源,但它已不再是该领域的主要指导。

如今神经科学在深度学习研究中的作用被削弱,主要原因是我们根本没有足够的关于大脑的信息来作为指导去使用它。要获得对被大脑实际使用算法的深刻理解,我们需要有能力同时监测 (至少是) 数千相连神经元的活动。我们不能够做到这一点,所以我们甚至连大脑最简单、最深入研究的部分都还远远没有理解 (Olshausen and Field, 2005 )。

神经科学已经给了我们依靠单一深度学习算法解决许多不同任务的理由。神经学家们发现,如果将雪貂的大脑重新连接,使视觉信号传送到听觉区域,它们可以学会用大脑的听觉处理区域去“看”(Von Melchner et al., 2000)。这暗示着大多数哺乳动物的大脑使用单一的算法就可以解决其大脑可以解决的大部分不同任务。在这个假设之前,机器学习研究是比较分散的,研究人员在不同的社群研究自然语言处理、计算机视觉、运动规划和语音识别。如今,这些应用社群仍然是独立的,但是对于深度学习研究团体来说,同时研究许多甚至所有这些应用领域是很常见的。

我们能够从神经科学得到一些粗略的指南。仅通过计算单元之间的相互作用而变得智能的基本思想是受大脑启发的。新认知机 (Fukushima, 1980) 受哺乳动物视觉系统的结构启发,引入了一个处理图片的强大模型架构,它后来成为了现代卷积网络的基础 (LeCun et al., 1998c)。目前大多数神经网络是基于一个称为整流线性单元(rectified linear unit) 的神经单元模型。原始认知机 (Fukushima,1975) 受我们关于大脑功能知识的启发,引入了一个更复杂的版本。简化的现代版通过吸收来自不同观点的思想而形成,Nair and Hinton (2010b) 和 Glorot et al. (2011a) 援引神经科学作为影响,Jarrett et al. (2009a) 援引更多面向工程的影响。虽然神经科学是灵感的重要来源,但它不需要被视为刚性指导。我们知道,真实的神经元计算着与现代整流线性单元非常不同的函数,但更接近真实神经网络的系统并没有导致机器学习性能的提升。此外,虽然神经科学已经成功地启发了一些神经网络架构,但我们对用于神经科学的生物学习还没有足够多的了解,因此也就不能为训练这些架构用的学习算法提供太多的借鉴。

媒体报道经常强调深度学习与大脑的相似性。的确,深度学习研究者比其他机器学习领域 (如核方法或贝叶斯统计) 的研究者更可能地引用大脑作为影响,但是大家不应该认为深度学习在尝试模拟大脑。现代深度学习从许多领域获取灵感,特别是应用数学的基本内容,如线性代数、概率论、信息论和数值优化。尽管一些深度学习的研究人员引用神经科学作为灵感的重要来源,然而其他学者完全不关心神经科学。

值得注意的是,了解大脑是如何在算法层面上工作的尝试确实存在且发展良好。这项尝试主要被称为“计算神经科学”,并且是独立于深度学习的领域。研究人员在两个领域之间来回研究是很常见的。深度学习领域主要关注如何构建计算机系统,从而成功解决需要智能才能解决的任务,而计算神经科学领域主要关注构建大脑如何真实工作的、比较精确的模型。

20 世纪 80 年代,神经网络研究的第二次浪潮在很大程度上是伴随一个被称为联结主义(connectionism) 或并行分布处理( parallel distributed processing) 潮流而出现的 (Rumelhart et al., 1986d; McClelland et al., 1995)。联结主义是在认知科学的背景下出现的。认知科学是理解思维的跨学科途径,即它融合多个不同的分析层次。20 世纪 80 年代初期,大多数认知科学家研究符号推理模型。尽管这很流行,但符号模型很难解释大脑如何真正使用神经元实现推理功能。

联结主义者开始研究真正基于神经系统实现的认知模型 (Touretzky and Minton, 1985),其中很多复苏的想法可以追溯到心理学家Donald Hebb在 20 世纪 40 年代的工作(Hebb,1949)。

联结主义的中心思想是,当网络将大量简单的计算单元连接在一起时可以实现智能行为。这种见解同样适用于生物神经系统中的神经元,因为它和计算模型中隐藏单元起着类似的作用。

在 20 世纪 80 年代的联结主义期间形成的几个关键概念在今天的深度学习中仍然是非常重要的。

其中一个概念是分布式表示(distributed representation)(Hinton et al., 1986)。其思想是:系统的每一个输入都应该由多个特征表示,并且每一个特征都应该参与到多个可能输入的表示。例如,假设我们有一个能够识别红色、绿色或蓝色的汽车、卡车和鸟类的视觉系统,表示这些输入的其中一个方法是将 9 个可能的组合:红卡车、红汽车、红鸟、绿卡车等使用单独的神经元或隐藏单元激活。这需要 9 个不同的神经元,并且每个神经必须独立地学习颜色和对象身份的概念。改善这种情况的方法之一是使用分布式表示,即用 3 个神经元描述颜色,3 个神经元描述对象身份。这仅仅需要 6 个神经元而不是 9 个,并且描述红色的神经元能够从汽车、卡车和鸟类的图像中学习红色,而不仅仅是从一个特定类别的图像中学习。

联结主义潮流的另一个重要成就是反向传播在训练具有内部表示的深度神经网络中的成功使用以及反向传播算法的普及 (Rumelhart et al., 1986c; LeCun, 1987)。这个算法虽然曾黯然失色且不再流行,但它仍是训练深度模型的主导方法。

20 世纪 90 年代,研究人员在使用神经网络进行序列建模的方面取得了重要进展。

Hochreiter (1991b) 和 Bengio et al. (1994b) 指出了对长序列进行建模的一些根本性数学难题。Hochreiter和Schmidhuber(1997) 引入长短期记忆 (long shortterm memory, LSTM) 网络来解决这些难题。如今,LSTM 在许多序列建模任务中广泛应用,包括Google的许多自然语言处理任务。

神经网络研究的第二次浪潮一直持续到 20 世纪 90 年代中期。基于神经网络和其他AI技术的创业公司开始寻求投资,其做法野心勃勃但不切实际。当AI研究不能实现这些不合理的期望时,投资者感到失望。同时,机器学习的其他领域取得了进步。比如,核方法 (Boser et al., 1992; Cortes and Vapnik, 1995; Sch¨olkopf et al., 1999) 和图模型 (Jordan, 1998) 都在很多重要任务上实现了很好的效果。这两个因素导致了神经网络热潮的第二次衰退,并一直持续到 2007 年。

在此期间,神经网络继续在某些任务上获得令人印象深刻的表现 (LeCun et al., 1998c; Bengio et al., 2001a)。加拿大高级研究所 (CIFAR) 通过其神经计算和自适应感知 (NCAP) 研究计划帮助维持神经网络研究。该计划联合了分别由Geoffrey Hinton、Yoshua Bengio和 Yann LeCun领导的多伦多大学、蒙特利尔大学和纽约大学的机器学习研究小组。这个多学科的CIFAR NCAP研究计划还包括了神经科学家、人类和计算机视觉专家。

在那个时候,人们普遍认为深度网络是难以训练的。现在我们知道,20 世纪 80 年代就存在的算法能工作得非常好,但是直到 2006 年前后都没有体现出来。这可能仅仅由于其计算代价太高,而以当时可用的硬件难以进行足够的实验。

神经网络研究的第三次浪潮始于 2006 年的突破。Geoffrey Hinton表明名为“深度信念网络”的神经网络可以使用一种称为“贪婪逐层预训练”的策略来有效地训练 (Hinton et al., 2006a)。其他CIFAR附属研究小组很快表明,同样的策略可以被用来训练许多其他类型的深度网络 (Bengio and LeCun, 2007a; Ranzato et al., 2007b),并能系统地帮助提高在测试样例上的泛化能力。神经网络研究的这一次浪潮普及了“深度学习”这一术语,强调研究者现在有能力训练以前不可能训练的比较深的神经网络,并着力于深度的理论重要性上 (Bengio and LeCun, 2007b; Delalleau and Bengio, 2011; Pascanu et al., 2014a; Montufar et al., 2014)。此时,深度神经网络已经优于与之竞争的基于其他机器学习技术以及手工设计功能的AI系统。在大约 2016 年的时候,神经网络的第三次发展浪潮仍在继续,尽管深度学习的研究重点在这一段时间内发生了巨大变化。第三次浪潮已开始着眼于新的无监督学习技术和深度模型在小数据集的泛化能力,但目前更多的兴趣点仍是比较传统的监督学习算法和深度模型充分利用大型标注数据集的能力。

(本文节选自【美】Ian Goodfellow(伊恩·古德费洛),【加】Yoshua Bengio(约书亚·本吉奥),【加】Aaron Courville(亚伦·库维尔)作品《深度学习》)

(点击图片,查看详情)

作者:【美】Ian Goodfellow(伊恩·古德费洛) ,
【加】Yoshua Bengio(约书亚·本吉奥) ,
【加】Aaron Courville(亚伦·库维尔)

AI圣经!深度学习领域奠基性的经典畅销书!

长期位居美国亚马逊AI和机器学习类图书榜首!

所有数据科学家和机器学习从业者的必读图书!

特斯拉CEO埃隆·马斯克等国内外众多专家推荐!

2018-09-07 19:07:12 JH0lmes 阅读数 193
  • 机器学习&深度学习系统实战!

    购买课程后,可扫码进入学习群,获取唐宇迪老师答疑 数学原理推导与案例实战紧密结合,由机器学习经典算法过度到深度学习的世界,结合深度学习两大主流框架Caffe与Tensorflow,选择经典项目实战人脸检测与验证码识别。原理推导,形象解读,案例实战缺一不可!具体课程内容涉及回归算法原理推导、决策树与随机森林、实战样本不均衡数据解决方案、支持向量机、Xgboost集成算法、神经网络基础、神经网络整体架构、卷积神经网络、深度学习框架--Tensorflow实战、案例实战--验证码识别、案例实战--人脸检测。 专属会员卡优惠链接:http://edu.csdn.net/lecturer/1079

    39685 人正在学习 去看看 唐宇迪

深度学习工程师50%的时间在调参数,49%的时间在对抗过/欠拟合,剩下1%的时间在修改down下来的程序。

Top-5错误率

ImageNet图像通常有1000个可能的类别,对每幅图像可猜5次结果(即同时预测5个类别标签),当其中有任何一次预测对了,结果都算对,当5次全都错了的时候,才算预测错误。

Overfitting

过拟合,此问题是深度学习领域一个重大问题。为了得到一致假设而使假设变得过度严格称为过拟合,在每一个全连接层的神经激活函数之后需要采用dropout的方式进行降拟合。特征有很多,但是特征有时候是和数据概率无关的,如果将这些特征放到模型里面,就肯定过拟合了。如喜欢玩游戏的深度学习,性别和年龄是合适的特征,如果将姓氏作为特征,放入数据中进行拟合,肯定过拟合了。与之相对的是欠拟合,特征不足会导致欠拟合

Generalization ability

泛化能力。指机器学习算法对新鲜样本的适应能力。学习的目的是学到隐含在数据对背后的规律,对具有同一规律的学习集以外的数据,经过训练的网络也能给出合适的输出,该能力称为泛化能力。

局部感知

传统神经网络中每个神经元都要与图片上每个像素相连接,这样会造成权重的数量巨大网络难以训练。而在含有卷积层的的神经网络中每个神经元的权重个数是卷积核的大小,这样就相当于没有神经元只与对应图片部分的像素相连接。这样就极大的减少了权重的数量。

左图,输入1000*1000像素的图片,隐层有10^6个神经元,采用像素级别的全连接模型,有1000*1000*10^6 = 10^12个连接,有10^12个参数需要学习,非常耗时,并且提取到的特征不具有具体的含义(过拟合)。

右图,局部感受野:类似于卷积中的patch核,将10^6的隐层换成10*10的patch,即1000*1000的图片采用10*10的局部感受野,将像素级别的特征映射到这个局部感受野,有1000*1000×100=10^8个参数需要学习。此时,图像中的每一个像素点学习一个10*10的局部感受野。

参数共享

参数共享的思想:权重是经过学习得到且在卷积过程中卷积核的权重不会改变。通过一个卷积核的操作提取了原图的不同位置的同样特征。简单来说就是在一幅图片中的不同位置的相同目标,它们的特征是基本相同的。

AdamOptimizer

Adam优化,控制学习速度。通过使用动量(参数的移动平均数)来改善传统梯度下降,促进超参数动态调整。

纹理特征

纹理是一种反映图像中同质现象的视觉特征,它体现了物体表面的具有缓慢变化或者周期性变化的表面结构组织排列属性。纹理具有三大标志:某种局部序列性不断重复、非随机排列、纹理区域内大致为均匀的统一体。纹理不同于灰度、颜色等图像特征,它通过像素及其周围空间邻域的灰度分布来表现,即:局部纹理信息。局部纹理信息不同程度的重复性,即全局纹理信息。

Feature map

特征图,每一种卷积核提取一张feature map, 数量根据需求而定,一般图像很大的话会需要很多。例如32*32的图像,6个feature map就比较合适。不同的特征提取会提取不同的feature,模型想要达成的目的是解一个最优化,来找到能解释现象的最佳的一组卷积核。设计多种的滤波器(卷积核,滤波器矩阵所有的元素之和等于1,滤波前后图像的亮度保持不变;大于1,滤波后更亮;小于1,滤波后变暗;和为0,图像不会变黑,但也会非常暗;出现负数或大于255,直接截断到0和255之间,对于负数也可取绝对值),通过权值共享来减少网络参数,这时候就可以通过输入图像的大小以及卷积核的大小来确定隐含层的神经元的个数了,公式为:(32-5+1)*(32 -5 +1)=28*28 个隐层神经元,也就是每一个feature map的大小就是28*28 。那么这一层一共有(5*5 +1)*6个参数,其中5*5为卷积核的大小,1为一个bias参数, 6为6种卷积核。

大部分 CNN 网络在越深的层,feature map 的尺寸(size)会越来越小。这样做不仅仅是为了减少计算与内存的需求,还有个好处就是,最后提取的 feature map 就会有某种程度上的平移与尺度不变性。

IOU

intersection-over-union 交并比,表示了bounding box 与 ground truth 的重叠度,用IoU或者jaccard overlap表示,称之为相似系数,数值越大,相似度越高文章中选取了jaccard重叠超过0.5的默认框为正样本,其它为负样本。如下图所示:

IOU=(A∩B)/(A∪B)

Non maximum suppression(NMS)

非极大值抑制,本质是搜索局部极大值,抑制非极大值元素。主要目的是消除多余(交叉重复)的窗口,找到最佳物体检测位置,抑制过程为 迭代-遍历-消除。

1.将所有框的得分排序,选中最高分及其对应的框;

2.遍历其余的框,和当前最高分框的重叠面积(IOU)大于一定阈值,就将框删除(这片区域只留最高分一个框);

3.从未处理的框中继续选一个得分最高的,重复上述过程。

positive/negative samples

正负样本是相对的概念,不同的正负样本定义对问题解决没有本质影响,但好的正负样本定义可以减轻认知负担、方便人对问题的理解。根据目标定义正样本,优化损失函数时是根据正样本来进行。一般来说目标检测中,目标即为正样本,背景等不是目标的都是负样本。

2016-08-26 14:46:53 Yt7589 阅读数 20688
  • 机器学习&深度学习系统实战!

    购买课程后,可扫码进入学习群,获取唐宇迪老师答疑 数学原理推导与案例实战紧密结合,由机器学习经典算法过度到深度学习的世界,结合深度学习两大主流框架Caffe与Tensorflow,选择经典项目实战人脸检测与验证码识别。原理推导,形象解读,案例实战缺一不可!具体课程内容涉及回归算法原理推导、决策树与随机森林、实战样本不均衡数据解决方案、支持向量机、Xgboost集成算法、神经网络基础、神经网络整体架构、卷积神经网络、深度学习框架--Tensorflow实战、案例实战--验证码识别、案例实战--人脸检测。 专属会员卡优惠链接:http://edu.csdn.net/lecturer/1079

    39685 人正在学习 去看看 唐宇迪
其实从本篇博文开始,我们才算真正进入深度学习领域。在深度学习领域,已经经过验证的成熟算法,目前主要有深度卷积网络(DNN)和递归网络(RNN),在图像识别、视频识别、语音识别领域取得了巨大的成功,正是由于这些成功,能促成了当前深度学习的大热。与此相对应的,在深度学习研究领域,最热门的是AutoEncoder、RBM、DBN等产生式网络架构,但是这些研究领域,虽然论文比较多,但是重量级应用还没有出现,是否能取得成功还具有不确定性。但是有一些比较初步的迹象表明,这些研究领域还是非常值得期待的。比如AutoEncoder在图像、视频搜索领域的应用,RBM对非结构化数据的处理方面,DBN网络在结合人工智能领域两大流派连接主义和符号主义,都具有巨大的前景,有理由期待产生重量级成果。我们在后续会对这些网络逐一进行介绍和实现,除了给出重构后的Theano实现代码外,还会逐步补充这些算法在实际应用的中的实例,我们会主要将这些算法应用在创业公司数据中,从几万家创业公司及投融资数据中,希望能挖掘出哪些公司更可能获得投资,特定公司更有可能获得哪家投资机构的投资。
好了,转入正题。我们今天将要研究的是卷积网络(CNN),这是深度学习算法应用最成功的领域之一,主要用于图像和视频识别领域。

在讨论卷积网络(CNN)之前,我们先来根据我们的常识,来讨论一下怎样可以提高图像识别的准确率。我们以印刷字母识别为例,假设我们需要网络识别大写字母A,我们给网络的训练样本可能是这样的:


但是我们实际需要识别的图片却可能是这样的:


根据我们的经验,如果可以把字母移到视野的中心去,识别的难度将下降很多,有利于提高识别率。


在这种情况下,如果我们能把图像变为标准大小,则可以提高相应的识别率。

对于真识的物体,从不同角度来看,会有不同的表现,即使对于字母识别而言,字母也能出现旋转的情况:


如果可以将图像旋转过来,将可以极大的提高识别率。

以上各种方式,在实际的图像识别领域,通常是以组合形式出现的,即图像中的元素,需要经过一系列的平移、旋转、缩放后,才能得到与训练样本相似的标准图像,因此在传统的图像识别中,需要对图像进行预处理,达到这一目的。在神经网络进行图像识别中,我们也希望神经网络可以自动处理这些变换,用学术术语来讲,就是具有平移、旋转、缩放的不变性,卷积网络(CNN)就是为解决这一问题而提出一种架构。

那么怎样才能让神经网络具有我所希望的这种变换不变性呢?我们知道,神经网络的兴起,很大程度上是仿生学在人工智能领域的应用,我们用人工神经元模型及其连接,来模仿人类大脑,解决一些常规方法不能解决的复杂问题。对于图像识别而言,神经网络的研究人员,也希望通过模拟大脑视觉皮层的处理机制,来提高图像识别的准确率。

根据Hubel and Wiesel对猫的视觉皮层的研究表明,视觉皮层细胞会组成视觉接收域,只负责对一部分图像信号的处理,处理局部的空间信息,例如图像在的边缘识别等。同时视觉皮层中存在两类细胞,一类细胞是简单细胞,主要用于识别图像边缘等基本信息,还有一类复杂细胞,具有位置不变性,可以识别各种高级的图像信息。

以上述发现为指导,研究人员提出了卷积神经网络(CNN)模型,主要包括两大方面特性:第一是层间稀疏连接,第二是共享连接权值。

层间稀疏连接主要是想要模拟大脑视觉皮层的接收域,以具有简单细胞和复杂细胞两类不同细胞,分别处理局部细节和全局空间不变性。首先我们将图像像素分为3*3的区域,所以对于l=1的输入层而言,这9个像素连接到9个输入层神经元,而这9个神经元,只连接到l=2上的一个神经元,如下图所示:注意由于我们画的是二维图,因此只显示面对我们的三个神经元,如图所示:


如上图所示,每上一层,都只与其底层3*3的神经元相连接,这样对最上层神经元,其对应的视觉接收域将变为9*9。利用上述结构,可以采用多层来表示原来的图像信息,底层神经元主要负责边缘等基本信息的识别,而越往高层走,其识别的级别越高,最上层则可以表达为我们希望区分的类别。这其实与传统的数字图像处理中,金字塔模型比较类似,解决的是同一类问题。

卷积网络的第二个特征是共享连接权值,如图所示:


图中不同颜色的连接,具有相同的连接权值。因此,在我们的卷积神经网络(CNN)实现中,考虑到这种情况,需要对原来的算法进行修改,将以单个权值求导变为对三个权值之和进行求导,将在下一篇博文中详述。

通过共享权值模式,可以使卷积神经网络(CNN)识别出图像中的物体,而与物体的空间位置无关,即实现本文开头所提到的旋转、平移、缩放的不变性,这对于在图像识别领域经常出的物体在图像中的位置变化,大小变化,观察角度变化,所造成了识别困难,具有非常好的解决效果。同时,由于权值共享,减少了网络的参数个数,也大提高了网络的学习效率,因此成为卷积神经网络(CNN)的一个事实上的标准。

在讲完了卷积神经网络(CNN)的基本原理之后,自然就是怎么利用Theano这样的平台,来实现自己的卷积神经网络(CNN),对于这一问题,我们将在下一篇博文中进行讨论。


2019-10-15 14:12:39 cliukai 阅读数 62
  • 机器学习&深度学习系统实战!

    购买课程后,可扫码进入学习群,获取唐宇迪老师答疑 数学原理推导与案例实战紧密结合,由机器学习经典算法过度到深度学习的世界,结合深度学习两大主流框架Caffe与Tensorflow,选择经典项目实战人脸检测与验证码识别。原理推导,形象解读,案例实战缺一不可!具体课程内容涉及回归算法原理推导、决策树与随机森林、实战样本不均衡数据解决方案、支持向量机、Xgboost集成算法、神经网络基础、神经网络整体架构、卷积神经网络、深度学习框架--Tensorflow实战、案例实战--验证码识别、案例实战--人脸检测。 专属会员卡优惠链接:http://edu.csdn.net/lecturer/1079

    39685 人正在学习 去看看 唐宇迪

TensorFlow,Keras和Mxnet

Keras是最常用的深度网络库,他是基于TensorFlow或者theano运行的一个高级API。

Mxnet也是一个轻量级的深度网络库,他的特点在于可以使用GPU,大规模集群进行训练。

TensorFlow不仅仅是一个深度网络库,他还有其他更多的应用。

TensorFlow中文社区-首页

深度学习的定义

“Deep learning methods are representation-learning methods with multiple levels of representation, obtained by composing simple but nonlinear modules that each transform the representation at one level (starting with the raw input) into a representation at a higher, slightly more abstract level. […] The key aspect of deep learning is that these layers are not designed by human engineers: they are learned from data using a general-purpose learning procedure”
Yann LeCun, Yoshua Bengio, and Geoffrey Hinton, Nature 2015. [9]

机器学习专注于从数据中学习和模式识别,但是AI算法包含一系列自动推理的过程,例如推理,计划,启发等等。

最早的ANN(Artificial Neural Networks)就是根据人大脑的机制,设计出来的一种机器学习算法。深度学习的特点就是deep和hierarchical learning(层次学习),这使得深度学习再现代计算机视觉中取得了巨大的成功。
深度学习的范围

深度学习处理的步骤

在这里插入图片描述

传统机器学习存在的问题

线性不可分问题:考虑如何用一条直线将下面的星星和圆圈分开
在这里插入图片描述

BP和DNN的发展

反向传播算法是现代DNN的基石,BP算法教会了DNN如何从错误中进行学习。
在这里插入图片描述

深度学习和机器学习在图片处理上的不同

在过去的机器学习中,我们通常使用颜色,局部纹理,形状等信息去提取特征。
在这里插入图片描述
或者用一些关键点检测方法,例如FAST算子,以及一些局部不变描述子例如SIFT,SURT,ORB等描述局部特征。
在这里插入图片描述
其中HOG加SVM的方法在物体检测中取得了巨大成功
在这里插入图片描述
而深度学习是具有层次特征的学习,可以端到端的识别出物体,例如CNN,我们直接输入原图像,然后一系列的隐层自动学习出图像的特征,一开始是低层次的边缘,然后是角点(边缘的交汇),接着是图像的轮廓,最后通过角点和轮廓可以得到更抽象的物体层。
在这里插入图片描述
每一层都利用上一层的信息来建立更抽象的高层描述,这一特性,使得CNN在数据量增加的过程中,性能得到快速提高。
在这里插入图片描述

在过去,我们都是用人工创造出的特征向量来描述图片,但是在深度学习中,我们直接使用整个的像素来描述图片特征。
在这里插入图片描述

怎样才算深度学习呢,要多深?

只要使用了超过2层的网络,都叫深度网络。
在这里插入图片描述

2016-07-14 08:03:24 happytofly 阅读数 595
  • 机器学习&深度学习系统实战!

    购买课程后,可扫码进入学习群,获取唐宇迪老师答疑 数学原理推导与案例实战紧密结合,由机器学习经典算法过度到深度学习的世界,结合深度学习两大主流框架Caffe与Tensorflow,选择经典项目实战人脸检测与验证码识别。原理推导,形象解读,案例实战缺一不可!具体课程内容涉及回归算法原理推导、决策树与随机森林、实战样本不均衡数据解决方案、支持向量机、Xgboost集成算法、神经网络基础、神经网络整体架构、卷积神经网络、深度学习框架--Tensorflow实战、案例实战--验证码识别、案例实战--人脸检测。 专属会员卡优惠链接:http://edu.csdn.net/lecturer/1079

    39685 人正在学习 去看看 唐宇迪

阿里云工程师卜居接受CSDN记者专访,介绍了他在深度学习领域的实践经验和成长心得,以及完成Caffe著作背后的原因和故事。

从Geoffrey Hinton 2006年的论文算起,这一波深度学习(DL)浪潮才10年,而如果只算国内,深度学习的流行也不过5年,尽管如此,深度学习现在已经扎根中国互联网,成为BAT、京东、360、今日头条等公司的基础技术和战略技术,与之伴随的,则是深度学习技术人员的快速成长,例如,阿里云工程师卜居(赵永科,博客),2014年才开始接触深度学习实战,如今已在深度学习及计算优化方面方面有很独到的见解。卜居在最近写了一本浓缩其深度学习实战经验的书——《深度学习—21天实战Caffe》,该书获得了机器学习前辈的肯定。日前,卜居接受CSDN记者专访,介绍了他在深度学习领域的实践经验和成长心得,以及完成Caffe著作背后的原因和故事。

卜居认为,深度学习具备强大的表达能力和灵活多变的模型结构,并在各种硬件加速方案的支撑下不断成熟,而Caffe具有高效的C++/CUDA实现、Matlab/Python接口、独特的网络描述方式、清晰的代码框架等优势,徒手hack代码的乐趣更多,同时Caffe框代码于稳定,掌握了阅读技巧可以事半功倍,因而可以作为初学者学习的第一个深度学习框架,由此逐步深入了解使用C++/CUDA代码实现深度学习的计算过程。

谈到新书《深度学习—21天实战Caffe》,卜居表示,这是一本透过源码解读深度学习的书,也是一本注重“实战”的书。读者可以从本书中学习Caffe设计模式、编程技巧,以及深度学习最新的进展和生产环境批量部署等内容。而书中的一些思考题需要深入实践和思考之后才能得到答案,这可以让读者养成独立思考的习惯,从而更加从容地面对实际问题。

此外,对于不同的硬件加速方案,卜居认为,深度学习本身在不断演进,没有哪个计算架构能够一劳永逸,得到某方面优势会丧失另一部分特性,最终起决定作用的仍然是应用需求,例如批量离线处理更适合利CPU/GPU集群的规模优势,而在线应用、移动端应用更适合利用FPGA/ASIC的低功耗、低延迟特性。

以下为采访实录:

卜居与深度学习

CSDN:请介绍您自己,您是如何与深度学习结缘的,它的哪些特质吸引您?

卜居:大家好,我博客笔名是卜居(出自《楚辞》),在阿里花名是以亭(《镜花缘》探花唐敖之字),真名赵永科,2014年毕业于中国科学院大学,目前就职于阿里云计算有限公司高性能计算团队,从事CPU/GPU/FPGA上的计算优化工作。

我最早接触“神经网络”、“深度学习”还是在中科院微波成像实验室从事现代信号处理工作期间,通过阅读Simon Heykin的大部头著作《Adaptive Filter Theory》《Neural Networks : A Comprehensive Foundation》,初次了解其设计理念,但当时仅仅停留在一些抽象理论上,一直希望有机会将它们应用到实际项目中。

直到2014年我到阿里巴巴集团核心系统部实习,看到周围同事在用Caffe做深度学习算法优化,而且已经有很多内部项目(即后来的拍立淘、OCR等)在使用该框架。当时首先被名字吸引:“快速特征植入的卷积结构”(Convolutional Architecture for Fast Feature Embedding),谐音“咖啡”。当时的Caffe还只是雏形,我看了一遍代码后深深被其设计所吸引,高效的C++/CUDA实现、Matlab/Python接口、独特的网络描述方式、清晰的代码框架……当时对深度学习的认识一下子从教科书上的抽象概念落地到实实在在的代码实现,甚至对其稍作修改就可以应用于线上生产环境,直接面向广大用户!也是从那个时候,我开始关注每年的ILSVRC比赛,看到计算机视觉领域逐渐接受深度学习方法,并随后在语音识别、自然语言处理取得巨大成功,意识到这次深度学习高潮不是泡沫,而是逐渐迈向成熟的标志。

现在,深度学习强大的表达能力、灵活多变的模型结构、在CPU/GPU/FPGA/ASIC上加速方案等,都是吸引我的闪光点。

CSDN:阿里巴巴的很多业务都使用了深度学习技术,能否介绍和您的工作有直接关系的技术环节包括哪些?

卜居:在阿里云我们组主要是计算平台支持和计算效率提升两个环节。

  • 计算平台支持方面,我们的HPC支持当前大多数主流计算框架(Caffe/Torch/Theano/MxNet/TensorFlow/……),利用IB+双万兆网络实现多机互联,提供多机多卡并行训练系统,最近使用专门为深度学习定制的Tesla M40 GPU加速器将单节点计算能力提升到16 TFLOPS。

  • 计算效率提升方面,我们自研了CUDA Native汇编器文档下载),进一步挖掘硬件计算能力,实现更高计算效率。

深度学习及实践经验

CSDN:目前深度学习的论文非常多,您会关注哪类论文?神经网络最近的哪些进展让您印象深刻?

卜居:我比较感兴趣的还是计算优化方面,包括计算体系结构优化和计算软件优化两类。

最近的ResNet实现了深达1000层的模型结构,这不禁让人思考:“深度学习”还可以多深?除了加深之外,网络结构也逐渐表现出了生物特征,例如出现了分形结构,这些让人愈发感受到自然之美、生命之美。

CSDN:ICML、CVPR上来自Deepmind等大公司的论文比较出彩,这其中不乏大公司投入比较大要求少的因素,比如LeCun说目前Facebook对FAIR还没有盈利要求,能否介绍您的团队如何要求DL研究的投入?

卜居:我不敢妄谈公司战略,单从个人角度谈下。

DL不仅是我在阿里云高性能计算团队工作时需要了解的内容,同时也是我个人爱好,对于论文和前沿的技术一般是用业余时间学习,工作时间更多是面向用户需求。在阿里云有得天独厚的研究条件,我们有大规模GPU集群可以折腾,周围许多同事自己攒机体验最新的硬件(GPU、FPGA),研发氛围浓厚,讨论问题热烈,都是自发行为。

总体来看,大公司在数据规模、基础设施方面有较大优势,初创团队一般在业务算法、模型调参方面更有优势。

CSDN:论文虽多,深度学习理论体系却不似SVM那么优美,在很多实际应用场景中的效果也还不尽人意,从开发人员的角度,您如何看待当前深度学习技术的缺陷?成功应用深度学习有没有一些“黄金法则”?

卜居:深度学习不需要专门特征工程师,降低了模型设计门槛,但对于调超参“黑科技”方面,经验仍然很重要,不然会经常出现使用了深度学习技术效果反而不如传统方法的尴尬局面。

  • 模型参数远大于数据量时,相当于求解一个欠定方程,存在多解的可能性大,容易产生过拟合问题。
  • 模型参数远小于数据量时,相当于求解超定方程,可能无解,或者有解但准确率很低,这属于欠拟合问题。
  • 模型参数与数据量匹配时,相当于求解恰定方程,既能避免过拟合,又能兼顾准确率,但模型参数量和数据量怎样才能做到匹配,是一个工程问题。

所以,如果你选择用某个模型处理数据,那么应该考虑这个因素,越大的模型越难训练,因为需要与之匹配的数据量、一系列避免过拟合的方法才能训练得到一个较为理想的模型。幸运的是,我们可以将大模型首先在较大的数据集(如ImageNet)上预训练,得到模型,再对特定数据集(如人脸数据)进行精调(fine-tuning),即可得到较为理想的结果。

深度学习目前的应用场景只是冰山一角,对于更多传统领域的应用,一方面需要引起该领域工程师对深度学习技术的关注,另一方面要重视数据,作为待开发的矿产资源。

CSDN:您曾经做过CNN硬件加速的分享,重点谈了阿里云用到的FPGA方案,但目前还有很多ASIC的尝试,包括Google的TPU、中科院的寒武纪等,同时考虑到神经网络的应用越来越广,比如LSTM在语音、机器翻译中的应用,您认为未来DL平台应当是什么样的架构,主流的加速方案是什么,应当具备哪些特性?

卜居:阿里云HPC团队是一个既注重技术创新、又贴近用户实际业务的团队,我们在平台选择方面,会首先根据用户需求进行优化和定制,而一些通用的模块则逐渐沉淀成为公共服务。

DL本身在不断演进,没有哪个计算架构能让DL一劳永逸,得到某方面优势会丧失另一部分特性,最终起决定作用的仍然是应用需求,例如批量离线处理更适合利CPU/GPU集群的规模优势,而在线应用、移动端应用更适合利用FPGA/ASIC的低功耗、低延迟特性。

CSDN:阿里云已经在用Docker来提供DL服务,您认为DL任务中使用Docker有哪些坑需要填好?

卜居:Docker 的优点在于一次开发,处处部署,简化了开发测试环境与生产环境的迁移。目前已经有越来越多用户选择Docker,越来越多开源DL框架开始支持Docker部署,进一步降低了这些框架使用难度。Docker本身也在不断发展中,存在一些坑也是正常的,对于个人用户而言Docker基本坑都已经填好,是时候学习和掌握这门技术了。

关于“21天实战Caffe”

CSDN:深度学习开源工具众多,您的新书写的是Caffe,而您最近的博客在写TensorFlow,能否介绍您尝试过哪些DL框架?如何看待它们的优缺点?

卜居:在阿里云HPC平台上我们支持当前大多数主流计算框架(Caffe/Torch/Theano/MxNet/TensorFlow/……),我个人都使用过这些工具,还通读过其中几个框架的源码。

Caffe可以作为初学者学习的第一个深度学习框架,因为代码组织较规范,徒手hack代码的乐趣更多。但相比之下所需依赖库比较多,适合在固定计算平台(如服务器、带GPU的台式机)上运行。

TensorFlow提供了更灵活的设计,不仅可以部署在服务器端,对资源受限的硬件支持也更好,例如内置了定点化运算库,适合做移动、嵌入式设备上的DL应用。

CSDN:从KDnuggets的统计来看,用得最多的似乎是Pylearn2而不是Caffe,能否进一步介绍您的新书选择写Caffe的原因?

卜居:诚然,从上述统计结果看,Caffe受欢迎程度可能不及Pylearn2、Theano。但我们在企业一线生产环境统计的结果来看,直接使用Pylearn2、Theano接生产任务的应用几乎是凤毛麟角。性能是一个关键的因素。

新书选择Caffe,是希望读者不仅知其然,更要知其所以然,知道怎样使用 C++/CUDA代码实现深度学习的计算过程。

CSDN:Caffe的架构还在发展,社区文档也在不断完善,您为什么会在现在写Caffe的书?这本书适合的阅读对象是谁?读者需要一些知识基础吗?

卜居:从诞生到现在已经过去2年时间,Caffe经历过很多变化,框架代码其实变动不大,掌握了阅读技巧可以事半功倍,写这本书是希望更多读者可以加入hack Caffe、改进Caffe的行列中。

建议读者具备高等数学、线性代数、概率论等知识水平。编程方面,建议读者至少具备C++、Python、MATLAB基础。对于本科生,建议大二以上阅读本书。研究生、博士生理论基础达标,可以从本书中学习Caffe设计模式、编程技巧方面内容,充实自己的科研生活。企业一线工程师,可以通过本书了解深度学习最新的进展和生产环境批量部署等内容。

CSDN:您认为这本书的最大的亮点是什么?

卜居:这是第一本透过源码解读深度学习的书,也是一本注重“实战”的书。

CSDN:如果开发者能完全吸收书中的营养,21天之后的DL水平是怎么样的?

卜居:本书不是一部让读者从0开始,21天之后精通 Caffe 的“武林秘籍”,更像是游戏攻略,可以让读者更快地找到捷径,避免在原地徘徊。每章后面的思考题,有些是需要深入实践和思考之后才能得到答案的。相信通过这些锻炼,读者可以养成独立思考的习惯,面对实际问题时更加胸有成竹。

CSDN:开发人员在读完这本书之后,如何继续提升DL技能?还有一些DL书籍可以推荐?

卜居:DL修行道阻且长,要有扎实的数学基础、精湛的编程技术,还要有广阔的视野,不断吸取其他领域的营养。推荐继续阅读其他ML/DL大部头著作(例如Youshua Bengio的《Deep Learning》值得深入阅读),以及该领域的经典论文。

笔耕收获

CSDN:能否介绍您写这本书的最大挑战和收获?

卜居:克服惰性。写书后,我养成了早起的习惯,每天精神了许多。

CSDN:从您2008年发表第一篇CSDN博客文章,到现在已经8年,能否介绍您坚持写博客的动力和收获、心得?博客创作对您的技术工作和完成著作有多大的帮助?

卜居:2008年我还是在大一、大二刚刚学习编程的阶段,每期《程序员》、《电脑报》、《黑客 X 档案》都要细细阅读。偶然的机会看到CSDN上面的一些博客写得很好,于是也注册了一个号,尝试自己写文章。在此之前我写文章都是发表在QQ空间、人人网,发一些编程相关的文章不太“合群”,于是逐渐淡出了这些圈子,全面转向CSDN。

早期的文章不成体系,很少坚持。真正开始写系列文章是从研究生开始,结合自己学习CUDA的心得体会,整理了十篇左右,反响不错。后来又整理了关于Zynq开发的系列文章,访问量暴增,进一步增加了写博客的动力和信心。再后来毕业后参加工作,接触 DL,学习Caffe、TensorFlow,这时的博客更像笔记,比较随性。

写博客最大的收获,是查资料时可以先从自己博客中找,如果Cache命中,直接返回;否则再找其他人博客,学习后收藏。博客相比互联网上零散知识点而言更有凝聚性,可以集中解决一类问题,习惯从博客中找答案可以触类旁通。

此外,写博客也会认识更多同行者,可以在交流之间取长补短,相互促进,并打开视野,这对工作和学习有很大帮助。


CCAI 2016中国人工智能大会将于8月26-27日在京举行,AAAI主席,多位院士,MIT、微软、大疆、百度、滴滴专家领衔全球技术领袖和产业先锋打造国内人工智能前沿平台,6+重磅大主题报告,4大专题论坛,1000+高质量参会嘉宾,探讨人机交互、机器学习、模式识别及产业实战。门票限时六折优惠中

图片描述

深度学习发展历史

阅读数 2002

深度学习如何入门

阅读数 8055

没有更多推荐了,返回首页