卷积神经网络的网络结构——ResNet V2

ResNetV2提出使用恒等映射简化残差单元,改善了深度残差网络的训练难度与泛化能力。实验表明,恒等映射有助于梯度传播,避免梯度消失与爆炸问题。通过对比不同激活函数的效果,研究者引入了预激活结构,进一步提升了网络性能。
《Identity Mappings in Deep Residual Networks》
  • 2016,kaiming He et al,ResNet V2。

深度残差网络作为一种极深的网络框架,在精度和收敛等方面都展现出了很好的特性。作者通过对残差块(residual building blocks)背后的计算传播方式进行分析,表明了当跳跃连接(skip connections)以及附加激活项都使用恒等映射(identity mappings)时,前向和后向的信号能够直接的从一个block 传递到其他任意一个block。一系列的“消融”实验(ablation experiments)也验证了这些恒等映射的重要性。这促使我们提出了一个新的残差单元,它使得训练变得更简单,同时也提高了网络的泛化能力。
深度残差网络(ResNets)由很多个“残差单元”组成。每一个单元都可以表示为:

这里写图片描述
如图所示,(a) 原始残差单元;(b) 本文提出的残差单元;右:1001层ResNets 在CIFAR-10上的训练曲线。实线对应测试误差(右侧的y轴),虚线对应训练损失(左侧的y轴)。本文提出的单元使得ResNet-1001的训练更简单。
**1.分析:**如果addition操作之后是恒等映射,则Residual network的数学表达变成:
这里写图片描述
反向传播公式:

公式表现为两个项之和,第一项直接通道,可以把深层的梯度传递到任意浅层,可以看出浅层的梯度很难为0,第二项为卷积通道,对于一个mini-batch总的全部样本不可能都为-1。这意味着,哪怕权重是任意小的,也不可能出现梯度消失的情况。
2.恒等跨越连接的重要性:
作者把原来的identity mapping改成线性映射,并分析其影响(h(x)=kx )
前向和反向公式为:
这里写图片描述
此网络的后向传播过程受λ控制,若λ>1,则第一项会非常大,因而会导致梯度爆炸;若λ<1,则第一项会非常小,甚至消失。反向传播的信号只能从第二项传递,但是其优化难度更大。综上,这个结构妨碍了信息的传播,恒等映射更好。
3.Experiment on Skip connection:
在shortcut上添加各种结构,进行对比试验,试验结果证明了恒等映射最好。
这里写图片描述
分类错误率,当错误率高于20%,记为“fail”。
这里写图片描述
事实上, shortcut-only gating和1x1包含原来的identity shortcut, 其表达能力应该更强,但是造成其结果degradation的原因是优化问题,而非representational abilities。
4.On the Usage of Activation Functions
之前的网络结构都是假设f是恒等映射,这一部分研究relu激活函数的影响,并提出了一个“pre-activation”结构,能进一步提高了网络的性能。
对比实验:
这里写图片描述
Post-activation or pre-activation?
原始的residual unit的设计中,activation xl+1=f(yl)对于两个分支都有影响,我们设计了一个非对称的结构,只对F分支,也就是:
这里写图片描述
这就等于pre-activation形式了:
这里写图片描述
这里设置了fig4中的两种方案,d的提高不明显,可以看出BN和ReLU更配,他俩适合在一起,table3更说明了这个问题。
这种结构有双重效果:
1.缓解了优化难度。此结构中合并之后是恒等过渡,使得梯度的传播更加顺畅。其次减少了信息的流失,使得下一个block保存更多的信息。
2.减少过拟合。新结构多加了一个BN层,使得信息更加规范化。

ResNet V2和ResNet V1的主要区别在于,作者通过研究ResNet残差学习单元的传播公式,发现前馈和反馈信号可以直接传输,因此skip connection 的非线性激活函数(如ReLU)替换为Identity Mapping(y=x),使用内部的“pre-activation”结构。同时,ResNet V2在每一层中都使用了Batch Normalization。这样处理之后,新的残差学习单元将比以前更容易训练且泛化性更强。


注:博众家之所长,集群英之荟萃。

在这里插入图片描述

### 使用卷积神经网络进行水稻病虫害检测与分类的方法和应用 #### 方法概述 卷积神经网络(CNN)作为一种强大的深度学习工具,在处理图像识别任务方面表现出色。对于水稻病虫害的检测与分类,CNN可以有效地从复杂的背景中提取病变区域的关键特征并加以区分[^1]。 #### 数据准备 为了构建有效的CNN模型用于水稻病虫害诊断,需要收集大量的高质量图片作为训练样本。这些图片应该覆盖不同种类的病虫害以及健康植株的状态,并且最好是从真实的田间环境中获取以确保泛化能力。每张图片都需要有专家标注好的标签说明具体的疾病类别或健康状况[^2]。 #### 模型架构设计 针对特定的应用场景——即智能手机端部署的需求,所选用的CNN架构不仅要具备良好的准确性还要考虑计算资源消耗。轻量化版本如MobileNetV2或者ShuffleNet等都是不错的选择,它们能够在保持较高精度的同时减少参数量从而降低运行时所需的内存空间和功耗。 #### 训练过程 在完成数据预处理之后就可以开始训练阶段了。此过程中会涉及到超参数调整比如学习率设置、批次大小选择等问题;另外还需要采取措施防止过拟合现象发生,例如采用Dropout层随机丢弃部分节点连接或是加入L2正则项惩罚过大权重值的情况。随着迭代次数增加,损失函数逐渐减小直至收敛至局部最优解附近停止更新权值向量[^4]。 #### 应用实例展示 下面给出一段简单的Python代码片段用来加载预训练好的CNN模型并对输入的新鲜采集来的水稻叶子照片做出预测: ```python import torch from torchvision import transforms, models def predict(image_path): transform = transforms.Compose([ transforms.Resize((224, 224)), transforms.ToTensor(), transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]) ]) model = models.mobilenet_v2(pretrained=True) # 假设已经完成了最后几层适应新任务的微调工作 image = Image.open(image_path).convert('RGB') input_tensor = transform(image).unsqueeze(0) with torch.no_grad(): output = model(input_tensor) _, predicted_class = torch.max(output.data, 1) return predicted_class.item() ``` 该段脚本实现了读取一张JPEG格式文件形式存储下来的待测样品影像资料,经过标准化变换后送入预先训练完毕的移动版ResNet-50之中得到最终判定结果返回给调用者进一步处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Peanut_范

您的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值