购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3.2 卷积神经网络

3.2.1 卷积神经网络结构

在深度学习中,卷积神经网络(Convolutional Neural Network, CNN)是一类在机器学习中十分流行的神经网络模型,它的特点是以人工构造的神经元来响应周围一部分被覆盖的单元。卷积神经网络也被称为移位不变或空间不变人工神经网络。基于卷积核或滤波器的共享权重架构,网络中的卷积核或过滤器沿着输入特征滑动,得到称为特征图的等价变换作为输出。

卷积神经网络由生物学家Hubel和Wiessel在早期关于猫视觉皮层的研究发展而来,视觉皮层的细胞存在一个复杂的构造,这些细胞对视觉输入空间的子区域非常敏感,称之为感受野。卷积神经网络由纽约大学的Yann LeCun [5] 于1995年提出,其本质是一个多层感知器,其所采用的局部连接和权重共享的方式,一方面减少了权重的数量,使得网络易于优化,另一方面降低了模型的复杂度,也就是减小了过拟合的风险。这些优点增强了卷积神经网络的特征自主提取能力和效率,使得图像可以直接作为网络的输入,网络能够自行抽取图像的特征,包括颜色、纹理、形状及图像的拓扑结构,避免了传统识别算法中复杂的特征提取和数据重建过程。在处理这类二维张量的问题上,特别是识别位移、缩放及其他形式扭曲不变性的应用上,卷积神经网络具有良好的鲁棒性和运算效率。卷积神经网络在结构上具有局部连接、权重共享和空间下采样等特点,且具有较少的网络参数,因此被广泛应用于机器视觉和图像处理领域。同时,也有不少工作将卷积神经网络应用在语音和自然语言处理领域。

与由大量神经元组成的传统神经网络类似,卷积神经网络也包含许多具有学习能力、有可学习权重和参数的神经元。每个神经元在接收输入参数并做点积运算后将会输出每个分类经过运算后得到的分数,通过这些分数来进行信息处理。然而,与常规神经网络不同的是,由于输入的是可编码的图片,卷积神经网络的每一层具有3个维度排列的神经元,即宽度、高度、深度(这里的深度指的是图像特征张量的第三维,而不是整个神经网络的总层数)。在卷积神经网络中,输入图像被当作是一个3D容器,体积的尺寸为 n × n ×3(分别为宽度、高度、深度)。卷积神经网络的每一层都将输入的3D张量转换为被神经元激活的输出3D张量。每一层中的神经元只会与前一层的一部分神经元连接,而不是按照全连接的方式。在卷积神经网络的末尾,由于卷积层的下采样,最终输出层的前两个维度缩短而深度延长。图3.5是这个过程的一个可视化,在此示例中,红色输入层代表输入图像,因此其宽度和高度为图像的尺寸,深度为3(红绿蓝三色通道)。

卷积神经网络通常可以简单地认为是由多层的感知器不断发展得来的,其结构除了一个输入层和一个输出层以外,还包括多个处理数据的隐藏层。一个典型的卷积神经网络的隐藏层通常包括用来初步提取输入图片特征的卷积层、进一步提取图片主要特征的池化层、包含非线性因素的激活函数和处理完所有信息后将各部分特征汇总的全连接层。

图3.5 卷积神经网络

(1)卷积层

在卷积层中最基本的便是卷积运算。卷积运算是卷积神经网络中最基本的组成成分,其目的是通过提取输入信息的不同特征来处理信息。卷积运算是指输入两个原始矩阵通过一系列运算输出一个新矩阵的过程,可以概括成翻转、平移和加权求和三个步骤。加权求和,简单来说就是让卷积核模板从要进行卷积运算的图像矩阵左上角开始,让卷积核模板和图像矩阵的像元灰度值相乘再相加,并用相乘相加后的结果代替之前图像矩阵的像元灰度值,这个过程如图3.6所示。

图3.6 卷积计算过程

在图3.6中 r 的表达式为

然后卷积核向右移动一列,从上到下、从左到右依次做该运算,将得到的矩阵输出即可得到一幅新图像。卷积核的大小会影响卷积运算的结果和卷积神经网络的准确度,因此需慎重选择卷积核的大小。

假设输出矩阵大小为 n ,输入矩阵大小为 w ,卷积核大小为 k ,步长为 s ,零填充(padding)的大小为 p ,矩阵大小的计算公式如下。所得 n 的数值如果为小数,则向下取整。

(2)池化层

除卷积层外,卷积神经网络还常用池化层来缩小输入图像模型并提高计算速率,不仅能降低信息冗杂,防止模型过拟合,同时还能提高所提取输入信息特征的鲁棒性。与卷积层一样,池化层也有一个滑动的核(kernel),可称之为滑动窗口。图3.7是一个最大值池化实例,输入矩阵大小为4×4,滑动窗口的大小为2×2,步幅为2,每滑动到一个区域,取最大值作为输出,输出的每个元素是对应颜色区域的最大值。最大值池化可以很好地学习到图像的边缘信息和纹理特征。

图3.7 最大值池化实例

常用的最大值池化、最小值池化、平均值池化、TopK池化的表达式分别为

式中, R k 是输入到池化层的 k 阶矩阵; a i 是输入矩阵的第 i 个元素。

(3)激活函数

在卷积神经网络中,主要可采用卷积的方式来处理图像。这个操作是线性的,但对于输入的样本来说,通常不是线性可分的。为解决线性不可分问题,需引入激活函数来处理。卷积神经网络中常用的激活函数为sigmoid、tanh和relu,假设输入量为 x ,它们的表达式分别为

(4)全连接层

如果说卷积层、池化层和激活函数等操作是将原始数据映射到隐藏层特征空间,那么全连接层则起到将学到的分布式特征表示映射到样本标记空间的作用。全连接层将前面提取到的特征综合起来,根据特征的组合进行分类,以达到降低特征位置带来的影响的目的。通常在卷积神经网络的最后会将末端得到的长方体展平成一个长向量,然后送入全连接层利用softmax函数配合输出层进行分类,最终在输出层输出分类结果,预测结果及其相应的概率。

卷积神经网络其实就是在传统神经网络上添加了卷积操作,以便更好地处理图像、视频等二维数据。它与其他神经网络一样,规避了传统机器学习算法中极其复杂的数据处理过程,在处理可视化图像中有极大的优势,能自动提取图像的很多特征。与传统算法相比,在对图像的处理方面准确性和检测速度均有大幅度提高,鲁棒性更强,运算效率更高,非常值得学习和选用其作为深度学习的基本模块。正因为卷积神经网络的优越性能和应用广泛性,深度学习领域的研究者们不断地对其进行改进和优化,提出了许多变体模型,例如残差网络(ResNet)、卷积神经网络架构搜索(NAS)、注意力机制(attention)等,以进一步提高卷积神经网络的性能和效率。

3.2.2 卷积神经网络的文本处理

Kim等 [6] 最先将卷积神经网络用于文本分类任务上,如图3.8所示。Ye Zhang等也设计了针对文本分类的卷积神经网络模型,如图3.9所示。要实现基于卷积神经网络的文本分类,首先需要对句子进行分词,然后基于词表将每一个词转换成词编号,形成一个序列,再展开成词向量以生成一个词向量矩阵,以完成对文本的预处理过程。对于这样的操作,可以使用PyTorch的numpy模块进行转换,以便进一步对其基于张量(tensor)类型进行神经网络的训练和分析。

图3.8 用于多个句子分类任务的卷积神经网络模型 [ 6 ]

卷积神经网络的基本结构是“输入层—卷积层—激活层—池化层—输出层”多层结构。在自然语言处理任务中,需要进行一些调整。在词向量矩阵进入卷积层时,可以分为多个规模中等的数据批次(batch)进行同步训练,将每一段字符串作为一个训练数据以训练总体的特征,这点类似于在图像处理上,通过某种滤波器在图像中卷积,得到局部最大值等效应来减小训练规模。然后,经过激活函数修正后进入池化层进行池化,即类似于缩句操作,来获得最关键的信息。得到最终的矩阵后,将它们统一压平卷积,得到一系列的列矩阵,通过合并(merge)操作再次合成词编号信息矩阵,回归到多层的全连接层里训练。通过反复的前向传播和反向传播,最终形成并获得多类别的特征学习经验,实现了对自然语言的卷积神经网络。

图3.9 用于文本分类的卷积神经网络架构图解 [ 7 ] Z1zdWdKemMBn27zqqAJRLSGvEiZ2hUtfZNyaGj7ddtEgBFEEdEwsFSH3HUGlvW5l

点击中间区域
呼出菜单
上一章
目录
下一章
×