Microsoft的ResNet赢得了ILSVRC 2015 和COCO 2015的冠军。
它是为了解决在深度神经网络中,随着深度的加深,training error会增大。
这显然不是因为overfitting,因为overfitting的表现是在train set上表现很好,test set上表现变差。
它的基本模块结构如下:
定义公式是:
这里,x,y分别代表每一层的输入与输出。代表残差,需要在训练过程中学习得到。
上面公式中,x和F的尺寸必须相同。若不相同,则使用下面的公式:
这里Ws和x做卷积。
这里的F通常包含两到三层,当然也可以包含更多的层。比如两层,,
代表RELU激励函数。当F只包含一层时,就退化会一个线性层了,
,这样就没什么意义了。
下图是VGG-19和34-layer plain,34-layer residual网络的对比。
和VGGNet相比,ResNet网络更深,但是参数却少得多。
在ImageNet挑战中使用的方案如下:
1. 图像随机缩放,短边在[256,480]之间随机采样。
2. 从原图像或其翻转的图像随机裁剪224x224大小。
3. 每个像素减去均值。
4. 标准颜色增强。
5. batch normalization。
6. SGD, minbatch=256.
7. learning rate=0.1,当error不在减小时,除以10。
8. 训练600000次。
9. weight decay=0.0001。
10. momentun=0.9。
11. 卷积时设置stride=2,使特征尺寸减小。
上图中用[]括起来的就是一个building blocks。
训练错误率如下图:
top-1错误率:
plain网络表示没有残差引入,只是网络的层层堆叠。
前面提到,一个building block通常含两层或者三层结构。
这里两层的结构主要用在ResNet-34网络中,而三层的结构主要用在ResNet-50/101/152网络中。1x1的卷积用来改变特征的深度,减小计算量。