Vision Transformer paper: AN IMAGE IS WORTH 16X16 WORDS: TRANSFORMERS FOR IMAGE RECOGNITION AT SCALE
Vision Transfomer(ViT)는 2021년 Google research에서 발표한 모델로, Image classfication 문제에 Transformer 구조를 성공적으로 적용시킨 모델이다.
자연어 처리에서 많이 사용되는 Transformer를 전체 아키텍쳐를 크게 변경하지 않은 상태에서 Vision Task에 적용
기존의 제한적인 Attention 메커니즘에서 벗어나, CNN구조 대부분을 Transformer로 대체
대용량 데이터셋을 Pre-Train(사전학습) → Small Image 데이터셋(ImageNet-1k, Cifar100)에서 Transfer Learning
ViT는 기존 Transformer의 Encoder 구조를 사용한다. 따라서, Transformer에 맞는 입력 값을 사용해야한다. 기존 Transformer에서는 시퀀스 데이터를 Embedding 하고, Positional Encoding을 추가해준다. Vision Transformer에서도 동일한 방식을 거친다.
Multi-Head self-Attention
Notation의 표기를 간단히 하기 위하여 입출력을 로 사용하였다.
Attention 구조에 맞게 q(query), k(key), v(value)를 가지며, self-attention 구조에 맞게 다음 식과 같이 q, k, v가 구성된다.
q,k,v를 한번에 연산하기 위해서 (7) 식과 같이 사용하기도 한다.
식 (8), 식 (9)를 이용하여 각 head 에서의 self-attention 결과를 뽑고, 식 (10)을 이용하여 각 head의 self-attention 결과를 묶은 다음에 Linear 연산을 통해 최종적으로 Multi-Head Attention의 결과를 얻을 수 있다.
식 (10)에서 self-attention 결과를 묶은 것의 shape은 이고, 의 shape은 이므로 연산의 결과는 가 된다. 이 과정을 통해 Transformer Encoder의 입력과 같은 shape을 가지도록 조절할 수 있다.
실제 Multi-Head Attention을 구현할 때, 각 head의 에 대한 연산을 따로 하지 않고 한번에 처리할 수 있다.
위 식과 같이 같은 구조의 head에서 weight만 달라지게 되므로 다음과 같이 한번에 묶어서 연산할 수 있다.
참고자료
https://www.youtube.com/watch?v=hPb6A92LROc&t=493s
https://gaussian37.github.io/dl-concept-vit/