[5주차 / 신인섭 / 논문리뷰] AN IMAGE IS WORTH 16X16 WORDS:TRANSFORMERS FOR IMAGE RECOGNITION AT SCALE
Abstract
Transformer는 NLP에서 많이 쓰였었다. Vision 분야에서는 아직 Transformer 구조가 Convolution 과 같이 쓰이는 수준이었다.
저자는 CNN에 의존하지 않고 pure한 transformer 또한 이미지 분류 테스크에서 좋은 성능이 나올 수 있음을 보여줬다.
vision Transformer(ViT)를 많은 양의 데이터로 사전학습 후에, mid,small 사이즈 이미지 인식 task와 같은 다양한 task에 전이 학습 시켜서 평가를 진행했다. 결과 기존 sota 성능을 보이는 cnn 기반 모델들과 필적하는 성능을 보였다.
Introduction
NLP에서 많이 쓰이는 self-attention 기반 아키텍처는 일반적으로 Large text corpus에 사전 학습 후, smaller task-specific dataset에 전이 학습시키는 접근법을 쓴다.
Transformer 는 연산이 효율적이며, scalanility(확장성)이 좋기에 널리 사용되며, 데이터 셋이 증가함에 따라 성능 또한 포화 상태에 이를 기미는 보이지 않는다.
vison 분야에선 convolution 아키텍쳐가 지배적인 상황이다.
물론 NLP의 성과가 있었기에, self attention과 결합하거나, 아예 attention으로 대체하는 시도도 존재하긴 했다.
이런 시도들은 이론적으로 효율적이었으나, 하드웨어에 적용하지 못하는 상태였다.
그래서 ResNet 기반 아키텍쳐 모델들이 Large Image 분야에서 sota를 점유하고 있었다.
NLP Transformer의 scaling success에 영감을 받아, image에 transformer를 직접적으로 적용할 수 있는 연구를 진행했다.
이미지를 image patches로 쪼갠다. -> 이 patches들을 선형적으로 임베딩해 시퀀스를 생성한다 -> 이렇게 생성한 시퀀스를 트랜스포머의 input으로 넣는다.
이미지 패치는 NLP에서 하나의 token으로 적용된다.
ImageNet과 같은 mid-sized dataset을 학습하면, 비슷한 사이즈의 ResNer 모델과 비교했을때, 조금 낮은 퍼센트 포인트를 가지는 정확도를 보인다.
Transformer는 CNN의 특성인 inductive biases이 부족하다. 따라서 데이터가 크지 않으면 Transformer는 일반화하기 쉽지 않다.
(inductive biases : 지금까지 만나보지 못했던 상황에서 정확히 예측하기 위해 사용하는 추가적인 가정)
ViT는 inductive biases가 존재하지 않기에, 데이터가 적을 떄 성능이 낮을 수는 있어도, 데이터가 많게 되면 inductive bias 효과를 추월할 수 있다.
Related work
NLP에서 트렌스포머는 보통 large ciorpora에 사전학습 시키고, 원하는 테스크에 전이 학습하여 사용한다.
BERT : denoising self-supervised pre training task, GPT : language modeling pre training task
비전 분야에선 이미지의 각 픽셀과 모든 픽셀의 어텐션의 계산이 요구된다.
이런 픽셀 개수 제곱의 비용이 드는 방식을 고려했을 때, 실제 input에 적용하기엔 한계가 있다.
따라서 몇가지 approximaition들이 시도 되었다.
- local multi-head dot-product self attention block : 어텐션을 모든 픽셀에 적용하는 것이 아니라, 하나의 query pixel과 근방 픽셀들과의 어텐션만을 계산
- sparse Transformer : global self attention을 적용하기 위해 scalable approximation
- 다양한 사이즈의 블록, 각 축에서만 어텐션
상위 연구들은 좋은 성능을 보이지만, 하드웨어적 한계가 존재했다.
CNN과 self-attention을 합친 연구도 있다.
- Attention을 이용해 feature maps을 augment
- CNN의 output에 어텐션 적용
다른 시도로 이미지의 해상도와 색상 차원을 낮춰 트렌스포머를 픽셀에 적용한 모델인 GPT가 있다.
이 모델은 생성모델로, 비지도 학습을 통해 학습된다. 결과 representation은 성능을 높이기 위해 fine tined되거나 probed lineary한다.
ViT는 모델 구조 자체에도 가치 있지만, large scale dataset에 대한 가치도 있다.
Method
VISION TRANSFORMER (VIT)
기본 구조는 standard Transformer와 동일하다.
기존 트렌스포머와 다르게 2d 이미지를 다루기 때문에 input에 아래와 같은 작업을 거친다.
Raw image를 패치 단위로 쪼개고 각 패치를 왼쪽 상단->오른쪽 하단 순서대로 나열(시퀀스 데이터 화)
각 patch를 flatten하여 벡터로 변환(transformer)의 embedding vector처럼 만들 준비
Flatten한 벡터를 embedding 해주기 위해 행렬 E와 linear 연산 (Transformer의 embedding vector)
-> Enbedding dimension D로 만들어준다(Transformer d model)
embeding한 결과에 class token을 가장 첫번째 위치에 추가(bert의 class token과 유사)
class token = learnable embedding
1D Positional Embedding (patch의 시퀀스)를 추가하여 (N+1) X D 크기의 행렬 더해줌 = 최종 input
이전 입력 값에 layer normalization한 후에 multi head attention을 적용한다. 해당 값을 skip connection한다.
MLP head 에 해당하는 수식이다. 위에서 설명한 부분과 동일하고 마지막 값을 MLP한다.
FINE-TUNING AND HIGHER RESOLUTION
NLP 때 처럼, ViT를 large dataset에 pre-trained 한 다음, down stream tasks에 fine-tune을 진행한다.
down stream task을 위해, pre train 때 prediction head를 없애고, D X K의 feed forward layer로 변경한다.
(K : down stream task class 개수)
이는 pre train보다, 고해상도에서 fine tuning할 때 효과적
고상해도 이미지를 사용할 땐, pre trained 단계에서 사용했던 patch size와 동일한 사이즈를 사용해 더 긴 sequence length를 사용하게 된다.
근데 pre train 단계에서 positional embedding이 의미 없어지기에, 길이에 맞춰서 2d interpolation을 진행한다.
Experiments