AlexNet 2012 ISLRC竞赛冠军
- 首次利用GPU进行网络加速训练
- 使用ReLU激活函数,而不是传统的SigMiod激活函数以及Tanh激活函数
- 在全连接层的前两层使用了Dropout随机失活神经元操作,以减少过拟合
GoogleNet 2014 ImageNet竞赛分类第一名
- 引入了Inception结构(融合不同尺度的特征信息)
- 使用1x1的卷积核进行降维以及映射
- 添加两个辅助分类器进行帮助训练
- 丢弃全连接层,使用平均池化层(大大减少模型参数)
VGG 2014 ImageNet 竞赛定位人物第一名、分类任务第二名
通过堆叠多个3x3的卷积核来替代大尺度卷积核(减少多需参数),比如用2个3*3的卷积核代替一个5*5的卷积(拥有相同感受野),3个3*3的卷积核代替一个7*7的卷积核(拥有相同感受野)。
网络结构:
ResNet 2015 ImageNet竞赛分类、检测、分割第一名
- 超深的网络结构(突破1000层)
- 提出residual模块
- 使用Batch Normalization加速训练(丢弃dropout)
在ResNet提出之前,传统的卷及神经网络都是通过将一系列卷积层与下采样层进行堆叠得到的,但是当堆叠到一定网络深度,就会出现两个问题:1)梯度消失或梯度爆炸。2)退化问题
梯度消失/梯度爆炸是因为神经网络在反向传播的时候,反向连乘的梯度小于1(或大于1),导致连乘的次数多了之后(网络层数加深),传回首层的梯度过小甚至为0(过大甚至正无穷),这个问题可以在卷积层与激活层之间加入BN层(Batch Bormalize),规整数据的分布来解决。
解决了梯度消失/梯度爆炸问题,超深的网络结构还有另外一个问题:深度网络的退化问题。我们选择加深网络的层数,是希望比浅层网络获得更好的表现。但是由于非线性激活函数Relu的存在,每次输入到输出的过程几乎是不可逆的,造成许多不可逆的信息损失。如果一个特征的一些有用的信息损失了,那它的表现还能比浅层更好?residual模块就是解决这问题。残差结构多了一个shortcut connection,将输入与卷积激活后的结果在对应的维度上直接相加,减少信息损失。
ResNext
更新了残差结构,用组卷积代替普通卷积来减少参数
普通卷积与组卷积图解:
模型参数效果:
MobileNet 2017 轻量级CNN网络 (相比VGG准确率减少0.9%,但模型参数只有VGG的1/32)
Depthwise Convolution(大大减少运算量和参数量)
增加超参数α(控制卷积核个数),β(控制输入大小)
DW卷积:
网络结构:
Invert Convlution:(最后一层使用了线性)