研究与解读丨残差网络解决了什么,为什么有效?
本文授权转载自知乎,作者丨LinT
1
动机: 深度神经网络的“两朵乌云”
2
残差网络的形式化定义与实现
既然神经网络不容易拟合一个恒等映射,那么一种思路就是构造天然的恒等映射。假设神经网络非线性单元的输入和输出维度一致,可以将神经网络单元内要拟合的函数 拆分成两个部分,即:
其中 是残差函数。在网络高层,学习一个恒等映射
即等价于令残差部分趋近于0,即 。
残差单元可以以跳层连接的形式实现,即将单元的输入直接与单元输出加在一起,然后再激活。因此残差网络可以轻松地用主流的自动微分深度学习框架实现,直接使用BP算法更新参数[1]。
3
残差网络解决了什么,为什么有效?
残差网络在图像领域已然成为了一种主流模型,虽然这种网络范式的提出是为了解决网络退化问题,但是关于其作用的机制,还是多有争议。目前存在几种可能的解释,下面分别列举2016年的两篇文献和2018年的一篇文献中的内容。
3.1 从前后向信息传播的角度来看
何恺明等人从前后向信息传播的角度给出了残差网路的一种解释[3]。考虑式(5) 这样的残差块组成的前馈神经网络,为了讨论简便,暂且假设残差块不使用任何激活函数,即
考虑考虑任意两个层数 ,递归地展开(5) (6),
可以得到:
根据式 ,在前向传播时,输入信号可以从任意低层直接传播到高层。由于包含了一个天然的恒等映射,一定程度上可以解决网络退化问题。这样,最终的损失 对某低层输出的梯度可以展开为:
或展开写为
根据根据式 ,损失对某低层输出的梯度,被分解为了两项,前一项 表明,反向传播时,错误信号可以不经过任何中间权重矩阵变换直接传播到低层,一定程度上可以缓解梯度弥散问题(即便中间层矩阵权重很小,梯度也基本不会消失)。
综上,可以认为残差连接使得信息前后向传播更加顺畅。
* 加入了激活函数的情况的讨论(实验论证)请参见[3]。
3.2 集成学习的角度
Andreas Veit等人提出了一种不同的视角[2]。他们将残差网络展开,以一个三层的ResNet为例,将得到下面的树形结构:
在标准前馈神经网络中,随着深度增加,梯度逐渐呈现为白噪声(white noise)。
4
自然语言处理中的残差结构
与图像领域不同的是,自然语言处理中的网络往往“宽而浅”,在这些网络中残差结构很难有用武之地。但是在谷歌提出了基于自注意力的Transformer架构[5],特别是BERT[6]出现以后,自然语言处理也拥有了“窄而深”的网络结构,因此当然也可以充分利用残差连接,来达到优化网络的目的。事实上,Transformer本身就包含了残差连接,其中编码器和解码器中的每一个子模块都包含了残差连接,并使用了Layer Normalization。
5
总结与扩展
残差网络真可谓是深度学习的一把利器,它的出现使得更深的网络训练成为可能。类似残差网络的结构还有Highway Network[7],与残差网络的差别在于加入了门控机制(注意它和ResNet是同时期的工作),文献[4]中也对Highway Network进行了讨论,值得一读;现在广泛使用的门控RNN,我认为与Highway Network有异曲同工之妙,可以认为是在时间维上引入了门控的残差连接;在残差网络中使用的跳层连接,在自然语言处理中也有相当多的应用,比如Bengio的神经语言模型[8]、文本匹配模型ESIM[9]等,区别在于这些工作中跳层连接仅仅将不同层次的特征拼接在一起(而不是相加),达到增加特征多样性、加快训练的目的。
P.S. 原本希望在这篇文章里面展开讲讲更多的细节,但是个人水平有限,加上知乎的文章篇幅限制,只能大概展开到这种程度。本文是笔者根据论文梳理的自己的理解,如果有谬误请指出。
参考资料:
9. Enhanced LSTM for Natural Language Inference
END
2019-07-18
2019-07-06
2018-07-04
2020-08-09