개요

23편까지 CNN이 어떻게 좋아졌는지를 봤다. 이번 글은 반대 방향이다.

CNN이 아무리 좋아져도 넘지 못한 선은 어디였나.

여기서 등장하는 이름들 — RNN, LSTM, Attention — 은 이 시리즈에서 이미 다룬 것들이다. 9편에서 RNN, 10편에서 LSTM, 12편에서 Attention, 13편에서 Transformer를 봤다. 그때는 문장을 다뤘다.

이번엔 같은 도구를 사진 앞에 놓는다. 개념 설명은 앞 글들에 맡기고, 여기서는 “이미지에서 이 도구가 무엇을 해결하는가”만 본다. 그래서 이 글은 앞 글의 반복이 아니라, 같은 아이디어가 다른 데이터에서 어떻게 다시 쓰이는지에 대한 글이다.

교육 자료는 대외비라 슬라이드 이미지나 예제 데이터는 싣지 않는다. 개념 흐름만 내가 이해한 방식으로 재구성했고, 그림은 전부 생성했다.


1. CNN의 강점을 먼저 인정하고 시작하자

한계를 말하기 전에 CNN이 왜 표준이 됐는지 다시 정리하면 이렇다.

강점 이유
지역 특징 학습에 특화 작은 필터로 패턴·경계선을 잘 잡는다
파라미터 효율 같은 필터를 이미지 전체에 재사용한다
위치 변화·노이즈에 강함 풀링·스트라이드가 사소한 차이를 뭉갠다

이건 공짜로 얻은 게 아니라 구조에 미리 심어둔 가정이다. “가까운 화소끼리는 관련이 있다”, “같은 무늬는 어디에 있든 같은 무늬다”. 이 가정이 이미지에 잘 맞아서 CNN이 이긴 것이다.

그런데 가정이 있다는 건, 가정이 안 맞는 상황도 있다는 뜻이다.


2. 못 하는 세 가지

CNN의 세 가지 한계

① 순서를 못 본다

CNN에는 “먼저”와 “나중”을 담는 자리가 없다. 자료의 예문이 아주 좋았다.

“약을 먹고 잠을 자고” vs “잠을 자고 약을 먹고”

단어 구성은 똑같은데 뜻이 완전히 다르다. 영어 예도 있다. “I am a boy not a girl”과 “I am a girl not a boy”. 순서 하나로 정반대가 된다.

이건 이미지 자체보다는 동영상, 음성, 시계열로 넘어갈 때 바로 걸리는 문제다.

② 멀리 못 본다 (장거리 의존성)

CNN은 작은 이웃을 본다. 층을 쌓으면 수용영역이 넓어지지만, 고해상도 이미지에서 반대편 끝까지 보려면 층이 너무 많이 필요하다. 연산량과 학습 난이도를 생각하면 비현실적이다.

건물 사진에서 왼쪽 아치와 오른쪽 아치가 같은 무늬라는 사실 — 사람은 한눈에 안다. CNN에게는 아주 먼 길이다.

③ 위치를 버린다 (픽셀 단위 복원의 한계)

풀링과 스트라이드로 해상도를 줄이면서 “어디에 있었는지”가 손실된다. 왼쪽 고양이와 오른쪽 고양이가 똑같이 “고양이”로 나오는 건 분류에서는 장점이지만, 세그멘테이션(화소마다 라벨 붙이기)이나 이미지 생성·편집에서는 치명적이다.

강건성과 위치 정보는 같은 동전의 양면이다. 하나를 얻으면 하나를 잃는다.


3. 순서 문제의 답 — RNN 계열 (복습 겸 재배치)

9편·10편에서 자세히 다뤘으니 여기서는 이미지·영상 맥락에서 알아야 할 것만 간추린다.

RNN의 핵심은 은닉 상태 하나다.

$$ h_t = \tanh(W_{hh}h_{t-1} + W_{xh}x_t) $$

지금 입력과 직전까지의 기억을 섞어서 새 기억을 만든다. 그게 전부다. 그리고 이 구조가 주는 활용 형태가 이미지 쪽에서 특히 유용하다.

구조 의미 영상 쪽 예시
One-to-One 입력 하나 → 출력 하나 이미지 분류 (CNN)
One-to-Many 입력 하나 → 시퀀스 출력 이미지 → 캡션 생성
Many-to-One 시퀀스 → 출력 하나 비디오 → 행동 분류
Many-to-Many 시퀀스 → 시퀀스 기계 번역, 음성 → 텍스트

“이미지 → 캡션”과 “비디오 → 행동 분류”가 CNN 혼자서는 안 되는 지점이다. CNN이 각 프레임의 특징을 뽑고, RNN이 시간 순서를 잇는 조합이 오래 쓰였다.

그리고 RNN의 벽

역전파에서 같은 가중치 W가 계속 곱해지기 때문에

  • W의 특이값이 1보다 크면 → 기울기 폭발
  • W의 특이값이 1보다 작으면 → 기울기 소실

폭발은 잘라내면(gradient clipping) 어느 정도 막는다. 그런데 소실은 잘라내기로 해결이 안 된다. 이미 0에 가까워진 값을 되살릴 방법이 없다. 그래서 LSTM이 나왔고, 셀 상태를 덧셈으로 전달해 기울기 경로를 살려뒀다.

23편의 ResNet 잔차 연결이 정확히 같은 발상이라는 걸 여기서 다시 짚고 싶다. 깊이 방향으로 덧셈 경로를 낸 것이 ResNet, 시간 방향으로 낸 것이 LSTM이다.

그런데 LSTM도 완벽하진 않다

망각 게이트가 과거 정보를 조금씩 줄인다. 한 번에 많이 지우진 않지만 누적되면 오래된 정보가 점점 옅어진다. 이걸 정보 희석이라고 부른다.


4. 장거리 문제의 답 — 어텐션을 이미지에 놓기

네 구조의 장부

12편에서 어텐션을 “필요한 곳만 보는” 장치로 설명했다. 이미지에서는 이렇게 번역된다.

패치(patch) = 이미지를 일정 크기로 자른 작은 조각

이름 텍스트에서 이미지에서
쿼리(Q) 지금 보고 있는 단어 지금 보고 있는 패치
키(K) 비교 대상 단어들 다른 패치들
값(V) 그 단어의 정보 그 패치의 정보

계산 방식도 똑같다.

$$ a_{ij} = \text{softmax}\left(\frac{q_i \cdot k_j}{\sqrt{d_k}}\right), \qquad y_i = \sum_j a_{ij}v_j $$

쿼리와 키가 비슷하면 그 값에 가중치를 크게 준다. 그것뿐이다.

이미지에서 이게 왜 강력한가

건물 사진의 왼쪽 아치와 오른쪽 아치는 화소 거리로는 멀지만 내용은 비슷하다. 어텐션은 거리를 따지지 않고 비슷한 패치끼리 직접 연결한다. CNN이 층을 수십 개 쌓아야 겨우 이을 관계를 첫 층부터 잇는다.

셀프 어텐션(같은 이미지 안에서 Q·K·V를 모두 뽑는 방식)을 시각화하면 비슷한 역할의 패치들이 자연스럽게 하나의 묶음처럼 뭉친다. 모델이 객체의 구조를 파악한다는 뜻이다.

교차 어텐션 — 다른 종류를 잇기

쿼리는 이미지 패치에서, 키·값은 텍스트에서 가져오면 어떻게 될까. 글과 그림을 연결할 수 있다. 21편에서 본 텍스트-이미지 생성 모델이 이 방식으로 “여기”, “고양이”, “싱크대” 같은 단어를 이미지의 특정 영역에 붙인다.

같은 어텐션 공식이 데이터 종류만 바꿔서 재사용되는 것이다.


5. ViT — 사진을 문장처럼 다루기

ViT 구조

ViT(Vision Transformer)의 절차는 단순하다.

  1. 이미지를 패치로 자른다 (예: 16×16)
  2. 각 패치를 선형 변환해 벡터(토큰)로 만든다
  3. 위치 인코딩을 더한다
  4. Transformer 인코더를 L개(보통 12개 이상) 통과시킨다
  5. MLP head로 최종 예측

인코더 내부는 13편에서 본 그것이다. 정규화 → 다중 헤드 어텐션 → 정규화 → 연결층(MLP).

위치 인코딩이 반드시 필요한 이유

어텐션은 순서를 모른다. 패치를 아무 순서로 섞어 넣어도 결과가 같다. 그래서 “이 패치는 (2,2) 자리에 있었다”는 정보를 따로 더해줘야 한다.

방식이 세 가지 나왔는데, 트레이드오프가 명확하다.

방식 장점 단점
학습 가능 데이터에 맞게 최적화됨 해상도가 바뀌면 다시 학습해야 함
사인파(고정) 해상도가 바뀌어도 그대로 적용 고정이라 데이터 특화가 안 됨
상대 위치 해상도 변화에 유연 절대 위치(예: 좌우 모서리) 파악이 어려움

정답이 없다. 어떤 작업이냐에 따라 고른다.

CNN과의 결정적 차이

CNN은 수용영역을 넓혀가며 전역을 이해한다. ViT는 수용영역을 넓힐 필요 없이 처음부터 전역을 본다.

이 한 줄이 ViT의 전부라고 봐도 된다.


6. 그런데 ViT가 항상 이기지 않는다

여기가 이번 편에서 제일 중요한 부분이라고 생각한다.

데이터 규모에 따른 ViT와 ResNet

사전학습 데이터 승자
ImageNet (보통) ResNet
ImageNet-21k (큼) 비슷
JFT-300M (3억 장) ViT

왜 이런 결과가 나오는가.

CNN에는 “가까운 화소끼리 관련 있다”는 사전 지식이 구조에 박혀 있다. 데이터가 적어도 이 가정이 도와준다. 반면 ViT는 그런 가정이 없다. 어떤 패치와 어떤 패치가 관련 있는지를 데이터에서 전부 배워야 한다. 자유도가 높다는 건 데이터를 더 요구한다는 뜻이다.

더 쉬운 비유로

CNN은 참고서를 들고 시험장에 들어간 학생이다. 참고서 내용이 문제와 잘 맞으면 적게 공부해도 점수가 나온다. ViT는 맨손으로 들어가되 머리가 아주 좋은 학생이다. 공부량이 적으면 참고서 든 쪽이 이기지만, 문제집을 3억 권 풀고 나면 상황이 뒤집힌다.

그래서 확인 문제에도 이게 나온다. “ViT는 데이터가 적을 때도 CNN보다 항상 높은 성능을 보장한다” → 틀린 설명이다.

데이터가 부족할 때 쓰는 기술들

ViT를 작은 데이터로 쓰려면 학습 기술이 중요해진다.

  • 정규화·데이터 증강 — 없으면 성능이 크게 떨어진다
  • 증류 학습(Knowledge Distillation, DeiT) — 잘 학습된 CNN을 “선생님”으로 두고, ViT “학생”이 선생님의 출력을 따라가도록 학습한다

증류 학습 효과가 인상적이었다. ViT-B/16이 원본 78% 근처에서, 증류를 붙이니 83%대, 거기에 더 길게 학습하고 고해상도 입력까지 쓰면 85%대까지 올라간다.

재미있는 지점은 이거다. CNN의 사전 지식을 구조로 못 넣으니, 선생님을 통해 간접적으로 전수받은 것이다.


7. 그 다음 — Swin과 현재의 백본들

Swin의 윈도우 어텐션

ViT의 약점 하나가 비용이다. 이미지 전역에 어텐션을 걸면 패치 수의 제곱으로 계산이 늘어난다. 고해상도에서는 감당이 안 된다.

Swin Transformer의 해법이 영리하다.

  1. 창문(window)을 정하고 그 안에서만 어텐션한다
  2. 다음 층에서는 창문을 반 칸 어긋나게 옮긴다

한 층에서는 창문끼리 단절돼 있지만, 다음 층의 창문이 이전 경계를 가로지르므로 층을 겹치면 결국 전역이 연결된다. 전역 어텐션 비용을 안 치르고 전역 효과를 얻는다.

CNN이 층을 쌓아 시야를 넓혔던 그 아이디어를, 어텐션 위에서 다시 쓴 셈이다. 그래서 Swin 계열은 특히 탐지·분할처럼 화소·공간 이해가 필요한 작업에서 강하다.

지금의 대표 백본들

모델 특징
ViT-22B (구글) 220억 파라미터, 대규모 비공개 데이터 기반, 모델 비공개
DINOv2 (메타) 자기지도 학습, 공개 웹 이미지 14억 장, 공개돼서 지금 가장 많이 쓰이는 백본
EVA-CLIP 이미지-텍스트 대조 학습, 제로샷 분류·멀티모달 검색 강력
InternImage-H Conv + Transformer 하이브리드, 탐지·분할 최고 수준

“현존 최고 구조가 뭔가요?”라는 질문에 대한 답은 “기준에 따라 다르다”이다. 공개 여부, 데이터 접근성, 작업 종류, 예산이 전부 기준이 된다.


8. ViT 장단점 정리

  내용
장점 전역 맥락을 한 번에 고려 / 위치 인코딩으로 순서 반영 가능 / 분류·탐지·분할·생성 전부에서 SoTA
단점 대규모 데이터와 GPU 메모리 필요 / 데이터가 적으면 CNN보다 못함 / 한 번에 다룰 토큰 수가 제한적
활용 멀티모달 모델의 기준 아키텍처, 대부분의 최신 기준 모델

CNN이 죽은 게 아니다. 데이터가 적고 자원이 빠듯하면 여전히 ResNet-50이 정답인 경우가 많다. 하이브리드(InternImage) 계열이 살아 있는 이유도 그거다.


정리

  • CNN의 세 한계 — 순서 반영 불가 / 장거리 의존성 부족 / 위치 정보 손실
  • RNN·LSTM — 순서 문제의 답. 이미지 쪽에서는 캡션 생성, 비디오 행동 분류에서 만난다
    • LSTM의 덧셈 경로 = ResNet 잔차 연결과 같은 발상 (시간 방향 vs 깊이 방향)
  • 어텐션 — 쿼리·키·값을 패치로 바꾸면 그대로 이미지에 쓰인다. 먼 패치를 직접 연결
  • ViT — 패치 → 위치 인코딩 → Transformer 인코더. 수용영역을 넓힐 필요가 없다
  • 그러나 데이터가 적으면 CNN이 이긴다. CNN의 사전 지식이 데이터를 대신해주기 때문
    • 부족분은 증류 학습·데이터 증강·정규화로 메운다
  • Swin — 창문 안 어텐션 + 창문 이동으로 전역 효과를 싸게

참고 자료

한줄 평

  • “더 자유로운 구조일수록 데이터를 더 요구한다”는 게 이번 강의의 진짜 교훈 같다. 구조에 심어둔 가정은 제약이 아니라 데이터를 아껴주는 지렛대였다.