티스토리 뷰

 

1편에서 ViT를 이해하는데 필요한 Transformer에 대해서 간단하게 알아봤다.

 

https://ai.dreamkkt.com/64

 

[논문 리뷰] ViT 살펴보기 1편 - Transformer

비전 Task에서 많이 활용되는 ViT(Vision Transformer)를 이해하기 위해선 Attention과 Transformer 개념을 이해하고 있으면 좋다. 같이 한 번 살펴보자 Attention Attention은 주목 포인트를 찾는 방법이다. NLP..

ai.dreamkkt.com

 

이제 Computer Vision에 NLP에서 사용된 Transformer를 적용한 ViT에 대해서 리뷰해보자.

 

1. Abstract

 

ViT가 나오기 전 Vision 분야에서는 Transformer 적용은 제한적이었다. CNN과 Attention을 결합하거나 CNN 구조의 일부분을 attention으로 대체하는 정도였다. 이 논문에서는 CNN없이 순수 Transformer 구조로만 이미지 분류 task에서 높은 성능을 보여준다고 주장하고 있다. 그 방법은 image들을 patch로 쪼개어 sequence로 embedding하여 input으로 모델에 넣는 방식이다. 이 모델은 매우 많은 양의 데이터에 대해서 높은 성능을 보여준다고 한다.

 

2. Intro

 

Transformer는 NLP에서 나온 모델로 transformer 성능 덕에 어마어마한 크기의 모델 학습이 가능하게 되었고, model과 data가 크면 클수록 성능의 saturation문제도 없다. 하지만 CV에서는 transformer 적용이 제한적이였다. 그래서 NLP에서 성공했던 것처럼 CV에서도 똑같은 방법으로 약간의 수정하여 image를 patch로 만들어 linear embedding sequence로 만들어 input을 transformer에 넣어 실험을 진행했다. 그러나 mid-size 데이터셋에서는 좋은 성능을 확인하기 어려웠다. 그 이유로 Transformer는 inductive bias가 없어서 데이터가 부족하면 일반화가 잘 안된다고 보고있다. 하지만 더 큰 dataset(very large scale dataset)에서는 성능이 높게 나왔음을 실험으로 확인했다.

 

3. Architecture

 

기존 transformer와 매우 유사한 구조를 갖는다. 아래 그림이 전체적인 구조이다.

 

 

 

1. Input Embedding

 

image를 patch로 만들어 이를 Linear Projection을 통과시켜 patch embedding을 만든 후 position embedding과 결합한다.

 

input을 1-D Sequence 형태의 token embedding으로 만든다. 이때 image는 2-dim 이므로 이를 다루기위해서

 

 $ x \in R^{HxWxC} $ 를 $ x_p \in R^{N x (P^2C} $로 reshape한다.

 

$ H, W $ : image resolution

$ C $ : channels

$ P $ : patch size

$ N $ : $HW/P^2$ patch의 개수

 

Transformer는 Latent Vector Size인 D를 상수로 사용했다. (모든 Layer)

 

이를 차용해 reshape한 $x_p$를 flatten, D dim Linear projection으로 patch(input) embedding을 만든다.

 

 

2. class token

 

BERT모델에서 활용한 Class Token 처럼 patch embedding 앞에 학습가능한 embedding을 추가한다.

 

참고로 classification head는 Transformer encoder의 output이 통과하며 MLP로 수행이 된다.

 

3. Position embeddings

 

Transformer에서 사용했던 self-attention은 위치 정보가 없으므로 patch embedding에 position embedding을 추가해준다.

 

이때 1-dim position embeddings를 사용하는데 2-dim과 별 차이가 없는 실험결과가 있어서 효율적인 1-dim을 사용한다.

 

Transformer와 다른 점은 기존에는 위치에따른 sin,cos 을 활용한 continuous binary vector를 활용하지만

 

ViT에서는 이 정보도 학습가능한 embedding으로 넣어버렸다. 이 부분도 inductive bias를 더 줄인 것이라 볼 수 있다.

 

4. Encoder

 

Multi head Attention 과 MLP blocks를 사용했으며 Layer Norm과 Residual Connection을 적용했다.

 

 

 

4. Inductive bias

 

Inductive bias는 쉽게말해서 사람들의 직관에 의해서 제약조건을 준 것이라 보면 된다.

 

이 논문에서는 CNN보다 적다고 주장한다. Locality, 2D neighborhood structure, translation equivariance 가 각 Layer마다 적용되지만, ViT는 MLP Layer에서만 Locality와 translationally equivariant가 있고, Self-Attention Layer는 Global하게 적용되기 때문이다.

 

2D neighborhood structure도 조금 사용하는데, 처음 image를 patch로 자를 때와 fine tuning에서 다양한 이미지 resolution에 대한 position embedding 조정 정도만 있다. pre-trained 모델에서 학습한 resolution보다 더 큰 resolution 이미지로 patch size는 그대로 하면서 sequence 길이를 더 늘린 후 2D interpolation 방법을 통해 patch를 효율적으로 잘라내는데 이때 inductive bias 요소가 있다고 말한다.

 

또한 ViT에서는 앞에서 언급한 것처럼 2D patch의 position에 대한 정보가 없고 학습 가능한 파라미터로 embedding 후 추가하였기에, spatial relation은 오직 scratch 부터 학습된 결과만으로 알 수 있기에 inductive bias가 적다고 주장하는 것이다.

 

5. Hybrid Archtecture

 

raw image의 patch 대신 CNN을 통과한 후 feature map을 input으로 하여 sequence를 형성하는 방법으로 응용할 수 있다.

 

예를 들어 special case로 1x1 spatial size의 patch는 channel dim을 flatten한 결과를 transformer dimension으로 projection하는 과정이다. 나머지 Self-attention mechanism부터는 동일하게 진행된다.

 

다음에는 제시된 architecture를 바탕으로 직접 구현해보는 코드를 업로드 하려고 한다.

 

참고 논문 - https://arxiv.org/abs/2010.11929v2

 

An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale

While the Transformer architecture has become the de-facto standard for natural language processing tasks, its applications to computer vision remain limited. In vision, attention is either applied in conjunction with convolutional networks, or used to rep

arxiv.org