网站建设公司招人,中铁建设集团门户员工登录,搜索引擎营销图片,培训心得体会总结ResNet论文学习 引言Deep Residual Learning 深度残差学习网络结构 总结代码复现 引言
深度网络自然地以端到端的多层方式集成低/中/高级特征和分类器#xff0c;特征的“级别”可通过堆叠层的数量来丰富
随着网络层数加深#xff0c;提取的特征越强#xff0c;但是
网络… ResNet论文学习 引言Deep Residual Learning 深度残差学习网络结构 总结代码复现 引言
深度网络自然地以端到端的多层方式集成低/中/高级特征和分类器特征的“级别”可通过堆叠层的数量来丰富
随着网络层数加深提取的特征越强但是
网络层数越深就一定性能越好吗答案是否定的
深层网络存在的问题 梯度消失/梯度爆炸 这个问题已经通过 normalized initialization 和 intermediate normalization layers 得到了很大程度的解决这使得具有数十层的网络能够开始收敛随机梯度下降(SGD)与反向传播 网络退化 随着网络层数的增加准确率趋于饱和然后迅速下降。这说明并不是所有的网络结构都同样容易优化。
为了解释这一现象作者考虑了一个较浅的网络结构及其对应的更深版本后者在前者的基础上增加了更多的层。
理论上对于这个更深的网络可以构造一个解新增加的层执行 identity mapping 即直接将输入传递到输出而其他层则复制自较浅网络中已经学习到的层就是把较浅的网络搬过来。这样构造出的解应该能使得更深的网络不会比其较浅的对应网络有更高的训练误差。
然而实验显示目前使用的优化算法似乎无法找到与这个构造解相当好或更好的解或者在合理的时间内无法找到这样的解。这意味着尽管理论上更深的网络不应该有更差的性能但在实际优化过程中却遇到了困难。这也是引入残差学习ResNet的初衷之一即通过学习残差来缓解这种优化难题。
为了解决深度神经网络训练中的退化问题作者提出了深度残差学习框架。
在这个框架中不再期望网络的几层直接拟合一个 underlying mapping而是让这些层去拟合一个残差映射(residual mapping)。
具体而言
假设 underlying mapping 是 H ( x ) \mathcal{H}(x) H(x)那么让堆叠的非线性层去拟合另一个映射 F : H ( x ) − x \mathcal{F}:\mathcal{H}(x)-x F:H(x)−x那么原始的映射就变成了 F ( x ) x \mathcal{F}(x)x F(x)x
假设优化残差映射 (residual mapping) 比优化原始的、未引用的映射更容易。 图中展示了残差学习的一个基本构建块。右侧的分支直接将输入 x x x 通过一个“快捷连接”传递到输出这就是所谓的恒等映射identity mapping。
而 F ( x ) \mathcal{F}(x) F(x) 表示的是一个由 权重层和非线性激活函数例如ReLU组成的映射
其目的是学习输入 x x x 和输出 H ( x ) \mathcal{H}(x) H(x) 之间的残差即 F ( x ) : H ( x ) − x \mathcal{F}(x) : \mathcal{H}(x) - x F(x):H(x)−x。
图中所示的构建块的输出是通过将 F ( x ) \mathcal{F}(x) F(x) 和 x x x 相加得到的即 F ( x ) x \mathcal{F}(x) x F(x)x这里的 F ( x ) \mathcal{F}(x) F(x) 是通过两个权重层和非线性激活函数ReLU构成的子网络来学习的。
这样设计的好处是如果 F ( x ) \mathcal{F}(x) F(x) 的理想输出是0即不存在残差那么 shortcut connection 可以使得恒等映射成为可能即直接输出 x x x这对于网络训练的稳定性和加速有很大帮助。
Deep Residual Learning 深度残差学习
网络结构 总结
残差连接最核心的地方是 Identity Mapping by Shortcuts
就是说 resnet 是结合了 identify mapping 和 shortcut connection
shortcut connection 是那些跳过一个或多个层的连接。在本文中 shortcut connection 只是执行 identify mapping其输出被添加到堆叠层的输出中。
identify mapping 连接既不增加额外的参数也不增加计算复杂度。整个网络仍然可以通过反向传播的SGD进行端到端训练。
下面这个残差块中旁边的分支首先是一个 shortcut connection而在这个 shortcut connection 之上执行了 identify mapping 将输入恒等映射到输出端并与 underlying mapping 进行相加
代码复现