Residual Networks (ResNet)
Residual Network(ResNet)의 강력한 기능을 살펴보세요. skip connection이 vanishing gradient problem을 해결해 computer vision을 위한 deep learning을 가능하게 하는 방법을 알아보세요.
ResNet으로 널리 알려진 잔차 네트워크는 매우 깊은 네트워크의 학습을 가능하게 하도록 설계된 특정 유형의 인공 신경망 (ANN) 아키텍처입니다. 2015년 Microsoft의 연구원들이 소개한 ResNet은 기울기 소실 문제로 알려진 딥 러닝의 중요한 병목 현상을 해결했습니다. 기존 네트워크에서는 계층을 더 많이 쌓을수록 계층을 거슬러 역전파되는 과정에서 모델 가중치를 업데이트하는 데 필요한 신호가 점차 약해져 성능이 포화되거나 저하되는 경우가 많았습니다. ResNet은 "스킵 연결"(또는 잔차 연결)을 도입하여 데이터가 하나 이상의 계층을 우회하고 후속 처리 단계로 직접 흐를 수 있도록 했습니다. 이 혁신을 통해 더 깊은 네트워크도 효과적으로 학습할 수 있음이 입증되었으며, 컴퓨터 비전 (CV)의 획기적인 발전을 이끌고 현대 아키텍처의 핵심 개념으로 자리 잡았습니다.
핵심 개념: 잔차 학습#
ResNet을 대표하는 특징은 "잔차 블록"입니다. 표준 합성곱 신경망 (CNN)에서는 각 계층이 입력에서 출력으로의 직접 매핑을 학습하려고 합니다. 네트워크가 더 깊어질수록 이러한 직접 매핑을 학습하기는 점점 더 어려워집니다.
ResNet은 학습 목표를 다르게 정의하여 이 접근 방식을 변경합니다. 잔차 블록은 각 계층 스택이 전체 기저 매핑을 학습하기를 기대하는 대신 입력과 원하는 출력 사이의 "잔차", 즉 차이를 학습하도록 계층에 요구합니다. 그런 다음 스킵 연결을 통해 원래 입력을 학습된 잔차에 다시 더합니다. 이러한 구조적 변화는 항등 매핑(입력을 변경하지 않고 전달하는 것)이 최적이라면 네트워크가 잔차를 0으로 쉽게 만들 수 있음을 의미합니다. 이를 통해 딥 러닝 (DL) 모델을 훨씬 쉽게 최적화할 수 있으며, 수십 개의 계층에서 수백 개 또는 수천 개의 계층까지 확장할 수 있습니다.
주요 아키텍처 변형#
ResNet이 처음 등장한 이후 여러 변형이 AI 커뮤니티의 표준 벤치마크로 자리 잡았습니다.
- ResNet-50: "병목" 설계를 사용하는 50계층 버전입니다. 이 설계는 1x1 합성곱을 사용하여 차원을 줄인 다음 복원하므로, 높은 정확도를 유지하면서 네트워크의 계산 효율을 높입니다.
- ResNet-101 및 ResNet-152: 각각 101개와 152개의 계층을 사용하는 더 깊은 변형입니다. 더 높은 복잡도의 연산이 가능한 경우 이러한 모델이 자주 사용되며, 더욱 복잡한 특징 맵을 포착할 수 있습니다.
- ResNeXt: "카디널리티" 차원을 도입한 ResNet의 발전형으로, 잔차 블록을 여러 병렬 경로로 분할하여 효율성과 성능을 향상합니다.
실제 적용 사례#
ResNet 아키텍처의 견고성 덕분에 다양한 시각 관련 작업에서 가장 먼저 고려되는 선택지가 되었습니다.
- 의료 이미지 분석: 의료 분야에서는 고해상도 스캔에서 미세한 이상을 식별하는 것이 중요합니다. ResNet 기반 모델은 의료 영상의 종양 탐지와 같은 질환 탐지에 자주 사용되며, 네트워크의 깊이를 통해 MRI 또는 CT 데이터에서 세밀한 패턴을 식별할 수 있습니다.
- 자율주행 차량: 자율주행 차량은 보행자, 표지판 및 장애물을 식별하기 위해 카메라 피드에서 신뢰성 높은 특징 추출이 필요합니다. ResNet은 자동차 분야의 AI 애플리케이션에서 객체 탐지 시스템의 백본으로 자주 사용되며, 안전한 주행에 필요한 풍부한 시각적 특징을 제공합니다.
ResNet과 다른 아키텍처 비교#
ResNet의 구체적인 활용 가치를 이해하려면 다른 인기 아키텍처와 구별해 보는 것이 도움이 됩니다.
- ResNet과 VGG 비교: VGG(비주얼 지오메트리 그룹) 네트워크도 깊은 CNN이지만 잔차 연결이 없습니다. 따라서 ResNet과 비슷한 깊이에서 학습하기가 훨씬 어렵고, 대규모 완전 연결 계층으로 인해 일반적으로 계산 비용도 더 높습니다.
- ResNet과 Inception 비교: Inception 네트워크는 너비에 중점을 두며, 동일한 계층 내에서 여러 크기의 필터를 사용하여 다양한 스케일의 특징을 포착합니다. ResNet은 깊이에 중점을 둡니다. Inception-ResNet과 같은 최신 아키텍처는 두 개념을 결합합니다.
- ResNet과 Vision Transformer (ViT) 비교: ViT는 셀프 어텐션 메커니즘을 사용하여 이미지를 전역적으로 처리하는 반면, ResNet은 로컬 합성곱에 의존합니다. 그러나 ResNet은 여전히 강력한 기준선으로 활용되며, 더 작은 데이터셋이나 실시간 추론에서는 더 빠른 경우가 많습니다.
구현 예시#
PyTorch와 같은 최신 딥 러닝 라이브러리를 사용하면 사전 학습된 ResNet 모델에 쉽게 접근할 수 있습니다. 이러한 모델은 전이 학습에 매우 유용하며, 대규모 데이터셋인 ImageNet으로 학습된 모델을 특정 작업에 맞게 미세 조정할 수 있습니다.
다음 Python 코드는 PyTorch 생태계의 일부인 torchvision을 사용하여 사전 학습된 ResNet-50 모델을 로드하고 간단한 순전파를 수행하는 방법을 보여줍니다. Ultralytics Platform 사용자는 탐지를 위해 YOLO26을 자주 사용할 수 있지만, ResNet과 같은 기본 백본 개념을 이해하는 것은 고급 커스터마이제이션에 매우 중요합니다.
import torch
import torchvision.models as models
# Load a pre-trained ResNet-50 model
resnet50 = models.resnet50(weights=models.ResNet50_Weights.DEFAULT)
resnet50.eval() # Set model to evaluation mode
# Create a dummy input tensor (batch_size, channels, height, width)
input_tensor = torch.randn(1, 3, 224, 224)
# Perform a forward pass to get predictions
with torch.no_grad():
output = resnet50(input_tensor)
print(f"Output shape: {output.shape}") # Expect [1, 1000] for ImageNet classes현대 AI에서의 중요성#
YOLO26과 같은 최신 아키텍처는 최고 수준의 속도와 정확도를 위해 고도로 최적화된 구조를 사용하지만, 잔차 학습의 원리는 여전히 널리 사용됩니다. 스킵 연결 개념은 자연어 처리 (NLP)에 사용되는 Transformer와 최신 객체 탐지 모델을 비롯한 많은 고급 네트워크에서 이제 표준 구성 요소가 되었습니다. ResNet은 네트워크를 통해 정보가 더 자유롭게 흐르도록 함으로써 오늘날의 인공지능을 구동하는 깊고 복잡한 모델의 기반을 마련했습니다.









