[딥러닝]/[ViT]

[ViT] Vision Transformer란?

딥러닝 도전기 2022. 8. 27. 20:06

[ViT] Vision Transformer란?

CNN등장 이후, 지난 20여년간 Computer Vision 분야에서는 CNN기반 모델(AlexNet, VGGNet, ResNet, DenseNet, NasNet, EfficientNet 등)이 사용되었습니다.

CNN기반 모델이 대부분의 SOTA성능을 갖던 중 작년, 2021년에 Vision Transformer가 등장하며 ImageNet기준 1, 2위를 차지하였습니다.

이번 포스팅에서는 Vision Transformer에 대해 다루어 보도록 하겠습니다.


1. Attention

  • Intuition 

다음과 같이 $1\times1$ Convolution Filter를 통과한 이미지 Feature가 있을 때, Attention을 통하여 어느 부분이 중요한지, 중요하지 않은지를 판단합니다. 

다음과 같이 픽셀별로 중요도를 비율로 나타내는 Filter를 통해 Attention을 사용합니다.

 

이런 식으로 각각의 픽셀에 대한 중요도 값을 곱하게 되면, 어느 픽셀이 중요한지 중요하지 않은지를 판단할 수 있습니다.

이때, 곱하는 방법은 Hadamard Product(a.k.a. Element-wise Product) 또는 Matrix multiplication을 통하여 진행하게 됩니다.

 

Attention Filter는 여러가지 방법을 통하여 학습이 진행됩니다. (Bottleneck Attention Module, 2018)

 

  • Attention With Key, Query, Value

Key, Query, Value는 데이터베이스에서 나온 개념입니다.

다음과 같은 Dictionary가 있다고 생각해보겠습니다.

dict_1 = {'a' : 1, 'b' : 3, 'c' : 2}

여기에서 Key는 a, b, c가 되며 Value는 1, 3, 2가 됩니다.

외부에서 정보를 요청하는 것을 Query라고 하며, 만약 Query = 'b' 일때 이에 해당하는 Value값인 '3'을 얻게 됩니다.

 

어텐션은 Query와 유사한값을 갖는 Key를 찾아서 그 값 Value를 얻는 과정인데, Query와 Key의 유사도를 행렬곱을 통하여 얻게됩니다.

Query와 Key를 행렬이라고 생각하면 다음과 같이 내적을 통해 유사도를 계산합니다.

$$similarity_{(Q,K)} = QK^T$$

 

 

위와 같은 모델이 있을 때, $f(x)$는 Key를 구하는 함수, $g(x)$는 Query를 구하는 함수, $h(x)$를 Value를 구하는 함수입니다.

여기에서 $f(x)$를 통해 나온 값 즉, Key값을 Transpose한 후 $g(x)$를 통해 나온 Query와 곱해서 Softmax를 취함으로써 Attention map을 얻습니다

 

$$AttentionMap = softmax(QK^T)$$

다시 이 Attention map과 $h(x)$를 통해 나오는 Value값을 곱해줘서 Value에서 어떤 부분이 중요한 부분인지 집중(Attention)하도록 합니다.

 

Attention map과 Value를 곱한 값을 output이라고 지정하면 다음과 같습니다.

 

$$Output = softmax(QK^T)V$$

 

이러한 Attention 방법을 내적(Dot-product)를 사용했기 때문에 dot-product attention이라고 합니다.

 

Attention은 Query와 Key의 Similarity가 올바르게 나오는 방향으로 학습하게 됩니다. 즉, 정보를 잘 얻기 위한 Query를 변환하는 과정을 학습합니다.


2. Vision Transformer (ViT)

 

Vision Transformer는 다음과 같은 특징이 있습니다.

  • Vision Transformer는 CNN을 전혀 사용하지 않고 이미지를 패치 단위로 잘라서 이미지 패치의 시퀀스를 입력값으로 사용
  • Transformer의 Encoder 부분을 가져와서 사용
  • Transfer learning 시 CNN보다 연산량이 적음
  • inductive bias가 부족하여 CNN보다 더 많은 데이터가 필요

Inductive bias : 모델이 처음 보는 입력에 대한 출력을 예측하기 위해 사용하는 일련의 가정, 일반화 능력

CNN은 Translation equivariance(이미지에서 특정 부분의 위치가 달라져도 동일한 값을 출력), Locality 의 특성을 갖기 때문에 Inductive biase가 강합니다.

 

1. ViT 모델은 입력 이미지를 패치 단위로 자릅니다. 논문에서 제시한 그림에서는 패치를 9개로 자른 것을 확인할 수 있습니다.

2. 위치 정보를 포함하도록 Positional Embedding을 더해줍니다.

3. Class 정보를 포함하는 [CLS] 토큰을 제일 첫부분(0번)에 추가합니다. (CLS token은 Learnable)

 

4, Patch를 Flatten하는 Linear Projection을 진행합니다.

5. Flattened patch를 Transformer encoder의 input으로 넣습니다.

 

6. Transformer encoder를 거쳐 나오는 [CLS] 토큰의 값을 MLP Head에 넣어서 Class를 예측합니다.

반응형