[BEiT] BeiT
저자: N/A
발행년도: None년
인용수: None회
왜 BeiT는 “이미지분야 BERT”를 진짜로 만들려고 했는가: 토큰 예측으로 풀어낸 비전 사전학습
1. 문제 정의 (Problem Definition)
비전 트랜스포머가 강해지면서, 남은 핵심 질문은 “라벨 없이도 좋은 표현을 어떻게 만들까”였다. ImageNet 같은 라벨 데이터는 비싸고, 도메인이 바뀌면 금방 약해졌다. 그래서 대규모 비라벨 이미지로 범용 백본을 만드는 사전학습 문제가 중요해졌다.
기존 자가지도 학습은 “이미지 전체를 같은 것으로 맞추기”에 강했다. 하지만 패치 단위의 의미를 세밀하게 배우기에는 목적함수가 애매했다. 실제 이미지에는 배경, 가림, 촬영 조건 변화가 많았다. 이런 노이즈는 모델이 쉬운 단서로만 학습하게 만들었다.
현실 데이터에서는 도메인 변화가 일상적이었다. 의료, 제조, 위성처럼 질감이 다르면 라벨 전이도 잘 안 됐다. 결국 “라벨 없이도 의미 있는 단위로 이미지를 읽는 능력”이 필요했다. BeiT는 이 지점을 정면으로 다뤘다.
2. 기존 방법의 한계 (Motivation)
초기 비전 자가지도는 재구성 기반이 많았다. 오토인코더처럼 픽셀을 복원했다. 하지만 픽셀 복원은 저수준 통계에 끌리기 쉬웠다. 의미보다는 질감과 색을 맞추는 쪽으로 기울었다.
대조학습(contrastive)은 강력한 대안이었다. 같은 이미지의 두 증강 뷰를 가깝게, 다른 이미지는 멀게 했다. 다만 이 방식은 증강 정책에 크게 의존했다. 또한 “무엇을 맞춰야 하는지”가 전역 표현 중심이었다.
마스킹 기반(MAE류)도 방향은 좋았다. 패치를 가리고 복원하면서 지역 정보를 강제했다. 그런데 픽셀을 직접 예측하면 여전히 저수준 복원에 머물 수 있었다. 결국 ‘예측 대상’을 무엇으로 잡을지가 핵심 한계로 남았다.
3. 제안 방법의 핵심 아이디어 (Key Idea)
BeiT의 핵심은 “픽셀”이 아니라 “시각 토큰”을 마스크 예측 대상으로 삼았다는 점이었다. 즉, 이미지를 텍스트처럼 토큰 시퀀스로 보고 BERT식 마스크드 토큰 예측을 했다. 이때 토큰은 사람이 만든 라벨이 아니라, 별도 토크나이저가 만든 비지도 코드였다.
직관적으로는 이런 비유가 잘 맞았다. 픽셀 복원은 “철자 맞추기”에 가깝고, 토큰 예측은 “단어 맞추기”에 가깝다고 볼 수 있었다. 철자는 맞췄지만 문맥을 모르는 모델보다, 문맥 속 단어를 맞추는 모델이 더 전이력이 좋았다. BeiT는 시각에서 그 문맥 학습을 노렸다.
기존 MAE가 “가린 부분의 픽셀”을 맞췄다면, BeiT는 “가린 부분의 의미 단위”를 맞췄다. 그래서 노이즈나 조명 변화에 덜 흔들리는 목표를 만들었다. 이 차이가 사전학습의 성격을 바꿨다.
BeiT는 ‘이미지를 토큰화한 뒤 토큰을 예측’함으로써, 비전 사전학습의 목표를 더 의미론적으로 만들었다고 해석했다.
4. 아키텍처 설명 (Architecture)
파이프라인은 크게 두 흐름으로 나뉘었다. 하나는 토큰을 만드는 토크나이저였고, 다른 하나는 토큰을 예측하는 ViT 인코더였다. 학습 시에는 이미지 한 장에서 두 표현이 동시에 만들어졌다. 입력은 같은 이미지였지만 역할이 달랐다.
먼저 토크나이저는 이미지 패치를 이산 코드로 바꿨다. 논문에서는 dVAE 같은 방식으로 코드북 인덱스를 만들었다. 이 인덱스가 “정답 토큰” 역할을 했다. 중요한 점은 이 정답이 라벨이 아니라는 점이었다.
그 다음 ViT는 패치 임베딩을 입력으로 받았다. 일부 패치는 [MASK]로 대체했다. 모델은 마스크된 위치마다 “어떤 토큰 인덱스였을지”를 맞췄다. 출력은 코드북 크기의 분류 문제처럼 설계됐다.
전체 흐름을 pseudo-code로 적으면 아래처럼 보였다:
# x: image
tokens_gt = tokenizer(x) # dVAE가 만든 discrete codes (no labels)
x_masked, mask = mask_patches(x) # 일부 패치를 [MASK]로 치환
h = vit_encoder(x_masked) # Transformer encoder
logits = head(h[mask]) # masked positions only
loss = cross_entropy(logits, tokens_gt[mask])
이 구조가 문제에 맞았던 이유는 명확했다. 마스크 예측은 문맥 이해를 강제했다. 그리고 예측 대상이 픽셀이 아니라 토큰이라서 목표가 안정적이었다. 결국 “지역 의미 단위 + 전역 문맥”을 동시에 학습하게 만들었다.
5. 접근 방법의 특징 및 설계 의도 (Design Choices)
가장 큰 설계 선택은 이산 토큰화(discretization)였다. 연속값을 맞추는 회귀보다, 토큰 분류는 학습 신호가 깔끔했다. 또한 코드북은 자연스럽게 “시각 단어장”처럼 동작했다. 저자들은 이 단어장이 의미론적 압축을 제공한다고 봤다.
두 번째 선택은 BERT식 마스킹이었다. 마스크 비율이 높아질수록 문맥 의존이 커졌다. 이는 로컬 텍스처만으로는 답을 못 맞추게 만들었다. 쉬운 복원 문제로 흐르는 걸 막으려는 의도가 보였다.
세 번째 선택은 “정답 생성기와 예측기”를 분리한 점이었다. 토크나이저는 고정된 교사처럼 동작했다. 덕분에 학습이 안정적이었다. 반면 토크나이저 품질이 전체 성능을 제한하는 구조이기도 했다.
대안과 비교하면 트레이드오프가 분명했다. 대조학습은 토크나이저가 필요 없었다. 하지만 목표가 전역 정렬에 치우칠 수 있었다. MAE류 픽셀 복원은 단순하지만 저수준에 끌릴 수 있었다. BeiT는 그 사이에서 “의미 있는 목표”를 선택했다.
6. 실험 결과 요약 (선택)
실험은 “가설이 맞았는가”를 확인하는 방향으로 읽는 게 좋았다. 토큰 예측이 전이 성능을 올렸는지, 그리고 ViT 백본에서 특히 유효했는지가 핵심이었다. 결과는 대체로 이 가설을 지지했다. 분류뿐 아니라 다운스트림 전반에서 사전학습 이점이 확인되는 흐름이었다.
ablation 관점에서는 토크나이저와 마스킹 전략이 중요했다. 토큰 품질이 나쁘면 예측 과제 자체가 의미를 잃었다. 또한 마스크드 포지션에만 loss를 주는 설계가 학습 효율을 높였다. 즉, “어디에 신호를 줄지”가 성능을 좌우했다.
7. 개인적인 해석 및 실무 관점 코멘트
실무에서 BeiT의 가장 큰 가치는 “라벨 없이도 ViT를 쓸만하게 만드는 경로”를 제시한 점이었다. 특히 라벨이 부족한 도메인에서 백본을 먼저 만들고, 소량 라벨로 미세조정하는 흐름이 가능했다. 도메인 데이터가 많고 라벨이 적을수록 효용이 커졌다고 봤다.
다만 비용 구조는 가볍지 않았다. 토크나이저를 준비해야 했고, 코드북 크기나 토큰 품질 튜닝이 필요했다. 파이프라인이 두 단계라 운영 복잡도도 늘었다. 단순 MAE 대비 구현 장벽이 생겼다.
적용 체크포인트는 아래처럼 정리됐다.
- 비라벨 이미지가 충분히 큰가
- 토크나이저(dVAE 등)를 재사용할지, 도메인별로 새로 학습할지 결정했는가
- 마스크 비율과 패치 크기를 다운스트림 해상도에 맞췄는가
- 코드북 크기 증가가 실제 이득인지 검증했는가
후속 아이디어로는 “더 좋은 토큰”이 가장 직접적이었다. 토크나이저를 더 강하게 만들거나, 토크나이저-인코더를 공동학습하는 방향이 자연스러웠다. 또는 이산 토큰 대신 연속 의미 토큰을 쓰는 하이브리드도 가능했다. 결국 BeiT는 비전 사전학습에서 “무엇을 예측해야 의미를 배우는가”를 또렷하게 제시했다고 정리했다.
BeiT를 실무적으로 요약하면, ‘픽셀 복원이 아닌 의미 단위 예측’으로 사전학습 목표를 정제한 시도였다고 판단했다.
'PaperReview' 카테고리의 다른 글
| Planning with Diffusion for Flexible Behavior Synthesis (0) | 2026.01.12 |
|---|---|
| [pix2seq] Pix2seq: A Language Modeling Framework for Object Detection (0) | 2026.01.10 |
| [FastReID]FastReID: A Pytorch Toolbox for General Instance Re-identification (0) | 2026.01.07 |
| [DDPM]Denoising Diffusion Probabilistic Models (0) | 2026.01.07 |
| Visual Prompt Tuning (0) | 2026.01.06 |