当前位置: 代码迷 >> 综合 >> Resnet 学习笔记
  详细解决方案

Resnet 学习笔记

热度:35   发布时间:2024-01-06 04:56:14.0

Resnet 不同种类及介绍

Background

  • 单层前馈神经网络足够完成任何功能, 但该层会非常冗余, 易过拟合
  • 所以 需要更深的网络
  • 从AlexNet之后,CNN 结构变得越来越深 (AlexNet 5层卷积层 VGG network 19层 GoogleNet 22层)
  • 但网络深度并不是简单的堆叠层数,会出现梯度消失的问题,退化问题(梯度是反向传播的,重复叠加会使得梯度无穷小)

##介绍

  • ResNet核心思路是“identity shortcut connection",来跳过一层或多层,类似于短路连接
  • 在这里插入图片描述
  • ResNet使用残差学习解决退化问题,当输入x时学习到特征H(x),希望学习残差F(x)=H(x)-x, 所以学习到的特征时F(x)+x。 相比直接学习H(x),残差学习更为简单,且当残差为0时,仅进行恒等映射,性能不会下降
  • 为什么残差学习会简单?因为残差学习需要学习的内容少,残杀一般比较小。
  • Resnet参考了VGG19网络,通过shortcut加入了残差单元
  • 不同深度的ResNet网络* 不同的残差单元,左边为浅层网络,右边为深层网络
    在这里插入图片描述
  • 当输入输出维度相同时,直接相加。
  • 当维度不想同时(维度增加一倍,1.用zero-padding增加维度,做一个downsamp,可以用strde=2的pooling,不会增加参数 2.采用projection shortcut,采用1×1卷积,会增加参数,增加计算量

参考:https://zhuanlan.zhihu.com/p/31852747

##Relu激活函数

  • Rectified lineaer unit(修正线性单元)
  • 深度学习就是使用一系列神经元去近似一个函数,并通过数据来确定函数参数
  • 为什么需要非线性激活函数?因为需要增加函数的表达能力,线性函数表达单一
  • 其他非线性激活函数? sigmoid tanh, 存在当x大于一定量时,梯度消失的问题。所以需要一个更稳定的激活函数,且具有稀疏性(x<0部分省去)
  • 因为有稀疏性,且函数表达简单(相比较于Sigmoid的指数计算)Relu函数运算更快
  • Relu函数分段图像
    在这里插入图片描述* Relu为两段函数,在x=0时无梯度
  相关解决方案