반응형
논문 발표 당시 Transformer는 NLP 분야의 표준으로 자리잡았는데, CV에서의 적용은 한정적이었다.
CV에서 attention은 CNN과 함께 적용되거나, CNN 구조를 유지하면서 특정 컴포넌트만 대체하는 데 사용되었다.
본 논문에서는 pure transforemr를 image pathes의 시퀀스에 직접 적용하는 것이 image classification 분야에서 좋은 성능을 낸다는 것을 입증한다.
ViT의 특징
- 기존 CNN 기반 SOTA 모델보다 성능이 좋으면서 Fine-Tuning 과정에서 더 적은 리소스로도 더 좋은 성능을 보여준다.
- 기존 Transformer 모델처럼 parameter의 한계가 아직 없다. 더 많은 데이터와 더 많은 parameter로 더 좋은 성능을 보여줄 수 있다.
- CNN, RNN과 다르게 공간에 대한 bias가 없다. 따라서 많은 사전 데이터 학습이 필요하다.
- 적은 데이터로 사전 학습 시, 성능이 나빠진다.
Method
- Transformer는 1D 데이터를 처리하는데 이미지는 2D이므로 우선 이미지를 patch 단위로 나눈다.
- Tranformer는 각 Layer에서 constant latent vector size d를 유지하는데 이를 위해 patch들을 학습 가능한 Linear projection을 통해 d dimension으로 변환한다. 이 결과를 Patch embedding이라 한다.
- BERT의 cls token처럼 patch embedding에 앞에 learnable embedding을 붙인다. 이것은 Transformer encoder의 output 이미지 representation이 될 수 있도록 사용된다.
- Pre-training과 fine-tuningㄷ 단계에서 모두 Encdoer의 Output이 classification head로 이용된다.
- classification head는 pre-training 단계에서는 one hidden layer의 MLP로, fine-tuning 단계에서는 하나의 linear layer로 구성된다.
- Position embeddings는 patch embeddings에 더해져 공간 정보를 제공한다.
- ViT에서는 학습 가능한 1D position embeddings를 사용하는데, 2D position embedding이 성능에 딱히 영향이 없는 것 같다고 한다.
- Transformer encdoer는 Multihead self-attention의 대체 Layer들과 MLP block으로 구성되어 있다.
- Layernorm은 각 block 전에 적용되어 있고, 모든 block 끝에는 residual connection이 존재한다.
- MLP는 GeLU 함수를 사용한 2개의 Layer로 구성되어 있다.
Inductive bias
일반적으로 모델이 갖는 일반화 오류로는 " 모델이 불안정하(brittle)"라는 것과 "겉으로만 그럴싸하다(spurious)"라는 점이 있다.
- brittle : 데이터의 input이 조금만 바뀌어도 모델의 결과가 망가진다
- spurious : 데이터 본연의 의미를 학습하는 것이 아닌 결과와 편향을 학습하게 된다.
이러한 문제점들을 해결하기 위해 Inductive bias를 이용하게 되는데, 이는 학습 시에는 만나보지 않았던 상황에 대하여 정확한 예측을 하기 위해 사용하는 추가적인 가정을 의미한다.
- VIT는 image specific inductive bias가 CNN에 비해 덜하다.
- CNN에서는 지역 정보, 2D neghborhood 정보, translation 등분산성이 각 Layer에 담긴다.
- ViT는 MLP layer에서만 translation 등분산성과 지역 정보를 보고, self-attention layer에서는 전체적으로 본다.
- 2D neghborhood 정보는 드물게 사용된다. Model의 시작에 이미지를 커팅하고, fine-tuning 때는 position embeddings를 다른 resolution으로 처리하기 때문이다. 또한, Initialization 시에 embedding에는 정보가 없기 때문에, patch의 2D 위치와 patch 간의 공간 관계에 대해 처음부터 스스로 학습해야 한다.
Hybrid Architecture
raw image patches의 대안으로, CNN의 feature 형태로 Input sequence를 구성할 수 있다. hybrid model에서는 Patch embedding을 CNN feature map으로부터 뽑는다.
Fine-tuning and Higher resolution
- 기본적으로 ViT를 large dataset에서 pre-train하였고, 적은 데이터셋에서 fine-tuning하였다.
- 이를 위해, pre-trained prediction head를 지우고, zero-initialized DxK layer를 넣었다.(K는 class 개수)
- 고해상도 이미지를 넣을 때, patch size는 동일하고 시퀀스 길이가 늘어난다.
- ViT는 임의의 시퀀스 길이를 다룰 수 있지만 그렇게 되면 사전학습된 position embedding은 의미가 없어진다.
- 위와 같은 상황에서는 사전학습된 position embedding에 따라 original image에서의 위치에 따라 2D interpolation을 통해 처리한다.
반응형