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时无梯度