残差接続Residual Connection
層を飛び越え元の値をそのまま渡す近道
- 残差接続は層を一つ飛び越えて元の値をそのまま上へ送る近道です。
- 層は結果を新しく作りません。元の値に何を足すかだけを作り、上でその二つを合わせます。
- 近道がなかった時代は、深く積むほどかえって成績が落ちるという奇妙なことが起きていました。
- 学習でさかのぼる信号もこの近道を通るので、数百層でも学習が進みます。
- 今の画像モデルや言語モデルは、ブロックごとにこの近道が必ず入っています。
目次
1たとえで理解する
宅配の箱を抱えてマンションの階段を上がります。階ごとに作業台が一つずつあって、その階の担当が箱を開けて少しずつ手を加えます。階数が数階なら問題ありません。ところが階数が数十にもなると、屋上に着いたころには元々何が入っていたのか分からなくなります。途中のどこかの階がミスをすれば、それより下でやった作業ごと無駄になります。
そこで階ごとに作業台の横に近道を一本ずつ通しました。元の箱は近道を通って手を加えられないまま上の階に届きます。作業台は箱を新しく作る代わりに、何を付け足すかだけを作ります。上の階では、近道を通って上がってきた箱にその付け足す分を載せるだけで済みます。ある階がやることを見つけられなければ、何も足さずに次へ渡せばいいだけです。
2くわしく
層は差分だけを学ぶ
普通の層は、受け取った値をまるごと新しい値に変えて送り出します。この層に近道を付けると役割が変わります。層が出すのは完成品ではなく、元の値と目標の差です。だから余りという字を使って残差接続と呼びます。
差分だけ作ればいいので、層の仕事はずっと楽になります。今の値がすでに十分に良ければ、何も足さず0に近い値を出せばよいのです。これは思ったより大きな違いです。近道がなければ、層は何もしない状態すら手加減を正確に合わせてやっと真似できるからです。
層を百個積んでおいて、そのうち三十個だけ実際に働かせることも可能になります。残りは受け取った値をそのまま流します。
足し合わせるには大きさが揃っていないといけない
近道から来た値と層が作った値を合わせるには、二つの形が同じでなければなりません。数字のまとまりの長さが違えば足せないからです。そのため近道でつなぐ区間は、たいてい入りと出の大きさが同じになるよう設計します。
大きさが変わる場所では、近道側にごく軽い変換を一つ挟んで大きさを合わせます。画像モデルで絵が小さくなりチャンネルが増える場面がそうした場所です。ただしこの変換は最小限にとどめるのが原則です。近道が複雑になれば近道ではなくなってしまうからです。
近道がないと深いほど悪化した
層を深く積めば表現力が増すのだから成績も良くなるはずだと考えがちです。ところが実際は逆でした。層を二十から五十に増やすと、新しく学ぶデータはもちろん、すでに学んだデータでさえ成績が落ちました。
丸暗記の問題とは種類が違いました。浅いモデルが出した答えをそのまま真似するだけでも最低限同じ成績が出るはずなのに、深いモデルはそれすらできませんでした。表現力が足りないのではなく、学習そのものがうまく進んでいなかったのです。近道が登場するとこの壁は崩れ、百層を超えるモデルが実際により良い成績を出し始めました。
学ぶ信号も近道を通って戻る
学習は、答えがどれだけ外れたかを頂上で測り、下の層へさかのぼって送り返す方法で行われます。層を一つさかのぼるたびに、この信号はその層の計算に巻き込まれて少しずつ減ったり増えたりします。層が数十個あると、下の層に届く頃には信号がほとんど消えています。
近道があれば、さかのぼる信号もその道を通って下ります。層を通らない通路が一本あるので、下の層まで元の強さに近いまま届きます。深いモデルの最初の層がようやくきちんと学べるようになった理由です。
3もう少し正確に
残差接続は、ある層のまとまりの出力に、そのまとまりの入力をそのまま足して次へ渡す接続です。層のまとまりは目標と入力の差を学ぶことになり、さかのぼる勾配には層を通らずそのまま通過する経路が生まれます。この経路のおかげで勾配消失が大きく減ります。
比喩がずれる点もあります。階段の近道は荷物を運ぶ道ですが、残差接続は運ぶのではなく二つの値を足す計算です。近道には学習する手加減が一つもないので、費用もほとんどかかりません。そして箱と付け足す分が並んで置かれるのではなく、場所ごとに数字がそのまま合わさります。
近道が万能ではありません。値を足し続けるだけでは上の層に行くほど大きさが膨らむため正規化を併用する必要があり、足す場所をどこに置くかによって学習がうまくいったり乱れたりします。だから同じ近道でも、どの計算の前後に挟むかは今も設計上の悩みどころです。
4やってみる
5よくある誤解
近道が層を飛び越えて計算を減らしてくれると思われがちですが、実際には層の計算はそのまま行い、その結果に元の値を足すだけです。
層を深く積みさえすれば良くなると思われがちですが、実際には近道のような仕組みがなければ深くなるほど学習が難しくなります。
残差接続は画像モデルだけで使う技法だと思われがちですが、実際には今日の言語モデルのブロックごとに二回ずつ入っています。
7ひとこと要約
つまり残差接続は層を飛び越えて元の値をそのまま上へ送る近道で、層は足すべき差分だけを学べばよくなり、深いモデルでも学習が進みます。
誤りや、もっと良いたとえがありますか? 修正を提案する · 最終更新2026-09-02