几种常见分类神经网络

时间:2024年8月4日

AlexNet(2012)

背景

AlexNet问世之前

1.浅层网络结构

主要使用较浅的神经网络,深层网络尚未广泛应用,限制了模型的表现力和复杂任务处理能力。

2.依赖手工设计特征

图像识别任务依赖手工设计的特征提取方法(如 SIFT HOG),需要大量领域知识进行特征工程。

3.计算资源和数据集限制

计算硬件(如 CPU)和数据集规模有限,限制了大规模深度神经网络的训练和应用。

AlexNet问世之后

1.深层网络结构

更深的网络: AlexNet 采用了8层的深度卷积神经网络(包括5个卷积层和3个全连接层),显著增加了模型的表示能力,使其能够学习更复杂的特征和模式。这比之前大多数浅层网络要深得多。

2.自动特征学习

卷积神经网络(CNN) AlexNet 使用卷积层自动学习图像特征,减少了对手工设计特征的依赖。通过多层卷积和池化操作,模型能够从原始图像数据中自动提取和学习有用的特征,简化了特征工程过程。

3.利用 GPU 计算和大规模数据集

GPU 加速: AlexNet 充分利用了 GPU 的并行计算能力,显著加快了训练过程。这使得训练深层网络成为可能。

ImageNet 数据集: AlexNet 在大规模 ImageNet 数据集上进行训练,这个数据集包含了大量的标注图像,为模型提供了丰富的训练数据,有助于提高模型的性能和泛化能力。

网络架构

AlexNetA结构相对简单,使用了8层卷积神经网络,前五层是卷积层,后三层是全连接层

1. 输入层:AlexNet的输入层接收的图像数据通常为 RGB 彩色图像,大小为227 * 227 * 3 。
2. 第一个卷积层(Conv1):包含96个大小为11 * 11 * 3 的卷积核,步长为4,使用了 ReLU 激活函数。该层的输出尺寸是55 * 55 * 96 。
3. 第一个池化层(Pool1):使用最大池化,池化窗口大小为 3x3,步长为 2。该层的输出尺寸为 27x27x96。
4. 第二个卷积层(Conv2):包含 256 个大小为 5x5x48 的卷积核(48 是由于之前的池化层有 2 倍的通道数),步长为 1,使用 ReLU 激活函数。该层的输出尺寸为 27x27x256。
5. 第二个池化层(Pool2):使用最大池化,池化窗口大小为 3x3,步长为 2。该层的输出尺寸为 13x13x256。
6. 第三个卷积层(Conv3):包含 384 个大小为 3x3x256 的卷积核,步长为 1,使用 ReLU 激活函数。该层的输出尺寸为 13x13x384。
7. 第四个卷积层(Conv4):包含 384 个大小为 3x3x192 的卷积核,步长为 1,使用 ReLU 激活函数。该层的输出尺寸为 13x13x384。
8. 第五个卷积层(Conv5):包含 256 个大小为 3x3x192 的卷积核,步长为 1,使用 ReLU 激活函数。该层的输出尺寸为 13x13x256。
9. 第三个池化层(Pool5):使用最大池化,池化窗口大小为 3x3,步长为 2。该层的输出尺寸为 6x6x256。
10. 全连接层(FC1):包含 4096 个神经元,使用 ReLU 激活函数。
11. 全连接层(FC2):包含 4096 个神经元,使用 ReLU 激活函数。
12. 输出层:包含 1000 个神经元,对应 ImageNet 数据集的 1000 个类别,通常使用 softmax 激活函数进行分类。

重要特征

ReLU激活函数

tanh sigmoid 激活函数由于其饱和性在极端输入值下会导致梯度消失,从而使得梯度计算变得更慢;而 ReLU 作为非饱和激活函数,能够提供更稳定的梯度,通常会更高效。

饱和:激活函数的饱和性指的是当输入值(通常是加权和)变得非常大或非常小时,函数的输出会趋近于一个固定值。

上图是使用ReLUstanh作为激活函数的典型四层网络的在数据集CIFAR-10s实验中,error rate收敛到0.25时的收敛曲线,可以很明显的看到收敛速度的差距。虚线为tanh,实线是ReLUs

Local Response Normalization(局部响应归一化)

1. 局部竞争性

在神经网络中,同一层的多个特征图可能会激活相似的特征。LRN 通过在局部区域内进行归一化处理,使得某些特征图的激活被抑制,而其他特征图的激活被增强。这种操作有助于模型更清晰地分离不同特征,减少特征之间的冗余。

2. 提高泛化能力

LRN 有助于抑制高激活值的神经元,防止某些特征过度支配其他特征。这种归一化方式能够促进特征学习的多样性,使模型更加鲁棒,从而提高泛化能力。

3. 稳定训练过程

在深度学习中,激活函数输出较大或较小的值可能导致梯度爆炸或消失问题。

Overlapping Pooling重叠池化

一般的最大池化操作

PoolSize  = stride

重叠池化操作

PoolSize > stride

这种有点类似于convolutional化的操作,这样可以得到更准确的结果。在top-1,和top-5中使用覆盖的池化操作分别将error rate降低了0.4%0.3%。论文中说,在训练模型过程中,覆盖的池化层更不容易过拟合。

VGGNet(2014)

背景

AlexNet

网络深度 :只有8层,包括5个卷积层和3个全连接层。

卷积核尺寸 :使用了多种尺寸的卷积核,如11x115x53x3

模块化结构设计 :结构设计不够模块化,卷积层和池化层的排列较为复杂。

VGGNet

网络深度 :拥有1619层的深度,大大增加了模型的表达能力,能够捕捉更复杂的图像特征。

卷积核尺寸 :使用一致的3x3卷积核。这种设计通过多个小卷积核的组合,既增加了感受野,又减少了参数量。

模块化结构设计 :采用了统一的卷积-池化模块设计,使得模型具有良好的可扩展性和结构一致性。

网络架构

重要特征

深度结构

深度结构允许模型捕获更复杂和抽象的特征。通过增加网络的深度,可以在特征空间中找到更有效的表示,这对于高精度的图像分类任务尤其重要。

小卷积核

细粒度特征捕捉:

小卷积核(如 3x3)能够捕捉细粒度的特征,因为它们在每次卷积操作中只涉及到局部区域的像素。这使得网络可以精细地学习图像中的边缘、纹理等低级特征。当多个小卷积核堆叠时,尽管每层单独的感受野较小,但累积起来的感受野能够覆盖更大的区域,因此可以学习到更复杂的特征表示

参数量减少:

相比于大卷积核,小卷积核的参数量更少。例如,使用两个 3x3 卷积核代替一个 5x5 卷积核,在捕捉相似感受野的同时,参数量减少了。较少的参数不仅降低了计算成本,还减小了过拟合的风险。

GooLeNet(2014)

背景

GoogLeNet2014年由Google团队提出(与VGG网络同年),斩获当年ImageNet竞赛中Classification Task (分类任务) 第一名

GoogLeNet 的创新点 :

1. 引入了 Inception 结构(融合不同尺度的特征信息)

2.使用1x1的卷积核进行降维以及映射处理 (虽然VGG网络中也有,但该论文介绍的更详细)

3. 添加两个辅助分类器帮助训练

4. 丢弃全连接层,使用平均池化层(大大减少模型参数,除去两个辅助分类器,网络大小只有vgg1/20

网络架构

 GoogLeNet网络有22层深(包括pool层,有27层深),在分类器之前,采用Network in Network中用Averagepool(平均池化)来代替全连接层的思想,而在avg pool之后,还是添加了一个全连接层,是为了大家做finetune(微调)。

重要特征

Inception结构

Inception原始结构

 1. 并行分支

Inception模块包含多个并行分支

1. 1.1×1卷积:用于降维和增加非线性

2. 1.3×3卷积:用于捕捉中尺度特征

3. 1.5×5卷积:用于捕捉大尺度特征

4. 1.3×3 max-pooling:用于下采样,并且通常会后接一个1x1卷积层以减少特征图的深度。

2.特征图输出

每个分支在输入特征图上独立操作,输出一组特征图。由于这些特征图的空间维度宽高相同,但是通道数(深度)不同,因此可以通过深度方向上将他们拼接合并。

3.拼接

如果每个分支输出的特征图通道数分别为 c1, c2, c3, c4,那么最后拼接后的特征图通道数为 c1 + c2 + c3 + c4。宽度和高度保持不变。

Inception + 降维

 在原始的inception结构的基础上,在分支234上加入了卷积核大小为1×1的卷积层。

注:CNN参数个数 = 卷积核尺寸×卷积核深度 × 卷积核组数 = 卷积核尺寸 × 输入特征矩阵深度 × 输出特征矩阵深度

降维操作(减少深度),减少了模型需要训练的参数,减少计算量。

Auxiliary Classifier(辅助分类器)

AlexNet VGG 都只有1个输出层,GoogLeNet 3个输出层,其中的两个是辅助分类层

它确保了即便是隐藏单元和中间层也参与了特征计算,他们也能预测图片的类别,他在inception网络中起到一种调整的效果,并且能防止网络发生过拟合。

给定深度相对较大的网络,有效传播梯度反向通过所有层的能力是一个问题。通过将辅助分类器添加到这些中间层,可以期望较低阶段分类器的判别力。

ResNet(2015)

背景

深度学习的发展:

近年来,深度学习在计算机视觉领域取得了显著的进展,深度卷积神经网络(CNN)在图像分类、目标检测等任务中表现出色。

深度网络的挑战:

随着网络深度的增加,训练过程中的退化问题(如梯度消失和爆炸)使得网络性能提升遇到瓶颈。

解决方法:

残差学习(Residual Learning):为了应对深度网络的训练难题,何凯明等人提出了ResNet(残差网络),引入了残差块,通过捷径连接(Shortcut Connections)来优化网络的训练。

网络架构

 

重要特征

residual(残差)模块

 

实线代表验证集的错误率                                 虚线代表训练集的错误率

左图为不同深度的神经网络在训练和测试时的错误率

右图为使用resnet搭建的网络在验证集和训练集的错误率

代码:

 Batch normalization(批量归一化)

它通过在网络的每一层输入上进行归一化,即将输入数据进行零均值化和单位方差化,然后对数据进行线性变换和缩放,以确保每层网络的输入数据分布相对稳定。

1. 计算均值和方差

对于一个输入数据,计算该批次数据在每个特征上的均值和方差

2.归一化

使用得到的均值和方差对数据进行归一化。每个特征值x都被转换为均值为0,方差为1的数据

 3.缩放和偏移

归一化后数据会进行线性变换,以允许模型在归一化之后进行适当的调整

DenseNet(2017)

背景

DenseNet(稠密连接网络)是由Cornell大学的Gao Huang等人于2017年提出的深度学习网络架构。它的设计灵感来自于ResNet以及其前身 Highway Networks 的思想

在深度卷积神经网络中,通常存在梯度消失或梯度爆炸等问题,尤其是随着网络层数的增加,这种问题变得尤为严重

残差网络引入了残差连接(跨层连接)来解决了这些问题,从而允许网络更深地训练,但是,ResNet中的跨层连接是通过相加的方式实现的,这意味着每一层只能直接访问前一层的输出。

网络架构

重要特征

Dense Block

DenseNet 的核心是 Dense Block,每个 Dense Block 包含多个卷积层,这些卷积层之间通过密集连接进行连接。在 Dense Block 中,每一层都会接收来自所有前面层的特征图,结合这些特征图来生成自己的输出特征图。

 Dense connections(密集连接)

Dense Block 中,每一层的输出都与后续所有层的输入连接,这种连接方式称为密集连接

密集连接的优点:

特征重用:每一层都可以直接访问前面所有层的特征图,这样可以重用早期层的特征,避免冗余计算。

梯度流动增强:由于每一层都直接连接到损失函数和输入数据,这种架构可以有效地缓解梯度消失问题,增强梯度的流动性。

更有效的参数使用:密集连接允许网络在较少的参数下达到更高的性能,因为每一层都使用了之前所有层的信息。

Transition Layer

DenseNet 的不同 Dense Block 之间,通常会插入 Transition LayerTransition Layer 负责减小特征图的尺寸和深度。

 卷积层(1x1 Convolution): 用于减少特征图的深度。

池化层(Average Pooling): 用于减小特征图的尺寸。

  • 20
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值