Identity Mapping
딥러닝에서 Identity Mapping에 대해 알아보십시오. Skip connections가 어떻게 vanishing gradients를 방지하여 Ultralytics YOLO26와 같은 신경망을 구동하는지 확인해 보십시오.
수학 및 선형 대수학에서 항등 사상 또는 항등 행렬은 입력값으로 사용된 것과 정확히 같은 값을 반환하는 함수입니다. 인공지능(AI) 및 딥러닝의 맥락에서 항등 사상은 비선형 변환 없이 합성곱 신경망(CNN)의 후속 레이어로 입력 데이터를 직접 전달하는 데 사용되는 특정 아키텍처 기법을 의미합니다. 이 개념은 2015년 잔차 네트워크(ResNet)의 도입으로 크게 대중화되었으며, 심층 컴퓨터 비전(CV) 모델이 구조화되고 학습되는 방식을 혁신했습니다.
Identity Mapping의 작동 원리#
심층 신경망은 종종 기울기 소실 문제로 고통받습니다. 역전파 과정에서 네트워크 가중치를 업데이트하는 데 사용되는 오류 신호는 레이어를 거쳐 역방향으로 이동함에 따라 기하급수적으로 작아져 초기 레이어가 효과적으로 학습하는 것을 방해합니다. 항등 사상은 "스킵 연결(skip connection)" 또는 "숏컷 연결(shortcut connection)"을 생성하여 이를 해결합니다.
순차적 레이어가 완전히 새롭고 참조되지 않은 매핑을 강제로 학습하도록 하는 대신 잔차 함수를 학습하도록 설계됩니다. 수학적으로 블록에 대한 입력이 x인 경우 레이어는 변환 F(x)를 학습합니다. 항등 사상은 원래 입력 x를 해당 변환의 출력에 직접 추가하여 최종 출력 F(x) + x를 생성합니다. 이를 통해 극도로 깊은 네트워크에서도 모델 백본을 통해 기울기가 방해받지 않고 직접 흐를 수 있습니다. Google DeepMind 및 OpenAI와 같은 평판 좋은 AI 연구 조직은 대규모 파운데이션 모델에서 학습을 안정화하기 위해 이러한 아키텍처 숏컷을 자주 활용합니다.
Identity Mapping vs. Identity Preservation#
항등 사상을 유사한 이름의 아이덴티티 프레저베이션(신원 유지)과 구분하는 것이 중요합니다.
항등 사상은 머신러닝(ML) 학습 흐름을 최적화하도록 설계된 신경망의 구조적 코딩 기능인 반면, 아이덴티티 프레저베이션은 별도의 컴퓨터 비전 작업입니다. 아이덴티티 프레저베이션은 객체 추적의 다양한 비디오 프레임 전체에서 또는 생성형 AI 워크플로에서 생성된 이미지 전체에서 특정 사람이나 객체의 시각적 일관성을 유지하는 데 중점을 둡니다.
실제 애플리케이션 사례#
Identity Mapping은 오늘날 프로덕션 환경에서 사용되는 많은 고성능 모델의 핵심 빌딩 블록 역할을 합니다:
- 고급 객체 감지: 최신 Ultralytics YOLO26을 비롯한 최신 실시간 아키텍처는 특징 추출 레이어 내에 항등 맵을 포함하는 고급 잔차 블록을 활용합니다. 이를 통해 네트워크 깊이가 증가함에 따라 성능 저하 없이 자율주행과 같은 복잡한 환경에서 고속의 정밀한 감지를 수행할 수 있습니다.
- 이미지 분류 모델: arXiv 및 IEEE Xplore Digital Library와 같은 학술 저장소에 광범위하게 문서화된 최첨단 비전 아키텍처는 수백 개의 레이어가 있는 모델을 성공적으로 학습하기 위해 항등 사상에 의존합니다. TensorFlow와 같은 고수준 프레임워크는 이러한 숏컷을 사용하여 대규모 데이터셋에서 매우 복잡한 계층적 특징을 추출합니다.
PyTorch에서 Identity Mapping 구현하기#
커스텀 신경망을 구축할 때 PyTorch와 같은 딥러닝 프레임워크는 이러한 숏컷을 손쉽게 구현할 수 있는 네이티브 도구를 제공합니다. PyTorch nn.Identity 모듈을 명시적으로 사용하거나 nn.Module 순전파 내에서 간단히 수학적 덧셈을 적용할 수 있습니다.
다음 스니펫은 항등 맵을 활용하는 기본 잔차 블록을 보여줍니다. 데이터셋 관리 및 모델 학습을 위해 클라우드 기반 Ultralytics Platform을 활용하는 개발자는 백그라운드에서 이러한 고도로 최적화된 아키텍처 구조의 이점을 자동으로 누릴 수 있습니다.
import torch.nn as nn
class ResidualBlock(nn.Module):
def __init__(self, channels):
super().__init__()
# A simple convolutional layer for feature extraction
self.conv = nn.Conv2d(channels, channels, kernel_size=3, padding=1)
# Explicit identity mapping module
self.identity = nn.Identity()
def forward(self, x):
# The block output is the sum of the learned features and the identity map
return self.conv(x) + self.identity(x)





