[2111.06377] Masked Autoencoders Are Scalable Vision Learners
Masked Autoencoders Are Scalable Vision Learners
This paper shows that masked autoencoders (MAE) are scalable self-supervised learners for computer vision. Our MAE approach is simple: we mask random patches of the input image and reconstruct the missing pixels. It is based on two core designs. First, we
arxiv.org
1. Intro
배경 : 모델이 점점 커지면서 → 100만 장 라벨 데이터로는 부족 → 수억 장 필요 → 대부분 접근 불가
- NLP ⇒ self-supervised pretraining으로 해결
- 라벨 없는 데이터에서 일반화 가능한 표현을 학습하는 것!
- GPT의 autoregressive
- BERT의 masked autoencoding
- Vision ⇒ NLP에서보다 autoencoding 적용이 어려움
왜?
- 구조 차이
- Vision에서는 CNN이 주류
- CNN은 regular grid 기반이라 mask token, position embedding을 넣기 어려움 → ViT로 이 문제 해결
- 정보 밀도 차이
- NLP : 단어 하나가 많은 의미 포함 → 일부 단어만 mask해도 어려운 문제
- Vision : 공간 중복 높음 → 인접 패치로 쉽게 복원 가능
- 따라서 높은 mask 비율 필요 → 복원이 어려워지고, 의미 있는 feature 학습 가능
- Decoder 역할 차이
- NLP : Decoder 예측 대상 = 단어
- high-level semantic = 단어 자체가 문장 의미에 직결되니까 복잡한 구조 필요 X
- 단순 MLP decoder로도 표현력 +
- Vision: Decoder 예측 대상 = pixel
- low-level semantic
- decoder 설계가 학습 표현의 질에 영향
- 단순 MLP로는 부족, decoder 구조 최적화 필요
제안 : visual representation learning을 위한 MAE
- Asymmetric encoder-decoder
- 인코더 : 마스킹되지 않은 패치(25%)만 처리 → 연산 감소
- 디코더: latent + mask token을 입력받아 픽셀 복원
- 마스킹 토큰 처리를 decoder 쪽에 몰아줌 → encoder 계산량 크게 감소
- High masking ratio (75%) → redundancy 줄이고, global context 학습 유도
- 결과: 학습 속도 3배+, 메모리 절감, 대규모 모델로 쉽게 확장 가능
2. Related Work
Masked language modeling
- GPT의 autoregressive
- BERT의 masked autoencoding
- scaling +
- downstream task에 일반화 + (pretraining → fine-tuning 구조가 다양한 과제에 잘 적용됨)
- ⇒ NLP의 사전학습 +
Autoencoding
- 표현 학습
- 입력 → 인코더 → 잠재공간(latent representation) → 디코더 → 원본 복원
- DAE
- 훼손하고 → 깨끗한 신호 복원
- MAE도 DAE의 일종이지만, 여러 면에서 다름
Masked Image Encoding
- iGPT [6]: 픽셀 시퀀스로 예측
- ViT [16]: 마스크된 패치 예측
- BEiT [2]: discrete token 예측
Self-supervised learning
- pretext task를 중심으로 발전
- 최근에는 contrastive learning ↑
3. Approach
MAE
- 부분적인 정보로부터 원래 신호 복원 : autoencoding
- encoder : obcerved signal → latent 표현
- decoder : 복원
- asymmetric이라는 점! → 그래서 encoder는 mask 없는 부분만 다루게 됨
Masking
- ViT처럼 이미지를 패치로 나눔
- 그 중 75%는 마스킹
- 모델이 단순한 저수준 픽셀 연속성만 보고 복원하는 것을 방지 → 더 의미 있는 표현 학습 유도 가능
- encoder의 계산량 감소
- uniform distribution, random sampling : 이미지 중앙에 더 마스킹 되는 현상 (potential center bias) 방지
MAE encoder
- 마스킹 안된 것 처리
- ViT encoder 처럼 패치를 linear projection해서 임베딩하고, 위치 정보를 더한 후 (⇒ token으로 변환) transformer 블록에 입력
- token list random shuffle
- 마스킹 비율(예: 75%)만큼 리스트 뒤쪽 토큰 제거
- → 남은 25%만 인코더 입력
MAE decoder
- encoded visible patches + mask tokens 입력
- 제거했던 위치에 mask token 넣어 다시 전체 토큰 개수(N개)로 복원
- 셔플했던 순서를 Unshuffle해서 다시 원래 패치 순서로 정렬해서 입력
- 모든 token에 위치 임베딩
- 사전 학습 때만 사용 (reconstruction) : 인코더 + 디코더
- Recognition 목적의 이미지 표현을 생성시에는 : 인코더만
- ⇒ 디코더는 인코더와 independent, 작고 연산량 적은 디코더 사용 가능! : 사전 학습 시간 크게 단축
Reconstruction target
- 마스킹된 각 패치의 픽셀값을 예측
- 디코더 출력 (embedding) → Linear layer → 픽셀 값 벡터 (패치 내 픽셀 수)
- 디코더 output → img로 복원
- pixel 공간에서 loss 계산 : 마스킹된 패치에 대해서만
Simple implementation
- 구현상 shuffle/unshuffle만 사용
- 희소 행렬 연산(sparse operation) 없이 순서만 바꿔 처리하므로 구현 단순
4. ImageNet Experiments
- Self-supervised pre-training
- ImageNet-1K 데이터 라벨 없이 MAE로 사전 학습
- 여기서는 encoder가 좋은 representation을 배우게 하는 단계
- 분류 같은 downstream task는 풀지 않음
- Supervised evaluation
- 사전학습된 모델의 성능을 downstream task(여기서는 ImageNet 분류)에서 평가
- End-to-end fine-tuning → pre-trained encoder + classifier 전부 학습
- Linear probing → pre-trained encoder freeze, 마지막 classifier만 학습
- Baseline: ViT-Large
| 학습 방식 |
Epoch 수 |
Accuracy |
특징 |
| ViT-L scratch (original) |
200 |
76.5% |
기본 세팅, 성능 낮음 |
| ViT-L scratch (strong reg.) |
200 |
82.5% |
정규화로 성능 향상 |
| MAE pretrain → fine-tune |
50 |
84.9% |
더 짧은 학습, 더 높은 성능 |
- 모두 ViT-Large 모델을 ImageNet-1K에 대해 학습한 결과
- Vision Transformer 논문([16])에서 사용한 원래 구현 그대로, 완전히 무작위 초기화로 시작해서 supervised learning만 진행
- 성능이 낮은 이유: ViT-L은 파라미터 수가 많아서, 데이터 양이 충분해도 처음부터 학습하면 최적화가 어렵고 overfitting이 심해짐
- 여전히 무작위 초기화로 시작하지만, ViT에서 사용한 레시피 대신 이 논문에서 새로 조정한 학습 세팅을 사용
- 같은 scratch 학습이지만, 원래 구현보다 성능이 크게 향상(76.5 → 82.5%)
- 무작위 초기화 대신, MAE(self-supervised)로 사전학습된 encoder 가중치를 불러와서 supervised fine-tuning 진행
- 사전학습 덕분에 모델이 이미지 구조와 패턴을 이미 잘 이해하고 있어서, supervised 학습 시 더 빠르고 효율적으로 최적화 가능
- scratch ↔ fine-tuning : 사전 학습이 얼마나 도움이 되는지 확인
- scratch → 사전 학습 없이 처음부터 supervised로 학습
- fine-tuning ↔ linear probing : 사전 학습 representation이 얼마나 좋은지
4.1. Main Properties
Masking ratio
[Fig 5] y축 : ImageNet-1K validation accuracy (%)
- lin & fin 모두 75%가 + (BERT는 15%)
- 전체 맥락(gestalt)을 이해해야만 복원 가능 → 더 의미 있는 표현 학습
- lin → 마스킹 비율이 높아질수록 성능이 증가하다가 75%에서 최고점 (acc gap이 54.6% → 73.5%, 약 20% 향상)
- fin → 마스킹 비율에 덜 민감 (40~80%에서 모두 좋은 성능), 모두 scratch (82.5%)보다 높음
Decoder design
- depth(Transformer block 개수)
- lin → decoder depth 중요
- autoencoder의 마지막 layer : reconstruction에 특화 vs recognition(분류)
- 디코더 깊으면, reconstruction 처리를 디코더에서 해결, 인코더 표현은 더 추상적이고 recognition 친화적으로 유지 가능
- 성능 최대 8% 향상
- fin → 영향이 작음
- 인코더 마지막 layer를 recognition task에 맞게 재학습 가능
- 1-block 디코더도 fin에서는 높은 성능(84.8%)
- mask token → visible token 정보 전달만 하면 되기 때문(최소 요건)
- width(채널 수)
- 기본값: 512
- fin & lin 둘 다 +
- 더 좁은 디코더도 fin에서는 +
Mask token
- 인코더에서 mask token 사용하면
- lin에서는 14% -
- 사전 학습과 실제 적용 사이 gap 때문
- 실제 사용(Downstream task)에서는 mask token이 없음
- 결국 인코더에서 real 패치만 보도록 → 성능 +
- 속도↑
- self-attention 연산량이 대폭 감소
- FLOPs 3.3배 절감 → 실시간 속도 2.8배 향상
- masking 비율 높으면 속도 차이가 4배 이상 나기도 함
- 메모리 절감
- token 개수 감소 → 메모리 사용량 감소 → 더 큰 모델이나 배치 학습 가능
Reconstruction target
- 기본적으로는 per-patch norm 없이 각 패치의 픽셀 값 복원
- Per-patch norm
- 각 패치 내부 픽셀을 평균 0, 표준편차 1로 정규화한 뒤 복원
- 패치 내 contrast 증가 → 정확도 향상
⇒ “밝기 정보”라는 쉽게 복원 가능한 저주파 신호를 제거하고, 복원 난이도가 높은 디테일 신호를 강조해서 representation을 더 잘 학습하도록!
참고..
3. PCA 수행 후 복원
- 고차원 데이터를 저차원으로 변환하여 데이터의 주요 패턴을 찾고 시각화하는 데 사용되는 통계 기법
- 각 패치를 PCA로 변환하고, 상위 96개 주성분만 복원 목표로 사용.
- PCA는 저주파(large-scale structure) 성분이 먼저, 고주파(디테일)는 뒤에
- 상위 성분은 데이터의 큰 분산(저주파/큰 구조/평균 밝기 변화)
- 하위 성분은 경계·질감 같은 고주파 디테일
- 상위 주성분만 쓰면 → 디테일 손실 → MAE 성능 저하
- 따라서 MAE는 고주파 정보가 중요!
4. Token 예측 (BEiT 방식)
- DALL·E 사전 학습된 dVAE로 이미지를 토큰화
- MAE 디코더가 마스크된 위치의 토큰 ID를 예측 (CE loss)
- 결과:
- fin → 0.4% 향상 (token ↔ unnormalized pixels)
- 비정규화 픽셀은 저주파(밝기, 평균 색) 성분이 그대로 있어서, 토크나이저로 변환하면 그 영향을 줄이고 semantic 단서를 강화 → 미세하게 성능 향상
- 성능 차이 없음 (token ↔ normalized pixels)
- lin에서는 오히려 성능 하락
- 추가 단점:
- dVAE 자체 사전 학습 필요(추가 데이터 필요: 2.5억 이미지)
- dVAE 인코더가 크고(FLOPs의 40%) 연산 부담 큼
- 구현 복잡성 증가
Data augmentation
- Cropping-only (고정 or 랜덤 크기) : 성능+
- Cropping + Color jittering : 성능 -
- No augmentation (센터 crop만, flip 없음) : 꽤 좋은 성능
- contrastive learning에서는 절대 불가능
- BYOL, SimCLR 같은 contrastive learning → augmentation 필수
- Crop only로 바꾸면 → 정확도 13% ~ 28% 감소
- trivial solution(특징이 너무 쉬워서 의미 없는 학습)로 빠짐
- contrastive는 같은 이미지의 다른 뷰끼리 embedding을 가깝게 만들고, 다른 이미지끼리는 멀게 만드는 게 목표.
- Augmentation 없으면 "다른 뷰"가 사실상 같은 이미지라 학습이 무너짐.
- MAE가 Augmentation에 덜 의존하는 이유
- 무작위 masking 자체가 augmentation 역할
- 각 iteration마다 mask 패턴이 다르기 때문에, 같은 이미지여도 매번 다른 입력이 되는 것
Mask sampling strategy
- Block-wise masking
- 75%로 가면 성능 하락
- 큰 덩어리로 가려서 복원 난이도가 급상승, 학습 loss↑, blurry해짐
- Grid-wise masking
- 복원 난이도 낮음, loss↓, 재구성 결과도 sharp해서 나쁘지 않지만~?
- but representation 품질 낮음(즉, downstream task 성능↓)
⇒ random masking이 가장 효율적이다!
Training schedule
- 기본 setting : 800 epoch 사전 학습
- 학습 길이가 길어질수록 lin 성능 계속 증가
- 1600 epoch에서도 성능 포화(saturation) x
- MoCo v3(Contrastive learning)는 약 300 epoch에서 이미 성능 포화
- 이유:
- MAE encoder는 한 epoch에 전체 패치의 25%만 봄
- contrastive는 200% 이상 봄 (2 crop, multi-crop)
- 즉, MAE는 동일 epoch 수라도 실제 본 데이터 양이 훨씬 적기 때문에 더 긴 학습 필요
4.2. Comparisons with Previous Results
Comparisons with self-supervised methods
- ViT-B
- 대부분의 self-supervised 방법들이 비슷한 fine-tuning 성능을 보임.
- ViT-L
- 방법 간 성능 차이가 커짐 → 큰 모델일수록 overfitting될 위험 높음, 좋은 pre-training 방법을 쓰면 모델의 큰 용량이 진짜 일반화 성능으로 이어짐
- MAE 특징
- scale up well
- ViT-H(224×224) fine-tuning → 86.9%
- ViT-H(448×448) fine-tuning → 87.8%
- 기존 SOTA(512, 87.1%)보다 0.7% 향상
-
- SOTA는 복잡한 고급 네트워크 사용, MAE는 vanilla ViT로 달성
- BEiT와 비교
- 정확도는 MAE가 더 높음.
- BEiT는 token prediction인데, ViT-B로 픽셀 재구성을 시도하면 성능이 1.8% 떨어짐
- 추가적인 tokenizer(dVAE) 사전학습 필요함
- MAE는 애초에 픽셀 기반 재구성이라 성능 저하 없음
- 속도
- MAE가 BEiT보다 epoch당 3.5배 빠름
- 이유: Table 1c에서 설명한 것처럼 encoder에서 mask token을 제거해 연산량과 메모리 사용량을 크게 줄였기 때문.
Comparisons with supervised pre-training
- Supervised pre-training → 라벨 필요
- MAE → 라벨 없이 self-supervised pre-training
- ViT-L degrades when trained in IN1K
- 데이터 양(1.28M 이미지)이 ViT-Large의 큰 용량을 일반화할 만큼 충분하지 않음 → overfitting 발생
- ViT-L supervised 학습을 자체적으로 더 잘 구현했으나 성능이 일정 수준 이상 올라가지 않고, plateau
⇒ ViT-L, ViT-H 같이 파라미터 수가 많으면 supervised는 overfitting 경향이 있고 성능이 정체됨
- 반면 MAE는(self-supervised pre-training → fine-tuning)
- 일반화 성능이 supervised보다 더 높음
- 모델이 커질수록 성능이 계속 올라감
- JFT-300M
- ViT 원 논문에서 대규모 데이터셋 JFT-300M(3억 장)으로 supervised pre-training 후 fine-tuning하면 모델 크기가 클수록 성능이 더 크게 향상됨
- MAE도 데이터 크기를 늘리지 않고 IN1K만으로 비슷한 scaling-up 효과를 냄
정리!
Vision 분야는 지금까지 대부분 감독 학습 기반이었고, 자기지도 학습은 제한적으로만 쓰였음. 그러나 NLP처럼 간단한 자기지도 학습 → 대규모 모델 확장 → 지속적인 성능 향상의 길로 갈 가능성이 있음.
댓글 영역