Lec10 CNN架构介绍
1. AlexNet
卷积层才有参数,池化层没有参数!
为什么分层两列前进,因为当时训练所使用的GPU较小,容量有限。在第三层开始GPUs之间开始通信。
ZFNet
对Alex超参数的一些优化。
2.VGG
from Oxford
- 非常深的网络,并保持非常小的卷积核(3x3)。更小的卷积核可以让它有更深的网络结构。正向传播过程中造成参数太多内存占用更多,链式法则需要用的数字都需要保存下来。
- softmax在分类问题上使用很多。
3.GoogleNet
- 没有FC层,节省了大量的参数,虽然比AlexNet更深但是参数却更少
- 采用了inception module。
设计局部拓扑网络, 对进入相同层的数据进行不同的并行操作,例如不同的卷积、池化等,然后将结果在深度层面上串联起来得到一个张量输出。
如下图,可以通过补零来满足输出maps的尺寸都保持一致。保留了相同的尺寸却扩充了深度。要注意池化层是不能扩充深度的,所以增加的深度是池化层之外的深度。这种做法的代价是增加了计算量。
- 采用 bottleneck来减少深度,从而缓解计算量大的问题。
bottleneck是一些1x1的卷积核,在原本的卷积层之前,池化层之后。
5.ResNet
残差网络,是深度网络的一次革命。非常深,目前(2016年)表现最好的深度网络。深度学习中,并不能单纯的靠网络层数的堆叠来获得效果。
主要思想:(前提:假设参加很关键,但实际并不一定,但是这个网络中残差确实表现得很好)我们学习我们需要在输入上加上后减去的一个值来代替直接学习最后的结果。也就是学习的是
Δx
Δ
x
(也就是所谓残差,也就是图中的F(x) ). 如下图所示,左边是以前的方式,右边是残差的方式。
完整的残差网络结构示意:
短期内,ResNet是目前表现最好的网络形式。
6.性能比较
7.其他结构
- 基于残差的网络,一些ResNet相关的改进,加“宽”、加“深”
- 不基于残差的网络
FractalNet分形网络
DenselyNet密度网络,每一层都与其后的所有层前馈连接
SqueezeNet 关注高效网络,能够有效压缩网络大小
8.一些发展趋势