【动手学深度学习】7.6. 残差网络(ResNet)(个人向笔记)

1. ResNet精读论文视频的Introduction部分

  • 深度卷积神经网络好,好在可以叠加很多层,每一层都可以提取不一样的特征
  • 但是网络特别深的时候,梯度要么爆炸要么消失,我们能做的就是将参数随机初始化做好,或者是在中间加一些 batch normalization。在使用了这些方法后,深度卷积神经网络得以收敛
  • 但是收敛后的深度变深会导致性能变差。但是这不是由于过拟合引起的,这就意味着你的网络看似是收敛了,丹斯其实没有得到很好的训练
  • 于是论文提出,对于一个效果好的浅网络,如果再加一些层让它变深,它的效果是不应该变差的。虽然理论上存在一些比较优的解,但是SGD找不出来
  • 这篇文章提出可以显示地构造一个优解(identity mapping),使得深层的不会比浅层更差
  • 我们假设原来的要学习的是 H(x),这里构造一个 F(x) = H(x) - x, 这表示我们对于前面学过的 x(这里的 x 是上一层网络的输出),我们不需要再重新去学习它了,所以把它减掉。因此我们在这里学习到的是残差,最后输出再把 x 加回来
  • 这个方法很好,没有增加参数,即增加复习复杂度。也没有增加计算复杂度,因为只是一个加法,而且网络也是可训练的。它可以做到网络越深,效果越好

2. 函数类

  • 原文有定义,我们在这里直接引用:我们对网络的叠加很可能是非嵌套函数类。对于深度神经网络,如果我们能将新添加的层训练成恒等映射(identity function) f ( x ) = x f(x) = x f(x)=x,新模型和原模型将同样有效。 同时,由于新模型可能得出更优的解来拟合训练数据集,因此添加层似乎更容易降低训练误差。
  • 针对这一问题,何恺明等人提出了残差网络(ResNet)。

3. 残差块

  • 和论文 introcution 部分介绍的内容差不多:
  • ResNet沿用了VGG完整的 3 × 3 3×3 3×3 卷积层设计。残差块里首先有 2 个相同输出通道数的 3 × 3 3\times3 3×3 卷积层。每个卷积层后接一个BN层和ReLU。然后我么通过跨层数据通路,跳过这两个卷积运算,将输入直接加在最后的 ReLU 激活函数前。这样的设计要求两个卷积层的输出于输入形状一样,从而使得它们可以相加。而如果想要改变通道数就需要引入一个额外的 1 × 1 1×1 1×1 卷积层来将输入变换成需要的形状后再做相加运算



4. ResNet模型

  • ResNet-18如下
相关推荐
会飞锦鲤5 小时前
工业AI视觉检测项目完整实施方案
人工智能·深度学习·视觉检测·缺陷检测·模型训练·ai项目·工业应用
电科_银尘5 小时前
【深度学习项目实战·15】小样本图像分类:迁移学习识别蚂蚁与蜜蜂
深度学习·分类·迁移学习
La Pulga6 小时前
【FreeRTOS源码学习笔记】任务延时列表
笔记·mcu·学习·嵌入式·freertos·实时操作系统
陈嘿萌6 小时前
TIP 2026 | 不再混成一张! RealFusion从模态不变性重想图像融合
图像处理·人工智能·深度学习·计算机视觉·学术研究与理论基础
蜗牛一步步往上爬7 小时前
第十六章 C++语言在深度学习中的应用
开发语言·c++·深度学习
武天旭8 小时前
AI安全--AI大模型的对抗样本攻击与防御解析
人工智能·深度学习·安全·机器学习
Peter-OK11 小时前
PostgreSQL学习笔记(入门-进阶-精通说明)
笔记·学习·postgresql
tellmewhoisi11 小时前
深度学习0:数学知识:正态分布4(坐标变换的缩放比例(面积微元变换))
人工智能·深度学习
承渊政道11 小时前
Linux网络学习【Reactor反应堆模式】
linux·网络·学习·ubuntu·reactor
布吉岛的石头11 小时前
Java 程序员第 50 阶段14:灾难性遗忘与回放
人工智能·深度学习·transformer