残差连接
网络越深,本该越强,但早年一深就训不动——因为反向传播时,梯度要穿过每一层、一路连乘小于 1 的数,传到底层就几乎归零(梯度消失)。残差连接(ResNet 的核心)加了一条“跳线”:每个模块的输出 = 输入 + 这个模块学到的修正。反向求导时,这条跳线给梯度留了一条直通的高速路(导数里多了个 +1),于是梯度怎么都不会被乘没。正因如此,几百上千层的网络才训得起来,Transformer 里也到处是它。拖动深度,对比两边梯度传到底层还剩多少。
每个色块是一层,颜色越亮表示反向传播时梯度传到这一层还越强。梯度从顶部(输出)往下传到底部(输入)。左边普通堆叠,右边每层带一条绿色跳线。
普通深层网络
残差网络(带跳线)
普通:梯度连乘消失
每层梯度乘一个小于 1 的数,层数一多,传到底层就趋近于 0,底层学不动。
残差:+1 高速路
跳线让导数里多了个 +1,梯度有一条不被衰减的直通路径,再深也传得下去。
所以能更深
ResNet 把网络从几十层推到上百层;Transformer 每个子层也都有残差。