reference:
http://blog.youkuaiyun.com/abcjennifer/article/details/50514124
http://blog.youkuaiyun.com/cv_family_z/article/details/50328175
http://blog.youkuaiyun.com/yaoxingfu72/article/details/50764087
注:主要根据以上整理出笔记。
本文介绍一下2015 ImageNet中分类任务的冠军——MSRA何凯明团队的Residual Networks。实际上,MSRA是今年Imagenet的大赢家,不单在分类任务,MSRA还用residual networks赢了 ImageNet的detection, localization, 以及COCO数据集上的detection和segmentation, 那本文就简单分析下Residual Networks。
目录
———————————— ———————————— ———————————— ———————————— ————————————
1. Motivation
2. 网络结构
3. 实验结果
4. 重要reference
1. Motivation
作者首先抛出了这个问题, 深度神经网络是不是越深越好。
照我们一般的经验,只要网络不训飞(也就是最早在LSTM中提出的vanishing/exploding problem),而且不过拟合, 那应该是越深越好。
但是有这么个情况,网络加深了, accuracy却下降了,称这种情况为degradation。
如下图所示(详见[1]):
Cifar-10 上的training/testing error. 网络从20层加到56层,error却上升了。
按理说我们有一个shallow net,在不过拟合的情况下再往深加几层怎么说也不会比shallow的结果差,所以degradation说明不是所有网络都那么容易优化。 如果我们加入额外的 层只是一个 identity mapping,那么随着深度的增加,训练误差并没有随之增加 。
也就是说:
如果在一个浅层网络A上叠加几层layer形成网络B,如果这些新添加的layer是Identity mapping(权值矩阵全是单位矩阵?),那么网络B性能至少不会比A差。但是实际实验结果却显示网络越深,性能越差,所以作者猜测solver 对于学习单位映射比较困难。
既然学习单位映射比较麻烦,那干脆直接给它加上一个shortcut,直接给这个模块输出叠加上输入。实际情况中,单位映射x并不是最优解H(x),最优解在单位映射附近,这个最优解与单位映射之间的差就叫做residual F(x)。
学习H(x)-x要比直接学习H(x)要简单多(这个有点类似于做数据处理,如网络的输入图像要减图像均值一样),所以网络训练也比较简单。
所以我们认为可能存在另一种构建方法,随着深度的增加,训练误差不会增加,只是我们没有找到该方法而已。
这里我们提出一个 deep residual learning 框架来解决这种因为深度增加而导致性能下降问题。 假设我们期望的网络层关系映射为 H(x), 我们让 the stacked nonlinear layers 拟合另一个映射, F(x):= H(x)-x , 那么原先的映射就是 F(x)+x。 这里我们假设优化残差映射F(x) 比优化原来的映射 H(x)容易。F(x)+x 可以通过shortcut connections 来实现,如下图所示:
这里我们首先求取残差映射 F(x):= H(x)-x,那么原先的映射就是 F(x)+x。
尽管这两个映射应该都可以近似理论真值映射 the desired functions (as hypothesized),但是它俩的学习难度是不一样的。
这种改写启发于figure 1中性能退化问题违反直觉的现象。正如前言所说,如果增加的层数可以构建为一个 identity mappings,那么增加层数后的网络训练误差应该不会增加,与没增加之前相比较。
性能退化问题暗示,多个非线性网络层用于近似identity mappings 可能有困难。
使用残差学习改写问题之后,如果identity mappings 是最优的,那么优化问题变得很简单,直接将多层非线性网络参数趋0。
实际中,identity mappings 不太可能是最优的,但是上述改写问题可能能帮助预处理问题。如果最优函数接近identity mappings,那么优化将会变得容易些。 实验证明该思路是对的。这篇文章的motivation就是通过“deep residual network“解决degradation问题。