Skip Connection

Skip Connection

Skip Connectionとは

Skip Connection(スキップ接続、残差接続とも呼ばれる)は、ニューラルネットワークの層をバイパスして情報を直接伝達する接続構造です。入力をいくつかの層を飛ばして出力に加算する仕組みにより、非常に深いネットワークの学習を可能にします。ResNetで初めて体系的に導入され、現在ではディープラーニングの最も基本的な設計パターンの一つとなっています。

表:Skip Connectionの要点まとめ
ひとことで言うと層を飛び越えて情報を直接届ける接続。残差結合とほぼ同じ意味で使われる。
どこで使うResNet、U-Net、Transformerなど、現代のほぼすべての深いモデル。
注意点つなぐ先とサイズを合わせる必要がある。合わない場合は変換層を挟む。

Skip Connectionの種類

Skip Connectionには主に2つの方式があります。加算型(Additive、ResNetで使用)は入力をそのまま出力に加算するもので、F(x) + xの形で表現されます。連結型(Concatenation、DenseNetやU-Netで使用)は入力と出力をチャネル方向に連結するもので、より多くの情報を保持できますがメモリ使用量が増加します。

図:スキップ接続の効果
1通常の経路層を順に通る
▶
2近道を追加層を飛び越えて合流
▶
3情報が失われない元の特徴が保たれる
▶
4深くても学習可能勾配消失を回避

勾配伝播への効果

Skip Connectionの最も重要な効果は、逆伝播時の勾配の安定化です。通常の深いネットワークでは勾配が消失しやすいですが、Skip Connectionにより勾配がショートカットパスを通って直接浅い層に到達できます。これにより、100層以上のネットワークでも効果的な学習が可能になりました。

Skip Connectionの普及

Skip Connectionは現在、CNN、Transformer、U-Netなど、ほぼすべてのディープラーニングアーキテクチャで使用されています。TransformerではSelf-Attention層とFeed-Forward層の両方にSkip Connectionが適用されています。この単純かつ効果的な設計パターンは、深層学習の発展に最も貢献した技術の一つと言えます。