Resnet论文阅读记录

总结一下Resnet中residual learning module的优点:

1、易于优化。
2、随着深度越深,准确度越高【部分解决了degration问题】
3、可以加很多层,但复杂度依旧很低。

发现问题:随着神经网络的深度加深,会发生梯度消失/爆炸问题,网络不容易收敛。

解决问题:normalized initialization和immediate normalization layers.使几十层的神经网络可以用SGD方法训练并收敛(convergence)。

发现问题:尽管网络可以开始收敛了,但是随着深度加深,网络的表现性能不一定会变好,即网络的degration问题。

分析问题:首先,degration问题不是由overfitting造成的(怎么证明的?参考论文10/41-码住待看)。

解决问题:提出了一个深度残差学习框架。基本形式为F(x)=H(x)-x,即网络真实预测的函数H(x)是网络的输出F(x)与输入值x的和,这里的求和操作即图2中的shortcut路径。shortcut本质上是为了恒等映射。

思路要点:

1、最有趣的地方,为什么神经网络可以这么设计?

POINT: x不仅能看成是输入,也能看成是关于x的一个一次函数y = x

已知 — 1、非线性函数H(x)是关于输入x的函数;2、线性函数g(x)=x也是关于x的函数;3、假设神经网络DNN可以拟合H(x)级别的非线性函数。

由1和2可以得到 — 4、H(x)-g(x)也是关于输入x的非线性函数,并且与H(x)同等级别。

由3和4可以得到 — 5、DNN可以拟合H(x)-g(x),即DNN的输出函数可以是F(x)=H(x)-x

2、为什么要设计这种恒等映射?

a) 为了让高层的解法空间包含低层的解法空间。

3、当输出f(x)的维度和输入x的维度不同时(f(x)的深度是x的2倍,长宽各是x的一半)怎么相加?

一共有三种办法:

a) parameter-free方法:取stride==2,x中对应位置缺失的值填0。这种方法本质上并不是恒等映射,因此表现最差。

b) 需要部分参数:当维度不同时,对输入x进行1×1的卷积,stride==2。论文中采取了这种方式,在精度和计算量之间tradeoff。

c) 都需要参数:不管f(x)和x的维度是否相同,都对输入x进行1×1的卷积,stride==2。这种方式虽然表现比b好一点点,但是消耗的计算量过于庞大。因此舍弃。

4、当深度越来越深,有没有方法可以进一步降低计算量?

有。采用Bottleneck结构后,152层的Resnet比VGG-16/19复杂度更低。

如fig.5右图。第一个1×1卷积层负责降低维度,使第二个3×3的卷积层计算量变小,然后第三个1×1的卷积层再将维度变回去。

采用这种结构后,右图中输入256维的图像经过bottleneck时的计算量与左图的计算量相同,而左图的输入x只有64维。

https://juejin.im/post/5df379246fb9a016214ccd0e

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
SVG
0 条回复 A 作者 M 管理员
    所有的伟大,都源于一个勇敢的开始!
欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论