5.1深度学习概念
深度学习:作为当前人工智能大爆炸的核心驱动,深度学习是计算机领域中非常热门的话题,不仅在学术界有很多研究者研究,在业界也有很多实际运用。
1.从人工智能到深度学习
2016年,Google DeepMind的AlphaGo打败了韩国的围棋大师李世石。在媒体描述DeepMind胜利的时候,将人工智能(AI)机器学习( machine learning)和深度学习(deep learning)都用上了。这三者在AlphaGo击败李世石的过程中都起了作用,但它们说的并不是一回事。
2.人工智能—即为机器赋予人的智能
早在1956年夏天那次会议,人工智能的先驱们就梦想着用当时刚刚出现的计算机来构造复杂的、拥有与人类智慧同样本质特性的机器。人们在电影里也总是看到这样的机器:友好的,像星球大战中的C-3PO (C-Three po)﹔邪恶的,如终结者。强人工智能现在还只存在于电影和科幻小说中,原因不难理解我们还没法实现它们,至少目前还不行。我们目前能实现的,一般被称为“弱人工智能”(Narrow Al)。弱人工智能是能够与人一样,甚至比人更好地执行特定任务的技术。例如,Pinterest上的图像分类;或者Facebook的人脸识别。这些是弱人工智能在实践中的例子。这些技术实现的是人类智能的一些具体的局部。但它们是如何实现的?这种智能是从何而来?这就带我们来到矩形的里面一层,机器学习。
3.机器学习——一种实现人工智能的方法
机器学习最基本的做法,是使用算法来解析数据、从中学习,然后对真实世界中的事件做出决策和预测。其最成功的应用领域是计算机视觉,结果还算不错,但并不是那种能让人为之一振的成功。特别是遇到云雾天,目标变得不是那么清晰可见,又或者被遮挡一部分,算法就难以成功了。
4.深度学习——―种实现机器学习的技术
现在,经过深度学习训练的图像识别,在一些场景中甚至可以比人做得更好。深度学习使得机器学习能够实现众多的应用,并拓展了人工智能的领域范围。深度学习摧枯拉朽般地实现了各种任务,使得似乎所有的机器辅助功能都变为可能。无人驾驶汽车,预防性医疗保健,甚至是更好的电影推荐,都近在眼前,或者即将实现。
规模推动深度学习发展
(1)深度学习
自2006年,深度学习(Deep Learning)开始成为机器学习研究中的一个新兴领域,通常也被叫做深层结构学习或分层学习。
其动机在于建立、模拟人脑进行分析学习的神经网络,它模拟人脑的机制来解释数据,例如图像,声音和文本,深度学习是无监督学习的一种。深度学习通过组合低层特征形成更加抽象的高层表示属性类别或特征。被认为是智能机器可能的“大脑结构”。
简单地说深度学习就是:使用多层神经网络来进行机器学习
(2)浅层学习
传统机器学习和信号处理技术:仅含单层非线性变换的浅层学习结构。浅层模型的一个共性是仅含单个将原始输入信号转换到特定问题空间特征的简单结构。典型的浅层学习结构包括传统隐马尔科夫模型(HMM)、条件随机场(CRFs)、支持向量机(SVM)、以及仅含单隐层的多层感知器(MLP)等。
浅层结构的局限性在于有限的样本和计算单元情况下对复杂的函数表示能力有限,针对复杂分类问题其泛化能力受到一定的约束。
深度学习
深度学习的实质:通过构建具有很多隐层的机器学习模型和海量的训练数据,来学习更有用的特征,从而最终提升分类或预测的准确性。因此,“深度模型”是手段,“特征学习”是的。
深度学习与浅层学习的区别
(1)强调了模型结构的深度,通常有5层以上、甚至100多层的隐含层;
(2)深度学习明确突出了特征学习的重要性,通过逐层特征变换,将样本在原空间示变换到一个新特征空间,从而使分类或预测更加容易。
5.2深度学习发展
1.神经元的组成结构
(1)一个神经元通常具有多个树突,主要用来接受传入信息;
(2)轴突只有一条,轴突尾端有许多轴突末梢可以给其他多个神经元传递信息;轴突末梢跟其他神经元的树突产生连接,从而传递信号。这个连接的位置在生物学上叫做“突触”。
2.神经元对外部刺激做出反应步骤
(1)外部刺激通过神经末梢,转化为电信号,转导到神经细胞(又叫神经元)。无数神经元构成神经中枢。
(2)神经中枢综合各种信号,做出判断。
(3)人体根据神经中枢的指令,对外部刺激做出反应。
3.神经元模型
神经元模型是一个包含输入,输出与计算功能的模型。输入可以类比为神经元的树突,而输出可以类比为神经元的轴突,计算则可以类比为细胞核。
4.人脑的视觉机理
(1)1981年的诺贝尔医学奖,颁发给了David Hubel(出生于加拿大的美国神经生物学家)和Torsten Wiesel,以及Roger Sperry。前两位的主要贡献是“发现了视觉系统的信息处理中可视皮层是分级的”。
(2)神经-中枢-大脑的工作过程,或许是一个不断迭代、不断抽象的过程。
5.深度神经网络模型
2006年,Geoffrey Hinton在科学杂志《Science》上发表了一篇文章,论证了两个观点:
(1)多隐层的神经网络具有优异的特征学习能力,学习得到的特征对数据有更本质的刻画,从而有利于可视化或分类;
(2)深度神经网络在训练上的难度,可以通过“逐层初始化”来有效克服。由此提出了深度神经网络的思想(D神经网络)。
6.神经网络由大量神经元互连而成,按其拓扑结构可分成
(1)层次网络模型:神经元分成若干层顺序连接,在输入层上加上输入信息,通过中间各层,加权后传递到输出层后输出,其中有的在同一层中的各神经元相互之间有连接,有的从输出层到输入层有反馈;
(2)互连网络模型:任意两个神经元之间都有相互连接的关系,在连接中,有的神经元之间是双向的,有的是单向的,按实际情况决定。
7.深度学习的发展历程
第一代神经网络(1958~1969)
(1)最早的神经网络的思想起源于1943年的MCP人工神经元模型,当时是希望能够用计算机来模拟人的神经元反应的过程;
(2)第一次将MCP用于机器学习(分类)的当属1958年Rosenblatt(罗森布拉特)发明的感知器(perceptron [po'septron] )算法。该算法使用MCP模型对输入的多维数据进行二分类,且能够使用梯度下降法从训练样本中自动学习更新权值。1962年,该方法被证明为能够收敛,理论与实践效果引起第一次神经网络的浪潮。
1969年,美国数学家及人工智能先驱Minsky(明斯基)在其著作中证明了感知器本质上是一种线性模型,只能处理线性分类问题,就连最简单的XOR(异或)问题都无法正确分类。这等于直接宣判了感知器的死刑,神经网络的研究也陷入了近20年的停滞。
第二代神经网络(1986~1998)
(1)第一次打破非线性诅咒的当属现代深度学习大牛Hinton,其在1986年发明了适用于多层感知器(MLP)的BP算法,并采用Sigmoid进行非线性映射,有效解决了非线性分类和学习的问题。该方法引起了神经网络的第二次热潮。
(2)值得强调的是在1989年以后由于没有特别突出的方法被提出,且神经网络一直缺少相应的严格的数学理论支持,神经网络的热潮渐渐冷淡下去。冰点来自于1991年,BP算法被指出存在梯度消失问题,即在误差梯度后向传递的过程中后层梯度以乘性方式叠加到前层,由于Sigmoid函数的饱和特性,后层梯度本来就小,误差梯度传到前层时几乎为0,因此无法对前层进行有效的学习,该发现对此时的神经网络发展雪上加霜。
(3)1997年,LSTM模型被发明,尽管该模型在序列建模上的特性非常突出,但由于正处于神经网络的下坡期,也没有引起足够的重视。
第三代神经网络-深度学习(2006-至今)
快速发展期(2006~2012)
(1)2006年,深度学习元年。这一年,Hinton提出了深层网络训练中梯度消失问题的解决方案:无监督预训练对权值进行初始化+有监督训练微调。其主要思想是先通过自学习的方法学习到训练数据的结构(就像自动编码器),然后在该结构上进行有监督训练微调。但是由于没有特别有效的实验验证,该论文并没有引起重视。
(2)2011年,ReLu激活函数被提出,该激活函数能够有效的抑制梯度消失问题。
(3)2011年,微软首次将深度学习应用在语音识别上,取得了重大突破。
爆发期(2012~至今)
2012年,Hinton课题组为了证明深度学习的潜力,首次参加lmageNet图像识别比赛,其通过构建的CNN网络AlexNet一举夺得冠军,且碾压第二名(SVM方法)的分类性能。也正是由于该比赛,CNN吸引到了众多研究者的注意。
8.ALPHA GO
北京时间2016年3月15日下午,谷歌围棋人工智能AlphaGo今天与韩国棋手李世石进行最后一轮较量,AlphaGo获得本场比赛胜利。
AlphaGo =启发式搜索+强化学习+深度神经网络
有几点要澄清的是:
(1)AlphaGo不是穷举,而是用模拟进化的。AlphaGo只知道围棋规则,不懂定式、套路。
(2)AlphaGo是一套「模拟人类学习过程』的程序,下围棋只是顺带的。在此之前它都只是在尝试一些小游戏。
(3)AlphaGo的下棋模式,不是建立在围棋理论上面,而是建立是『尝试经验J上面。
2017年5月,AlphaGo在乌镇战胜世界围棋第一人柯洁。完成DeepMind的“在围棋上战胜人类”的任务。
5.3BP神经网络模型
BP(Back Propagation)网络是1986年由美国认知心理学家Rumelhart (鲁姆哈特)和McCelland(麦克兰德)为首的科学家小组提出,是一种按误差逆传播算法训练的多层前馈网络,是目前应用最广泛的神经网络模型之一。
1.BP学习算法思想
在外界输入样本的刺激下不断改变网络的连接权值,以使网络的输出不断地接近期望的输出。
两环节组成:信息的正向传递与误差的反向传播
(1)正向传播:输入信息从输入层经隐含层逐层计算传向输出层,每一层神经元的状态只影响下一层神经元的状态。
(2)反向传播:通过网络将误差信号沿原来的连接通路反传回来修改各层神经元的权值直至达到期望目标。
2.如何改变网络连接权值?
令Xi表示i节点的输入量,Yi为隐节点输出量,ti表示i节点的期望输出值Oi表示i节点实际输出值;
要误差降低,就是要改变Oi,也就要改变wij和Θi
3.误差传递的过程
算法原理:误差修正的公式推导
5.4卷积神经网络模型
1.卷积神经网络
(1)卷积神经网络是人工神经网络的一种,已成为当前语音分析和图像识别领域的研究热点。
(2)它的权值共享网络结构使之更类似于生物神经网络,降低了网络模型的复杂度,减少了权值的数量。
(3)该优点在网络的输入是多维图像时表现的更为明显,使图像可以直接作为网络的输入,避免了传统识别算法中复杂的特征提取和数据重建过程。
(4)卷积网络是为识别二维形状而特殊设计的一个多层感知器,这种网络结构对平移、比例缩放、倾斜或者共他形式的变形具有高度不变性。
(5)卷积神经网络与普通神经网络的区别在于,卷积神经网络包含了一个由卷积层和子采样层构成的特征抽取器。在卷积神经网络的卷积层中,一个神经元只与部分邻层神经元连接。
2.卷积神经网络原理图
如图例所示,输入图像( Input)通过和三个可训练的卷积核和可加偏置进行卷积,卷积后在C1层产生三个特征映射图(Feature map)然后,C1层的Feature map在经过下采样(Downsampling)后,加权值,加偏置再通过一个Sigmoid函数得到三个S2层的特征映射图。这些映射图再通过滤波得到C3层。这个层级结构再和S2一样产生S4。最终,这些像素值被光栅化,并连接成一个向量输入到传统的神经网络,得到输出。
3.卷积神经网络模型
CNN的Convolution过程:如图,原图像是5*5大小,有25个像素点,用一个3*3的卷积核对它进行卷积,得到了如右图所示的卷积后的Feature map。该特征图大小为3*3
假设一种卷积核只提取出图像的一种特征,所以一般要多个卷积核来提取不同的特征,所以每一层一般都会有多张Feature map。
同一张Feature map上的神经元共用一个卷积核,这大大减少了网络参数的个数。
4.CNN的Pooling过程
(1)在通过卷积获得了特征(features)之后,下一步我们希望利用这些特征去做分类。理论上讲,人们可以用所有提取得到的特征去训练分类器,例如softmax分类器,但这样做面临计算量的挑战。
(2)对于一个96X96像素的图像,假设我们已经学习得到了400个定义在8X8输入上的特征,每一个特征和图像卷积都会得到一个(96-8+1)×(96-8+1)=7921维的卷积特征,由于有400个特征,所以每个样例( exaMCPle)都会得到一个7921 ×400 = 3,168,400维的卷积特征向量。
(3)图像具有一种“静态性(stationarity)”的属性,可以对图像某一个区域上的特征取平均值(或最大值)。这种聚合的操作就叫做池化(pooling)。
5.CNN中的局部连接
(1)一般认为人对外界的认知是从局部到全局的,而图像的空间联系也是局部的像素联系较为紧密,而距离较远的像素相关性则较弱。因而,每个神经元其实没有必要对全局图像进行感知,只需要对局部进行感知,然后在更高层将局部的信息综合起来就得到了全局的信息。网络部分连通的思想,也是受启发于生物学里面的视觉系统结构。视觉皮层的神经元就是局部接受信息的(即这些神经元只响应某些特定区域的刺激)﹔
(2)假如每个神经元只和10×10个像素值相连,那么权值数据为1000000×100个参数,减少为原来的万分之一。而那10×10个像素值对应的10×10个参数,其实就相当于卷积操作。
6.CNN中的权值共享
(1)为进一步减少参数数量,采用权值共享方案进行处理。具体做法是,在局部连接中隐藏层的每一个神经元连接的是一个10×10的局部图像,因此有10×10个权值参数,将这10 ×10个权值参数共享给剩下的神经元,也就是说隐藏层中10^6个神经元的权值参数相同,那么此时不管隐藏层神经元的数目是多少,需要训练的参数就是这10 ×10个权值参数(也就是卷积核(也称滤波器)的大小)。
(2)怎么理解权值共享
我们可以这100个参数(也就是卷积操作)看成是提取特征的方式,该方式与位置无关。这其中隐含的原理则是:图像的一部分的统计特性与其他部分是一样的。这也意味着我们在这一部分学习的特征也能用在另一部分上,所以对于这个图像上的所有位置,我们都能使用同样的学习特征。
7.CNN的优点
(1)卷积神经网络避免了显式的特征取样,隐式地从训练数据中进行学习。这使得卷积神经网络明显有别于其他基于神经网络的分类器,通过结构重组和减少权值将特征提取功能融合进多层感知器。它可以直接处理灰度图片,能够直接用于处理基于图像的分类。
(2)卷积神经网络较―般神经网络在图像处理方面有如下优点:
输入图像和网络的拓扑结构能很好的吻合;
特征提取和模式分类同时进行,并同时在训练中产生;
权重共享可以减少网络的训练参数,使神经网络结构变得更简单,适应性更强。
(3)实例介绍:2012年多伦多大学的 Krizhevsky (克里什夫斯基)等人构造了一个超大型卷积神经网络,有9层,共65万个神经元,6千万个参数。网络的输入是图片,输出是1000个类,比如小虫、美洲豹、救生船等等。这个模型的训练需要海量图片,它的分类准确率也完爆先前所有分类器。纽约大学的Zeiler(泽勒)和 Fergusi((费尔吉)把这个网络中某些神经元挑出来,把在其上响应特别大的那些输入图像放在一起,看它们有什么共同点。他们发现中间层的神经元响应了某些十分抽象的特征。
第一层神经元主要负责识别颜色和简单纹理:
第二层的一些神经元可以识别更加细化的纹理,比如布纹、刻度、叶纹。
第三层的一些神经元负责感受黑夜里的黄色烛光、鸡蛋黄、高光。
第四层的一些神经元负责识别萌狗的脸、七星瓢虫和一堆圆形物体的存在。
第五层的一些神经元可以识别出花、圆形屋顶、键盘、鸟、动物。
5.5学习深度学习
公开数据集网站
(1)http: //deeplearning.net/datasets/
(2)http: // biometrics. idealtest.org/
入门基础
(1)对深度学习的论文关注也是十分必要的,除了需要了解深度学习的经典论文打好基础之外,对深度学习最新的发展也必须了解,推荐去关注近几年的CVPR会议,其中有大量的深度学习相关的好论文。
(2)网上也有很多相应的视频教程,现在给大家推荐几个学习网站。网易云课堂也有很多深度学习的教程,有必要去了解一下。