论文地址: Identity Mappings in Deep Residual Networks
工程代码: Github链接1 Github链接2
深度残差网络作为一族极深的网络架构在精度和收敛性方面表现良好,该论文分析了深度残差模块的传播方式并发现当跳跃连接和附加激活项使用恒等连接时,前向和后向信号都可以直接从一个模块传递到另一个模块。论文进行了一系列消融实验都证实了这些恒等连接的重要性,由此论文提出了一个新的残差单元,使得模型训练更加简单,泛化能力更强。
其可以公式化如下形式:
y l = h ( x l ) + F ( x l . W l ) y_l=h(x_l)+F(x_l.W_l) yl=h(xl)+F(xl.Wl)
x l + 1 = f ( y l ) x_{l+1}=f(y_l) xl+1=f(yl)
其中, x l x_l xl和 x l + 1 x_{l+1} xl+1是第 l l l个单元的输入和输出, F F F是一个残差函数,在ResNets中, h ( x l ) = x l h(x_l)=x_l h(xl)=xl是恒等连接, f f f是一个ReLU激活函数。
ResNets深度超过百层并且在许多识别任务上都取得了SOTA精度,它的核心思想是对恒等连接 h ( x l ) = x l h(x_l)=x_l h(xl)=xl学习附加的残差函数 F F F,这种思想通过跳跃恒等连接得以实现。
该论文中,通过在残差单元内部甚至整个网络上为建立一条直接的信息传播方式来分析深度残差网络。观察发现如果 h ( x l ) h(x_l) h(xl)和 f ( y l ) f(y_l) f(yl)都是恒等连接的话,前向和后向信号都能够直接从一个单元传播到另一个单元,而且实验表明,此时模型更加容易训练。
为了理解跳跃结构的作用,论文分析并比较了多种不同类型的 h ( x l ) h(x_l) h(xl),发现恒等连接 h ( x l ) = x l h(x_l)=x_l h(xl)=xl具有最快的训练误差下降速度和最小的训练误差,而使用缩放、门控以及1×1 卷积的跳跃连接都产生了很高的训练损失和误差。这些实验表明保持一个"clean"的信息通道对于优化来说非常重要。
为了构建这样一个恒等连接 f ( y l ) = y l f(y_l)=y_l f(yl)=yl,论文将激活函数ReLu和BN视作权重层的预激活方式而不是传统的后激活,由此产生了一种新的残差单元设计,如下图所示,基于这个单元产生的新的ResNet-101取得了更快的训练速度和更好的泛化能力。之后的实验中论文将原始的产生过拟合现象的ResNet-200进行改进,这种更深的模型也产生了更好的效果,现代深度学习在模型深度方面仍有很大的改进空间。
原始ResNets具有堆叠多个连接形状相同的模块而成的模块化架构,该论文将这些模块称为残差单元,原始的残差单元的计算公式可以表示为:
(1) y l = h ( x l ) + F ( x l , W l ) y_l=h(x_l)+F(x_l,W_l) \tag{1} yl=h(xl)+F(xl,Wl)(1)
(2) x l + 1 = f ( y l ) x_{l+1}=f(y_l)\tag{2} xl+1=f(yl)(2)
这里 x l x_l xl是第 l l l个残差单元的输入, W l = { W l , k ∣ 1 ≤ k ≤ K } W_l=\{{W_{l,k}|1 \leq k \leq K}\} Wl={Wl,k∣1≤k≤K}是和第 l l l个残差单元相关的一些列权重和变差, K K K是残差单元的网络层的数目(原始ResNets中取2或3). F F F代表了残差函数(原始ResNets中是两个 3 × 3 3 \times 3 3×3的卷积层),函数 f f f是元素相加后的操作,原始ResNets中取ReLU,函数 h h h是恒等连接即 h ( x l ) = x l h(x_l)=x_l h(xl)=xl。
若 f f f也是恒等连接即 x l + 1 ≡ y l x_{l+1}\equiv y_l xl+1≡yl,则可将Eqn.(1)代入Eqn.(2)中得到:
(3) x l + 1 = x l + F ( x l , W l ) x_{l+1}=x_l+F(x_l,W_l)\tag{3} xl+1=xl+F(xl,Wl)(3)
更一般的形式:
(4) x L = x l + ∑ i = l L − 1 F ( x i . W i ) x_L=x_l+\sum^{L-1}_{i=l}F(x_i.W_i)\tag{4} xL=xl+i=l∑L−1F(xi.Wi)(4)
对于任意更深的残差单元 L L L和任意浅层的残差单元 l l l,Eqn.4表明了这样的特性:
Eqn.4也引入了更好的后向传播特性。记损失函数为 ε \varepsilon ε,由后向传播链式法则有:
(5) ∂ ε ∂ x l = ∂ ε ∂ x L ∂ x L ∂ x l = ∂ ε ∂ x L ( 1 + ∂ ∂ x l ∑ i = l L − 1 F ( x i , W i ) ) \frac{\partial\varepsilon}{\partial x_l}=\frac{\partial\varepsilon}{\partial x_L}\frac{\partial x_L}{\partial x_l}=\frac{\partial\varepsilon}{\partial x_L}\left(1+\frac{\partial}{\partial x_l}\sum^{L-1}_{i=l}F(x_i,W_i) \right)\tag{5} ∂xl∂ε=∂xL∂ε∂xl∂xL=∂xL∂ε(1+∂xl∂i=l∑L−1F(xi,Wi))(5)
Eqn.5表明梯度 ∂ ε ∂ x l \frac{\partial\varepsilon}{\partial x_l} ∂xl∂ε能够解耦为两部分,一个是 ∂ ε ∂ x L \frac{\partial\varepsilon}{\partial x_L} ∂xL∂ε,表示信息不通过权重层直接传播,另一部分 ∂ ε ∂ x L ( 1 + ∂ ∂ x l ∑ i = l L − 1 F ) \frac{\partial\varepsilon}{\partial x_L}\left(1+\frac{\partial}{\partial x_l}\sum^{L-1}_{i=l}F\right) ∂xL∂ε(1+∂xl∂∑i=lL−1F)通过权重层进行传播,前者能够保证信息直接后向传播给更浅的单元 l l l。Eqn.5也表明在一个mini-batch中梯度 ∂ ε ∂ x l \frac{\partial\varepsilon}{\partial x_l} ∂xl∂ε不可能小时,因为不可能所有样例的 ∂ ∂ x l ∑ i = l L − 1 F \frac{\partial}{\partial x_l}\sum^{L-1}_{i=l}F ∂xl∂∑i=lL−1F都为-1,这就表明即使权重任意小,都不会出现梯度消失的现象。
讨论:Eqn.4和Eqn.5表明后向和前向的信号都可以直接从一个单元传递到另一个单元,Eqn.4的基础是两个恒等连接:
下图所示的灰色箭头表示的信息流不附带任何操作也就是"clean"的时候上面两个条件成立,论文接着会分别研究这两个条件的影响。
通过一个简单的修改 h ( x l ) = λ l x l h(x_l)=\lambda_lx_l h(xl)=λlxl来代替恒等快速连接得到:
(6) x l + 1 = λ l x l + F ( x l , W l ) x_{l+1}=\lambda_lx_l+F(x_l,W_l)\tag{6} xl+1=λlxl+F(xl,Wl)(6)
λ l \lambda_l λl是调节标量,通过方程的递归可以得到类似于Eqn.4的公式 x L = ( ∏ i = l L − 1 λ i ) x l + ∑ i = l L − 1 ( ∏ j = i + 1 L − 1 λ j ) F ( x i , W i ) x_L=\left(\prod^{L-1}_{i=l}\lambda_i\right)x_l+\sum^{L-1}_{i=l}\left(\prod^{L-1}_{j=i+1}\lambda_j\right)F\left(x_i,W_i\right) xL=(∏i=lL−1λi)xl+∑i=lL−1(∏j=i+1L−1λj)F(xi,Wi),简化之后如下:
(7) x L = ( ∏ i = l L − 1 λ i ) x l + ∑ i = l L − 1 F ^ ( x i , W i ) x_L=\left(\prod^{L-1}_{i=l}\lambda_i\right)x_l+\sum^{L-1}_{i=l}\hat{F}\left(x_i,W_i\right)\tag{7} xL=(i=l∏L−1λi)xl+i=l∑L−1F^(xi,Wi)(7)
其中 F ^ \hat{F} F^将缩放标量融入了残差函数之中,与Eqn.5相同,后向传播公式可以表示为:
(8) ∂ ε ∂ x l = ∂ ε ∂ x L ( ( ∏ i = l L − 1 λ i ) + ∂ ∂ x l ∑ i = l L − 1 F ^ ( x i , W i ) ) \frac{\partial\varepsilon}{\partial x_l}=\frac{\partial\varepsilon}{\partial x_L}\left(\left(\prod^{L-1}_{i=l}\lambda_i\right)+\frac{\partial}{\partial x_l}\sum^{L-1}_{i=l}\hat{F}(x_i,W_i) \right)\tag{8} ∂xl∂ε=∂xL∂ε((i=l∏L−1λi)+∂xl∂i=l∑L−1F^(xi,Wi))(8)
和Eqn.5的不同之处在于Eqn.8中第一部分也就是不经过权重层直接传播的过程通过 ∏ i = l L − 1 λ i \prod^{L-1}_{i=l}\lambda_i ∏i=lL−1λi来进行调节,对于特别深度的网络(也就是 L L L特别大),如果对于所有的 i i i有 λ i > 1 \lambda_i>1 λi>1,则这个调节因子会有指数型增长;如果对于所有的 i i i有 λ i < 1 \lambda_i<1 λi<1,则这个调节因子会特别小以至为0,这就会阻断捷径的后向传播信号并且强制它通过权重层,这会导致训练时优化困难。
通过以上的分析,Eqn.3中原始的恒等跳跃结构被简单的缩放 h ( x l ) = λ l x l h(x_l)=\lambda_lx_l h(xl)=λlxl代替,如果跳跃结构 h ( x l ) h(x_l) h(xl)表示更加复杂的转换(门控或者1x1卷积)且Eqn.8中的第一个参数变为 ∏ i = l L − 1 h i ′ \prod^{L-1}_{i=l}h'_i ∏i=lL−1hi′,其中 h ′ h' h′是 h h h的倒数,这个成绩同样会阻碍信息的传播妨碍训练过程。
论文在CIFAR-10上使用原始的中的ResNet-110进行实验,这个极深的ResNet-110含有54个2层残差单元(由3×3的卷积层组成),这对优化造成了一定的挑战。网络的实现细节与原始结构相同的相同。为了避免随机变量的影响,论文中的结果为在CIFAR上每个框架运行5次得到的准确率的中位数。
虽然在上述分析中,f为恒等映射,但是该节的实验中都是基于f= ReLU的。在测试集上我们的原始ResNet-110的错误率为6.61% ,与其他变形(如上图)的比较得到如下表所示的结果:
总结如下:
Constant scaling对于所有的捷径连接,我们设置λ=0.5。我们进一步考虑F 的两种缩放情况:
前一种情况不能很好的收敛;后一种可以收敛,但是测试错误率比原始的ResNet-110高得多。下图显示了训练错误率比原始ResNet-110的要高,表明了当捷径信号被缩放时,优化变得更加困难。
Exclusive gating根据采用门控机制的Highway Networks,文中设计一个门控函数 g ( x ) = σ ( W g x + b g ) g(x)=σ(W_gx+b_g) g(x)=σ(Wgx+bg)
表示由权重 W g W_g Wg 、偏置项 b g b_g bg以及 s i g m o i d sigmoid sigmoid函数 σ ( x ) = 1 1 + e − x σ(x)=\frac{1}{1+e^{-x}} σ(x)=1+e−x1组成的变换。在一个卷积网络中 g ( x ) g(x) g(x)通过 1×1的卷积层实现。门控函数通过元素乘法来调节信号。
论文对“exclusive”门控进行研究—— F F F
由 g ( x ) g(x) g(x)进行缩放,捷径连接由 1 − g ( x ) 1−g(x) 1−g(x)进行缩放。论文发现偏置项 b g bg bg的初始化对于门控模型的训练是至关重要的,论文设置 b g bg bg的初始值范围为0到-10,递减量为1,然后通过cross-validation来执行超参数搜索。然后使用最佳值(这里为−6)来在训练集上进行训练,测试错误率为 8.70%,这仍然落后于原始的ResNet-110,训练曲线如下图所示。注意到当 b g bg bg的初始化不合理时,exclusive gating网络并不能收敛到一个好的结果。
Exclusive gating机制的影响是双面的。当 1 − g ( x ) 1−g(x) 1−g(x)接近1时,门控捷径连接接近于恒等映射,这有助于信息的传递;但是这种情况下,g(x) 接近于0,从而阻碍了函数F。为了避免捷径连接中门控函数的影响,论文在接下来研究一个non-exclusive的门控机制。
Shortcut-only gating这种情况下,函数F不进行缩放,只有捷径连接由 1 − g ( x ) 1−g(x) 1−g(x)进行缩放。偏置项 b g bg bg的初始值同样很重要。当 b g bg bg的初始值为0时(即1−g(x)为 0.5),网络收敛到一个很差的结果 12.86%,这同样产生了很高的训练错误率,如下图所示:
&emsp当 b g bg bg的初始值是负很多的数(例如, −6)时, 1 − g ( x ) 1−g(x) 1−g(x)的值接近于1,捷径连接接近于恒等映射。因此,结果(6.91%)与原始ResNet-110的结果很接近。
1×1 convolutional shortcut接下来使用 1×1 的卷积捷径连接替代恒等连接进行实验。这种方案在原始论文中使用34层的ResNet(16个残差单元),展现除了很好的结果,表明了1×1 卷积捷径连接是有效果的。但是我们发现当残差单元有很多时,这并不能起到特别好的效果。当使用1×1 的卷积捷径连接时,110 层的ResNet的结果很差(12.22%)。同样的训练误差也变得很高,如下图所示。当堆叠了如此多的残差单元时(ResNet-110 中有54个),即便是最短的路径可能也会对信号的传播造成阻碍。当在ImageNet上使用1×1卷积捷径连接的ResNet-110时,出现了类似的结果。
Dropout shortcut最后在恒等捷径连接上添加Dropout(比率为0.5) 来进行实验,网络并没有收敛到一个很好的结果。Dropout在统计学上相当于给捷径连接强加了一个λ为0.5的缩放,这和0.5的constant scaling很类似,同样的阻碍了信号的传播。
如变形图中灰色箭头所示,捷径连接是信息传递最直接的路径。 捷径连接中的操作 (缩放、门控、1×1 的卷积以及 dropout) 会阻碍信息的传递,以致于对优化造成困难。
值得注意的是1×1的卷积捷径连接引入了更多的参数,本应该比恒等捷径连接具有更加强大的表达能力。事实上,shortcut-only gating 和1×1的卷积涵盖了恒等捷径连接的解空间(即,他们能够以恒等捷径连接的形式进行优化)。然而,它们的训练误差比恒等捷径连接的训练误差要高得多,这表明了这些模型退化问题的原因是优化问题,而不是表达能力的问题。
以上的实验内容验证了Eqn.5和Eqn.8中的分析,两个公式都是基于连接后的激活函数 f f f为恒等连接的假设。但是在上述实验中f是以原始论文中的ReLU设计的,因此,Eqn.5和8只是以上实验的估计。接下来论文研究了激活函数 f f f的影响。
通过重新设计激活函数(ReLU和/或BN)来使得 f f f为一个恒等映射。原始残差连接的形状如上图所示 — BN在每一个权重层之后使用,之后再接一个ReLU,在最后的元素相加之后还有最后一个ReLU(即f= ReLU)。下图还展示了论文研究的其他形式。
使用原始论文中的ResNet-110和164层瓶颈结构(称为ResNet-164)来进行实验。瓶颈残差单元包含一个 1 × 1 1×1 1×1的层来降维,一个 3 × 3 3×3 3×3的层,还有一个 1 × 1 1×1 1×1的层来恢复维度。正如原始论文中所述,它的计算复杂度和包含两个3×3的层的残差单元相同,ResNet-164的基本结构在CIFAR-10上具有很好的结果如下图所示,还包括其他变形的错误率:
[b].BN after addition:在将 f f f调整至恒等映射之前,相反,在加法后添加一个BN层。这样 f f f就包含了BN和ReLU。这样的结果比基本结构的结果要差很多,目前的BN层改变了流经捷径连接的信号,并阻碍了信息的传递,这从训练一开始降低训练误差的困难就可以看出,如下图所示:
[c].ReLU before addition:使得 f f f成为恒等映射的一个天真的选择就是将 ReLU 移到加法之前。这导致了 F F F的输出为非负,然而一个“残差”函数的输出应该是(−∞,+∞) 的。造成的结果就是,前向传递的信号是单调递增的。这会影响表达能力,结果也变得更差了。研究者希望残差函数的值是在区间(−∞,+∞)中的,这个条件可以由包括以下的残差单元来实现
Post-activetion or pre-activation?:在Eqn.1和2表示的原始设计中,激活函数 x l + 1 = f ( y l ) x_{l+1}=f(y_l) xl+1=f(yl)会影响下一个残差单元前后向两个传播路径: y l + 1 = f ( y l ) + F ( f ( y l ) , w l + 1 ) y_{l+1}=f(y_l)+F(f(y_l),w_{l+1}) yl+1=f(yl)+F(f(yl),wl+1)。接下来论文设计了一个不对称结构其中 y ^ \hat{y} y^只对 F F F路径有影响: y l + 1 = y l + F ( f ^ ( y l ) , W l + 1 ) y_{l+1}=y_{l}+F(\hat{f}(y_l),W_{l+1}) yl+1=yl+F(f^(yl),Wl+1),即:
(9) x l + 1 = x l + F ( f ^ ( x l ) , W l ) x_{l+1}=x_{l}+F(\hat{f}(x_l),W_{l})\tag{9} xl+1=xl+F(f^(xl),Wl)(9)
很容易发现Eqn.9与Eqn.4相似,因此能够得到与Eqn.5类似的反向方程,对于如 Eqn.9所示的新的残差单元,新的附加激活函数变成了一个恒等映射,这个设计表明,如果一个新的附加激活 f ^ \hat{f} f^是非对称的,这就等同于将 f ^ \hat{f} f^作为下一个残差单元的预激活(pre-activation)项,如下图所示:
后激活(post-activation)与预激活(pre-activation)的区别是由元素级加法的存在而造成的。一个含有N层的平铺网络,包含有N−1个激活层(BN/ReLU),如何考虑它们是否是后激活或者预激活都不要紧,但是对附加的分支层来说,激活函数的位置就变得很重要了。
论文使用以下两种设计进行实验:
实验表明只使用ReLU预激活的结果与原始ResNet-110/164的很接近。这个ReLU层不与BN层连接使用,因此无法共享BN所带来的好处。
然而,当BN和ReLU都用在预激活上,结果得到了很可观的提高,上图展示了不同结构的结果:
论文发现预激活的影响具有两个方面:
Ease of optimization这个影响在训练1001层ResNet时尤为显著。下图展示了训练和测试曲线。使用原始结构时,训练错误率在一开始下降的特别慢。对于f=ReLU,如果信号是负的时候会造成一定的影响,而当残差单元很多时,这个影响将会变得尤为突出,所以Eqn.3(Eqn.5也是)并不是一个好的估计。另一方面,当 f f f时一个恒等映射时,信号在两个单元之间能够很直接的进行传递,1001层网络的训练误差能够降低的特别快,它同样达到了所有我们研究的模型中最低的误差,表明了在优化上的成功。
我们同样发现如果ResNet层数不多如下图所示的164层),f=ReLU 的影响并不是很强烈。在训练初期,训练曲线似乎收到了一点影响,但是马上回归到良好的状态。通过监控模型的响应,观测到,这是因为在经过一定的训练后,权重被调整到使得 Eqn.1中的 y l y_l yl总是大于0的,因 此 f 此f 此f并不会截断它(由于先前ReLU的存在, x l x_l xl总是非负的,因此只有当F是非常负的时候,y_l才会小于0)。当时在使用1000层的模型时,这种截断就会更加频繁。
Reducing overfitting使用这个预激活单元的另一个影响就是正则化,如上图所示所示。预激活版本的模型达到收敛时产生了稍高的训练损失,但是却只产生了最低的的测试错误率。这个现象在CIFAR-10和100上的ResNet-110,ResNet-110(1-layer)以及ResNet-164上都观测到了,这可能是由BN的正则化效应引起的。在原始残差单元中,尽管BN对信号进行了标准化,但是它很快就被合并到捷径连接上,组合的信号并不是被标准化的。这个非标准化的信号又被用作下一个权重层的输入。恰恰相反的是,在预激活版本的模型中,权重层的输入总是标准化的。
Comparisons on CIFAR-10/100:下图的是结果是在 CIFAR-10/100上比较了目前最好的方法,论文的模型取得了非常有竞争性的结果,从结果中也发现对于这些小数据集,并不需要特意剪裁网络的宽度和深度,也不需要使用正则化技术(例如dropout)来保证模型的效果,只通过一个简单却有效的方式——加深网络,这些结果展示了推进深度极限的潜力。
Comparisons on ImageNet:1000类的ImageNet数据集上的实验结果。实验使用含有跳跃连接的ResNet-101在ImageNet上进行了初步的实验,也同样遇到了优化难题。在第一个学习率上,这些非恒等捷径连接网络的训练误差显然比原始的ResNet高得多,由于资源有限,实验停止。但是研究者完成了“BN after addition”版本的ResNet的实验,这个模型的单一裁切(single-crop)(224×224)的验证错误率为24.6%/7.5%,而原始ResNet-101的为23.6%/7.1%。
上图展示了ResNet-152和 ResNet-200的结果,所有训练从头开始。注意到原始的ResNet论文中在训练模型时,使用了图像较短边s∈[256,480]的尺寸抖动(scale jittering),所以当s=256时,在224×224的裁切图像的测试上加了负的偏置。相反的,在所有原始的以及我们提出的ResNet上,我们从s=320的图像中裁切一个单一的320×320图像进行测试。即使ResNets是在更小的裁切图像上进行训练的,但是由于ResNets的全卷积设计,在更大的裁切图像上它们也能够很容易的进行测试。这和Inception v3使用的299×299的尺寸很接近,因此是一个更公平的比较。
原始 ResNet-152在320×320裁切图像上的top-1错误率为21.3%,而我们的与激活版本的错误率为21.1%。在ResNet-152上的增益并不是很大,因为这个模型并没有表现出很严重的泛化困难。然而原始的ResNet-200的错误率比ResNet-152的要高,为21.8%。但是我们发现原始 ResNet-200 的训练误差比ResNet-152的更低,表明受到了过拟合的问题。
计算代价:模型的计算复杂度和深度呈线性关系(所以1001层网络的复杂度为100层网络的近10倍)。在CIFAR上,ResNet-1001使用2块GPU花费了27个小时的训练时间;在ImageNet上,ResNet-200使用8块GPU花费了将近3周的训练时间。
本文研究了深度残差网络的连接机制背后的传播方式。推导表明了恒等捷径连接和恒等附加激活对于信息的顺利传播是至关重要的。“消融”实验(Ablation experiments)展示了和推导一致的现象。同时也提出1000层的深度网络,能够容易的训练并达到了更好的准确率。
欢迎扫描二维码关注微信公众号 深度学习与数学 [每天获取免费的大数据、AI等相关的学习资源、经典和最新的深度学习相关的论文研读,算法和其他互联网技能的学习,概率论、线性代数等高等数学知识的回顾]