残差网络原理及作用

残差网络要解决的问题是较深的神经网络很难训练的问题,较深的神经网络在梯度反向传播的时候梯度之间的相关性会越来越差,也就是初始层的权重得不到有效的更新,可能会存在退化问题。或者另一方面的说,深层网络容易出现梯度消失和梯度爆炸的问题,神经网络反向传播的时候需要有一个合理的偏导数,如果偏导数接近于0或者大于1的情况,由于链式法则的存在,连乘会导致参数w无法得到更新或者变成一个很大的数。

残差快的数学模型如上,残差网络与此前网络最大的不同之处是多了一条自身的捷径分支,正是因为这一个分支的存在,使网络在反向传播的时候,损失可以通过这条捷径直接传递到更前的网络,从而减缓网络退化的问题,也就是使深层网络训练更加可靠。核心为,残差处理后的层获得的信息不比之前的层少。

为什么是$f(x)+x$ ?残差网络的发明者对多种残差结构进行了实现,结果发现还是直接+x的效果比较好,而且,残差网络并没有增加新的参数,只是多了一步加法,相对而言计算量也没有增加。

前置归一化(Pre-Norm)和后置归一化(Post-Norm)

归一化和残差连接通常由两种方式实现,分别为前置和后置:
$$
Input→pmb_{LayerNorm}→Attention/MLP→pmb_{Residual Connection}
Input→Attention/MLP→pmb_{Residual Connection}→pmb_{LayerNorm}
$$
原版Transformer框架中,使用的是后置归一化,也就是上图第二种,但当前以GPT系列为主的大模型,前置归一化是普遍的选择,因为前置归一化相对后置归一化有部分优势:

  • 适合训练深层模型,在深层网络中,残差连接会导致前面层的梯度衰减或爆炸,前置归一化能够在进入子层(Atten或MLP)之前对输入进行归一化,确保梯度分布更稳定,缓解梯度问题
  • 残差信号增强,前置归一化让残差连接的对镜更直接,原始输入信号能更清晰地传递到后续层,减少梯度退化
  • 减少对学习率调整的敏感性,前置归一化的训练对超参数的选择更加鲁棒,模型更容易收敛
  • 更好的优化效率,使用前置归一化时,模型在训练初期收敛更快,因为它减少了前几层梯度传播中的不稳定性。

人生如逆旅,我亦是行人。
——苏轼《临江仙·送钱穆父》