저자의 의도
이미지 분야에서 attention 기법을 사용할 경우 대부분 CNN과 함께 사용되거나 CNN 구조를 유지하면서 CNN 의 특정 구성 요소를 대체하는데 사용했는데 vit 에서는 CNN에 의존하지 않고 이미지 패치의 시퀀스를 입력값으로 사용하는 transformer 를 적용했다.
기존 문제점
self-attention 과 결합하려고 하고 있고, 일부는 conv 을 완전히 대체한다.but, 하드웨어에서 제한적임. so, resnet과 유사한 아키텍처가 여전히 최첨단임
- CNN 보다 성능 좋게 하려면?
large scale로 학습하고 적은 데이터로 전이학습 시키면 성능이 높아진다.
해결 아이디어

- VISION TRANSFORMER (VIT)
- 원래의 transformer와 비슷하게 만들어서 nlp transformer 아키텍쳐와 효율적인 구현을 즉시 적용 가능하다.
- 너비와 폭을 지정한 patch 길이로 나눈 후에 이 patch 들을 linear embeddings sequence 형태로 transformer에 넣는다 .→ NLP token 처럼 사용함.
- (HxWxC) → (PxPXC)
- Transformer는 각 layer에서 constant latent vector size D를 유지하는데, 이를 위해, patch들을 학습 가능한 linear projection을 통해, D dimension 화하였다. 그리고, 이 결과를 patch embeddings라고 부른다.
- BERT의 class token 처럼, patch embedding의 앞에 learnable embedding을 붙인다. 이것은 Transformer encoder의 output이 이미지 representation(y)이 될 수 있도록 사용된다.
- pre-training과 fine-tuning 단계에서 모두, Transformer encoder의 ouput이 classification의 head로 이용된다.
- classification head는 pre-training 단에서는 one hidden layer의 MLP로, fine-trurning 단계에서는 하나의 linear layer로 구성된다.
- Position embeddings는 patch embeddings에 더해져, 공간 정보를 제공한다.
- ViT에서는 학습 가능한 1D position embeddings를 사용했는데, 2D의 position embedding이 성능에 딱히 영향이 없는 것 같아서 그랬다고 한다.
- Transformer encoder는 multiheaded self-attention의 대체 layer들과 MLP block으로 구성되어있다.
- Layernorm은 각 block 전에 적용되어 있고, 모든 block 끝에는 residual connection이 존재한다.
- MLP는 GELU 함수를 사용한 2개의 latyer로 구성되어 있다.
- Inductive bias
- inductive bias → 학습자가 처음 보는 입력에 대한 출력을 예측하기 위해 사용하는 일련의 과정
- VIT는 image specific inductive bias 가 CNN에 비해 부족함.
- ViT에서는 MLP layer에서만 translation 등분산성과 지역 정보를 보고, self-attention layer들에서는 전체적으로 본다.
- 2D neighborhood 정보는 드물게 사용된다. model의 시작에 이미지를 cutting 하고, fine-tuning 때는 position emeddings를 다른 resolution으로 처리하기 때문이다. 또한, initinalization 시에 embedding에는 정보가 없기 때문에, patch의 2D 위치와 patch 간의 공간 관계에 대해 처음부터 스스로 학습해야 한다.
- Hybrid Architecture
- Transformer 모델이 이미지를 처리하는 또 다른 접근 방법이다.
- raw image patch 대신, CNN에서 추출한 특징 맵을 사용하여 입력 시퀀스를 형성할 수 있다.
- 어떤 케이스에서는 1X1이 될 수 있는데, 이 것은 input sequence가 spatial dimension 정보를 flatten 한 케이스이다.
- 분류를 위한 input embedding과 positional embeddings 들은 앞서 설명된 대로 추가된다.
- FINE-TUNING AND HIGHER RESOLUTION
- 기본적으로 ViT를 large dataset에서 pre-train 하였고, 적은 데이터셋에서 fine-tune 하였다.
- 이를 위해, pre-trained prediction head를 지우고, zero-initialized D X K layer를 넣었다. (K는 classification class 개수)
- pre-trained 보다, fine-tune 때 높은 해상도의 이미지를 사용하는 것이 유리하다.
- 고해상도 이미지를 넣을 때, patch size는 동일하게 유지한다. (sequence length만 늘어난다.)
- ViT는 임의의 sequence length를 다룰 수 있지만, 그러면 pre-training 된 position embedding은 더 이상 의미가 없다.
- 이때는 pre-trained position embedding에 original image에서의 위치에 따라, 2D interpolation을 통해 처리했다.
참고자료
https://hipgyung.tistory.com/entry/%EC%89%BD%EA%B2%8C-%EC%9D%B4%ED%95%B4%ED%95%98%EB%8A%94-ViTVision-Transformer-%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-An-Image-is-Worth-16x16-Words-Transformers-for-Image-Recognition-at-Scalehttps://devhwi.tistory.com/42