100층 네트워크를 학습 가능하게 만든 단 하나의 "+x": ResNet Skip Connections
요약
ResNet의 핵심인 스킵 연결(Skip Connection)이 심층 신경망의 그래디언트 소실 문제를 어떻게 해결하는지 설명합니다. 잔차 학습(Residual Learning)을 통해 네트워크가 항등 매핑을 쉽게 학습하도록 돕고, 깊은 층에서도 안정적인 역전파를 가능하게 합니다.
핵심 포인트
- 스킵 연결은 잔차 F(x) = H(x) - x를 학습하여 최적화를 용이하게 함
- 미분 시 '+1' 항이 존재하여 그래디언트가 소실되지 않고 초기 층까지 전달됨
- 차원 변경 시 1x1 컨볼루션을 사용하는 투영 지름길(Projection shortcuts) 활용
- ResNet의 구조는 현대 Transformer 및 LLM의 핵심 설계 원리로 계승됨
심층 네트워크(Deep networks)에는 잔혹한 역설이 존재합니다. 이론적으로는 층이 더 많아진다고 해서 해가 되지는 않습니다. 추가된 층들이 단순히 입력을 변경 없이 통과하도록 학습할 수도 있기 때문입니다. 하지만 실제로는 2015년 이전까지, 일반적인 층(plain layers)을 더 쌓을수록 네트워크 성능은 오히려 저하되었습니다. 56층 네트워크가 20층 네트워크보다 더 높은 훈련 오차(training error)를 보였습니다. 그래디언트(gradient)가 초기 층으로 돌아가는 과정에서 소실되었고, 최적화(optimisation) 과정에서 아무것도 하지 않는 항등 매핑(identity mapping)조차 찾아내지 못했기 때문입니다. ResNet은 거의 터무니없을 정도로 간단한 방법으로 이 문제를 해결했습니다.
잔차 재구성 (The residual reformulation)
블록에게 전체 매핑 H(x)를 학습하도록 요구하는 대신, **잔차(residual)**인 F(x) = H(x) − x를 학습하도록 요구하고 입력을 다시 더해줍니다:
def forward(self, x):
return F.relu(x + self.f(x)) # y = x + F(x) <- 스킵 연결 (skip connection)
만약 이상적인 매핑이 항등(identity)에 가깝다면, F(x)는 단순히 0에 가까워지기만 하면 됩니다. 이는 학습하기 매우 쉽습니다 (가중치를 0에 가깝게 밀어넣으면 됩니다). 블록은 입력을 통과시키는 것 위에 더해질 _보정값(correction)_만을 학습하게 됩니다.
+1이 그래디언트를 구하는 이유
블록을 미분해 봅시다: d(x + F(x))/dx = 1 + F'(x). 역전파(Backprop)는 블록들을 가로질러 이 값들을 곱합니다. F'(x)가 매우 작더라도, 인수는 0에 가까워지는 대신 1 근처를 유지합니다. 따라서 곱셈 결과가 붕괴되지 않습니다:
plain: dL/dx1 = product of F'(z) -> 0 (sigmoid의 경우 각 F' <= ~0.25)
residual: dL/dx1 = product of (1 + F'(z)) -> ~O(1)
^ 항등 경로 (identity path)는 절대 소실되지 않음
항등 경로(identity path)는 가장 초기 층까지 곧장 되돌아가는 그래디언트 고속도로 역할을 합니다.
투영 지름길 (Projection shortcuts)
블록이 특징 차원(feature dimensions)을 변경할 때 (예: 공간 크기를 절반으로 줄이고 채널을 두 배로 늘리는 컨볼루션), x와 F(x)의 형상이 더 이상 일치하지 않아 서로 더할 수 없습니다. 이때 스킵 연결(skip connection)에 1×1 컨볼루션(conv)을 적용하여 x를 먼저 새로운 형상으로 투영(project)합니다. 이것이 논문에서 언급된 "투영 지름길 (projection shortcut)"입니다. 대부분의 지름길은 단순한 항등(identity) 방식이며, 차원이 변경되는 경우에만 이 방식이 필요합니다.
영향 (The impact)
잔차 블록 (residual blocks)을 통해, 2015년 ResNet 논문은 이전 방식보다 한 자릿수 더 깊은 152층 네트워크를 학습시켜 ImageNet에서 우승했습니다. 마침내 더 깊은 것이 다시 성능 향상을 의미하게 되었습니다. 그리고 스킵 연결 (skip connections)은 이제 어디에나 존재합니다: ResNet, U-Net, 그리고 모든 Transformer 블록 (x + Sublayer(x))이 그러합니다. 동일한 '+1'이 현대의 LLM 내부에서도 그래디언트 (gradients)를 건강하게 유지하며 조용히 작동하고 있습니다.
동일한 깊이에서 일반 네트워크와 ResNet을 그래디언트 단위로 비교해 보세요:
https://dev48v.infy.uk/dl/day22-resnet-skip-connections.html
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기