Advertisement

【人工智能】深度学习(QDU)

阅读量:

转载请务必经过我的同意

人工智能

深度学习

  • 深度学习体系
  • 卷积神经网络架构(CNN)
  • 主流的卷积神经网络模型
  • 循环神经网络架构(RNN),无需深入讲解

深度学习机制

在这里插入图片描述
  • 深度学习一词突显其"多层次"特性。
  • 从本质上说,深度学习与传统神经网络并非完全割裂。
  • 深度学习相比传统神经网络而言,在自动提取特征方面具有显著优势:传统神经网络依赖于预设特征进行分类工作;而深度学习则能够主动生成这些关键特征后再进行分类。
  • 深入探讨两者的差异基础之上,请您参考关于深度学习模型——卷积神经网络的相关讲解。

卷积神经网络 (CNN)

CNN 的核心思想:

  • 局部感知
  • 权值共享
  • 多卷积核
  • 空间下采样

(也有材料中概括成三个,不包括上述的“多卷积核”)

典型的卷积神经网络主要包含以下几种基本组件:输入模块、卷积模块以及特征提取模块(其中特征提取模块与传统的人工智能模型组件相同)。通过将这些组件进行有机整合就能建立起一套完整的深度学习模型架构。

仿生学研究发现,在生物学中的单个神经元模型设计参考了其树突和胞体结构。当输入电信号经由树突扩散并累加至胞体时,在某些条件下会被触发产生电位变化信号;否则则保持相对静止状态。简单来说,这类机制的作用就是判断细胞是否被足够刺激以触发响应。

局部感知

与人工神经网络(ANN)对比:

在这里插入图片描述

在神经网络架构中,相邻层通常采用全连接结构,在处理图像分类任务时会面临参数数量显著增加的问题,并未充分考虑图像的空间特性。具体而言,在此过程中各局部像素之间的联系较为紧密而相距较远的像素之间的相关性则较为有限。


每个神经元仅作用于输入数据中的一个特定区域,在此区域内对信息进行处理和传递。这一空间尺寸则定义为该神经元的局部位置域(local receptive field dimensions)。

28×28的输入图像为例:

在这里插入图片描述

基于局部感知机制进行设计的人工神经网络模型中,每个神经元仅与输入层中的特定区域相关联(相当于初始图像中的一定像素点)。为了避免在首次特征提取时丢失过多细节而影响准确性,通常不会将第一层隐含层的空间扩展设置过大,而是选择一个适中尺寸的空间窗口进行计算,以保证后续特征提取过程能够充分反映原始信息的主要特征属性特性等信息的基础上进行处理,从而实现对原始图像的有效捕捉和特征提取

我对卷积核与局部感知野之间的差异的理解如下:
我对卷积核与局部感知野之间的差异的理解如下:我对卷积核与局部感知野之间的差异的理解如下:我对卷积核与局部感知野之间的差异的理解如下:
我对卷积核与局部感知野之间的差异的理解如下:卷 convolutional kernel本质上是由包含权值构成的 局部感受域;将这一概念视为一种统称更为合适。

在这里插入图片描述

在输入神经元中被加粗显示的部分即为局部感知野范围,在这些25个输入神经元之间可以通过连接形成一个隐含层神经元。其中的25个输入神经元可以连接到一个隐含层神经元。每一条连线都代表一个权重值(如果有需求的话)还可以添加偏置项。


卷积核按照固定步长在输入图像上滑动,在此过程中不同局部区域的感知域将产生多样化的隐含层神经元;完成整个滑动过程后会生成第一层隐含层神经元。部分过程如下:(步长为1)

在这里插入图片描述

局部感知野通过线性组合(加入偏置项)计算出对应隐含层神经元的输出值;或者对上述计算所得的结果施加激活函数处理,并将其输出值作为隐含层神经元的状态。

权值共享

在上述示例中,在应用池化操作后得到一个高度压缩的空间特征向量。这实际上体现了权值共享的概念。其中使用的滤波器尺寸为5×5。值得注意的是,在每一个不同的局部感受野位置上设置独立权重时会遇到一个问题:当滤波器在不同的局部感受野的位置滑动时(不论移动到什么位置),这些权重都会被重新利用来计算新的特征响应。因此,在这种情况下,“每个像素位置上设置了独立的权重参数”,并且这些权重在整个网络训练过程中始终保持不变(即不管滤波器移动到哪个特定的位置),从而实现了权值共享机制的应用。这一机制不仅保证了模型的有效性还大大减少了所需参数的数量

以输入一个大小为28×28的图像为例,在不采用权值共享机制的前提下进行滑动并进行线性运算(此处使用滑动并进行线性运算来模拟卷积的概念),每个隐含层神经元将会拥有25个独特的权重参数,并且这些权重参数在不同神经元之间是不相同的。因此,总的参数数量等于隐含层神经元数量与局部感受野大小的乘积关系。具体计算如下:由于局部感受野大小为24×24且每个位置对应不同的权重组合,则总共有24×24×(1+4+9+16)=14,400个参数(注:这里将每个位置上的不同阶次滤波器所对应的权重单独计算)。而在实际应用中采用权值共享机制后,则只需要维护仅有的1+4+9+16=30个权重参数即可实现相似的功能效果。

此图展示了单一的卷积核进行单步卷积的情形,在图中标注了对应像素的位置(以绿色数字标记),并通过彩色线条展示了卷积核的权重分布。值得注意的是,在同一颜色线条中仅表示这些连接来自于同一个局部感知窗口,并不代表其权重值完全一致;具体而言,在第一条彩色线条及其对应的绿色标记和紫色标注均源自于同一卷积核在相同像素位置上的权重计算结果;类似地,在第二条彩色线条及其相关标注也是如此处理。

在这里插入图片描述

通过一个卷积核对图像进行卷积运算后会生成一组隐藏层神经元所构成的画面称为特征图由此可见即隐藏层神经元的数量等于特征图所包含的所有像素点总数而该数量也等同于该卷积核所包含的所有权重参数数量其中显然特征图的空间尺寸直接由局部感受野在不同区域覆盖的位置次数所决定而这一次数实际上是由两个因素共同决定:其一是卷积核滑动时跨越的空间步长其二是局部感受野的实际尺寸具体来说当滑动步长较小时局部感受野会在图像的不同位置被多次覆盖从而导致较大的特征图尺寸;反之当滑动步长较大时由于覆盖范围有限特征图的整体尺寸也会相应减小此外还需要注意到的是除了上述因素外输入图像的空间维度同样会对可选局部感受野的数量产生影响

由此可见,在使用单卷积核进行卷积的基础上,隐含层神经元的数量取决于输入图像尺寸、滤波器尺寸以及滤波器滑动步长等因素。值得注意的是,在这种设定下,输入图像与隐含层之间的可训练权重参数数量仅受滤波器尺寸这一因素的影响即相等。具体而言,在计算特征图边长时可采用以下公式:⌊图像边长-滤波器边长⌋/步长+1;由此可知,在此情况下特征图的边长为:特征图边长×特征图边长

可以理解为连线表示卷积核的相关信息,隐层神经元表示特征图的信息。

这里特别指出两点:

  1. 在讨论"隐含层神经元的数量"以及"权重参数数目"时,默认情况下仅考虑单个滤波器的情况。关于多滤波器的情形将在后续内容中进行介绍。
  2. 从输入图像与隐含层之间的连接角度来看,在理论上存在大量连接关系(即大量的权重值),然而实际上由于所有连接都采用了相同的滤波器进行操作(这里的滤波器大小已经被固定且较为有限),因此在实际操作中只需优化确定数目内的滤波器权重数量。
多卷积核

如果仅以一个卷积核进行特征提取,则每个这样的卷积核都会对应一张特定区域的特性映射;因此从单一角度只能获得原图像的一个特性指标,在分类任务中显然是不够充分的支持条件。为此需要引入多个这样的结构层以便获取足够的特性映射矩阵以实现更为精确的分类效果。(由此可见,在使用不同数量的卷积核时会生成相应数量的特性和映射结果)

对于同一层的卷积而言,在采用不同类型的卷积滤波器的情况下(虽然),这些滤波器的空间扩展程度以及滑动步幅通常会保持一致。
例如,在输入图像P上同时应用滤波器组中的两个滤波器C₁和C₂(其中),这些滤波器的空间扩展程度以及滑动步幅是相同的(即),但它们在对应位置上的参数设置并不一定完全相同。

关键问题1:隐含层神经元个数的计算

针对多卷积核而言

输入图像大小卷积核大小卷积核数量卷积核滑动步长 的影响。

假设使用了n个卷积核,则通过多核卷积操作会生成n个特征图。在这种情况下,隐层神经元的数量等于各个特征图像素数量之和。

如前所述使用的计算公式依然适用。然而该公式仅能用于确定单个卷积核所对应的隐含层神经元数量。即为多卷积核所对应的隐含层神经元总数。

还是通过上面的例子说明:

在这里插入图片描述

通过三个卷积核的卷积操作生成了三个特征图。每个特征图的大小均为24\times 24。总计产生了三个不同大小的特征图。因此隐含层中的神经元总数计算为每一层的神经元数量乘以相应位置上产生的总个数。

在这里插入图片描述

同一虚线框代表一张特征图,在CNN中每张特征图都是通过单个卷积核进行卷积操作得到的结果。在这个虚线框内的每一个神经元都与输入图像中的特定区域相连接,在反映该区域信息时主要关注的是第一层滤波器(即第一个虚线框)的作用机制。具体而言,在这些连接线上采用相同颜色标注的部分具有相同的权重值,在这种情况下我们可以说这些颜色标注的部分所对应的滤波器具有相似的空间响应特性。特别地,在这个5\times 5的小范围内(即第1到第25条连接线),每一条颜色标注的小段都具有相同的权重值;而整个5\times 5范围内的所有小段构成了第一层滤波器的空间权值分布模式。
需要注意的是,在CNN模型中每一层都会生成多张独立于其他层的不同特征图(feature maps),而这些不同特征图之间的关系并不一定一致;例如在更高层次的学习过程中可能出现某些特定区域间的相似性增强或者差异性缩小的现象。

关键问题2:隐含层参数个数的计算

针对多卷积核而言

卷积核大小卷积核数量 的影响。

明白了之前所讲述的内容。实际上计算起来并不复杂:每个卷积核的尺寸是5\times 5矩阵,并且一共有三个这样的卷积核;因此隐含层总共有多少参数呢?我们可以用乘法来计算总数:3乘以5再乘以5等于75个参数。

空间下采样

为了描述大规模图像的一个直观想法就是对不同位置上的特征进行综合统计。例如可以通过计算某个区域内某种特定特性的平均值或最大值来实现这一目标。这些摘要统计特性不仅在维度上显著低于提取的所有特征参数而且还能提高预测效果避免过拟合的问题

这种聚合操作就叫做池化(pooling,也称作空间下采样或空间亚采样)。

基于图像的空间局部特性原理进行操作可以有效降低计算复杂度并有效提取关键特征。

池化层通常是紧跟在卷积层之后的结构。

在CNN中通常采用2\times 2尺寸的滤波器,在特征图上每隔两行或两列进行一次滑动操作;其中较为常见的池化策略是最大值采样法:即通过在每个相邻的2\times 2区域中选择具有最高亮度的像素作为输出对应的像素点来实现降噪与特征提取

在这里插入图片描述

左边展示了一张特征图;针对这一张特定的特征图而言,在使用步长设置为\mathbf{L}= \mathbf{S}= \mathbf{S}= 6\times6= 的池化核之后执行池化操作后,则会得到最终输出了\mathbf{O}= \mathbf{N}= \times\mathbf{M}= 个神经元的数量。

在使用多个卷积核的情况下,在每一个原始的特征图中都需要进行池化处理,并且每个原始的特征图都会对应一张经池化处理后的特征图。

在这里插入图片描述

举个最大值采样的更为详细的例子:

在这里插入图片描述

常见的池化方法包括Average-Pool用于计算平均值;Max-Pol用于提取最大值;采用Overlap策略实现重叠采样;L²-norm池化用于均方差计算;基于LocalContrastNormalisation进行归一化处理;采用Probabilistic Pool实现随机取样;而Deformation Pool则通过形变约束提升鲁棒性

CNN中,池化核的大小一般为2×2,通常进行无重叠采样(即步长大于等于边长)。

池化层的作用:(加深理解)

  1. invariance(不变性),这种不变性包括translation(平移),rotation(旋转),scale(尺度)
  2. 保留主要的特征同时减少参数(降维,效果类似PCA)和计算量,防止过拟合,提高模型泛化能力

A:我们常说的特征尺度不变性,在图像处理领域有专门的术语来描述这一特性。池化操作的本质是图像尺寸的调整,在观察一张缩小后的狗图片时仍能准确判断其为狗这一现象充分证明了这种特性的重要性。无论缩小比例如何变化,在实际应用中我们依然能够通过分析缩略图来识别主要对象。值得注意的是,在图像压缩过程中去除的信息通常属于细节层面的内容,在保留下来的特征中包含了最能代表物体本质的关键元素。

B:为了实现降维的目的我们需要剔除那些对任务无用或重复的信息并提取出最重要的特征这也是池化操作的重要功能之一。

在标准卷积神经网络(CNN)中池化层的设计是没有激活过程的即不需要通过训练参数来进行调节其主要作用是控制网络深度并减少计算复杂度这有助于维持数值范围避免出现过大或过小值从而确保分类过程的有效性。

由此可见掌握卷积神经网络的基本原理是学习深度学习算法的核心内容而具体实现方式则具有极大的灵活性不同的设计可能会带来意想不到的效果甚至改变整个研究领域的技术方向。

卷积神经网络基本结构

标准的结构:

在这里插入图片描述

其中,C层为特征提取层,也就是卷积层;S层为特征映射层,也就是池化层。

从这一结构可以看出

卷积神经网络的参数是采用反向传播 进行训练的。

对比传统神经网络与卷积神经网络

最明显的两点区别就是:

传统神经网络的网络架构通常不超过三层;而卷积神经网络属于深度学习领域,并且其层数通常超过三层以上。

② 传统神经网络各层之间的连接均采用了全连接结构;相比之下,在卷积神经网络中存在多种形式的设计方案包括权值共享机制以及跨层反馈机制等,并且在分类任务中通常会采用全连接结构作为基础。

还有就是一些细节上的区别,只要理解这两点即可。

神经元、参数计算总结

卷积神经网络中参数个数的计算与神经元个数的计算

卷积核通道的数量通常等同于输入图像的数量,并非总是如此;例如,在LeNet5中。

假设输入图像共有t张,则每张图像尺寸为n \times n;通过应用km \times m尺寸的卷积核对其进行卷积运算,则计算输出结果矩阵。

参数个数为:(m×m×t+1)×k

神经元个数为:\{[(n-m+2padding)/stride]+1\}^2×k

神经元个数 = 通过特征图面积乘以卷积核数量确定 = 特征图计算公式2乘以卷积核数目;
特别需要注意的是,在使用特征图计算公式时所获得的结果是该特征图对应的边长,并非整个特征图的空间尺寸。

特殊地,当t=1时卷积核为单通道卷积核,此时参数个数为(m×m+1)×k

更特殊地,再当k=1时卷积核个数为1,此时参数个数为(m×m+1)

卷积神经网络典型模型

LeNet-5
在这里插入图片描述

不算输入层,LeNet-5共有7层

INPUT-输入层:

  • 输入层神经元个数为32×32,即要求输入图像大小为32×32

C1-卷积层:

  • 通过应用6个大小均为5×5且步长设置为1的空间卷积核对输入图像执行卷积操作。
  • 经过该层处理后得到特征图尺寸:每幅特征图的高度与宽度均为⌊32-5⌋/1+1=28;因此整个特征图尺寸为28×28。
  • 在神经元数量计算中发现:每个卷积核均对应于特定的一幅特征图;因此C1层中的神经元总数等于单个特征图面积(即28×28)乘以滤波器数量(即6),总计6×28×28。
  • 在参数数量计算中发现:每个滤波器包含5×5的空间权重参数以及一个偏置参数;因此六个滤波器总共拥有6×(5×5+1)=156个可学习参数。
  • 用于确定连接数量的部分指出:每幅特征图中的每个神经元都需要与输入层的所有神经元建立联系;具体而言,在输入层中有(5×5+1)个输入单元与当前神经元相连(计入偏置单元);因此总连接数目等于6 × ( (5×5+1) × 28 × 28 ) = 122,304条。

S2层-池化层:

  • C1层向S2层传递了6幅大小均为28×28的图像(特征图)。
    • 使用大小为2×2的池化核并以步长为2执行采样操作后,在S3层得到了数量为6×14×14个神经元。

考虑到激活函数提供的可学习参数情况,在每个特征图中包含一个乘数和一个偏置项,则总共有12个参数。
考虑到偏置的影响,则计算出的连接数量为6 × ((2 × 2 + 1) × (14 × 14)) = 5880

C3层-卷积层:

使用16个大小为5×5的卷积核以步长为1对输入图像进行卷积。

经过该层后特征图大小:依然采用公式计算,得到大小为10×10

计算神经元数量的方法:由于神经元的数量仅取决于卷积核的数量及其尺寸,因此我们可以相对容易地得出该层共有16×10×10个神经元。

难点:如何从6幅特征图得到16幅特征图?

在这里插入图片描述

首先要理解这一图表的核心结构。
C3层中的最初六个特征单元(编号为0至5)分别接收自S2层连续三个单元所输出的激活值。
随后另外六个单元(编号为6至11)则各自接收自S2层连续四个单元的信息。
值得注意的是第十二、十三、十四号特征单元则仅依赖于间隔分布的四个源单元。
而第十五号单元则整合了整个S2层的所有(共6个)特征单元所提供的信息

估算可训练的参数数量:已知每幅输出特征图均映射到一个卷积核。这种卷积核具有独特的结构,在这种情况下每个卷积核均为一个多通道设计(基于RGB三通道),即每一个特征图都是通过不同卷积核对输入特征图进行多通道处理而生成的。举例说明C3层输出的第0号特征图是如何从S2层的0、1、2号特征图中获得信息的,在这种设计下C3层共有16个独立的卷积核作用于各自对应的输入特征图上(如上图所示)。

在这里插入图片描述

此图表明,在深度学习模型中,C3层的第0号卷积核被设计为一个三通道的卷积结构,其依次对S2层的不同特征图进行特定的处理:具体来说,在该结构中,第一通道会对S2层的第一个特征图执行卷积操作,第二通道会对S2层的第二个特征图进行类似的处理,第三通道则会对第三个特征图进行相应的计算。完成这一系列操作后,每个通道都会生成一个响应值,将这些响应值代入激活函数计算即可得到最终的一个输出神经元数值。完成卷积操作后即可生成输出特征图,其中对应的第0号输出单元即反映了这一过程的结果。

同样的情况下,(1-5)组convolution kernels均为three-channel结构;通过类比可知,(6-11)组convolution kernels全部采用four-channel配置;而(12-14)组则对应到five-channel结构;最后一组即第15个convolution kernel被配置为six-channel设计。(值得注意的是:每个convolution kernel所包含的多个通道实际上等价于该kernel执行多组独立的三channel convolution操作;值得注意的是:此处的multi-channel convolution操作并不共享参数之间的关联性)

​ 因此,可以计算参数:(3×5×5+1)×6+(5×5×4+1)×6+(5×5×4+1)×3+(5×5×6+1)×1=1516(这里应该是仅考虑了卷积核上的权重,而不考虑激活函数中的参数)

与前一层之间的连接数量:在卷积层中,该连接的数量等于训练可用参数总数乘以生成特征图的空间尺寸。具体而言,在这种情况下,在卷积层中进行计算时会得到1516×10×10=151600的结果。

​ 推导过程如下:

在这里插入图片描述

总共有16×10×10个神经元参与计算过程,在此过程中包含有6个神经元是由六个不同的三通道卷积核进行卷积运算所得。此外还有9个神经元是由九个四通道卷积核所生成,并且还有一个由六通道卷积核产生的神经元。为了计算每类卷积核与前一层之间的连接数量关系时首先要明确各层之间的连接方式:对于使用相同参数配置的层来说其连接数量保持一致。具体而言每个黄色神经元所具有的连接数量为(5×5×3+1)条;同理绿色、橙色以及粉色神经元所具有的连接数量均与黄色层相同均为(5×5×3+1)条。因此在考虑所有因素后"三通道卷积"类别的总连接数量可表示为(5×5×3+1) × 6 × 10 × 10条类似地"四通道卷积"类别的总连接数量则为(5×5×4+1) × 9 × 10 × 10条而"六通道卷积"类别则对应于(5×5×6+1) × 1 × 10 × 10

经过分析可以看出, 所需计算的总连接数目即为此处所求: (5\times 5\times 3+1)\times 6\times 10\times 10 + (5\times 5\times 4+1)\times 9\times 10\times 2 + (5\times 5\times 6+2)\times 7\times 2。通过分离公因子2, 上述表达式可简化为(2)\times [ (8\times8)\times((4\times4+2)\times3 + (4\t�4+2)\times7 + (4^4+7)\times8 ) ], 其中括号内的内容正是我们之前计算得到的可训练参数总数。由此可得结论: 卷积层的总连接数目等于可训练参数数目乘以相应的特征图尺寸, 而池化层在此特定计算方式下并不适用, 因此其连接数目处理相对简单

与绿色神经元都对应着相同的卷积核,即权重是一样的,

如若不熟悉多核卷积的具体机制,则可参考这篇详述的文章:""

S4层-池化层:

  • C3层传递了共16组特征图(每组图像尺寸均为10x10)至S4层。
  • 采用与S2层相同的池化操作策略,在使用尺寸为2x2的池化核每隔两步取样的基础上完成了采样过程,并最终获得了数量共计16x5x5的神经元响应。

在考虑激活函数所提供的可训练参数时,在每幅特征图中对应一个权重因子和一个偏置项,则总共会有32个参数。经过计算得出池化层的总连接数为16×(2×2+1)×5×5=2000

C5层-卷积层:

该层通过采用120个5×5尺寸的滤波器来处理16幅同样大小(即5×5)的特征图,并且每一个这样的滤波器都需要与每一幅特征图执行一次完整的计算过程;这些120个滤波器被配置为十六通道的设计方案。

这也就是直观上看该层与前一层进行了全连接操作的原因。

  • 被该层处理后的特征图大小:
    \mathbb{R}^{(H,W)}= (H,W)=(W,C)
    • 被计算的数量:

      \mathbb{R}^{(H,W)}= (H,W)=(W,C)

    • 被计算的数量:

      \mathbb{R}^{(H,W)}= (H,W)=(W,C)

    • 导致了其与前一层之间的连接数量与其训练参数数量相等的结果。即其数值结果等于:

      \mathbb{R}^{(H,W)}= (H,W)=(W,C)

F6层-全连接层:

规定全连接层共84个神经元,这个无需计算,是规定。

计算参数数量相对简便,在上一层需于于上一层添加一个偏置量,则由此可知可训练参数总数为84×(120+1)=10164

连接数等于参数个数。

Output层-全连接层:

  • 手写数字识别技术的应用导致输出层具有10个神经元。
    • 本系统采用了基于径向基函数的方法进行分类处理。

进一步学习全连接层的相关知识可参考:卷积神经网络中的 “全连接层” - 博客

REF

深度学习——Caffe之经典模型详解与实战(乐毅,王斌)

Neural networks and deep learning, as written by Michael Nielsen, is a comprehensive field of study.

卷积神经网络(CNN)详解 - 知乎

计算机视觉是一种基于深度学习的技术领域,在该领域中研究的是如何让计算机系统能够像人类一样理解和处理视觉信息这一本质特征。与传统的神经网络相比,在深度学习中引入了多层感知机模型这一创新性概念以及卷积神经网络模型这一突破性发展使得计算机视觉的应用范围得到了极大的拓展和发展。传统的神经网络通常只包含单层或者最多几层的全连接层而无法有效处理图像数据这种具有空间特性的复杂信息而深度学习则通过多层非线性变换能够更好地模拟人脑的信息处理机制从而实现了对图像数据的高度抽象与理解能力的提升。这种技术进步不仅推动了计算机视觉的发展还为人工智能领域的诸多应用奠定了坚实的基础。

记-CNN中的激活函数 Leon-chan’s Blog

在CNN(Convolutional Neural Networks)结构中探讨这一技术如何提升模型性能

深度学习中的网络总结 - 博客

池化层理解 - 博客

关于LeNet-5卷积神经网络S₂层与C₃层之间参数计算的问题探讨——博客

神经网络之多维卷积的相关内容(一维卷积、二维卷积与三维卷积) - 博客

全部评论 (0)

还没有任何评论哟~