神经网络与深度学习概述 第三章 深度学习的概念及理解

欢迎关注公众号:小AI咨询

深度学习的概念

深度学习是神经网络的一个分支,深度学习的基本结构是深度神经网络。

深度神经网络是一种具备至少一个隐含层的神经网络。与浅层神经网络相比,深度神经网络也能为复杂非线性系统建模,但多出的层次为模型提供了更高的抽象层次,因而提高了模型的拟合能力。

深度神经网络通常是前馈型神经网络。多层前馈型神经网络都是深度神经网络,但是深度神经网络不都是多层前馈型神经网络,因为深度神经网络还包含了递归神经网络和卷积神经网络等

深度神经网络说的是一种结构,而不是一种算法

机器学习分类

机器学习算法是一类从数据中自动分析获得规律,并利用规律对未知数据进行预测的算法。这里关于机器学习的内容不在进一步展开,有兴趣的读者可以参考作者之前写的两篇文章。

机器学习的概念很大,以下给出按照学习方式分类的常见类型:

监督学习(Supervised Learning)

监督学习又叫做有导师的学习,就是在你学习的时候,有个老师在旁边监督着你,随时纠正你在学习中犯的错误,当你犯错的时候就给你惩罚,但你正确的时候就给你奖励。

在监督学习中,数据都是带有标签的数据,通过模型训练这些数据,根据模型得到的结果和实际标签作比较,如果模型给出的结果与实际标签不符合时,就要调整模型,直到模型的预测结果达到一个预期的准确率。

非监督学习(Unsupervised Learning)

非监督学习又叫做无导师的学习,也就是没有人在旁边监督着你学习,告诉你怎样做才是对的。

在非监督学习中,数据都是没有标签的,并没有告诉模型哪些数据应该被分为哪一类是正确的,非监督学习模型一般是为了推断出数据的一些内在结构。常见的应用场景比如关联规则挖掘和聚类等 。

强化学习(Reinforcement Learning,RL)

强化学习是指从环境状态到行为映射的学习,以使系统行为从环境中获得的累积奖励值最大。

在强化学习中,我们设计算法得到把外界环境转化为最大化奖励量的动作。

我们并没有直接告诉主体(agent)要做什么或者要采取哪个动作,主体也不知道执行了某个动作后会从外界环境后得到什么样的奖励。因此,简单理解,强化学习就是,在作出一个动作之前,我们也不知道这个动作能获得多少奖励,我们需要一边对未知的环境摸索,一边根据得到的结果调整下次的动作,最终得到一定环境下可以获得最大奖励量的动作。

有监督学习是事先就给你了一堆样本,你知道每一个动作能产生的什么样的奖励,而强化学习时你并不知道你这个动作能获得什么样的奖励,需要你自己摸索,因此从这个角度理解,你可以认为强化学习是一种有时间延迟的监督学习。

试错搜索(trial-and-error search)和延期强化(delayed reinforcement)这两个特性是强化学习中两个最重要的特性。

类似于玩游戏,玩得越多一般就玩得越好,因为你已经对地图、障碍等等越来越熟悉了。

迁移学习

简单理解,比如说我们要去买橘子,目标当然是越甜越熟越好,影响这个目标的因素可能有:橘子的颜色,大小,形状,产地等等,你根据监督学习建立了一个挑选橘子的模型。

当有一天你想买的不是橘子而是苹果时,你把你买橘子的模型稍微变一下就可以买苹果了,这就是迁移学习。

增量学习

简单理解,前面你已经建立好了挑选橘子的模型,随着样本的不断增多,橘子的种类也不断增多,你训练出的模型变得越来越全面,越来越来好,这就是增量学习。

人脑视觉机理

前面在神经网络中也研究过大脑,但侧重点不同,当时的侧重点主要在连接和如何建立连接,而在深度学习中强调的是分层,浅层特征和如何抽象。

神经-中枢-大脑的工作过程是一个不断迭代、不断抽象的过程。两个关键词,抽象和迭代

从原始信号,做低级抽象,逐渐向高级抽象迭代,人类的逻辑思维就是这样,经常使用高度抽象的概念

例如,从原始信号摄入开始(瞳孔摄入像素 Pixels),接着做初步处理(大脑皮层某些细胞发现边缘和方向),然后抽象(大脑判定,眼前的物体的形状,是圆形的),然后进一步抽象(大脑进一步判定该物体是只气球)。

人脑视觉机理

总的来说,人的视觉系统的信息处理是分级的。从低级的V1区提取边缘特征,再到V2区的形状或者目标的部分等,再到更高层,整个目标、目标的行为等。也就是说高层的特征是低层特征的组合,从低层到高层的特征表示越来越抽象,越来越能表现语义或者意图。而抽象层面越高,存在的可能猜测就越少,就越利于分类。

特征的相关概念

特征是机器学习系统的原材料,如果数据被很好的表达成了特征那么模型的精度将会大大提高。

特征粒度

学习算法需要一定粒度上的特征输入才能发挥作用。

拿一张图片举例,像素级的特征根本没有价值。

例如下面的摩托车,从像素级别,根本得不到任何信息,其无法进行摩托车和非摩托车的区分。而如果特征是一个具有结构性的时候,比如是否具有车把手(handle),是否具有车轮(wheel),就很容易把摩托车和非摩托车区分,学习算法才能发挥作用。

摩托车的识别过程

浅层特征

任何事物都可以划分成粒度合适的浅层特征,而这些浅层特征一般就是神经网络第二层的输入。

比如我们收集了很多张照片,然后从这些照片中抽取400个方格,每个方格都是16×16的像素,这些方格的一部分可能是重合的。

然后随机抽取一张照片,从这张照片中抽取一个方格,这个方格也是16×16像素的,记为T,我们的目的是从之前抽取的400个方格中找到一个与T最相似的方格,这个方格作为表示T的最佳方格。最后发现,这400个基本方格就是不同物体不同方向的边缘线,可以利用这400个方格得到其他图形。

换句话说,再复杂的图形都是由基本图形构件组成。

在语言识别领域就是,任一段声音都可以由多种基本声音结构组成。

浅层特征

结构性特征

小块的图形可以由基本的方格组成,更结构化具有概念性的图形就需要更高层的特征表示,比如V2,V4。

V1看像素级是像素级,V2又看V1是像素级,这个是层次递进的,高层表达由底层表达的组合而成。也就是说V1取提出的特征是边缘,然后V2层是V1层这些特征的组合,这时候V2区得到的又是高一层的特征,一个更具概念性的特征。比如说一张照片,第一层的特征是一些线条,第二层的特征就是这些线条的组合,可以根据这些特征依稀辨别出人的眼睛,摩托车的把手,或者是动物的腿等。

自然语言处理领域,基本的词构成词组,词组构成一个句子,句子的组合又能表达出情感,或者是一些深层含义,把这些句子组合在一起就形成了一篇文章。

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

前面讲的神经网络是含有一个隐含层的多层感知机,这样的模型是一种浅层模型。其他的常见浅层模型有:带有一层隐含层的支持向量机、Boosting模型,没有隐含层的逻辑回归模型。相对于深度学习而言,浅层模型不需要太多的训练技巧和方法,所以应用较快。

在深度学习中,有不止一层隐含层,所以在特征抽取,隐含层的确定,多层训练等方面都遇到了理论和应用的难题。

直到2006年,加拿大多伦多大学教授Hinton团队在深度信念网络(Deep Belief Network,DBN),给出了以下结论:

多隐层的人工神经网络具有优异的特征学习能力,学习得到的特征对数据有更本质的刻画,从而有利于可视化或分类

深度神经网络在训练上的难度,可以通过“逐层初始化”(layer-wise pre-training)来有效克服,比如是通过无监督学习来实现逐层初始化

深度学习与神经网络

深度学习网络与神经网络的相同之处在于具有相似的分层结构,系统由包括输入层、隐层(多层)、输出层组成的多层网络,只有相邻层节点之间有连接,同一层以及跨层节点之间相互无连接,这种分层结构比较接近人类大脑的结构。

神经网络和深度神经网络

传统的的神经网络一般只有2-3层隐含层,参数和计算单元有限,对复杂函数的表示能力有限,学习能力也有限,而深度神经网络隐藏层层数可以达到5-10层,甚至更多,并且引入了更高效的算法,深度神经网络的分层结构更接近于人类大脑的结构。

区别于传统的浅层学习,深度学习的不同在于:

强调了模型结构的深度,通常有5层、6层,甚至10多层的隐层节点

明确突出了特征学习的重要性,也就是说通过逐层特征变换,将样本在原空间的特征表示变换到一个新特征空间,从而使分类或预测更加容易

与人工规则构造特征的方法相比,利用大数据来学习特征,更能够刻画数据的丰富内在信息

深度神经网络的训练

传统神经网络中,采用的是BP误差反向传播算法的方式进行,简单来讲就是采用迭代的算法来训练整个网络,随机设定初值,计算当前网络的输出,然后根据当前输出和真实值之间的差利用梯度下降法去改变前面各层的参数,直到模型收敛。

深度学习不能采用BP算法:

如果采用BP算法,对于一个深度神经网络(7层以上),误差传播到最前面的层已经变得太小,出现所谓的梯度扩散

深度神经网络的目标函数往往是非凸的,采用BP算法容易陷入局部最优问题

深度学习训练过程具体如下:

step1 使用自下而上的非监督学习过程(就是从底层开始,一层一层的往顶层训练):

采用无标定数据(有标定数据也可)分层训练各层参数,这一步可以看作是一个无监督训练过程,是和传统神经网络区别最大的部分(这个过程可以看作是特征学习过程)。

具体的,先用无标定数据训练第一层,训练时先学习第一层的参数(这一层可以看作是得到一个使得输出和输入差别最小的三层神经网络的隐层),由于模型能力的限制以及稀疏性约束,使得得到的模型能够学习到数据本身的结构,从而得到比输入更具有表示能力的特征;在学习得到第n-1层后,将n-1层的输出作为第n层的输入,训练第n层,由此分别得到各层的参数。

step2 自顶向下的监督学习过程(就是通过带标签的数据去训练,误差自顶向下传输,对网络进行微调/fine-tune):

基于第一步得到的各层参数进一步fine-tune整个多层模型的参数,这一步是一个有监督训练过程;第一步类似神经网络的随机初始化初值过程,由于深度学习的第一步不是随机初始化,而是通过学习输入数据的结构得到的,因而这个初值更接近全局最优,从而能够取得更好的效果;所以深度学习效果好很大程度上归功于第一步的feature learning过程。

欢迎关注公众号:小AI咨询,回复“学习资料”获取更多作者精心为大家挑选的机器学习和数据挖掘学习资料

  • 发表于:
  • 原文链接:http://kuaibao.qq.com/s/20180107A0POJG00?refer=cp_1026

扫码关注云+社区