卷积神经网络架构:你需要知道什么?

已发表: 2020-12-01

卷积神经网络通常被称为 ConvNets 或 CNN 等名称,是最常用的神经网络架构之一。 CNN 通常用于基于图像的数据。 图像识别、图像分类、对象检测等是 CNN 广泛使用的一些领域。

专门针对图像数据的应用 AI 的分支被称为计算机视觉。 自从引入 CNN 以来,计算机视觉有了巨大的发展。 CNN 的第一部分使用卷积和激活函数从图像中提取特征进行归一化。

最后一个块将这些功能与神经网络一起使用来解决任何特定问题,例如,分类问题将具有“n”个输出神经元,具体取决于分类存在的类数。 让我们尝试了解 CNN 的架构和工作原理。

目录

卷积

卷积是一种图像处理技术,它使用加权核(方阵)在图像上旋转,将核元素与图像像素相乘和相加。 该方法可以通过下图轻松可视化。

图片提供: Peltarion

卷积滤波器和输出

正如我们所看到的,当我们使用 3×3 卷积 kennel 时,对图像的 3×3 部分进行运算,在乘法和随后的加法之后,一个值作为输出。 所以在一个 4×4 的图像上,我们将得到一个 2×2 的卷积矩阵输出,因为内核大小是 3×3。

卷积输出可能会因用于卷积的内核大小而异。 这是 CNN 的典型起始层。 卷积输出是从图像中找到的特征。 这与所使用的内核大小直接相关。

如果图像的特征是即使图像中的微小差异也会使其落入不同的输出类别,则使用较小的内核大小进行特征提取。 否则可以使用更大的内核。 内核中使用的值通常称为卷积权重。 这些被初始化,然后在使用梯度下降的反向传播时更新。

阅读:面向初学者的 TensorFlow 对象检测教程

汇集

池化层位于卷积层之间。 它负责对卷积层发送的特征图进行池化操作。 池化操作减少了特征的空间大小,也称为降维。

池化的主要原因之一是减少处理数据所需的计算能力。 虽然,池化层减小了图像的大小,但它保留了它们的重要特征。 工作类似于 CNN 过滤器。 内核遍历特征并聚合过滤器覆盖的值。

从图像中可以清楚地看到可以有各种聚合函数。 平均池化和最大池化是最常用的池化操作。 池化减少了特征的维度,但保持了特征的完整性。

通过减少参数的数量,网络中的计算也减少了。 这减少了过度学习并提高了网络的效率。 最大池最常用,因为与卷积映射相比,在池化映射中发现最大值的准确度较低。

这对很多情况都有好处。假设如果要识别一只狗,它的耳朵不需要尽可能精确地定位,知道它们几乎位于头部附近就足够了。

Max Pooling 还可以用作噪声抑制器。 它完全丢弃了嘈杂的激活,并在降维的同时执行去噪。 另一方面,平均池化只是简单地执行降维作为一种噪声抑制机制。 因此,我们可以说 Max Pooling 的性能比 Average Pooling 好很多。

激活函数

ReLU(Rectified Linear Units)是最常用的激活函数层。

相同的方程是:ReLU(x)=max(0,x)

图形表示如下:

资料来源:

ReLU 表示

ReLU 将负值映射为零并保持正值不变。

全连接层

全连接层通常是任何神经网络的最后一层。 该层接收输入向量并产生一个新的输出层。 该输出层有 n 个神经元,其中 n 是图像分类中的类数。 向量的每个元素都提供了图像属于某个类别的概率。 因此,输出层中所有向量的总和始终为 1。

输出层中发生的计算如下:

  1. 元素乘以神经元的权重
  2. 在层上应用激活函数(n=2 时为逻辑,n>2 时为 sigmoid)

输出现在将是图像属于某个类别的概率。 在训练期间通过梯度的反向传播来学习层的权重。

另请阅读:神经网络模型介绍

辍学层

Dropout 层用作正则化层,可减少过度拟合并改善泛化误差。 使用神经网络时,过度拟合是一个主要问题。 顾名思义,Dropout 在使用它的层中丢弃了一定百分比的神经元。

dropout 采用的正则化方法是近似训练大量具有不同并行架构的神经网络。 在训练期间,一些层输出被随机丢弃或忽略。 这使得该层看起来像一个具有不同数量节点的层,并且一些神经元被关闭。 因此,连接性也会根据前一层而改变。

超参数

有一些参数可以根据所处理的图像数据进行控制。 CNN 的每一层都可以参数化,无论是卷积层还是池化层。 参数影响作为该特定层输出的特征图的大小。

每个图像(输入)或特征图(层的后续输出)的尺寸为:W x H x D 其中 W x H 是宽 x 高,即图或图像的大小。 D 表示基于颜色段的尺寸。 单色图像的 D=1 和 RGB 即彩色图像的 D=3。

卷积层超参数

  1. 过滤器数量 (K)
  2. 尺寸 FxFxD 的过滤器大小 (F)
  3. 步幅:内核在图像上移动所采取的步数。 S=1 表示内核将以 1 个像素为步长移动。
  4. 零填充:对尺寸较小的图像进行零填充,因为卷积和最大池层在每次迭代时都会减小特征图的大小。

资料来源: XRDS

零填充增加了输入图像的大小

对于大小为 W×H×D 的每个输入图像,池化层返回一个维度为 Wc×Hc×Dc 的矩阵。 在哪里

Wc= (W-F+2P)/S+1

Hc= (H-F+2P)/S+1

直流= K

求解方程以找到 Padding(P)=F-1/2 和 Stride(S)=1 的值

一般来说,我们然后选择 F=3,P=1,S=1 或 F=5,P=2,S=1

池化层超参数

  1. 单元格大小 (F):将在其中划分地图以进行池化的方形单元格大小。 FxF
  2. 步长 (S):单元格被 S 个像素分隔

对于每个大小为 W×H×D 的输入图像,池化层返回一个维度为 Wp×Hp×Dp 的矩阵,其中

Wp= (WF)/S+1

Hp= (HF)/S+1

DP=D

对于池化层,广泛选择 F=2 和 S=2。 75% 的输入像素被消除。 也可以选择 F=3 和 S=2。 较大的单元格大小将导致大量信息丢失,因此仅适用于非常大尺寸的输入图像。

通用超参数

  • 学习率:可以选择 SGD、AdaGrad 或 RMSProp 等优化器来优化学习率。
  • 时期:应该增加时期的数量,直到出现训练和验证错误的差距
  • 批量大小:可以选择 16 到 128。 取决于一个人拥有的处理能力。
  • 激活函数:将非线性引入模型。 ReLu 通常用于 Conv Nets。 其他选项是:sigmoid、tanh。
  • Dropout:0.1 的 dropout 值会丢弃 10% 的神经元。 0.5 是一个很好的起点。 0.25 是一个不错的最终选择。
  • 权重初始化:可以初始化小的随机权重以转移死亡神经元的可能性。 但对于梯度下降来说不算太小。 适合均匀分布。
  • 隐藏层:可以增加隐藏层,直到测试误差减小。 增加隐藏层将增加计算量并需要正则化。

结论

我们拥有从头开始创建 CNN 的基本信息。 虽然它是一篇综合性文章,涵盖了基础层面的所有内容,但可以深入研究每个参数或层。 每个概念背后的数学也是可以理解的,以改进模型

如果您有兴趣了解有关机器学习的更多信息,请查看 IIIT-B 和 upGrad 的机器学习和人工智能 PG 文凭,该文凭专为工作专业人士设计,提供 450 多个小时的严格培训、30 多个案例研究和作业、IIIT- B 校友身份、5 个以上实用的实践顶点项目和顶级公司的工作协助。

引领人工智能驱动的技术革命

机器学习和人工智能的 PG 文凭
了解更多