Vision & Multimodal · ICLR 2021 2021

An Image is Worth 16×16 Words: Transformers for Image Recognition at Scale — ViT

이미지를 16×16 패치 시퀀스로 — 순수 Transformer가 대규모에서 CNN을 이김.

Alexey Dosovitskiy, Lucas Beyer, Alexander Kolesnikov, Dirk Weissenborn, Xiaohua Zhai, et al. · Google Brain

vitvisiontransformerpatchesjft

1. 핵심 요약

2. 왜 중요한가 — 쉬운 설명

30초 비유

이미지를 작은 타일(16×16) 조각으로 자르고, 각 조각을 “단어”처럼 취급해 문장(Transformer)에 넣습니다. CNN의 특별한 설계(지역성·이동 등변성) 없이도, 데이터가 아주 많으면 CNN을 이깁니다.

무엇을 제안했나

  • 패치 임베딩 — 각 패치를 펴서 선형 변환 → 토큰.
  • [CLS] 토큰 + 위치 임베딩 을 더해 순수 Transformer 인코더에 투입.

그래서 무엇이 달라졌나

  • JFT-300M 규모에서 ImageNet 88.55% 로 최고 CNN을 추월.
  • 단, 작은 데이터에선 CNN이 유리 → “스케일이 귀납적 편향을 이긴다”.
  • 비전 백본이 Transformer로 이동, CLIP·BLIP-2의 “눈”이 됨.

더 공부할 가치가 있을까?

  • 비전이나 멀티모달을 한다면 필수 — 요즘 이미지 인코더의 표준.
  • 먼저 볼 것 — Transformer(구조 그대로 재사용).

3. 배경 · 픽셀 토큰의 벽

AlexNet 이후 비전은 ResNet형 CNN이 지배했습니다. 지역성·이동 등변성이 이미지에 잘 맞아 적은 데이터에서도 됩니다. 픽셀을 그대로 토큰화하면 224×224 → 50,176개, 어텐션 O(N²) 이 감당이 안 됩니다.

왜 패치인가

CNN · 픽셀 토큰 · 패치를 전환하세요. 224×224 이미지 기준.

16×16 패치면 N=196. NLP Transformer를 거의 그대로 쓸 수 있습니다.

CNN 편향 · 픽셀 토큰 · 패치 토큰.

4. 패치 분할

N=HW/P2N = HW / P^{2}
224×224, P=16 → N=196 토큰
패치 개수수식 상세 →
기호를 클릭하면 의미를 볼 수 있습니다
단계별 설명

패치 격자

P를 고르고 칸을 클릭하세요. N = HW / P². /14는 ViT-Huge.

N196
격자14×14
펼친 차원16²·3 = 768

선택한 패치 (0, 0) → ℝ^768 로 펼친 뒤 선형 투영 E로 D차원. P가 작을수록 N이 커져 어텐션 비용↑.

패치 크기 P를 바꿔 N과 펼친 차원을 보세요.

5. 입력 · [CLS] · 위치

z0=[xclass; xp1E; …; xpNE]+Eposz_0 = [x_{\mathrm{class}};\, x_p^{1}E;\,\ldots;\, x_p^{N}E] + E_{\mathrm{pos}}
논문 Eq. 1 — BERT식 class 토큰 + 1D 학습 위치
ViT 입력 임베딩수식 상세 →
기호를 클릭하면 의미를 볼 수 있습니다
단계별 설명

입력 시퀀스

z₀ = [CLS ; 패치E … ] + 위치. 조각을 클릭하세요.

…+
[CLS]

학습 가능한 class 토큰. 마지막 은닉을 MLP 헤드에 넣어 분류 — BERT와 같은 역할.

[CLS] · 패치 선형투영 · 위치 임베딩을 클릭하세요.

위치는 1D 학습 임베딩입니다. 초기화는 2D 격자 정보를 안 넣습니다. 논문은 2D-aware 변형의 이득이 거의 없다고 보고. 파인튜닝에서 해상도를 올리면(보통 384) 패치 크기는 유지 → 시퀀스가 길어지고, 위치 임베딩만 2D 보간합니다.

6. 아키텍처

표준 인코더 Transformer (BERT Base/Large 스펙). 매 블록 Pre-LN(Eq. 2–3): LN → MSA → residual, LN → MLP(GELU) → residual. 마지막 [CLS] 에 선형 헤드. CNN 하이브리드는 작은 연산량에서만 약간 이득, 큰 모델에선 차이가 사라짐 (Fig. 5).

zℓ′=MSA(LN(zℓ−1))+zℓ−1z'_\ell = \mathrm{MSA}(\mathrm{LN}(z_{\ell-1})) + z_{\ell-1}
논문 Eq. 2 — MLP 쪽도 같은 Pre-LN + 잔차 (Eq. 3)
ViT 인코더 블록 (Pre-LN)수식 상세 →
기호를 클릭하면 의미를 볼 수 있습니다
단계별 설명

인코더 블록

LN → MSA → +z → LN → MLP(GELU) → +z′. 단계를 클릭하세요.

MSA

멀티헤드 셀프 어텐션. 패치 전부가 서로를 봄 — 1층부터 전역 통합이 가능.

블록 안을 단계별로 보세요. Pre-LN + GELU MLP.

모델 스펙

Table 1. Base/Large는 BERT와 같고, Huge를 추가. /P 는 패치 크기.

파라미터86M
레이어12
D768
헤드12
MLP3072
P16

패치가 작을수록 N이 늘어 연산↑. Huge는 14×14. 실험에는 B/32·L/32(더 짧은 시퀀스)도 있음.

Table 1: Base / Large / Huge. /16은 패치 16, /14는 14.

7. 실험 · 유산

핵심은 데이터 규모(Fig. 4): ImageNet(~1.3M)만이면 ResNet(BiT)이 앞섬. ImageNet-21k(14M)에서 비슷. JFT-300M에서 ViT가 역전. CNN 비교 대상은 ResNet-152가 아니라 BiT-L = ResNet152×4(같은 JFT, Table 2).

결과 · 유산

Table 2 / 데이터 규모 / 어텐션 거리 / 유산.

ViT-H/14 JFT
88.55
EffNet-L2 NS*
88.5
ViT-L/16 JFT
87.76
BiT-L JFT
87.54
ViT-L/16 I21k
85.30

Table 2 ImageNet top-1. BiT-L = ResNet152×4 on JFT (9.9k core-days). ViT-H/14는 2.5k. *Noisy Student EfficientNet-L2, 88.5는 Touvron et al. 개선치.

Table 2 ImageNet · 데이터 스케일 · 어텐션 거리(Fig. 7) · DeiT/Swin/CLIP.

Table 2 (ImageNet top-1, 3-run 평균)

  • ViT-H/14 JFT: 88.55 · ReaL 90.72 · CIFAR-100 94.55 · VTAB 77.63 · 사전학습 2.5k TPUv3-core-days
  • ViT-L/16 JFT: 87.76 (0.68k days) — 같은 JFT의 BiT-L 87.54 (9.9k days)보다 정확·저렴
  • ViT-L/16 I21k: 85.30 (0.23k days)
  • Noisy Student EfficientNet-L2: 88.4/88.5∗ (12.3k days)

어텐션 (Fig. 7, 정성)

낮은 층: 어떤 헤드는 이미 전역, 어떤 헤드는 국소(CNN 초기층과 유사). 깊을수록 거리↑.

유산

  • DeiT(데이터 효율·증류) · Swin(계층·윈도우) · MAE · DINO
  • CLIP · LLaVA 등 멀티모달의 비전 인코더
IdeaRole
Patch tokensP×P cells → sequence of length N=HW/P²
[CLS]BERT-style image representation for the head
1D posLearned; 2D only at fine-tune interpolation
Inductive biasCNNs bake locality; ViT learns it if data is huge
ViT-H/1488.55 ImageNet from JFT-300M

이해도 점검

보기를 골라 정답과 해설을 확인하세요. 채점은 이 페이지 안에서만 이뤄집니다.

0 / 5 정답
  1. 1. ViT의 기본 아이디어는?

  2. 2. [CLS] 토큰과 위치 임베딩에 대해 옳은 것은?

  3. 3. ViT의 데이터 규모 의존성은?

  4. 4. ViT가 소규모 데이터에서 약한 이유는?

  5. 5. ViT의 유산은?