深度残差网络

深度残差学习(Deep Residual Learning)的思想

假如目前有一个可以工作的很好的网络A,这时来了一个比它更深的网络B,只需要让B的前一部分与A完全相同,后一部分只实现一个恒等映射(identity mapping),这样B最起码能获得与A相同的性能,而不至于更差。深度残差学习的思想也由此而产生,既然B后面的部分完成的是恒等映射,何不在训练网络的时候加上这一先验(在网络训练过程中,加入先验信息指导非常重要,合理的先验往往会取得非常好的效果),于是构造网络的时候加入了捷径(shortcut)连接,即每层的输出不是传统神经网络中的输入的映射,而是输入的映射和输入的叠加,如下图中的"Residual net"所示。


在Residual net中:

(1)identity:为恒等映射,此条路径一直存在

(2)F(x):为需要学习的残差函数(residual function):H(x)-x = F(x)

问题的重新表示或预处理会简化问题的优化!

假设我们期望的网络层关系映射为 H(x), 我们让 the stacked nonlinear layers 拟合另一个映射, F(x):= H(x)-x , 那么原先的映射就是 F(x)+x。 这里我们假设优化残差映射F(x) 比优化原来的映射 H(x)容易。

这里我们首先求取残差映射 F(x):= H(x)-x,那么原先的映射就是 F(x)+x。尽管这两个映射应该都可以近似理论真值映射 the desired functions (as hypothesized),但是它俩的学习难度是不一样的。

这种改写启发于"网络层数越多,训练和测试误差越大"性能退化问题违反直觉的现象。如果增加的层数可以构建为一个恒等映射(identity mappings),那么增加层数后的网络训练误差应该不会增加,与没增加之前相比较。性能退化问题暗示多个非线性网络层用于近似identity mappings 可能有困难。使用残差学习改写问题之后,如果identity mappings 是最优的,那么优化问题变得很简单,直接将多层非线性网络参数趋0。

实际中,identity mappings 不太可能是最优的,但是上述改写问题可能帮助预处理问题。如果最优函数接近identity mappings,那么优化将会变得容易些。 实验证明该思路是对的。

F(x)+x 可以通过shortcut connections 来实现,如下图所示:



上图中的shortcut connections执行一个简单的恒等映射;既没有参数,也没有计算复杂度。

公式分析如下:

(1)需要学习的残差映射


(2)x和F的维数必须相同

如果x和F的维数不相同,则对x进行线性投影(linear projection)使用其与F的维数一致,公式如下:


5)网络架构

5.1)普通网络(Plain Network)

设计原则:

(1)对于输出特征图大小相同的层,它们的卷积拥有相同的filter个数

(2)如果输出的特征图大小减半,则filter个数乘以2,以确保每层的时间复杂度相同


5.2)残并网络(Residual Network)

在遵循普通网络设计原则的基础上,增加了shortcut connections。


6)恒等映射的重要性

6.1)平滑的正向传播


任意xl被直接正向传播到xL,xL是xl与残差相加的结果。

6.2)平滑的反向传播


7)保持最短路径尽量平滑


- 如果h(x)不是identity mapping,它将阻塞正向、反向传播,从而导致误差增加


- BN可能阻塞传播


- ReLU可能阻塞传播


我自己的理解是如果不是恒等映射,则在反向传播的时候会有系数,从而导致误差积累

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值