深度学习的算法框架结构大多数为深层神经网络或多层神经网络。它在本质上是构建含有多层隐藏层的机器学习架构模型,通过大规模数据训练,得到有代表性的特征信息,从而产生能够对给定样本进行分类和预测的能力,随着训练的深入可以逐步提高分类和预测的精度。因此,对于深度学习的探索,要从神经网络框架和模型开始。对于神经网络作用的理解,在第一阶段可以将神经网络当成一个复合函数,即对于对应输入的数据会给出对应输出。
神经网络其实就是按照一定规则连接起来的多个神经元。图2 − 1 − 1 所示为一个全连接(Full Connected,FC)神经网络的基本结构,图中的圆点代表神经元。
通过观察图2−1−1,可以发现它的规则包括:
(1)神经元按照层来布局。最左边的层称为输入层,负责接收输入数据;最右边的层称为输出层,用于输出神经网络的数据;输入层和输出层之间的层称为隐藏层,因为它们对于外部来说是不可见的。
(2)同一层的神经元之间没有连接。
(3)第N 层的每个神经元和第N − 1 层的所有神经元相连(这就是FC的含义),第N − 1 层神经元的输出就是第N 层神经元的输入。
图2−1−1 全连接神经网络的基本结构
上面这些规则定义了全连接神经网络的基本结构。事实上,还有很多其他结构的神经网络,如卷积神经网络(CNN)、循环神经网络(RNN),它们都具有不同的连接规则,每个连接都有一个权值。
一般来说,神经网络的架构可以分为以下3 类:
(1)前馈神经网络:最常见的神经网络模型。第一层是输入,最后一层是输出。如果中间有多个隐藏层,则称之为深度神经网络。各层神经元的活动是前一层活动的非线性函数。
(2)循环网络:在连接图中,定义了循环的网络,使网络更具有生物仿真性,但难以训练。循环网络常用于处理序列数据。若一个序列的输入与前面序列的输出具有相关性(具体表现为网络会对前面的信息进行记忆并应用于当前输出的计算中),就意味着隐藏层之间的节点是有连接的。
(3)对称连接网络:类似于循环网络,但其神经元之间的连接是对称的。
神经网络的基本架构由3 部分组成:神经元、权重、偏置项。每个神经元接受线性组合的输入后,开始只进行简单的线性加权,后来给每个神经元都加上非线性的激活函数,从而将其进行非线性变换后输出。每两个神经元之间的连接代表加权值,称为权重(weight)。不同的权重和激活函数,会导致神经网络不同的输出。神经元是包含权重和偏置项的函数,等待接收外部传入的数据。在接收数据后,神经元执行一些预先指定的计算,并且在多数情况下会通过激活函数将数据限制在一定范围内。激活函数的计算过程如图 2 − 1 − 2 所示。
图2−1−2 激活函数的计算过程
图中,xi 为输入向量中第i 维数据的值;wi 为输入向量中第i 维数据的权重;θ 为偏置数值。
在神经网络通过外部数据进行学习的过程中,各种数据的重要性一般是不同的,因此可以为这些数据指定不同的权重,以代表不同的重要性或者对下一阶段输出的影响程度。
一个神经网络的搭建要满足输入/输出、权重、阈值这三个条件,才能实现多层结构。其中,最困难的部分是确定权重和阈值。各种文献给出的研究结果表明,到目前为止,这两个值都是以主观经验给出的,在现实中很难直接给出适用值,通常采用试错法来找出理想解。试错法,就是在其他参数不变的前提下微调权重和阈值,并反复执行这个过程,直到能够得到最精确输出的那组权重和阈值。这一过程属于模型训练的过程。
神经网络的一般运行过程如下:
第1 步,分析任务需求,确定输入和输出。
第2 步,根据实际问题找到对应算法,可以得到输出。
第3 步,找到一组已知的输入和输出作为训练集来训练模型,得到估算的权重和阈值。
第4 步,输入数据,在得到输出的同时调整权重和阈值。(www.xing528.com)
由于该过程的计算量巨大,一般需使用专门定制的GPU 来运行,所以直到近年来GPU 硬件技术得到发展,机器学习才开始迅速发展。
在此,重点介绍比较主流的卷积神经网络(CNN)层次结构。
卷积神经网络作为分层式网络,在一定程度上是经典的层级网络的拓展。在卷积神经网络中,主要有四项操作功能:卷积、激活(非线性变换)、池化、分类。图2 − 1 − 3 所示为一个进行图像分类的卷积神经网络的典型结构。
图2−1−3 进行图像分类的卷积神经网络的典型结构
下面以图像分类任务为例对各层功能进行说明。
1)数据输入层
数据输入层的主要任务是对输入的原始图像进行预处理。在数据输入层,众多神经元接受大量非线性输入信息。输入的信息称为输入向量,通常是图像的像素矩阵,矩阵的深度表示图像的色彩通道,如RGB 图像通道为3、灰度图像通道为1。预处理过程最重要的步骤为归一化,即将图像的各个像素值归一化到一定范围,该范围依据不同的神经网络而有所不同。
2)卷积层
这一层是卷积神经网络中最重要的层,卷积神经网络的名字也来源于卷积运算操作。卷积的目的在于提取输入图像的特征,通过卷积核映射出新图像。卷积层上每个节点的输入是上一层经过卷积操作之前的固定大小的块,可以为3 × 3 或5 × 5,这个大小也对应为卷积核。简而言之,卷积操作相当于一个抽象过程,其中包含三个重要的参数:深度、步长、填充。深度对应的是进行卷积运算的卷积核(也可以称为过滤器)的数量;步长对应的是移动卷积核的像素距离,步长越大,卷积生成的特征映射就越小;填充则是在避免卷积核遇到边界像素不足的情况下从边界向外进行填充像素值的操作。
3)激励层
卷积层后隐藏着激励层,在每次进行卷积操作之后,激励层都对卷积结果进行ReLU(The Rectified Linear Unit,修正线性单元)操作,其本质是一种激活函数。常用的非线性激活函数有sigmoid、tanh、relu 等,其中sigmoid、tanh 常见于全连接层,relu 常见于卷积层。
激活是应用于每个像素的操作。如图2 − 1 − 4 所示,激活函数将经过卷积之后的所有负像素值映射为 0。由于卷积是线性运算,而实际情况中的神经网络数据都是非线性的,这也是引用激活函数的目的,即引入非线性因素。以sigmoid 为例,可以把激活函数看作一种“分类的概率”,若激活函数的输出为0.9,便可以解释为90%的概率为正样本。
图2−1−4 激活函数
4)池化层
池化层也称为欠采样或下采样,主要用于特征降维、压缩数据和参数的数量、减小过拟合,同时提高模型的容错性。池化层主要有Max Pooling(最大池化)、Average Pooling(平均池化),使用得较多的是Max Pooling。池化的基本原理是减少输入控件的大小并压缩参数的量,但保留重要的参数,从而减少整个神经网络中参数的量,减小过拟合。池化层的输入一般来源于上一层,提供了很强的鲁棒性。例如,Max Pooling 是取一小块区域中的最大值,若此区域中的其他值略有变化,或者图像稍有平移,则池化后的结果保持不变。池化层一般没有参数,所以反向传播时,只需对输入参数求导,不需要进行权值更新。
5)全连接层
全连接(Fully Connected,FC)的核心操作是矩阵乘法,本质上是把一个特征空间线性变换到另一个特征空间。在实践中通常把特征工程(或神经网络)提取的特征空间映射到样本标记空间,其中的参数w 相当于做了特征加权。由于这个特性,在CNN 中,FC 常用作分类器,即在卷积、池化层后,全连接层把特征变换到样本空间。其在整个卷积神经网络中起到“分类器”的作用。通常,全连接层在神经网络架构中的最后。经过数次卷积和池化操作,就可以认为输入的信息已经被抽象为包含更高价值信息的特征,全连接层则用于对前面的特征信息进行加权计算。
6)SoftMax 层
SoftMax 层将多个神经元的输出映射到(0,1)区间,可将该映射值当成概率来理解,从而进行多分类。因此SoftMax 层的输出可以视为概率分布,常用在神经网络的最后一层,作为输出层来输出当前样本中不同类别的分布情况,即给出分类结果。
7)其他功能层
在有些神经网络中,还可以使用一些其他功能层。例如:归一化层,在 CNN 中对特征进行归一化;切分层,对某些(图像)数据的进行分区域的单独学习;融合层,对独立进行特征学习的分支进行融合。
尽管这些功能层之间有所差异,但大部分卷积神经网络包含的主要层次是前述6 层。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。