一、背景
该部分引出的第一个观点是,神经网络的性能并不是一味的随着深度的增加逐渐提升,在深度到达一定程度后,性能便开始下降。
那如何解决这个问题那?考虑一个浅层网络和一个通过向浅层网络增加更多层实现的深层网络,有一种构造深层网络的方案:添加的层是恒等映射(恒等映射亦称恒等函数,是一种重要的映射,对任何元素,象与原象相同的映射。对于映射 ,若它的定义域 和 值域 相等,并对任意 ,都有 ,则称 为恒等映射),其它层从浅层拷贝而来。这个构造存在表明更深层次的模型不应该会比它浅的模型产生更大的训练误差。但是通过实验发现,目前的解决方法找不到比构造的深层网络更好的解(或者在合理的时间内找到)。
He通过引入深度残差框架来解决这个问题。并非期望少量堆叠的层拟合出期望的映射,而是让这些层去拟合一个残差映射。形式化的,假设期望的映射为 ,我们令堆叠的非线性层拟合另外一种映射:。原始的映射变成了 。我们假定优化残差映射比优化原始的、未引用的映射要简单的多。极端的说,如果一个恒等映射是最优的,把残差 置零要比根据一个堆叠的非线性层去拟合一个恒等映射简单的多。或者说最优的映射接近恒等映射,也是很容易学习一个较为简单的 。
可以通过在前向传播使用快捷连接来实现。快捷连接在本文中实现了恒等映射,它们的输出加到了堆叠层的输出,如图2所示。恒等快捷连接既不增加额外参数也不增加计算复杂性。整个网络仍然可以通过SGD实现端到端的训练。在一些视觉任务上的实验表明残差学习方法可以从加深的网络上获益,而普通的网络是不能的(也就是说,网络深度可以无限加深,但需要一些手段来保证加深的网络可以给训练带来好的效果)。
二、相关工作
残差表示。没有看懂,但是主旨是在说问题的表示方法很重要,可以决定问题的优化难易程度。
快捷连接。快捷连接方法该文并非首次使用,只不过该文使用的快捷连接无参数需要学习,且信息都是可以传递的。
三、深度残差学习
3.1、残差学习
令 是需要少量堆叠层需要拟合的映射, 表示堆叠层的输入。如果假定多个非线性层可以逐渐逼近复杂函数,则等价于假设它们能逐渐逼近残差函数,也就是 。所以,不是期望堆叠层可以近似 ,而是显示的让对叠层拟合残差函数:,原始映射变成了 。虽然这两种形式都应该能够渐近逼近所需的函数,但是学习的难易程度是不同的(也就是说,学习残差映射相比学习原始映射要容易的多,所以更换问题的表示形式很重要)。
实际情况,恒等映射一般不可能是最优的映射,但问题的重新表示有助于问题的预处理。如果最优函数更加接近一个恒等映射,相比于学习一个新的函数,对于优化器来说很容易找到一个关于恒等映射的扰动。通过实验发现学习到的残差函数一般具有很小的响应,表明恒等映射提供了合理的预处理。
3.2、通过快捷连接的恒等映射
将残差学习应用到每个少量堆叠的层,构建块如图2所示。构建块定义如下:
(1)
和 是堆叠层的输入和输出向量。 表示要学习的残差映射。 通过快捷连接和逐元素的相加来实现。相加之后又进行了一次非线性操作(即 ),如图2所示。
值得注意的是,残差映射一般至少需要包含两层网络,只有单层网络的残差映射,则(1)式相当于一个线性映射,残差学习无法给学习性能带来任何改善。
公式(1)不仅适用于全连接层,也适用于卷积层。在卷积层的情况下,逐元素相加是作用在两个特征映射的每个通道上,比如有16个通道,则将 中的每个通道和 中的每个通道进行相加,最后输出还是16个通道。
3.3、网络结构
基础网络。我们的基础网络(图3,中间)主要是受VGG设计哲学的启发。卷积层一般都有 的核并遵循两个简单的设计原则:
1、对于尺寸相同的输出特征映射,其卷积层有相同数量的过滤器;
2、特征映射尺寸减半,核的数量加倍,为的是保持每层的时间复杂度。
残差网络。原文图太大,仅截取了关键部分,最左边是VGG19,中间部分是基础网络,最右边是ResNet。需要注意的是ResNet在特征映射维度发送变化时(虚线处),快捷连接是如何保持维度相等的,做法有两种,其中一种是利用 卷积来实现。
四、总结
这部分不是原文内容,谈谈自己最原文的理解。这篇文章将残差的概念引入进来,动机便是网络深度增加了,性能反而下降了。为了保持深度增加,性能也会增加这一深度学习中的神话,作者从理论角度分析了引入残差的必要性:从头学习一个映射要比学习恒等映射与残差映射的和复杂的多。并假设原映射和恒等映射比较接近,这样,残差块部分仅需要学习一个小而简单的映射,而学习一个简单的函数要比学习一个复杂的函数容易的多。