零基础-动手学深度学习-6.1 从全连接层到卷积

 基于卷积神经网络架构的模型在计算机视觉领域中已经占主导地位,在本章的开始,我们将介绍构成所有卷积网络主干的基本元素。 这包括卷积层本身、填充(padding)和步幅(stride)的基本细节、用于在相邻区域汇聚信息的汇聚层(pooling)、在每一层中多通道(channel)的使用,以及有关现代卷积网络架构的仔细讨论。

先前讨论的MLP适合处理表格数据,行列对应的样本和特征,然而对于高维感知的数据并不适用。

尤其是想一下要是百万级的像素图片输入,直接用全连接层哪怕是降维到1000(这样的话效果还不是很好),需要的参数也是上亿级别的,拟合这样的参数还需要收集大量的数据,因此我们需要卷积。

6.1.1. 不变性

假设我们想从一张图片中找到某个物体。 合理的假设是:无论哪种方法找到这个物体,都应该和物体的位置无关,因此我们可以使用一个“沃尔多检测器”扫描图像。 该检测器将图像分割成多个区域,并为每个区域包含沃尔多的可能性打分。 卷积神经网络正是将空间不变性的这一概念系统化,从而基于这个模型使用较少的参数来学习有用的表示。

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

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

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

让我们看看这些原则是如何转化为数学表示的。

6.1.2. 多层感知机的限制 

 

这里好像是有点难以理解?可以看下面的图示,针对于原本只有长度维度的向量输入的全连接层的变换如下图左边所示,输入i变化成输出j维度,其中权重为wij,然而对于有高度宽度的的输入向量xij,我们自然要用四阶的权重张量来连接,可以得到第一个式子,就是x遍布kl得到ij的全连接,这个时候为了方便观察,我们修改权重索引,让k=i+a,l=j+b,这样我们就可以发现通过索引ab可以在基于ij的正偏移和负偏移下去覆盖这整个图像,对于隐藏表示输出Hij我们可以理解为对输入Xij为中心进行v的加权求和得到的结果。

 下一步就是把平移不变性和局部性运用进去:

1.平移不变性需要X无论怎么偏移都可以识别出来,因此即是输出和权重不能依赖于ij的值,那么这个时候卷积的概念已经出来了,我们将使用权重Vab对位置ij附近的像素i+a,j+b进行加权以得到Hij输出,这个时候我们发现权重也变小了,一石二鸟。

2.局部性,太远的像素之间关联不要,那么只要限制ab取值就行。

上面的说完书上还讲了一些卷积的基本定义,很简单就不说了,下面还有个通道:

 然而,仍有许多问题亟待解决。 例如,图像中是否到处都有存在沃尔多的可能?如何有效地计算输出层?如何选择适当的激活函数?为了训练有效的网络,如何做出合理的网络设计选择?我们将在本章的其它部分讨论这些问题。

### 卷积神经网络(CNN) 卷积神经网络(Convolutional Neural Network, CNN)是一种专门用于处理具有网格结构数据的深度学习模型,广泛应用于图像识别、视频分析和自然语言处理等领域。CNN 的核心思想是通过卷积操作提取输入数据的局部特征,并通过堆叠多个卷积层和池化层来构建深层次的特征表示。 #### 6.1全连接层卷积 传统的全连接神经网络在处理图像时会将输入图像展平为一维向量,导致参数数量巨大且难以捕捉局部特征。卷积层通过局部感受野和权值共享机制,显著减少了参数数量并提升了模型的泛化能力。 ##### 6.1.1 不变性 卷积操作的一个重要特性是其对输入数据的平移不变性(Translation Invariance)。通过卷积核在输入图像上滑动,模型能够识别出不同位置的相同特征。此外,池化操作(如最大池化)进一步增强了模型对输入数据的尺度和位置变化的鲁棒性 [^1]。 #### 6.2 卷积卷积层是 CNN 的核心组成部分,主要由多个卷积核(滤波器)组成。每个卷积核在输入数据上进行滑动窗口操作,计算局部区域的加权和,并通过激活函数进行非线性变换。 ##### 6.2.1 卷积操作 卷积操作可以表示为: ```python import torch import torch.nn as nn # 定义一个简单的卷积层 conv_layer = nn.Conv2d(in_channels=3, out_channels=16, kernel_size=3, stride=1, padding=1) # 输入张量 (batch_size, channels, height, width) input_tensor = torch.randn(1, 3, 32, 32) # 通过卷积层 output_tensor = conv_layer(input_tensor) print(output_tensor.shape) # 输出形状 (1, 16, 32, 32) ``` ##### 6.2.2 激活函数 常用的激活函数包括 ReLU、Sigmoid 和 Tanh。ReLU 是最常用的激活函数之一,能够有效缓解梯度消失问题。 ```python import torch.nn.functional as F # 应用 ReLU 激活函数 activated_tensor = F.relu(output_tensor) ``` #### 6.3 池化层 池化层用于降低特征图的空间维度,减少计算量并增强模型的鲁棒性。常见的池化操作包括最大池化和平均池化。 ```python # 定义一个最大池化层 pool_layer = nn.MaxPool2d(kernel_size=2, stride=2) # 通过池化层 pooled_tensor = pool_layer(activated_tensor) print(pooled_tensor.shape) # 输出形状 (1, 16, 16, 16) ``` #### 6.4 经典卷积神经网络结构 ##### 6.4.1 LeNet LeNet 是最早的卷积神经网络之一,由 Yann LeCun 等人提出,主要用于手写数字识别。LeNet 包含两个卷积层和两个全连接层。 ##### 6.4.2 AlexNet AlexNet 是在 ImageNet 竞赛中取得突破性成绩的卷积神经网络,包含五个卷积层和三个全连接层。AlexNet 引入了 ReLU 激活函数和 Dropout 技术,显著提升了模型性能。 ##### 6.4.3 VGGNet VGGNet 使用多个 3x3 的小卷积核代替大卷积核,构建了更深的网络结构。VGGNet 的特点是结构简单且易于迁移学习。 ##### 6.4.4 GoogLeNet GoogLeNet 引入了 Inception 模块,通过并行的不同大小的卷积核提取多尺度特征,减少了参数数量并提升了模型性能。 ##### 6.4.5 ResNet ResNet 通过残差连接(Residual Connection)解决了深层网络中的梯度消失问题,使得训练更深的网络成为可能。 #### 6.5 现代卷积神经网络 现代卷积神经网络在经典结构的基础上进行了多项改进,包括深度可分离卷积(Depthwise Separable Convolution)、空洞卷积(Dilated Convolution)和注意力机制(Attention Mechanism)等。 ##### 6.5.1 深度可分离卷积 深度可分离卷积将标准卷积分解为深度卷积和逐点卷积两部分,显著减少了计算量和参数数量。 ```python # 定义一个深度可分离卷积层 depthwise_conv = nn.Conv2d(in_channels=16, out_channels=16, kernel_size=3, groups=16, padding=1) pointwise_conv = nn.Conv2d(in_channels=16, out_channels=32, kernel_size=1) # 组合使用 separable_conv = nn.Sequential(depthwise_conv, pointwise_conv) output = separable_conv(pooled_tensor) print(output.shape) # 输出形状 (1, 32, 16, 16) ``` ##### 6.5.2 空洞卷积 空洞卷积通过在卷积核中插入空洞来扩大感受野,从而捕捉更大范围的上下文信息。 ##### 6.5.3 注意力机制 注意力机制允许模型在处理输入数据时关注重要的部分,提升模型的表达能力和性能。SE(Squeeze-and-Excitation)模块是常见的注意力机制之一。 #### 6.6 应用场景 卷积神经网络广泛应用于以下领域: - **图像分类**:如 ResNet、VGGNet 等模型在 ImageNet 竞赛中取得了优异的成绩。 - **目标检测**:如 Faster R-CNN、YOLO 等模型能够实时检测图像中的多个目标。 - **图像分割**:如 U-Net、Mask R-CNN 等模型用于医学图像分割和实例分割。 - **视频分析**:3D 卷积神经网络用于处理视频数据,捕捉时空特征。 #### 6.7 总结 卷积神经网络通过局部感受野和权值共享机制,显著减少了参数数量并提升了模型的泛化能力。从 LeNet 到 ResNet,卷积神经网络经历了多次演进,形成了现代深度学习的重要基石。随着深度可分离卷积、空洞卷积和注意力机制等新技术的引入,卷积神经网络在图像识别、视频分析和自然语言处理等领域展现出强大的性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值