Vision & Multimodal · ICLR 2021 2021
An Image is Worth 16×16 Words: Transformers for Image Recognition at Scale — ViT
이미지를 16×16 패치 시퀀스로 — 순수 Transformer가 대규모에서 CNN을 이김.
1. 핵심 요약
2. 왜 중요한가 — 쉬운 설명
30초 비유
이미지를 작은 타일(16×16) 조각으로 자르고, 각 조각을 “단어”처럼 취급해 문장(Transformer)에 넣습니다. CNN의 특별한 설계(지역성·이동 등변성) 없이도, 데이터가 아주 많으면 CNN을 이깁니다.
무엇을 제안했나
- 패치 임베딩 — 각 패치를 펴서 선형 변환 → 토큰.
- [CLS] 토큰 + 위치 임베딩 을 더해 순수 Transformer 인코더에 투입.
그래서 무엇이 달라졌나
- JFT-300M 규모에서 ImageNet 88.55% 로 최고 CNN을 추월.
- 단, 작은 데이터에선 CNN이 유리 → “스케일이 귀납적 편향을 이긴다”.
- 비전 백본이 Transformer로 이동, CLIP·BLIP-2의 “눈”이 됨.
더 공부할 가치가 있을까?
- 비전이나 멀티모달을 한다면 필수 — 요즘 이미지 인코더의 표준.
- 먼저 볼 것 — Transformer(구조 그대로 재사용).
3. 배경 · 픽셀 토큰의 벽
4. 패치 분할
패치 격자
P를 고르고 칸을 클릭하세요. N = HW / P². /14는 ViT-Huge.
선택한 패치 (0, 0) → ℝ^768 로 펼친 뒤 선형 투영 E로 D차원. P가 작을수록 N이 커져 어텐션 비용↑.
5. 입력 · [CLS] · 위치
입력 시퀀스
z₀ = [CLS ; 패치E … ] + 위치. 조각을 클릭하세요.
학습 가능한 class 토큰. 마지막 은닉을 MLP 헤드에 넣어 분류 — BERT와 같은 역할.
위치는 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).
인코더 블록
LN → MSA → +z → LN → MLP(GELU) → +z′. 단계를 클릭하세요.
멀티헤드 셀프 어텐션. 패치 전부가 서로를 봄 — 1층부터 전역 통합이 가능.
모델 스펙
Table 1. Base/Large는 BERT와 같고, Huge를 추가. /P 는 패치 크기.
패치가 작을수록 N이 늘어 연산↑. Huge는 14×14. 실험에는 B/32·L/32(더 짧은 시퀀스)도 있음.
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 / 데이터 규모 / 어텐션 거리 / 유산.
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 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 초기층과 유사). 깊을수록 거리↑.
유산
| Idea | Role |
|---|---|
| Patch tokens | P×P cells → sequence of length N=HW/P² |
| [CLS] | BERT-style image representation for the head |
| 1D pos | Learned; 2D only at fine-tune interpolation |
| Inductive bias | CNNs bake locality; ViT learns it if data is huge |
| ViT-H/14 | 88.55 ImageNet from JFT-300M |
이해도 점검
보기를 골라 정답과 해설을 확인하세요. 채점은 이 페이지 안에서만 이뤄집니다.
1. ViT의 기본 아이디어는?
2. [CLS] 토큰과 위치 임베딩에 대해 옳은 것은?
3. ViT의 데이터 규모 의존성은?
4. ViT가 소규모 데이터에서 약한 이유는?
5. ViT의 유산은?