I-概念
起源
残差网络提出于论文Deep Residual Learning for Image Recognition,论文中发现更深层的网络比浅层网络的表现还要差,如图。
随着网络层数的增加,网络发生了退化的现象:随着网络层数的增多,训练集loss逐渐下降,然后趋于饱和,再增加网络深度时,训练集loss反而会增大。与过拟合不同,因为在过拟合中训练loss是一直减小的。
这显然不是我们想要的结果,因此提出了残差网络的思想。
定义
残差网络的残差网络的基本组成单元是残差块,残差块结构如下图,残差块分成两部分直接映射部分和残差部分。通常,每个卷积层之后都有一个BN层和非线性激活函数(如ReLU)。
在每个残差块中,输入通过跳跃连接直接添加到输出。这意味着网络可以学习残差函数,即输入的变化或残差。
将期望的底层输出表示为H(X),x表示直接映射部分即图中右侧曲线,F(X)表示残差部分,一般由两个或多个卷积层组成即图中左侧包含weight layer部分。一个残差块可以表示为
H
(
x
)
=
F
(
x
)
+
x
⇒
F
(
x
)
=
H
(
x
)
−
x
H(x)=F(x)+x\Rightarrow F(x)=H(x)-x
H(x)=F(x)+x⇒F(x)=H(x)−x
也可以表示为
x
l
+
1
=
x
l
+
F
(
x
l
,
W
l
)
x_{l+1}=x_l+F(x_l,W_l)
xl+1=xl+F(xl,Wl)
对于一个更深的层L,与层l的关系可以表示为
x
L
=
x
l
+
∑
i
=
l
L
F
(
x
i
,
W
i
)
x_{L}=x_l+\sum_{i=l}^LF(x_i,W_i)
xL=xl+i=l∑LF(xi,Wi)
可以看出层L可以表示为任意一个比它浅的层l和它们之间的残差部分之和。
II-优势
-
缓解梯度消失问题:在深层神经网络中,梯度消失是一个常见的问题,导致较深层的权重更新很小,难以训练。通过引入残差连接,残差网络允许网络直接学习残差函数,使得梯度能够更轻松地传播到较早的层。这缓解了梯度消失问题,使得更深的网络可以更容易地训练和优化。
根据BP算法中使用链式法则,损失函数L关于xl的梯度可以表示为
∂ L ∂ x l = ∂ L ∂ x L ∂ x L ∂ x l = ∂ L ∂ x L ( 1 + ∂ ∂ x L ∑ i = l L F ( x i , W i ) ) \frac{\partial L}{\partial x_l}=\frac{\partial L}{\partial x_L}\frac{\partial x_L}{\partial x_l}=\frac{\partial L}{\partial x_L}(1+\frac{\partial}{\partial x_L}\sum_{i=l}^LF(x_i,W_i)) ∂xl∂L=∂xL∂L∂xl∂xL=∂xL∂L(1+∂xL∂i=l∑LF(xi,Wi))
残差梯度不会巧合的全部为-1,因此基本可以避免梯度消失问题。 -
提升网络的表达能力:深层网络通常具有更强大的表达能力,能够学习更复杂的特征和模式。然而,传统的深层网络在网络层数增加时可能会出现性能饱和或退化的问题。通过残差连接,ResNet能够更有效地捕捉输入和输出之间的差异,使得网络可以更好地适应复杂的数据分布,提升了网络的表达能力。
-
减少参数数量和计算复杂度:由于引入了跳跃连接,ResNet可以通过恒等映射直接传递部分输入信息,减少了网络的参数数量和计算复杂度。