小姐姐归来,带着蜜汁微笑,啦啦啦~
这次讲的应该是一些成功的神经网络架构,毕竟我们不能总重复造轮子,借鉴很重要
AlexNet
结构- AlexNet的架构如图,有5个卷积层
- 输入是:227×227×3 的图像
- 第一层(卷积层1):96个大小为11×11的滤波器,步长为4
- 问题:卷积层的输出是?
*答案:55×55×96
- 问题:这一层的超参数的个数是多少?
- 答案:(11×11×3)×96=35k
- 输入:227×227×3
- 经过卷积层1:55×55×96
- 第二层(池化层1):3×3 的滤波器 步长为2
- 问题:这层输出大小为?
- 答案:27×27×96
- 问题:第二层的超参数个数?
- 答案:0
- 池化层没有参数!
- input: [227×227×3]
- conv1: [55×55×96]
- max pool1: [27×27×96]
- norm1: [27×27×96]
- conv2: [27×27×256]
- max pool2: [13×13×256]
- norm2: [13×13×256]
- conv3: [13×13×384]
- conv4: [13×13×384]
- conv5: [13×13×256]
- max pool3: [6×6×256]
- FC6: 4096
- FC7: 4096
- FC8: 1000
图像分类比赛冠军概览
ILSVRC1- AlexNet是第一个基于CNN的获得冠军的网络
- ZFNet在AlexNet的基础上改善了超参数的设置
- VGG和GoogleNet在AlexNet的基础上使用了更深的网络
VGGNet
VGGNet更小的卷积核,更深的网络
- AlexNet只有8层,而VGG有16层到19层
- 只使用 3×3的卷积核,步长为1,pad为1;池化层采用2×2的核,步长为2
- 达到了7.3%的错误率
为什么使用更小的卷积核?
- 三个步长为1的3×3的卷积核,与一个7×7的卷积核有相同的效果,但是拥有更少的参数,更深的网络。
网络具体情况
VGG16-1 VGG16-2 细节GoogleNet
GoogleNet网络更深,计算效率更高
- 22层
- 采用inception模块
- 没有FC(全连接)层
- 只有5百万个超参数,比Alex Net少了12倍
- 6.7%的错误率
inception模块
inception- 设计一个好的局部网络拓扑,把它看作一个网络,然后堆放这些网络,放到每一层的顶部
- 对相同层的相同输入并行应用不同类型的滤波操作
- 把结果串联起来,得到一个张量输出
- 这个张量进入下一层
- 模块的输入是:28×28×256
- 经过不同的滤波器,保持28×28不变
- 串联后的结果是:28×28×672
- 计算次数:854m ops
- 这样的计算量是很大的,该如何解决呢?
- 增加一个”瓶颈层“,减少在进行卷积之前的特征深度
- 1×1的卷积保持了特征,减少了深度
- 在进行3×3,5×5之前,增加了一层1×1的瓶颈层
- 在池化层后加一层1×1的瓶颈层
- 计算量为:356m ops
ResNet
ILSVRC winner- ResNet:深度革命
非常深的网络
- 152层网络
- 3.57%的错误率
- 比较20层的网络和56层的网络
- 56层的网络在训练损失和测试损失上都表现较差
- 更深的网络表现更差,却不是因为过拟合
- 问题应该是由于更深的网络更难优化,所以不如浅层网络表现好
- 更深的网络应该至少和浅层网络表现得一样好
- 一个解决方法是,从浅层网络复制已经训练好的层,添加到剩下的深层网络的层
- 通过上面的方法可以让深层的网络表现的和浅层的一样好
- 基于上面的思路,产生了Residual block的方法,如图右
- 完整的结构:
- 由residual块组成
- 每个residual块拥有两个3×3的卷积层
- 通常,两个滤波器,步长为2
- 在网络开始的时候添加额外的卷积层
- 没有任何全连接层
- 对于深层网络,通常需要添加瓶颈层来减小网络的深度
- 在实际应用中在每个卷积层后进行批量归一化
- 使用Xavier/2初始化
- 使用随机梯度下降和动量初始化
- 使用类似时间表类型的学习率
- 小批量的大小为256
- 权重小
- 没有使用dropout
网友评论