抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

ResNet

论文地址

当时,难以训练更深的神经网络,为此作者提出了一个残差(residual)学习框架,用于简化网络的训练。最终取得了惊人的效果,和当时很多工作比,具有更少的参数和更深的网络,甚至能达到千层

退化现象

深度神经网络在图像分类上取得了一系列巨大突破(AlexNet、VGGNet),他们的成功还表明模型深度对效果的影响非常大,通过标准初始化、中间标准化层的方法解决了梯度爆炸/消失的问题,现在已经可以训练十多层的模型,但难以训练更深的模型

当模型更深时,出现了退化(degradation)现象:随着网络深度的提升,准确性会饱和。

作者认为,如果解决一个任务最适合用K层网络,那么即使我们训练了一个比K深的网络,只要K之后的网络做恒等映射(Identity Mapping),直接返回输入的值,就能取得和K层网络相同的效果。因此,理论上比K深的模型效果不应比K层差,但实验结果是某个任务56层确实比20层差

ResNet

于是作者认为,模型在试图用多个非线性层混合输出一个恒等映射(比如对一个数据先平方再开方之类的吗?),我们应该直接给模型一个恒等映射的能力

残差学习框架

作者引入了残差学习框架,来解决退化问题

ResNet2

残差网络的核心,是在非线性层基础上加了一个x,从
$$
y = F(x)
$$
变成(当然,新训练出的F(x)和之前是不同的)
$$
y = F(x)+x
$$
使用了这种操作(快捷连接)的网络都可以称作残差神经网络

理论上(万能近似定律),无论是$y=F(x)$还是$y=F(x)+x$,喂入足够的数据,都能拟合出所需的函数,区别是这两个模型的训练难度可能有所差异

通过观察可知,这一层模型是有可能被训练为$y=x$,也就是$F(x)$的输出恒为0,此时实现了恒等映射

维度映射

残差网络中输入和输出的维度应该是相同的,但实践中经常需要改变输出输出的通道数,可以用一个线性投影来匹配维度
$$
y=F(x, {W_i})+W_sx
$$

  • zero-padding shortcuts:通过在输入中填充0来增加维度
  • projection shortcuts:通过1x1的卷积线性增加或减少维度

作者发现投影效果比零填充要好,但也没有好太多,于是不是必须的

网络架构

  1. 和VGGNet很类似,使用3x3的滤波器进行卷积
  2. 当输出的维度减半时,滤波核的数量就跟着翻倍,以维持复杂度
  3. 每两层网络添加一个快捷连接,以实现残差网络

ResNet3

评论