大V吴恩达曾经说过:做AI研究就像造宇宙飞船,除了充足的燃料之外,强劲的引擎也是必不可少的。假如燃料不足,则飞船就无法进入预定轨道。而引擎不够强劲,飞船甚至不能升空。类比于AI,深度学习模型就好像引擎,海量的训练数据就好像燃料,这两者对于AI而言同样缺一不可。
深度学习是一个近几年备受关注的研究领域,在机器学习中起着重要的作用。 深度学习通过建立、模拟人脑的分层结构来实现对外部输入的数据进行从低级到高级的特征提取,从而能够解释外部数据。
深度学习
深度学习(Deep Learning)的概念源于人工神经网络的研究。含多隐层的多层感知器就是一种深度学习结构。
深度学习也称为深度结构学习【Deep Structured Learning】、层次学习【Hierarchical Learning】或者是深度机器学习【Deep Machine Learning】)是一类算法集合,是机器学习的一个分支。它尝试为数据的高层次摘要进行建模。
机器学习通过算法,让机器可以从外界输入的大量的数据中学习到规律,从而进行识别判断。机器学习的发展经历了浅层学习和深度学习两次浪潮。深度学习可以理解为神经网络的发展,神经网络是对人脑或生物神经网络基本特征进行抽象和建模,可以从外界环境中学习,并以与生物类似的交互方式适应环境。神经网络是智能学科的重要部分,为解决复杂问题和智能控制提供了有效 的途径。神经网络曾一度成为机器学习领域备受关注的方向。
我们用一个简单的例子来说明,假设你有两组神经元,一个是接受输入的信号,一个是发送输出的信号。当输入层接收到输入信号的时候,它将输入层做一个简单的修改并传递给下一层。在一个深度网络中,输入层与输出层之间可以有很多的层(这些层并不是由神经元组成的,但是它可以以神经元的方式理解),允许算法使用多个处理层,并可以对这些层的结果进行线性和非线性的转换。
深度学习的由来
1、人脑视觉机理启示
人类每时每刻都面临着大量的感知数据,但大脑总能很容易地捕获重要的信息。人工智能的核心问题就是模仿大脑这种高效准确地表示信息的能力。通 过 近些年的研究,我们对大脑机理已有了一些了解,这些都推动了人工智能的发展。
神经学研究表明,人的视觉系统的信息处理是分级的,从低级的V1区提取边缘特征,到V2区的形状,再到更高层。人类大脑在接收到外部信号时,不是直接对数据进行处理,而是通过一个多层的网络模型来获取数据的规律。这种层次
结构的感知系统使视觉系统需要处理的数据量大大减少,并保留了物体有用的结构信息。
2、现有机器学习的局限性
深度学习与浅层学习相对。现在很多的学习方法都是浅层结构算法,它们存在一定的局限性,比如在样本有限的情况下表示复杂函数的能力有限,针对复杂的分类问题其泛化能力受到一定制约。
而深度学习可通过学习一种深层非线性网络结构,实现复杂函数逼近,表征输 入数据分布式表示,并且能在样本集很少的情况下去学习数据集的本质特征。
虽然浅层学习的应用也很广泛,但它只对简单的计算才有效,并不能到达人脑的反应效果,这就需要深度的机器学习。这些都表明浅层学习网络有很大的局限性,激发了我们对深度网络建模的研究。
深度机器学习是数据分布式表示的必然结果。有很多学习结构的学习算法得到的学习器是局部估计算子,例如,由核方法构造的学习器,是由对模板的匹配度加权构成的。对于这样的问题,通常我们有合理的假设,但当目标函数非常复杂时,由于需要利用参数进行描述的区域数目也是巨大的,因此这样的模型 泛化能力很差。在机器学习和神经网络研究中分布式表示可以处理维数灾难和局部泛化限制。分布式表示不仅可以很好地描述概念间的相似性,而且合适的分布式表示在有限的数据下能体现出更好的泛化性能。理解和处理接收到的信 息是人类认知活动的重要环节,由于这些信息的结构一般都很复杂,因此构造
深度的学习机器去实现一些人类的认知活动是很有必要的。
3、特征提取的需要
机器学习通过算法,让机器可以从外界输入的大量数据中学习到规律,从而进行识别判断。机器学习在解决图像识别、语音识别、自然语言理解等问题时的 大致流程如图 1 所示。
首先通过传感器来获得数据,然后经过预处理、特征提取、特征选择,再到推理、预测和识别。良好的特征表达影响着最终算法的准确性,而且系统主要的计算和测试工作都在这一环节。这个环节一 般都是人工完成的,靠人工提取特征是一种非常费力的方法,不能保证选取的质量,而且它的调节需要大量的时间。然而深度学习能自动地学习一些特征,不需要人参与特征的选取过程。
深度学习是一个多层次的学习,如图2所示,用较少的隐含层是不可能达到与 人脑类似的效果的。这需要多层的学习,逐层学习并把学习的知识传递给下一 层,通过这种方式,就可以实现对输入信息进行分级表达。深度学的实质就是通过建立、模拟人脑的分层结构,对外部输入的声音、图像、文本等数据进行从低级到高级的特征提取,从而能够解释外部数据。与传统学习结构相比,深 度学习更加强调模型结构的深度,通常含有多层的隐层节点,而且在深度学习中,特征学习至关重要,通过特征的逐层变换完成最后的预测和识别。
深度学习的经典算法
深度学习作为机器学习的一个分支,其学习方法可以分为监督学习和无监督学习。两种方法都具有其独特的学习模型:多层感知机 、卷积神经网络等属于监 督学习;深度置信网 、自动编码器 、去噪自动编码器 、稀疏编码等属于无监督学习。
1、监督学习:卷积神经网络CNNs
20世纪60年代,Hubel和Wiesel通过对猫视觉皮层细胞的研究,提出了感受野(receptive field)的概 念。受此启发, Fukushima提出神经认知机 (neocognitron)可看作是CNNs卷积神经网络的第一个实现网络,也是感受野概念在人工神 经网络领域的首次应用。随后LeCun等人设计并采用基于误差梯度的算法训练了卷积神经网络,并且其在一些模式识别任务中展现出了相对于当时其它方法的领先性能。现代生理学关于视觉系统的理解也与CNNs中的图像处理过程相一致,这为CNNs在图像识别中的应用奠定了基础。CNNs是第一个真正成功地采用多层层次结构网络的具有鲁棒性的深度学习方法,通过研究数据在空间上的关联性,来减少训练参数的数量。目前来看,在图像识别领域,CNNs已经成为一种高效的识别方法。
CNNs是一个多层的神经网络,如图3所示,每层由多个二维平面组成,每个平面又由多个独立的神经元组成。上一层中的一组局部单元作为下一层邻近单元的输入,这种局部连接观点最早起源于感知器。外界输入的图像通过可训练的滤波器加偏置进行卷积,卷积后在C1层会产生3个特征映射图;然后特征映射图中每组像素分别进行求和加偏置,再通过Sigmoid函数得到S2层的特征映射图;这些映射图再通过滤波器得到 C3层;C3与 S2类似,再产生 S4;最后,这些像素值被光栅化,并且连接成向量输入到神经网络,从而便得到了输出。一般地,C 层为特征提取层,每个神经元的输入与前一层的局部感受野相连,并提取该局部特征,根据局部特征来确定它与其他特征空间的位置关系;S层是特征映射层,特征映射具有位移不变性,每个特征映射为一个平面,平面上所有神经元的权值是相等的,因而减少了网络自由参数的个数,降低了网络参数选择的复杂度。每一个特征提取层(C 层)都会跟着一个用于求局部平均及二次提取的计算层(S 层),这便构成了两次特征提取的结构,从而在对输入样本识别时,网络有很好的畸变容忍能力。对于每一个神经元,都定义了对应的接受域,其只接受从自己接受域传来的信号。多个映射层组合起来可以获得层之间的关系和空域上的信息,从而方便进行图像处理。
CNNs是人工神经网络的一种,其适应性强,善于挖掘数据局部特征。它的权值共享网络结构使之更类似于生物神经网络,降低了网络模型的复杂度,减少了权值的数量,使得CNNs在模式识别中的各个领域得到应用并取得了很好的结果。CNNs通过结合局部感知区域、共享权重、空间或时间上的降采样来充分利用数据本身包含的局部性等特征,优化网络结构,并且保证一定程度上的位移的不变性。由LeCun出的LeNet模型在应用到各种不同的图像识别任务时都取得了不错的效果,被认为是通用图像识别系统的代表之一。通过这些年的研究工作,CNNs的应用越来越多,如人脸检测 、文档分析 、语音检测 、车牌识别等 方面。2006年Kussul等人提出的采用排列编码技术的神经网络在人脸识别、手写数字识别和小物体识别等识别任务上都取得了与一些专用分类系统相当的性能表现;并且在2012年,研究人员把视频数据里连续的帧当作卷积神经网络的输入数据,这样就可以引入时间维度上的数据,从而识别人体的动作。
2、无监督学习:深度置信网DBNs
DBNs是目前研究和应用都比较广泛的深度学习结构,它由多个受限玻尔兹曼机 累加而成。RBM结构如图4 所示,分为可视层即输入数据层(υ)和隐藏层(h),每一层的节点之间没有连接,但层和层之间彼此互连。相比传统的sigmoid信念网络,RBM易于连接权值的学习。Hinton等人认 为,如果一个典 型的DBN有l个隐含层,那么可以用联合概率分布来描述输入数据υ和隐含向量的关系:
其中,是条件概率分布。DBN学习的过程中,所要学习的就是联合概率分布,在机器学习的领域中,联合概率分布的意义就是对象的生成。
传统的BP算法在经典的网络结构中广泛应用,但对于深度学习的训练却遇到了 很多困难:第一,BP算法是监督学习,训练需要有标签的样本集,但实际能得到的数据都是无标签的;第二,BP算法在多隐层的学习结构中,学习过程较慢;第三,不适当的参数选择会导致局部最优解。为了获取生成性权值,预训练采用非监督贪婪逐层算法,非监督贪婪逐层训练算法被Hinton证明是有效的。
非监督贪婪逐层训练算法的核心思想是:把 DBN分层(见图5),每一层进行 无监督学习,每次只训练一层,将其结果作为高一层的输入,最后用监督学习 调整所有层。在这个训练阶段,首先,在可视层会产生一个向量v,通过它将值映射给隐单元;然后,可视层的输入会被随机地选择,以尝试去重构原始的输入信号;最后,这些新可视单元再次映射给隐单元,获得新的隐单元h。执 行这种反复步骤叫做吉布斯(Gibbs)采样。隐层激活单元和可视层输入之间 的 相关性差别就作为权值更新的主要依据。在最高两层,权值被连接到一起,从而更低层的输出将会提供一个参考的线索或者关联给顶层,这样顶层就会将其 联系到它的记忆内容。预训练结束后,DBN可以利用带标签的数据及BP算法去 调整网络结构的性能。DBNs的BP算法只需要对权值参数空间进行一个局部的搜索,这相比前向神经网络来说,训练的时间会显著减少,训练 RBM是Gibbs有效的随机抽样技术。在贪婪的学习算法过程中,采用了Wake-Sleep算法的基 本思想,算法在Wake阶段,利用学习得到的权重,按照自底向上的顺序为下一层的训练提供数据;在Sleep阶段,按照自顶向下的顺序利用权重对数据进行重组。
DBNs是目前研究和应用都比较广泛的深度学习结构,由于灵活性很好,因此比较容易拓展,例如卷积DBNs就是DBNs的一个拓展,给语音信号处理问题带来 了突破性的进展。DBNs作为一个新兴的生成模型,已广泛应用到了对象建模、特征提取、识别等领域。
深度学习的应用
在实际应用中,很多问题都可以通过深度学习解决。那么,我们举一些例子:
黑白图像的着色
深度学习可以用来根据对象及其情景来为图片上色,而且结果很像人类的着色结果。这种解决方案使用了很大的卷积神经网络和有监督的层来重新创造颜色。
机器翻译
深度学习可以对未经处理的语言序列进行翻译,它使得算法可以学习单词之间的依赖关系,并将其映射到一种新的语言中。大规模的LSTM的RNN网络可以用来做这种处理。
图像中的对象分类与检测
这种任务需要将图像分成之前我们所知道的某一种类别中。目前这类任务最好的结果是使用超大规模的卷积神经网络实现的。突破性的进展是Alex Krizhevsky等人在ImageNet比赛中使用的AlexNet模型。
自动产生手写体
这种任务是先给定一些手写的文字,然后尝试生成新的类似的手写的结果。首先是人用笔在纸上手写一些文字,然后根据写字的笔迹作为语料来训练模型,并最终学习产生新的内容。
自动玩游戏
这项任务是根据电脑屏幕的图像,来决定如何玩游戏。这种很难的任务是深度强化模型的研究领域,主要的突破是DeepMind团队的成果。
聊天机器人
一种基于sequence to sequence的模型来创造一个聊天机器人,用以回答某些问题。它是根据大量的实际的会话数据集产生的。
尽管深度学习的研究还存在许多问题,但它对机器学习领域产生的影响是不容小觑的。更加复杂且更加强大的深度模型能深刻揭示大数据里所承载的信息,并对未来和未知事件作更精准的预测。总之,深度学习是一个值得研究的领域,在未来的几年一定会更加的成熟。