6-1 从全连接层到卷积

我们之前讨论的多层感知机十分适合处理表格数据,其中行对应样本,列对应特征。 对于表格数据,我们寻找的模式可能涉及特征之间的交互,但是我们不能预先假设任何与特征交互相关的先验结构。 此时,多层感知机可能是最好的选择,然而对于高维感知数据,这种缺少结构的网络可能会变得不实用。

例如,在之前猫狗分类的例子中:假设我们有一个足够充分的照片数据集,数据集中是拥有标注的照片,每张照片具有百万级像素,这意味着网络的每次输入都有一百万个维度。 即使将隐藏层维度降低到1000,这个全连接层也将有 1 0 6 × 1 0 3 = 1 0 9 10^{6}\times 10^{3}=10^{9} 106×103=109个参数。 想要训练这个模型将不可实现,因为需要有大量的GPU、分布式优化训练的经验和超乎常人的耐心。


(在这个例子中,假设我们有一个标记好的图像数据集,其中每张图像具有百万级别的像素。这意味着每次输入到网络中的数据维度是一百万维,即每张图像由一百万个像素值组成

文中提到的"每次输入都有一百万个维度"指的是每张图片被视为一个具有一百万个数值的向量 ,每个数值代表一个像素点的信息。在深度学习中,每一个输入维度通常对应于一个神经网络的输入节点

接着,文中提到假设将隐藏层的维度降低到1000,这里的"隐藏层维度 "指的是这一层中包含的神经元(或节点)数量 。简单来说,这就是这层可以学习到的不同特征的数量

最后,"这个全连接层也将有 1 0 6 × 1 0 3 = 1 0 9 10^{6}\times 10^{3}=10^{9} 106×103=109个参数"这句话描述的是在一个全连接的神经网络层中,输入层和隐藏层之间的参数数量。全连接层意味着每个输入节点都与下一层的每个节点相连。这里的参数通常是指权重,每个连接都有一个权重。所以,如果输入层有一百万个节点,隐藏层有1000个节点,那么总的连接数(即权重数)就是一百万乘以一千,即一千亿个权重

这一千亿个权重(参数)的数量非常庞大,这也说明了为什么在实际应用中,处理这样大规模的数据和网络结构需要极大的计算资源和优化方法。)


有些读者可能会反对这个观点,认为要求百万像素的分辨率可能不是必要的。 然而,即使分辨率减小为十万像素,使用1000个隐藏单元的隐藏层也可能不足以学习到良好的图像特征,在真实的系统中我们仍然需要数十亿个参数。 此外,拟合如此多的参数还需要收集大量的数据。 然而,如今人类和机器都能很好地区分猫和狗:这是因为图像中本就拥有丰富的结构,而这些结构可以被人类和机器学习模型使用。 卷积神经网络 (convolutional neural networks,CNN )是机器学习利用自然图像中一些已知结构的创造性方法。

不变性

想象一下,假设我们想从一张图片中找到某个物体。 合理的假设是:无论哪种方法找到这个物体,都应该和物体的位置无关。 理想情况下,我们的系统应该能够利用常识:猪通常不在天上飞,飞机通常不在水里游泳。 但是,如果一只猪出现在图片顶部,我们还是应该认出它。 我们可以从儿童游戏"沃尔多在哪里"( 图6.1.1)中得到灵感: 在这个游戏中包含了许多充斥着活动的混乱场景,而沃尔多通常潜伏在一些不太可能的位置,读者的目标就是找出他。 尽管沃尔多的装扮很有特点,但是在眼花缭乱的场景中找到他也如大海捞针。 然而沃尔多的样子并不取决于他潜藏的地方,因此我们可以使用一个"沃尔多检测器"扫描图像。 该检测器将图像分割成多个区域,并为每个区域包含沃尔多的可能性打分。 卷积神经网络正是将空间不变性(spatial invariance)的这一概念系统化,从而基于这个模型使用较少的参数来学习有用的表示

现在,我们将上述想法总结一下,从而帮助我们设计适合于计算机视觉的神经网络架构。

  1. 平移不变性(translation invariance) :不管检测对象出现在图像中的哪个位置,神经网络的前面几层应该对相同的图像区域具有相似的反应,即为"平移不变性"。

平移不变性意味着当一个物体在图像中移动时,无论它出现在图像的哪个位置,神经网络对该物体的识别应保持不变。这是通过神经网络的设计实现的,特别是在卷积神经网络中,通过使用卷积层来实现。卷积层通过在整个图像上滑动同一卷积核(或滤波器),提取图像的特征。由于同一卷积核被用于图像的每个部分,因此无论物体在图像中的哪个位置,相同的特征都会被相同方式处理,从而实现平移不变性。这是处理图像时非常重要的属性,因为它允许模型以更泛化的方式识别物体,不受其在图像中位置的影响。

  1. 局部性(locality) :神经网络的前面几层应该只探索输入图像中的局部区域,而不过度在意图像中相隔较远区域的关系,这就是"局部性"原则。最终,可以聚合这些局部特征,以在整个图像级别进行预测。

局部性原则指的是神经网络在处理图像时应该首先关注图像的小部分或局部区域,而不是立即尝试理解图像中远距离区域间的关系。这也是通过卷积层实现的,其中卷积核只覆盖图像的一小块区域。这样,网络可以先识别小范围内的简单特征(如边缘和角点),然后逐层组合这些局部特征,逐渐构建出更复杂的表示,最终能够识别整个图像中的复杂对象。通过这种方式,网络可以有效地捕捉到重要的局部模式,而不会被图像中不相关的信息干扰。


多层感知机的限制

(下面这节描述的是如何将一个多层感知机(MLP)用于处理具有空间结构的二维图像数据,而非仅处理一维的数值数据

下面我将逐步解释这个过程:

  1. 二维图像作为输入 输入数据 X X X是一个二维图像 ,这意味着它具有空间维度(例如,宽度和高度)。在这里, X X X可以表示为一个矩阵,或在编程中用二维张量来处理。
  2. 隐藏表示 隐藏表示 H H H也是一个矩阵或二维张量 ,并且具有与输入图像 X X X相同的形状。这表示 H H H在每个位置 ( i , j ) (i,j) (i,j)都有一个与输入图像中对应位置相关的隐藏值。
  3. 空间结构的重要性 文章提到输入和隐藏表示都"拥有空间结构"。这意味着图像的每个像素位置不仅仅是独立的数据点,而是与其周围的像素在空间上是相关的。这种空间关系在处理图像时非常重要,因为图像中物体和特征的识别依赖于像素间的这种空间关系。
  4. 权重的变化 在传统的多层感知机中,每个输入节点与每个输出节点之间通常通过一个权重矩阵连接。这种结构适合处理一维数据,但对于保持图像的空间结构则不够有效。因此,文中提到需要使用一个四阶权重张量 W W W替换传统的权重矩阵。
  5. 四阶权重张量 四阶权重张量 W W W可以理解为一个高维数组 ,其中包含了更多的维度来适应图像处理的需要 。在图像处理中,每个"隐藏神经元"(即 H H H中的每个元素)需要接收到来自 X X X中每个像素的信息。为了实现这一点,权重张量 W W W不仅记录了从输入到输出的连接强度,而且还能够处理输入数据的空间关系。这使得模型可以更有效地捕捉图像中的空间和视觉模式。

总的来说,这段话描述的是如何通过扩展多层感知机的结构,使用更复杂的权重形式来适应对具有空间结构的数据(如图像)的处理,使每个输出节点能够有效地接收并处理来自每个输入节点的信息,同时保持输入数据的空间特性。)

首先,多层感知机的输入是二维图像 X X X,其隐藏表示 H H H在数学上是一个矩阵,在代码中表示为二维张量。 其中 X X X和 H H H具有相同的形状。 为了方便理解,我们可以认为,无论是输入还是隐藏表示都拥有空间结构

使用 [ X ] i , j [X]{i,j} [X]i,j和 [ H ] i , j [H]{i,j} [H]i,j分别表示输入图像隐藏表示 中位置 ( i , j ) (i,j) (i,j)处的像素。 为了使每个隐藏神经元都能接收到每个输入像素的信息,我们将参数从权重矩阵(如同我们先前在多层感知机中所做的那样)替换为四阶权重张量 W W W( W W W是全连接层的权重)。假设 U U U包含偏置参数,我们可以将全连接层形式化地表示为:

(以前是变成一维向量,现在是二维,所以现在是遍历 k k k和 l l l这两个维度来求和。)

其中,从 W W W到 V V V的转换只是形式上的转换,因为在这两个四阶张量的元素之间存在一一对应的关系。我们只需重新索引下标 ( k , l ) (k,l) (k,l),使 k = i + a k=i+a k=i+a、 l = j + b l=j+b l=j+b,由此可得 [ V ] i , j , a , b = [ W ] i , j , i + a , j + b [V]{i,j,a,b}=[W]{i,j,i+a,j+b} [V]i,j,a,b=[W]i,j,i+a,j+b。索引 a a a和 b b b通过在正偏移和负偏移之间移动覆盖了整个图像。对于隐藏表示中任意给定位置 ( i , j ) (i,j) (i,j)处的像素值 [ H ] i , j [H]{i,j} [H]i,j,可以通过在 x x x中以 ( i , j ) (i,j) (i,j)为中心对像素进行加权求和得到 ,加权使用的权重为 [ V ] i , j , a , b [V]{i,j,a,b} [V]i,j,a,b。

上面描述的是如何使用一个二维卷积核来在多层感知机中处理图像数据,这里的重点是用来计算隐藏层 H H H的公式。

公式的解释如下:

  • [ H ] i , j [H]_{i,j} [H]i,j 表示隐藏层在位置 ( i , j ) (i,j) (i,j)的值。
  • [ U ] i , j [U]_{i,j} [U]i,j 是一个偏置项,为每个位置 ( i , j ) (i,j) (i,j)提供一个基础值。
  • W i , j , k , l W_{i,j,k,l} Wi,j,k,l 是一个四阶权重张量,表示输入像素 ( k , l ) (k,l) (k,l)对于隐藏层位置 ( i , j ) (i,j) (i,j)的影响权重。
  • [ X ] k , l [X]_{k,l} [X]k,l 是输入图像在位置 ( k , l ) (k,l) (k,l)的像素值。

隐藏层的每个位置 ( i , j ) (i,j) (i,j)的值是通过一个加权和计算的,加权和中包括了所有输入像素的影响,具体公式为:

这里的求和操作遍历所有的输入像素 , [ W ] i , j , k , l × [ X ] k , l [W]{i,j,k,l} \times [X]{k,l} [W]i,j,k,l×[X]k,l

表示输入像素 ( k , l ) (k,l) (k,l)对隐藏层位置 ( i , j ) (i,j) (i,j)的贡献。

上面还提到了一种简化形式的权重表示,用 V i , j , a , b V_{i,j,a,b} Vi,j,a,b替换 W i , j , k , l W_{i,j,k,l} Wi,j,k,l,并且假设:

这里的 a a a和 b b b表示相对于中心位置 ( i , j ) (i,j) (i,j)的偏移量。因此,简化后的卷积公式变为:

这实际上是一个典型的卷积操作 ,其中 V i , j , a , b V_{i,j,a,b} Vi,j,a,b是卷积核,而 [ X ] i + a , j + b [X]_{i+a,j+b} [X]i+a,j+b是输入图像在卷积核覆盖的区域内的像素。这种表示方式在实际的图像处理和神经网络中被广泛使用,因为它可以有效地利用图像的局部空间关系,同时减少模型中的参数数量。


平移不变性

不管探测的 ( i , j ) (i,j) (i,j)移动到哪里, [ V ] a , b [V]_{a,b} [V]a,b是不变的。

这段内容进一步阐释了之前提到的卷积操作,特别是引入了平移不变性的概念,并且讨论了权重共享对于减少模型复杂度的重要性。

  • 平移不变性 平移不变性意味着当输入图像中的特征在空间上发生平移时,网络的响应方式应该是一致的。也就是说,无论一个特征出现在输入图像的哪个位置,卷积网络都应该能够以相同的方式识别它。这种属性在处理图像和其他形式的空间数据时非常重要,因为它允许模型在不同位置检测到相同的特征

  • 权重共享 在卷积神经网络中,同一个卷积核(包含权重 V a , b V_{a,b} Va,b)在整个输入图像上滑动,用于提取特征。这意味着相同的权重被用来处理输入数据的不同部分,这样做极大地减少了模型的参数数量,因为不需要为每个像素或区域学习一个独立的权重集。权重共享也有助于提高模型的训练效率和泛化能力。

其实这里也可以叫做二维的交叉相关。即输出的像素是等于输入的对应像素以它为中心作偏移,和模式 [ V ] a , b [V]_{a,b} [V]a,b作内积。

二维卷积就是全连接,或者说是一个矩阵乘法,但是我的权重的一些东西是重复的,不是每一个元素都可以自由变换。我们也知道说,当我们把一个模型的取值范围做了限制的话,我们就把模型的复杂度降低了,也就是说,我不要存那么多元素了。

局部性


a a a和 b b b都只从 − Δ -\Delta −Δ到 Δ \Delta Δ之间变换。

简而言之, (6.1.3)是一个卷积层(convolutional layer) ,而卷积神经网络是包含卷积层的一类特殊的神经网络 。 在深度学习研究社区中, V V V被称为卷积核(convolution kernel)或者滤波器(filter) ,亦或简单地称之为该卷积层的权重,通常该权重是可学习的参数。 当图像处理的局部区域很小时,卷积神经网络与多层感知机的训练差异可能是巨大的:以前,多层感知机可能需要数十亿个参数来表示网络中的一层,而现在卷积神经网络通常只需要几百个参数,而且不需要改变输入或隐藏表示的维数。 参数大幅减少的代价是,我们的特征现在是平移不变的,并且当确定每个隐藏活性值时,每一层只包含局部的信息。 以上所有的权重学习都将依赖于归纳偏置。当这种偏置与现实相符时,我们就能得到样本有效的模型,并且这些模型能很好地泛化到未知数据中。 但如果这偏置与现实不符时,比如当图像不满足平移不变时,我们的模型可能难以拟合我们的训练数据。

卷积是一个特殊的全连接层。

卷积




"沃尔多在哪里"回顾

回到上面的"沃尔多在哪里"游戏,让我们看看它到底是什么样子。卷积层根据滤波器 V V V选取给定大小的窗口,并加权处理图片,如图6.1.2中所示。我们的目标是学习一个模型 ,以便探测出在"沃尔多"最可能出现的地方

通道

在多通道输入与多通道输出的卷积中,每个输入通道都通过一个卷积核(或多个)进行处理,然后所有的结果会被整合到输出通道中。这种结构允许网络学习从不同的特征组合中提取信息

在这种设置中,每个输出通道的值是通过对所有输入通道进行卷积运算并累加得到的。这意味着,每个输出通道可以看作是从所有输入通道中提取特征的一个"过滤器"。公式中的卷积核尺寸、步长(通常由卷积操作外部定义)和填充方式都会影响输出特征图的维度。

这种多通道到多通道的卷积方式在实际应用中极其重要,因为它允许网络捕捉跨通道的复杂模式,这对于图像处理(例如,颜色和纹理信息的整合)、视频处理和其他多维信号处理任务至关重要。

通过这样的结构,卷积神经网络能够构建从简单到复杂的信息层次,逐步抽象输入数据中的高级特征,这对于深度学习模型的成功执行各种任务(如图像识别、语音识别和自然语言处理)是基础。

小结

  • 图像的平移不变性使我们以相同的方式处理局部图像,而不在乎它的位置。

  • 局部性意味着计算相应的隐藏表示只需一小部分局部图像像素。

  • 在图像处理中,卷积层通常比全连接层需要更少的参数,但依旧获得高效用的模型

  • 卷积神经网络(CNN)是一类特殊的神经网络,它可以包含多个卷积层

  • 多个输入和输出通道使模型在每个空间位置可以获取图像的多方面特征

相关推荐
糖豆豆今天也要努力鸭31 分钟前
torch.__version__的torch版本和conda list的torch版本不一致
linux·pytorch·python·深度学习·conda·torch
何大春1 小时前
【弱监督语义分割】Self-supervised Image-specific Prototype Exploration for WSSS 论文阅读
论文阅读·人工智能·python·深度学习·论文笔记·原型模式
Suyuoa1 小时前
附录2-pytorch yolov5目标检测
python·深度学习·yolo
余生H2 小时前
transformer.js(三):底层架构及性能优化指南
javascript·深度学习·架构·transformer
罗小罗同学3 小时前
医工交叉入门书籍分享:Transformer模型在机器学习领域的应用|个人观点·24-11-22
深度学习·机器学习·transformer
孤独且没人爱的纸鹤3 小时前
【深度学习】:从人工神经网络的基础原理到循环神经网络的先进技术,跨越智能算法的关键发展阶段及其未来趋势,探索技术进步与应用挑战
人工智能·python·深度学习·机器学习·ai
阿_旭3 小时前
TensorFlow构建CNN卷积神经网络模型的基本步骤:数据处理、模型构建、模型训练
人工智能·深度学习·cnn·tensorflow
羊小猪~~3 小时前
tensorflow案例7--数据增强与测试集, 训练集, 验证集的构建
人工智能·python·深度学习·机器学习·cnn·tensorflow·neo4j
极客代码3 小时前
【Python TensorFlow】进阶指南(续篇三)
开发语言·人工智能·python·深度学习·tensorflow
Seeklike3 小时前
11.22 深度学习-pytorch自动微分
人工智能·pytorch·深度学习