当前位置: 首页 > article >正文

深度学习基础--卷积网络

图像的三个特性指出了专门模型架构的必要性。 首先,图像是高维的,一个用于分类任务的典型图像含有 224×224 RGB 值(即,150528 个输入维度)。在全连接网络中,隐藏层的规模通常超过输入大小,因此,即便是对浅层网络而言,权重的总数也将超过 150528 的平方,达到 220 亿之多。这在所需的训练数据量、内存和计算量方面带来了显著的实际挑战。 其次,图像中相邻像素在统计学上是相关联的。但全连接网络无法识别“相邻”概念,对所有输入间的关系处理得同等无差。如果训练集和测试集图像的像素被以同样的方式随机置换,网络依旧能够被训练,且几乎不会有任何实际的区别。 第三,图像对几何变换的解释是稳定的。比如:若我们将一幅树的图像向左平移几个像素,它仍然是一幅树的图像。然而,这样的平移会改变网络接收的每一个输入。因此,全连接模型必须在每个位置单独学习代表树的像素模式:这无疑是效率低下的。 卷积层通过使用全图共享的参数,独立处理每一个局部图像区域。相比全连接层,卷积层使用更少的参数,能够利用相邻像素之间的空间关系,并且无需在每个位置重新学习像素的含义。一个主要由卷积层构成的网络称为卷积神经网络(CNN)。

1. 不变性与等变性

在之前的讨论中,我们提到图像的某些属性(比如树木的纹理)在经历变换后仍保持不变。本节将进一步明确这一概念,采用更加精确的数学表达。对于图像 x 的变换 t[x],如果函数 f[x]满足以下条件:
f [ t [ x ] ] = f [ x ] (10.1) f[t[x]]=f[x] \tag{10.1} f[t[x]]=f[x](10.1)
即函数 f[x]的输出与变换 t[x]无关,则称这个函数对该变换具有不变性。图像分类网络应该对图像的几何变换(如图 10.1a - b 所示)具有不变性,也就是说,即便图像经过平移、旋转、翻转或变形,网络 f[x]也能识别出图像中包含的对象相同。
若函数 f[x]对图像 x 在变换 t[x]下满足:
f [ t [ x ] ] = t [ f [ x ] ] (10.2) f[t[x]]=t[f[x]]\tag{10.2} f[t[x]]=t[f[x]](10.2)
这意味着,如果函数 f[x]的输出在变换 t[x]下以输入相同的方式发生变化,则称 f[x]对该变换具有等变性。针对每个像素的图像分割任务的网络对变换应当是等变的(如图 10.1c - f 所示);换句话说,如果图像被平移、旋转或翻转,网络 f[x]应返回一个经过相同变换处理的分割结果。
在这里插入图片描述

2. 适用于一维输入的卷积网络

卷积网络构建于一系列对平移显示等变性的卷积层之上。这些网络还通常融入池化
机制,以引入对平移的部分不变性。为了便于说明,我们先从较易于理解的一维(1D)
数据的卷积网络讲起。在第 10.3 节中,我们将讨论应用于图像数据的二维(2D)卷积。

2.1 一维卷积操作

卷积层利用卷积操作为基础,形成网络的一部分。在一维情况下,卷积把输入向量
x 转换成输出向量 z,其中每个输出 zi 都是周围输入的加权和。这些加权和在所有位置
上使用相同的权重,这组权重被称作卷积核或滤波器。定义输入被组合的区域大小为核
大小。对于核大小为三的情况,我们得到
z i = ω 1 x i − 1 + ω 2 x i + ω 3 x i + 1 (10.3) zi = ω_1x_{i−1} + ω_2x_i + ω_3x_{i+1}\tag{10.3} zi=ω1xi1+ω2xi+ω3xi+1(10.3)
这里的 ω = [ ω 1 , ω 2 , ω 3 ] T ω = [ω1, ω2, ω3]^T ω=[ω1,ω2,ω3]T 就是所谓的卷积核(参见图 10.2)。值得注意的是,卷积操作对
平移保持等变性。即如果输入 x 发生平移,对应的输出 z 也会以同样的方式进行平移。
在这里插入图片描述
严格而言,这其实是一种互相关操作而非真正的卷积,因为在真正的卷积中,权重相对于输入会进行翻转(即 x i − 1 x_{i−1} xi1 x i + 1 x_{i+1} xi+1的位置会互换)。尽管如此,这种(技术上不正确的)定义已成为机器学习领域的常规约定.

2.2 填充

方程 10.3 说明,通过对输入的前、当前和后位置进行加权求和,可以计算出每个输出。这引发了一个问题:对于序列的第一个和最后一个输出(分别缺少前一个和后一个输入)该如何处理?
解决此问题有两种典型方法。第一种是在输入序列的两端添加新值,之后按常规操作进行。零填充是指在输入的有效范围外假定其值为零(见图 10.2c)。其他方法包括视输入为周期性的或在边缘处进行反射处理。第二种方法是舍弃在输入范围之外的核覆盖区域的输出,这种方法的优点是不会在输入的边缘引入额外信息,但缺点是输出的尺寸会有所减小。

2.3 步长、核大小与扩张

在前面的示例中,每个输出是由最近的三个输入加权求和得到的。但实际上,这只是卷积操作大家族中的一种,通过步长、核大小和扩张率的不同进行区分。当我们在每个位置都计算输出时,这称为步长为一。但是,我们也可以将核按大于一的步长进行移动。例如,步长为二时,输出的数量大约减半(见图 10.3a–b)。
可以通过增加核大小来覆盖更大的区域(见图 10.3c)。但核大小通常保持为奇数,以便可以围绕当前位置居中。核大小的增加意味着需要更多的权重,这就引入了扩张或空洞卷积的概念,在这种卷积中,核的值之间插入了零。例如,我们可以将一个五元素的核通过将第二和第四个元素设为零,转换成三元素的扩张核。这样,我们仍然能够覆盖更大的输入区域,但仅需三个权重(见图 10.3d)。我们在权重之间插入的零的数量决定了扩张率。
在这里插入图片描述
卷积层计算输出的过程涉及将输入与卷积核进行卷积,加入偏置项β,然后将每个结果通过激活函数 a[⋅]。在核大小、步长和扩张率均为一的条件下,第 i 个隐藏单元 h i h_i hi的计算公式为:
h i = a [ β + ω 1 x i − 1 + ω 2 x i + ω 3 x i + 1 ] = a [ β + ∑ j = 1 3 ω j x i + j − 2 ] , (10.4) \begin{aligned} h_{i} &=a\left[\beta+\omega_{1} x_{i - 1}+\omega_{2} x_{i}+\omega_{3} x_{i + 1}\right]\\ &=a\left[\beta+\sum_{j = 1}^{3} \omega_{j} x_{i + j - 2}\right],\end{aligned}\tag{10.4} hi=a[β+ω1xi1+ω2xi+ω3xi+1]=a[β+j=13ωjxi+j2],(10.4)

这里,偏置β与核权重 ω 1 , ω 2 , ω 3 ω_1,ω_2,ω_3 ω1ω2ω3均为可训练参数。通过零填充,我们对于超出有效范围的输入 x 视作零处理。这实际上是全连接层的一种特例,全连接层对第 i 个隐藏单元的计算方式为: h i = a [ β i + ∑ j = 1 D ω i j x j ] (10.5) h_{i}=a\left[\beta_{i}+\sum_{j = 1}^{D} \omega_{i j} x_{j}\right]\tag {10.5} hi=a[βi+j=1Dωijxj](10.5)
对于 D 个输入 x 和 D 个隐藏单元 h,全连接层将需要 D 2 D^2 D2个权重 ω·· 和 D 个偏置β·。相比之下,卷积层仅需三个权重和一个偏置。通过将大多数权重设置为零并约束其他权重保持一致,全连接层也能够实现与卷积层相同的计算效果(参见图 10.4)。
在这里插入图片描述

2.5 Channels

单个卷积操作虽然可以提取信息,但同时也会导致信息的部分丢失,因为它通过对相邻输入的平均以及 ReLU 激活函数的非负限制进行处理。为了弥补这一缺陷,常常并行计算多个卷积,每个卷积生成一组新的隐藏变量,形成一个独特的特征图或通道。

如图 10.5a - b 所示,使用两个核大小为三,并采用零填充的卷积核进行说明。第一个卷积核通过计算最近三个像素点的加权和,并加上一个偏置后,通过激活函数生成了 h 1 h_1 h1 h 6 h_6 h6 的隐藏单元,形成了第一个特征通道。第二个卷积核则计算第一组不同的加权和,并通过另一个偏置和激活函数,生成了 h 7 h_7 h7 h 1 2 h_12 h12 的隐藏单元,这形成了第二个特征通道。

通常,输入层和隐藏层都包含多个通道,如图 10.5c 所展示。如果输入层具有 C i C_i Ci 个通道,并且采用了大小为 K 的卷积核,那么每个输出通道的隐藏单元就是通过对所有 C i C_i Ci 个通道及 K 个核位置进行加权求和计算的,这一过程使用了权重矩阵 Ω ∈ R C i × K Ω∈R^{C_i×K} ΩRCi×K和一个偏置完成。因此,如果下一层包含 C o C_o Co 个通道,那么我们需要 Ω ∈ R C i × C o × K Ω∈R^{C_i×C_o×K} ΩRCi×Co×K 的权重和 β ∈ R C 0 β∈R^{C_0} βRC0 的偏置。
在这里插入图片描述

2.6 卷积网络与感受野

深度网络包括多个全连接层序列,卷积网络则由多个卷积层序列构成。在卷积网络中,每个隐藏单元的接受字段指对该单元有贡献的原始输入区域。在核大小为三的卷积网络中,第一层隐藏单元接受字段大小为三,第二层的单元对第一层中最接近的三个位置进行加权求和,其接受字段大小扩展到五。随着层次增加,每个单元的接受字段相应扩大,使整个输入范围内的信息逐步整合。
在这里插入图片描述

2.7 示例:MNIST - 1D

对 MNIST - 1D 数据应用卷积网络。输入 x 为 40 维向量,输出 f 是 10 维向量经 softmax 层转换为类概率。采用包含三个隐藏层的网络,第一隐藏层 H1 的十五个通道采用核大小为 3、步长为 2 和“valid”填充计算得到 19 个空间位置,第二和第三隐藏层 H2 和 H3 计算方式相同,此时网络表示有四个空间位置和十五个通道,这些值被重塑为 60 维向量,通过全连接层映射到十个输出激活上。
该网络在含 4000 个样本的数据集上,采用无动量的 SGD、0.01 学习率和 100 批量大小训练 100000 步。与具有相同层数和隐藏单元数的全连接网络比较,卷积网络有 2050 个参数,全连接网络有 59065 个参数。卷积网络是全连接网络的特殊情况,后者可精确复制前者。两种模型都能完美适配训练数据,但卷积网络测试误差远低于全连接网络。这差异可能不仅是参数数量问题,卷积架构表现更好可能是因为其有更优的归纳偏差,即加入了先验知识以统一方式处理输入中的每个位置,数据是对模板随机位移生成的,这种处理方式合理。卷积网络通过位置间信息共享更精确识别各个类别,相当于一个正则化器,对全连接网络可能的大多数解决方案施加无限大惩罚。在这里插入图片描述
在这里插入图片描述

3 适用于二维输入的卷积网络

前文讨论了针对一维数据的卷积网络应用,这类网络适用于金融时间序列、音频和文本处理。然而,卷积网络更常见的应用是在二维图像数据上。此时,卷积核变为二维结构。一个 3x3 的卷积核 Ω ∈ R 3 ∗ 3 Ω ∈ R^{3*3} R33 对二维输入中的元素 xij 进行计算,生成一个隐藏单元层 h i j h_{ij} hij
在这里插入图片描述
这里 ω m n ω_{mn} ωmn 代表卷积核的各个元素,实质上是对一个 3x3 区域的输入进行加权求和。卷积核在二维输入上进行横向和纵向的平移操作(参见图 10.9),以在每个位置产生输出。
在这里插入图片描述
通常情况下,输入为 RGB 图像,该图像被处理为一个带有三个通道的二维信号(参见图10.10)。此时,一个 3x3 的卷积核拥有 3x3x3 权重,分别应用于每个 3x3 位置上的三个输入通道,生成一个高度和宽度与输入图像相同的二维输出(假设使用零填充)。为了产生多个输出通道,我们通过采用不同的卷积核权重重复此过程,并将结果合并成一个三维张量。若卷积核尺寸为 K × K,且输入通道数为 C i C_i Ci,则每个输出通道是 C i × K × K C_i ×K ×K Ci×K×K 个量的加权和加一个偏置。因此,计算 C o C_o Co 个输出通道需要 C i × C o × K × K C_i ×C_o ×K ×K Ci×Co×K×K个权重和 C o C_o Co 个偏置
在这里插入图片描述

4 下采样与上采样

图 10.7 中的网络通过采用步长为 2 的卷积操作在每层缩减表示尺寸以增大感受野。现在探讨用于减小二维输入尺寸的下采样方法和用于尺寸放大的上采样技术,后者在输出为图像时尤其有用,还将讨论在网络层间改变通道数的方法,这在网络两个分支合并时很重要。

4.1 下采样

缩减二维数据的表示有三种主流方法,通常是同时将两个维度都缩小一半。首先,可以选择每隔一个位置进行采样,当步长设置为 2 时,此方法会与卷积操作同时生效。第二种方法是最大池化,选取 2×2 区域内的最大值,能在一定程度上对平移变化保持不变,即使输入图像移动一个像素,许多最大值仍保持不变。最后一种是平均池化,取区域内值的平均。这些方法都是独立对每个通道进行下采样,输出的宽度和高度减半,但通道数不变。
在这里插入图片描述

4.2 上采样

提升网络层分辨率最简单的方法是将每个空间位置的所有通道内容复制四次(参见图 10.12a)。第二种方法是最大反池化,适用于之前通过最大池化进行下采样的场景,我们将值还原到其原始位置(参见图 10.12b)。第三种方法通过双线性插值在已有样本点之间插值填充缺失值(参见图 10.12c)。第四种方法可视为步长为 2 的下采样的逆过程。在该方法中,输出是输入的一半,并且对于 3x3 的核,每个输出是三个最近输入的加权和(参见图 10.13a)。而在转置卷积中,这一过程被反转(参见图 10.13c),输出数量是输入的两倍,且每个输入对三个输出有贡献。观察这种上采样机制相关的权重矩阵(参见图 10.13d),我们发现它实际上是下采样机制权重矩阵的转置(参见图 10.13b)
在这里插入图片描述

4.3 改变通道数

有时候,我们需要在两个隐藏层之间改变通道数,而不进一步进行空间池化。这通常是为了能够将该层的数据与另一并行处理的数据结合起来(详见第 11 章)。为此,我们采用核尺寸为 1 的卷积操作。输出层的每个元素通过对同一位置的所有通道进行加权求和来计算(参见图 10.14)。通过不同的权重重复此过程,我们可以生成所需数量的输出通道。相关的卷积权重尺寸为 1 × 1 × Ci × Co,因此称为 1 × 1 卷积。结合偏置和激活函数后,这等同于在每个位置的通道上执行全连接网络。

5.总结

在卷积层,每个隐藏单元的计算基于对邻近输入的加权求和、加偏置以及应用激活函数。由于每个空间位置的权重和偏置保持不变,因此相比全连接网络,卷积网络的参数量大大减少,且不随输入图像的大小而增加。为保证信息完整,采用不同的权重和偏置重复此操作,在每个空间位置生成多通道。
典型卷积网络结构包括卷积层与二倍因子降采样层的交替,随网络深入,空间维度通常以二的倍数减小,通道数以二的倍数增加。网络末端通常包含一个或多个全连接层,整合整个输入的信息以产出期望输出。若输出为图像,一个对称的“解码器”则将其上采样至原始尺寸。
卷积层的平移等变性引入了有效的归纳偏好,这在图像相关任务中相对全连接网络能够提升性能。我们探讨了图像分类、物体检测和语义分割网络,发现随着网络加深,图像分类性能提升。然而,后续实验表明,无限加深网络深度并不总是有益的;超过某个深度后,网络训练变得困难。这促成了残差连接的提出,将在下一章详细讨论。


http://www.kler.cn/a/305780.html

相关文章:

  • Vue中优雅的使用Echarts的三种方式
  • TVM计算图分割--分割方式
  • sql server启用远程连接与修改默认端口
  • 头歌网络安全(11.12)
  • Kubernetes的基本构建块和最小可调度单元pod-0
  • 【Linux】常用命令(2.6万字汇总)
  • Vue安装及环境配置【图解版】
  • leetcode 2576.求出最多标记下标
  • C# 开发教程-中级教程
  • IEEE 754浮点数表示
  • 18062 二维数组每行中的最大值
  • k8s环境配置
  • 【Unity】简易而又实用的抽卡算法
  • 机器学习特征构建与特征筛选
  • NC字典树的实现
  • 深入理解 Redis 的文件事件处理器
  • 暗界正方形之谜
  • 【YashanDB知识库】单机升级典型问题及应急措施
  • Spring3-IoC1-IoC容器、基于xml管理bean
  • 【SSRF漏洞】——http协议常见绕过
  • 【React】React18.2.0核心源码解读
  • 乌俄冲突下AI和计算机的使用
  • Spring Boot:现代化Java应用开发的艺术
  • 远程访问电脑共享文件
  • 【Arduino】BNO085 姿态的 3D模型 展示方法(映射到 Unity)
  • Mybatis通用接口-基于Provider