您的位置:首页 > 其它

ResNet个人理解

2018-03-16 15:55 260 查看
2015年最火的ResNet现在看已经是过去时了,后来的DenseNet、Mask-RCNN等架构的出现已经磨平了2015CVPR best paper的锋芒。ResNet的想法非常简单,学过闭环反馈的话都会自然地想到是不是可以将信息跳跃式地反穿?当然,结构上看ResNet是正向的一个skip connection (shortcut)。其实一直以来我都不理解为什么ResNet能够解决深层网络效果反而下降的问题,残差究竟代表什么?为什么学习残差会有效?感觉原paper中也没有讲清楚,事实上ResNet最初也是先尝试实验发现效果好,然后在尝试去解释的。最近搜集了一些不同的观点,加上自己的理解整理如下:



观点1. 这也是孙剑的看法,即过于深的网络在反传时容易发生梯度弥散,一旦某一步开始导数小于1,此后继续反传,传到前面时,用float32位数字已经无法表示梯度的变化了,相当于梯度没有改变,也就是浅层的网络学不到东西了。这是网络太深反而效果下降的原因。加入ResNet中的shortcut结构之后,在反传时,每两个block之间不仅传递了梯度,还加上了求导之前的梯度,这相当于把每一个block中向前传递的梯度人为加大了,也就会减小梯度弥散的可能性。

观点2.特征冗余:认为在正向卷积时,对每一层做卷积其实只提取了图像的一部分信息,这样一来,越到深层,原始图像信息的丢失越严重,而仅仅是对原始图像中的一小部分特征做提取。这显然会发生类似欠拟合的现象。加入shortcut结构,相当于在每个block中又加入了上一层图像的全部信息,一定程度上保留了更多的原始信息。

观点3.加入shortcut后相当于一个ensemble模型,输出的结果是前面各个block及其组合一起做的一个投票选出的结果。即可以把ResNet网络看成是多个子网络并行,从实验中看,真实起作用的路径长度并不深,主要走是中等深度的网络。简单来说,就是做了不同层次上的特征组合



观点4.特征具有层次性的角度看:具有层次性,也就是说对于同一个任务,对不同样本可能适合不同层次(复杂程度)的特征就可以完成。例如:对一瓶纯净水和一瓶饮料做二分类,如果一个样本是黄色的,更具颜色特征判断它显然会是饮料,如果样本是无色的,就需要通过它的味道或成分等更复杂的特征判断了。回到网络结构上面,浅层网络提取的是简单的特征,而简单和复杂的特征适用于不同的样本,没有shortcut时,对所有样本的分类都是利用最复杂的特征判断,费时费力;加入shortcut后,相当于保留了一些简单的特征用于判断,变得省时。这一观点主要解释了为什么ResNet网络能够更快收敛。

观点5.函数曲面的角度看:对于非常深的网络,其损失函数的图像是严重非凸的,很难找到一个较好的最优点。加入shortcut结构,使得损失函数的图像变得很接近凸函数,更容易(更快)找到较好最优点。(至于为什么shortcut能够使函数变凸,尚不理解…)

其中个人觉得观点1和2更为充分,其他观点更多的是从某一个角度去论证的,观点3和4最好结合在一起理解。

总的来说,我认为:由于每做一次卷积(包括对应的激活操作)都会浪费掉一些信息:比如卷积核参数的随机性(盲目性)、激活函数的抑制作用等等。这时,ResNet中的shortcut相当于把以前处理过的信息直接再拿到现在一并处理,起到了减损的效果。

与之想法类似的DenseNet,是把前面每一个block输出的梯度都skip connection到后面各个block的输出,同时在同一层增加了类似Inception的选择式结构,介绍了参数,进一步提升了效果,还获得了2017CVPR best paper…

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ResNet deep learning