【深度学习笔记001 深度学习入门导读】

2016年Google人工智能程序阿尔法围棋(AlphaGo)对战世界围棋选手李世石,最终以4:1的成绩得到胜利,这惊人的一幕将国内外研究和学习人工智能的热题推向了新的高潮。然而,何为深度学习?本文将揭开深度学习的面纱。算法

•  1 什么是深度学习及深度学习的基本思想?网络

•  2 人工智能是如何发展而来?框架

•  3 机器学习的相关技术有哪些?dom

•  4 Deeplearning与Neural Network的异同?机器学习

•  5 Deeplearning训练过程?分布式

•  6 深度学习研究现状、应用领域和发展趋势?函数

1 什么是深度学习及深度学习的基本思想?

深度学习是机器学习的一个新分支,以人工神经网络为基础模拟人脑的分析学习机制来进行解释图像、声音、文本等数据。人工神经网络(Artificial Neural Networks,ANNs)是深度学习算法的基础,简称为神经网络(NNs)。神经网络的思想是经过借鉴动物神经网络行为特征进行分布式并行处理信息的数学算法模型。深度学习是利用不断地学习组合底层特征造成更加抽象的高层特征,来发现数据的分布式特征。在深度学习中,计算机能够自行观测学习数据和结果来实现自动解决问题。在深度学习算法的发展过程当中,Caffe受到广大研究和开发人员的欢迎,是一款优秀的神经网络深度学习框架。oop

假设咱们有一个系统S,它有n层(S1,…Sn),它的输入是I,输出是O,形象地表示为: I =>S1=>S2=>…..=>Sn => O,若是输出O等于输入I,即输入I通过这个系统变化以后没有任何的信息损失(呵呵,大牛说,这是不可能的。信息论中有个“信息逐层丢失”的说法(信息处理不等式),设处理a信息获得b,再对b处理获得c,那么能够证实:a和c的互信息不会超过a和b的互信息。这代表信息处理不会增长信息,大部分处理会丢失信息。固然了,若是丢掉的是没用的信息那多好啊),保持了不变,这意味着输入I通过每一层Si都没有任何的信息损失,即在任何一层Si,它都是原有信息(即输入I)的另一种表示。如今回到咱们的主题Deep Learning,咱们须要自动地学习特征,假设咱们有一堆输入I(如一堆图像或者文本),假设咱们设计了一个系统S(有n层),咱们经过调整系统中参数,使得它的输出仍然是输入I,那么咱们就能够自动地获取获得输入I的一系列层次特征,即S1,…, Sn。性能

对于深度学习来讲,其思想就是堆叠多个层,也就是说这一层的输出做为下一层的输入。经过这种方式,就能够实现对输入信息进行分级表达了。学习

另外,前面是假设输出严格地等于输入,这个限制太严格,咱们能够略微地放松这个限制,例如咱们只要使得输入与输出的差异尽量地小便可,这个放松会致使另一类不一样的Deep Learning方法。上述就是Deep Learning的基本思想。

2 人工智能是如何发展而来?

人工智能主要经历了由浅层学习(Shallow Learning)到深度学习(Deep Learning)的发展历程。在1956年达特茅斯大学召开的会议上首次出现了“人工智能”(Artificial Intelligence, AI)这个术语,标志着人工智能正式诞生。20世界60年代到70年代人工智能的应用走向实用化,研究和研发和各类不一样类型的专家系统。90年代随着Internet的发展,多种浅层机器学习模型前后被提出,好比支撑向量机(Support Vector Machines, SVM)、Boosting、最大熵方法(Logistic Regression, LR)等,这个阶段浅层学习是机器学习的第一次浪潮。当下进入大数据+深度模型阶段,是机器学习的第二次浪潮。2006年,加拿大多伦多大学机器学习领域泰斗Geoffrey Hinton和他的学生在科学上发表的一篇文章,揭露和两个主要的信息,一是多隐层的人工神经网络学习获得的特征数据有利于可视化或分类,二是经过“逐层初始化”可有效克服深度神经网络在训练上的难点。

当前多数分类、回归等学习方法为浅层结构算法,其局限性在于有限样本和计算单元状况下对复杂函数的表示能力有限,针对复杂分类问题其泛化能力受到必定制约。深度学习可经过学习一种深层非线性网络结构,实现复杂函数逼近,表征输入数据分布式表示,并展示了强大的从少数样本集中学习数据集本质特征的能力。(多层的好处是能够用较少的参数表示复杂的函数) 


深度学习的实质,是经过构建具备不少隐层的机器学习模型和海量的训练数据,来学习更有用的特征,从而最终提高分类或预测的准确性。所以,“深度模型”是手段,“特征学习”是目的。区别于传统的浅层学习,深度学习的不一样在于:1)强调了模型结构的深度,一般有5层、6层,甚至10多层的隐层节点;2)明确突出了特征学习的重要性,也就是说,经过逐层特征变换,将样本在原空间的特征表示变换到一个新特征空间,从而使分类或预测更加容易。与人工规则构造特征的方法相比,利用大数据来学习特征,更可以刻画数据的丰富内在信息。目前,深度神经网络(DNN)技术的应用十分普遍,大型知名互联网公司竞相投入资源研究探索,具备重要的研究意义和价值。

3 机器学习的相关技术有哪些?

从学习形式上能够分为有监督学习和无监督学习,有监督学习由一个输入对象和一个指望的输出值组成,是从标记的训练数据来推断一个功能的机器学习任务,根据训练数据集学习获得一个函数,输入新数据,经过这个函数预测结果。无监督学习是从没有标记的训练数据中学习数据的信息或特征来发现训练样本中的结构性知识,使用的许多方法是基于数据挖掘方法;从学习方法上能够分为经验性概括学习、分析学习、类比学习、遗传算法、链接学习和加强学习;其它相关的技术包括BP(Back Propagation)神经网络-是一种按偏差逆传播算法训练的多层前馈网络包括输入层、隐含层和输出层,随机森林(Random Forests)、支持向量机(Support Vector Machine, SVM)-是一种监督学习模型,关键是核函数、把输入隐含映射成高维特征空间,有效进行线性和非线性分类、深度学习(Deeping Learning)-典型神经网络采用大量的卷积层,利用空间相对关系来减小参数数目以提升训练性能。

4 Deep learning与Neural Network的异同?

深度学习的概念源于人工神经网络的研究。含多隐层的多层感知器就是一种深度学习结构。深度学习经过组合低层特征造成更加抽象的高层表示属性类别或特征,以发现数据的分布式特征表示。

Deep learning自己算是machine learning的一个分支,简单能够理解为neural network的发展。大约二三十年前,neural network曾经是ML领域特别火热的一个方向,可是后来确慢慢淡出了,缘由包括如下几个方面:

1)比较容易过拟合,参数比较难tune,并且须要很多trick;

2)训练速度比较慢,在层次比较少(小于等于3)的状况下效果并不比其它方法更优;

因此中间有大约20多年的时间,神经网络被关注不多,这段时间基本上是SVM和boosting算法的天下。可是,一个痴心的老先生Hinton,他坚持了下来,并最终(和其它人一块儿Bengio、Yann.lecun等)提成了一个实际可行的deep learning框架。

Deeplearning与传统的神经网络之间有相同的地方也有不少不一样。

两者的相同在于deep learning采用了神经网络类似的分层结构,系统由包括输入层、隐层(多层)、输出层组成的多层网络,以下图所示。


上图中每一个圆圈都是一个神经元,每条线表示神经元之间的链接。咱们能够看到,上面的神经元被分红了多层,层与层之间的神经元有链接,而层内之间的神经元没有链接。最左边的层叫作输入层,这层负责接收输入数据;最右边的层叫输出层,咱们能够从这层获取神经网络输出数据。输入层和输出层之间的层叫作隐藏层。每一层能够看做是一个logistic regression模型;这种分层结构,是比较接近人类大脑的结构的。

而为了克服神经网络训练中的问题,DL采用了与神经网络很不一样的训练机制。传统神经网络中,采用的是back propagation的方式进行,简单来说就是采用迭代的算法来训练整个网络,随机设定初值,计算当前网络的输出,而后根据当前输出和label之间的差去改变前面各层的参数,直到收敛(总体是一个梯度降低法)。而deep learning总体上是一个layer-wise的训练机制。这样作的缘由是由于,若是采用back propagation的机制,对于一个deep network(7层以上),残差传播到最前面的层已经变得过小,出现所谓的gradient diffusion(梯度扩散)。这个问题咱们接下来讨论。

5 Deep learning训练过程?

5.1传统神经网络的训练方法为何不能用在深度神经网络

BP算法做为传统训练多层网络的典型算法,实际上对仅含几层网络,该训练方法就已经很不理想。深度结构(涉及多个非线性处理单元层)非凸目标代价函数中广泛存在的局部最小是训练困难的主要来源。

BP算法存在的问题:

(1)梯度愈来愈稀疏:从顶层越往下,偏差校订信号愈来愈小;

(2)收敛到局部最小值:尤为是从远离最优区域开始的时候(随机值初始化会致使这种状况的发生);

(3)通常,咱们只能用有标签的数据来训练:但大部分的数据是没标签的,而大脑能够从没有标签的的数据中学习;

5.2 deep learning训练过程

若是对全部层同时训练,时间复杂度会过高;若是每次训练一层,误差就会逐层传递。这会面临跟上面监督学习中相反的问题,会严重欠拟合(由于深度网络的神经元和参数太多了)。

2006年,hinton提出了在非监督数据上创建多层神经网络的一个有效方法,简单的说,分为两步,一是每次训练一层网络,二是调优,使原始表示x向上生成的高级表示r和该高级表示r向下生成的x'尽量一致。方法是:

1)首先逐层构建单层神经元,这样每次都是训练一个单层网络。

2)当全部层训练完后,Hinton使用wake-sleep算法进行调优。

将除最顶层的其它层间的权重变为双向的,这样最顶层仍然是一个单层神经网络,而其它层则变为了图模型。向上的权重用于“认知”,向下的权重用于“生成”。而后使用Wake-Sleep算法调整全部的权重。让认知和生成达成一致,也就是保证生成的最顶层表示可以尽量正确的复原底层的结点。好比顶层的一个结点表示人脸,那么全部人脸的图像应该激活这个结点,而且这个结果向下生成的图像应该可以表现为一个大概的人脸图像。Wake-Sleep算法分为醒(wake)和睡(sleep)两个部分。

1)wake阶段:认知过程,经过外界的特征和向上的权重(认知权重)产生每一层的抽象表示(结点状态),而且使用梯度降低修改层间的下行权重(生成权重)。也就是“若是现实跟我想象的不同,改变个人权重使得我想象的东西就是这样的”。

2)sleep阶段:生成过程,经过顶层表示(醒时学得的概念)和向下权重,生成底层的状态,同时修改层间向上的权重。也就是“若是梦中的景象不是我脑中的相应概念,改变个人认知权重使得这种景象在我看来就是这个概念”。

deep learning训练过程具体以下:

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

采用无标定数据(有标定数据也可)分层训练各层参数,这一步能够看做是一个无监督训练过程,是和传统神经网络区别最大的部分(这个过程能够看做是feature learning过程):

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

2)自顶向下的监督学习(就是经过带标签的数据去训练,偏差自顶向下传输,对网络进行微调):

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

6 深度学习研究现状、应用领域和发展趋势?

在国外,2012年Hinton和他的学生Alex将神经模型应用于ImageNet上,取得了惊人的结果,这一年是深度学习研究和应用爆发的一年。深度学习在图像分类、图像定位、图像检测、语音识别等领域都取得了硕果累累,Google的AlphaGo再也不详述。在国内BAT、华为、京东等互联网巨头纷纷组建人工智能研究院,力争人工智能在家居、汽车、无人系统、安防等方面有突破性的创新应用。

Reference:

[1] 乐毅,王斌.深度学习-Caffe之经典模型详解与实战 [M].北京:电子工业出版社,2016.

http://blog.csdn.net/zouxy09/article/details/8775518

https://www.zybuluo.com/hanbingtao/note/433855