一、简介
MSRA的深度残差网络在2015年ImageNet和COCO如下共5个领域取得第一名:ImageNet recognition, ImageNet detection, ImageNet localization, COCO detection, and COCO segmentation。
文章:Deep Residual Learning for Image Recognition
代码:https://github.com/KaimingHe/deep-residual-networks
二、网络分析
该文章借鉴了highway networks的idea,在此idea基础上,文章就简单的加深网络会使得训练误差加大这个问题展开了分析,文章提出假设:加入的后续层如果都能够做到将前一层的结果直接map到下一层的话,那么该加深后的网络理论上是保持一样的误差而不是增大训练误差了。那么也就说明现有的求解器solvers在我刚构造出来的更深网络上并不能找到比我好的解。那么我是不是可以引入残差(在很多领域应用到过)的概念,让该求解器能够稳定下来更容易收敛呢?答案是肯定的,文章在多个数据集上验证了自己的想法。
网络中残差的表达式可以统一写成如下公式:y = F(X, {Wi}) + WsX,其中Ws 只有在feature map维度不同的时候才用到,可以是pad零,也可以是1x1卷积核(文中大部分采用这种projection)。当残差用于两层全连接层的时候,其F = W2σ(W1X),网络单元如下图所示:
当然残差也可以用于卷积层,应用于卷积层的时候,各个对应feature map相加,网络单元如下图所示:
左边用于34层残差网络,考虑到计算复杂度当残差超过50层及以上的时候采用右边的结构。
34层残差网络的设计规则有如下几点:1. 大部分使用3x3的卷积核 2. 如果输出的feature map大小一样,则设定相同个数的卷积核 3. 如果输出的feature map大小减小了一半,则卷积核加倍以保持每一层运行时间相仿。该方法的单模型效果如下:
多模型融合结果如下: