深度学习-概述

思维学普遍认为,人类大脑的思维分为抽象(逻辑)思维、形象(直观)思维和灵感(顿悟)思维三种基本方式。
人工神经网络就是模拟人思维的第二种方式。这是一个非线性动力学系统,其特色在于信息的分布式存储和并行协同处理。虽然单个神经元的结构极其简单,功能有限,但大量神经元构成的网络系统所能实现的行为却是极其丰富多彩的。

神经网络的发展

神经网络的灵感取自于生物上的神经元细胞,如下图
image
这是人体神经元的基本构成,其中树突主要用于接收其他神经元的信号,轴突用于输出该神经元的信号。人的大脑皮层包括有100亿个以上的神经元,每立方毫米约有数万个,它们互相联结形成神经网络,通过感觉器官和神经接受来自身体内外的各种信息,传递至中枢神经系统内,经过对信息的分析和综合,再通过运动神经发出控制信息,以此来实现机体与内外环境的联系,协调全身的各种机能活动。使得我们人类能够进行高级的思考,能够不断地对新事物进行学习,做出反应。

仿照人类神经网络的结构,搭建一种人为的神经网络结构,从而使其能够完成一些计算任务,这也是神经网络名字的由来。

[[人工神经网络]]早期的研究工作应追溯至上世纪40年代。下面以时间顺序,以著名的人物或某一方面突出的研究成果为线索,简要介绍人工[[神经网络]]的发展历史。

  • 1943年,心理学家W·Mcculloch和数理逻辑学家W·Pitts在分析、总结神经元基本特性的基础上首先提出神经元的数学模型“A logical calculus of the ideas immanent in nervous activity”。这项研究试图了解人脑如何通过连接的脑细胞或神经元形成复杂的模式。这项工作产生的一个主要想法是将具有二进制阈值的神经元与布尔逻辑(即 0/1 或真/假语句)进行比较。此模型沿用至今,并且直接影响着这一领域研究的进展。因而,他们两人可称为人工神经网络研究的先驱。

  • 1945年[[冯·诺依曼]]领导的设计小组试制成功存储程序式[[电子计算机]],[[标志]]着电子计算机时代的开始。1948年,他在研究工作中比较了人脑结构与存储程序式计算机的根本区别,提出了以简单神经元构成的再生自动机[[网络结构]]。但是,由于指令存储式[[计算机技术]]的发展非常迅速,迫使他放弃了神经网络研究的新途径,继续投身于指令存储式计算机技术的研究,并在此领域作出了巨大贡献。虽然,冯·诺依曼的名字是与普通计算机联系在一起的,但他也是人工神经网络研究的先驱之一。

  • 50年代末,F·Rosenblatt设计制作了“感知机”,它是一种多层的神经网络。这项工作首次把人工神经网络的研究从理论探讨付诸工程实践。当时,世界上许多实验室仿效制作感知机,分别应用于[[文字识别]]、声音识别、声纳信号识别以及学习[[记忆]]问题的研究。然而,这次[[人工神经网络]]的研究高潮未能持续很久,许多人陆续放弃了这方面的研究工作,这是因为当时[[数字计算机]]的发展处于全盛时期,许多人误以为数字计算机可以解决[[人工智能]]、[[模式识别]]、[[专家系统]]等方面的一切问题,使感知机的工作得不到重视;其次,当时的[[电子]][[技术]][[工艺]]水平比较落后,主要的元件是电子管或[[晶体管]],利用它们制作的[[神经网络]]体积庞大,价格昂贵,要制作在规模上与真实的神经网络相似是完全不可能的;另外,在1968年一本名为《感知机》的著作中指出线性感知机功能是有限的,它不能解决如异感这样的基本问题,而且多层网络还不能找到有效的计算方法,这些论点促使大批研究人员对于人工神经网络的前景失去信心。60年代末期,人工神经网络的研究进入了低潮。

  • 另外,在60年代初期,Widrow提出了自适应线性元件网络,这是一种连续取值的线性加权求和阈值网络。后来,在此基础上发展了非线性多层自适应网络。当时,这些工作虽未标出神经网络的名称,而实际上就是一种[[人工神经网络模型]]。

  • 随着人们对感知机兴趣的衰退,神经网络的研究沉寂了相当长的时间。80年代初期,[[模拟]]与数字混合的超[[大规模集成电路]]制作技术提高到新的水平,完全付诸实用化,此外,数字计算机的发展在若干应用领域遇到困难。这一背景预示,向[[人工神经网络]]寻求出路的时机已经成熟。美国的物理学家Hopfield于1982年和1984年在美国科学院院刊上发表了两篇关于人工神经网络研究的论文,引起了巨大的反响。人们重新认识到神经网络的威力以及付诸应用的现实性。随即,一大批学者和研究人员围绕着 Hopfield提出的方法展开了进一步的[[工作]],形成了80年代中期以来人工神经网络的研究热潮。
  • 1985年,Ackley、Hinton和Sejnowski将[[模拟退火算法]]应用到神经网络训练中,提出了Boltzmann机,该算法具有逃离极值的优点,但是训练时间[[需要]]很长。
  • 1986年,Rumelhart、Hinton和Williams提出了多层前馈神经网络的学习算法,即BP算法。它从证明的角度推导算法的正确性,是学习算法有理论依据。从学习算法角度上看,是一个很大的进步。
  • 1988年,Broomhead和Lowe第一次提出了径向基[[网络]]:RBF网络。

神经网络的组成

一个简单的神经网络主要由:输入层,隐藏层,输出层三部分构成。当隐藏层只有一层时,该网络为两层神经网络,由于输入层未做任何变换,可以不看做单独的一层。

  • 输入层,每个节点代表了一个输入特征,在输入节点中,不进行任何的计算,仅向隐藏节点传递信息。

  • 隐藏层,隐藏节点和外部世界没有直接联系(由此得名)。这些节点进行计算,并将信息从输入节点传递到输出节点。隐藏节点总称为「隐藏层」。尽管一个前馈神经网络只有一个输入层和一个输出层,但网络里可以没有隐藏层(如果没有隐藏层,激活函数选择sigmod,那么就变成逻辑回归了),也可以有多个隐藏层。隐藏层的层数以及隐藏层神经元是由人工设定,根据隐藏层的数目,又分为多层感知机(至少一层隐藏),深度神经网络(一般指至少两个隐藏层)。

  • 输出层,输出节点总称为「输出层」,负责计算,并从网络向外部世界传递信息。个数代表了分类标签的个数(在做二分类时,如果采用sigmoid分类器,输出层的神经元个数为1个;如果采用softmax分类器,输出层神经元个数为2个;如果是多分类问题,即输出类别>=3时,输出层神经元为类别个数),

一个基本的两层神经网络可见下图(注意:说神经网络多少层数的时候一般不包括输入层。 在神经网络中的激活主要讲的是梯度的更新的激活):
alt text
除了上述这些常用的组件外,还有

  • 全连接层(Fully Connected Layer,也称为密集层或Dense Layer):
    全连接层中的每个神经元与前一层的所有神经元相连,形成完全的连通性。
    这种层用于学习输入特征的复杂组合,常用于分类任务的最后几层。
    全连接层的权重矩阵与偏置向量在训练过程中会被调整,以优化模型性能。

  • 卷积层(Convolutional Layer):
    卷积层主要用于处理具有网格结构的数据,如图像。
    它使用卷积核(滤波器)在输入数据上滑动,执行点乘操作,以检测局部特征。
    卷积层可以捕获空间上的邻近关系,非常适合图像识别和计算机视觉任务。

  • 池化层(Pooling Layer):
    池化层用于减少卷积层输出的空间尺寸,从而减少计算量和过拟合风险。
    最常用的池化方法是最大池化(Max Pooling)和平均池化(Average Pooling),前者选取区域内最大值,后者取平均值。

  • 递归层(Recurrent Layer):
    递归层(RNN层)用于处理序列数据,如时间序列或自然语言。
    它们具有反馈连接,允许信息在时间步骤间循环,使得模型能够记住先前的信息。
    基本的RNN可能遭受梯度消失或梯度爆炸的问题,因此有时使用改进的架构,如LSTM或GRU。

  • 长短期记忆层(Long Short-Term Memory,LSTM Layer):
    LSTM是一种特殊的RNN,通过引入门控机制(输入门、遗忘门和输出门)来控制信息流,避免长期依赖问题。
    LSTM能够记住长期的信息,非常适合处理需要长时间记忆的任务。

  • 门控循环单元层(Gated Recurrent Unit,GRU Layer):
    GRU是LSTM的简化版本,通过合并状态和记忆细胞,并减少门控单元的数量,降低了计算复杂度。
    GRU同样能够处理长期依赖问题,但通常比LSTM更高效。

  • 激活层(Activation Layer):
    激活层通常紧随其他层之后,为网络引入非线性,使模型能够学习更复杂的函数。
    常见的激活函数有ReLU(Rectified Linear Unit)、sigmoid、tanh等。

  • 批归一化层(Batch Normalization Layer):
    批规范化层用于标准化输入数据,以加速训练过程并减少内部协变量移位问题。
    它通过对每一批数据进行归一化处理,使各层的输入分布更加稳定。

  • 丢弃层(Dropout Layer):
    丢弃层通过随机“丢弃”一部分神经元,防止模型过度依赖某些特征,有助于防止过拟合。

神经网络算法的分类

根据不同应用场景和处理任务的类别,神经网络算法主要分为 3 类:

前馈神经网络 feedforward neural network,FNN

前馈神经网络采用一种单向多层结构。各神经元分层排列,每一层包含若干个神经元。在此种神经网络中,每个神经元只与前一层的神经元,接收前一层的输出,并输出给下一层,各层间没有反馈。第0层叫输入层,最后一层叫输出层,其他中间层叫做隐含层(或隐藏层、隐层)。隐层可以是一层或多层。整个网络中无反馈,信号从输入层向输出层单向传播,可用一个有向无环图表示
一个典型的多层前馈神经网络如下所示。
image
这类神经网络算法主要用于处理信息分类、预测等任务,可实现信息快速传递和处理,前馈神经网络的不同神经元之间都是向前连接的

循环神经网络:

循环神经网络(Recurrent Neural Network, RNN)是一类以序列(sequence)数据为输入,在序列的演进方向进行递归(recursion)且所有节点(循环单元)按链式连接的递归神经网络(recursive neural network)。双向循环神经网络(Bidirectional RNN, Bi-RNN)和长短期记忆网络(Long Short-Term Memory networks,LSTM)是常见的循环神经网络

image

循环神经网络采用循环连接的方式,常用于自然语言处理和识别等任务,因为这种神经网络算法可以保留数据处理前的状态

卷积神经网络:

卷积神经网络(Convolutional Neural Networks, CNN)是一类包含卷积计算具有深度结构的前馈神经网络(Feedforward Neural Networks),是深度学习(deep learning)的代表算法之一 [1-2]。卷积神经网络具有表征学习(representation learning)能力,能够按其阶层结构对输入信息进行平移不变分类(shift-invariant classification),因此也被称为“平移不变人工神经网络(Shift-Invariant Artificial Neural Networks, SIANN)”

这种神经网络算法主要通过卷积层和池化层处理数据,能有效减少参数数量,一般用于图像分类、目标检测等场景。

神经网络算法的基本原理

神经网络算法的基本原理主要分为以下四类:

  • 自适应谐振理论(ART)网络:这种神经网络算法包含输入层和输出层,且两层完全互联,数据可沿着正向和反向两个方向传播;
  • 学习矢量量化(LVQ)网络:此类神经网络算法方式包含输入层、隐含层和输出层,输入层和隐含层之间神经元完全连接,但输出的神经元则不完全与隐含神经元相连
  • Kohonen网络:这类神经网络算法是以二维阵列排列,各个输出神经元可与对应的输入神经元相连接
  • Hopfield网络:该神经网络算法也被称为递归网络,这种算法只支持二进制和双极输入,其中每个神经元都与不同的神经元相连。
-------------本文结束感谢您的阅读-------------