개인적인 논문해석을 포함하고 있으며, 의역 및 오역이 남발할 수 있습니다. 올바르지 못한 내용에 대한 피드백을 환영합니다 :)
[@ 개요]
Transformer로 불리우는 Self-attention 기반의 모델은 자연어 처리(NLP; Natural Language Processing)에서 주류가 되었다. 거대한 말뭉치(corpus)에 학습되어 여러 작은 특정 태스크에 미세조정되기 간편해지며 많은 연구에서 사랑받고 있는 모델이다.
하지만 컴퓨터 비전(Computer Vision)에서는 여전히 CNN이 폭넓게 사용되고 있다. NLP에서의 Transformer의 성공을 기반으로 많은 연구들이 CNN을 일부분 혹은 전부 대체하려는 시도들이 많이 있었는데, CNN을 Transformer로 전부 대체하려는 연구들은 컴퓨팅 비용 측면에서는 비용을 많이 줄이는 등의 효과가 있었지만 성능면에서 ResNet 기반의 아키텍처 등에 뒤떨어지는 모습을 보였다.
[@ Vision Transformer (ViT)]
NLP에서의 Transformer scaling successes에 영감을 받아 가능한 최소한의 수정을 거친 Standard Transformer를 곧바로 이미지에 적용하는 실험을 진행했다.
이미지를 몇몇 패치(patch)들로 나누고 이 패치들을 선형 임베딩(Linear embedding)에 통과시켜 임베딩으로 만들고 이를 시퀀스로 만들어 Transformer의 입력으로 주어질 수 있도록 했다. 이렇게 입력 이미지에서 쪼개진 패치들은 NLP에서의 "token"들과 같은 단위로 취급될 수 있다.
ImageNet
과 같은 mid-sized 규모의 데이터셋에서 별다른 강력한 제약없이 위 모델을 학습시킬 경우 ResNet 계열의 모델보다 몇 퍼센트나 낮은 결과를 보였다. 여기서 저자들은 Transformer에는 inductive bias가 CNN에 비해 많이 부족하다고 생각했다.
- Inductive bias
- translation equivariance: 이미지 내에서 물체의 위치가 바뀌어도 그 특성을 똑같이 잡아낼 수 있는 능력 - 참고: https://ganghee-lee.tistory.com/43
- localty: Transformer는 역시 global한 상관관계(멀리 떨어진 요소들 간의 상관관계)를 훌륭하게 잡아낼 수 있지만 지역적인 상관관계(가깝게 붙어있는 요소들 간의 상관관계)를 잡아내는 데에는 CNN만한 것이 없다.
하지만 거대한(14M ~ 300M) 규모의 데이터셋에서 모델이 학습된다면 상황이 바뀐다. 저자들은 이 경우 대규모 학습이 영향이 inductive bias의 부족함에 대한 영향을 충분히 압도한다는 것을 관찰했다.
또한 대규모 데이터셋에서의 사전 학습 이후에 소규모 데이터가 있는 작업으로 전이학습(transfer learning)에 사용될 때 우수한 결과를 보임을 확인했다.
[@ Transformer]
[@ Naive application of self-attention to images]
Transformer의 근간이 되는 Self-attention을 이미지에 사용하는 가장 Naive한 방법은 이미지의 모든 픽셀에 대해 다른 모든 픽셀에 관한 상관관계를 계산하는 것이다. 이 방법은 이미지의 픽셀 수에 대해 4제곱으로 계산 복잡도가 증가하기 때문에 실해상도에 해당하는 이미지에 대해선 적용되기 어려웠다.
[@ Related works with ViT]
아래는 한 이미지 패치를 flatten하는 과정을 나타낸 것이다.
이것을 다시 Transformer의 선형 임베딩 를 통해 입력 차원 로 매핑한다.
[@ Position embedding]
또한 ViT에는 Self-attention만 있기 때문에 위치 정보를 제공해줄 position embedding ()을 더해주어야 한다. position embedding에는 2D 위치정보를 제공해주는 것도 실험해봤지만 눈에 띄는 성능 향상이 없어 기존 1D position embedding을 사용했다고 언급하고 있다.
[@ CLS token]
concatenated patch embedding에 가 추가되고 positional embedding, 의 차원도 로 1이 추가되어 있음을 확인할 수 있는데, BERT에서의 [class]
토큰처럼 클래스 정보를 모델에 제공해주었기 때문이다.
[@ Transformer encoder]
기존 Transformer 구조와 비슷하게 구성되어 있다. 위와 같은 Transformer encoder block이 번 반복되어 feature를 만들게 된다.
[@ Inductive bias]
앞서 저자들은 Vision Transformer가 이미지에서의 inductive bias가 더 적다고 언급했다.
CNN에서는 전체 모델에 걸쳐 localty 및 2차원 neightborhood structure나 translation equivatiance 등의 inductive bias가 각 레이어에서 반영된다.
하지만 ViT에선 MLP에서만 이러한 특징들이 반영될 수 있으며 self-attention 레이어들은 모두 전역적인 상관관계를 잡아내는 데 특화된 레이어이다.
[@ Hybrid Architecture]
이미지 패치를 단순 시퀀스로 펼쳐서 사용하는 대신 CNN의 feature map을 사용하는 방법이 대안이 될 수 있다. 입력 이미지를 다양한 CNN을 통해 feature map을 추출하고 flatten -> Transformer의 입력 차원으로 projection을 수행하면 Transformer의 입력 시퀀스의 형태로 변환할 수 있다.
ViT는 이전의 Transformer가 그랬던 것처럼 사전에 거대한 데이터에 학습되고 downstream task 목적에 맞게 미세 조정되어 사용되는 것이 더욱더 효과적이다. 사전에 학습된 prediction head를 제거하고 0으로 초기화된 feedforward 레이어를 추가하여 downstream task의 클래스 수에 맞게 결과값의 형태를 변형해주었다.
[@ position embedding interpolation]
[@ Datasets]
[@ model variants]
Devlin et al.에서의 BERT 세팅과 동일하게 설정
ViT-L/16
은 Large
모델의 patch size를 적용한 모델을 나타낸다. 저자들은 patch size가 줄어들수록 입력 이미지가 더 잘게 쪼개지며 Transformer encoder의 입력 토큰 수가 늘어나므로 계산량이 더 늘어난다고 강조하고 있다.
[@ Baseline CNNs]
ResNet50
의 Stage 4
output을 사용Stage 4
를 제거하고 Stage 3
의 output을 사용Stage 3
의 레이어 수를 Stage 4
의 레이어 수와 같게 하였음[@ Training & Fine-tuning]
ViT-L/16
ViT-H/14
[@ Metrics]
Fine-tuning에 대한 결과를 few-shot accuracy 또는 fine-tuning accuracy로 평가했다.
본 논문에서 제안하는 ViT-L/16
이 기존 State-of-the-art 방법들에 비해 성능도 좋았으며 컴퓨팅 비용 면에서도 효율적이었다. 심지어 더 큰 모델 ViT-H/14
는 이를 더 뛰어넘는 성능을 보였다.
Figure 3. Vision Transformer는 거대한 대규모 데이터셋인 JFT-300M에 사전 학습했을 때 좋은 성능을 보였다.
Figure 4. 두 번째로 JFT-300M에 랜덤 샘플링을 거쳐 각각 9M, 30M, 90M 크기의 subset을 만들어 실험을 진행했다. 다른 추가적인 regularization이나 hyper-parameters의 세팅을 모두 동일하게 진행했다.
여기에서는 JFT-300M에서 사전학습하고 전이 학습에서의 성능을 비교한다. ResNet 기반의 세팅 7가지, Vision Transformer 6가지, Hybrids 모델 5가지 세팅을 비교한다.
[@ Figure 5.]
[@ How the Vision Transformer processes image data]
Vision Transformer의 첫 레이어는 flattened 이미지를 저차원으로 매핑하게 된다. 이 과정에서 학습된 embedding filter의 상위 구성요소를 시각화 했을 때(Figure 7. Left), CNN에서 볼 수 있었던 저차원에서의 basis function 들을 닯아있음을 볼 수 있다.
[@ position embedding]
Transformer encoder로 입력이 주어지기 전에 position embedding을 각각 토큰에 추가해주었다. 이 각 패치에서 학습된 position embedding의 유사도를 시각화 했을 때(Figure 7. Center), 각 패치들이 비슷한 위치에 있을 때 비슷한 position embedding을 가지는 것을 볼 수 있다.
이를 통해 이미지 내부의 거리 개념을 encoding하고 있음을 알 수 있다.
[@ Can Self-attention allows ViT to see the entire image?]
Self-attention이 실제로 이미지 전체에 대해서 정보를 취합할 수 있도록 하는지 살펴본다.
이미지 내부에서 정보가 결합되는 공간 간의 거리의 평균을 attention 가중치를 기반으로 계산했고 이를 시각화 했다.(Figure 7. Right)
모델의 낮은 레이어에서부터 이미지 전체에서 정보를 결합함을 확인할 수 있다. 점점 레이어 위치가 높아질수록 평균 attention distance가 좁아지며 local하게 정보를 결합한다.
attend하는 물체도 의미있는 단위로 모델이 잘 attend하고 있음을 Figure 6.에서 확인할 수 있다.