1. 2D CNN 연산 복잡도

2D CNN의 총 연산량은 다음과 같은 공식으로 계산됩니다:

Complexity=O(HoutWoutCinKHKWCout)\text{Complexity} = \mathcal{O}(H_{out} \cdot W_{out} \cdot C_{in} \cdot K_H \cdot K_W \cdot C_{out})
기호의미
Hout,WoutH_{out}, W_{out}출력 feature map의 세로/가로 크기
CinC_{in}입력 채널 수 (예: RGB = 3)
KH,KWK_H, K_W커널 높이, 너비 (예: 3×3)
CoutC_{out}출력 채널 수 (필터 개수)

간단화 형태

입력과 출력 크기가 동일하다고 가정하면:

O(HWCinK2Cout)O(H \cdot W \cdot C_{in} \cdot K^2 \cdot C_{out})

2. 예시 계산

  • 입력: 128×128 이미지, 채널 수 = 3 (RGB)
  • 커널: 3×3
  • 출력 채널 수: 64
  • stride = 1, padding = 1 (출력 크기 유지)
12812833364=O(12821728)2.8억회연산128 \cdot 128 \cdot 3 \cdot 3 \cdot 3 \cdot 64 = \mathcal{O}(128^2 \cdot 1728) \approx 2.8억 회 연산

3. CNN vs Self-Attention 복잡도 비교

항목Self-AttentionCNN
연산 복잡도O(n2d)O(n^2 \cdot d)O(knd2)O(k \cdot n \cdot d^2)
연산 기준모든 토큰쌍 간 유사도각 위치에서 이웃 위치의 특징 추출
차원 곱dd (vector 간 내적)d2d^2 (입력/출력 채널 간 FC 변환)
병렬화 가능성높음 (전체 토큰 동시 처리)높음 (모든 위치, 커널 병렬 처리)

핵심 차이:

  • Attention은 “쌍 간 관계” 중심 → n2n^2
  • CNN은 “채널 간 변환” 중심 → d2d^2
profile
AI developer

0개의 댓글