Study With Inha

[Paper Review] Visual Prompt Tuning, ECCV 2022 논문 리뷰 본문

Paper Review

[Paper Review] Visual Prompt Tuning, ECCV 2022 논문 리뷰

강이나 2023. 3. 27. 19:02
ECCV 2022, Visual Prompt Tuning, M. Jia et al.

논문 링크: https://arxiv.org/pdf/2203.12119.pdf
 
 


1. Introduction

최근 GPT 계열 모델과 같이 대규모 데이터와 대규모 모델을 활용한 딥러닝 연구가 많아졌다.
그러한 데이터의 경우 엔비디아나 구글과 같이 엄청난 컴퓨팅 파워를 가지고 있는 대기업이 아닌 일반인들은 Pretrain된 모델을 Fine-tuning하는 것도 어려운 상황에 이르렀다 :(
따라서 본 논문에서는 비전 분야에서 대규모 Transformer 모델을 효율적으로 활용하기 위한 새로운 fine-tuning 방법인 Visual Prompt Tuning (VPT)을 제안한다.
이는 기존의 fine-tuning 방법보다 더 적은 양의 학습 가능한 매개변수를 도입하여 모델 성능을 향상시키는 방법이다.
NLP 분야에서 먼저 'Prompt Tuning'이 연구되고 있었는데, 이것을 Computer Vision 분야에서 활용하는 방법을 연구했다.(근래에 NLP 분야의 방법론들을 Computer Vision으로 도입하는 연구가 많아지고 있는 것 같다.)
VPT는 작은 양의 학습 가능한 매개변수를 도입하여도 다양한 downstream recognition task에서 높은 성능을 보이며, 몇몇 데이터셋에서는 full fine-tuning보다 더 나은 결과를 보인다.
 
 


2. Related Works

대규모 데이터로 pretrain된 모델을 활용하는 방법(transfer learning하는 방법)에는 대표적으로 두 가지 방법이 있다.

1. Fine-tuning (for full model)
2. Linear Probiing

위 그림에서와 같이 Fine-tuning의 경우 pretrain된 전체 모델을 낮은 learning rate로 학습시키면서 downstream task에서 활용할 수 있도록 하는 방법이다.
그 경우 전체 모델을 재학습하는 것이기 때문에 높은 성능을 보이나, 재학습해야할 모델의 parameter 수가 많다는 단점이 있다.
반면에 Linear Probing의 경우 pretrain된 모델의 encoder는 고정시키고 (parameter를 업데이트하지 않음), 테스크를 위한 head layer만 추가한 뒤 이것만 학습하는 방법을 말한다.
(몇 개의 MLP Layer + head layer를 추가하기도 한다.)
예를 들어, classification task를 수행하고자 하는 경우, pretrain된 모델의 인코더에 classification head만 추가한 뒤 이 레이어만 weight를 업데이트하며 학습한다.
이 경우 head layer만 학습시키는 것이기 때문에 학습해야 할 parameter의 수가 매우 적다는 장점이 있지만, 모델 전체를 training하는 것보다는 낮은 성능을 보인다는 단점이 있다.
 
VPT (Visual Prompt Tuning)의 경우 두 방법의 장점은 가져가고 단점은 상쇄하는 방법론이다.
backbone (pretrained model의 encoder)는 고정하고, head와 learnable한 'visual prompt'를 도입하였다.
이 경우 backbone 전체를 재학습해야하는 부담은 덜어주면서도 learnable한 visual prompt가 전체를 재학습하지 않더라도 그에 준하거나 더 좋은 성능을 나타내는 역할을 했다고 한다.

 

- [번외] Prompt Tuning in NLP

'prompt'라는 개념은 NLP에서 처음 도입된 것이다.
ChatGPT와 같은 Generative Model의 경우 사용자가 특정한 task를 요구하게 된다.
예를 들어서 "이 기사는 스포츠에 관련된 것이야 혹은 정치에 관련된 것이야?"라고 물어보면 해당 기사의 카테고리를 '분류'하는 문제가 된다.
"(주어)가 (분류1)일까 혹은 (분류2)일까?" 라는 prompt와 함께 학습된 경우, 위에 해당하는 질문이 분류에 해당하는 문제임을 알 수 있다.
 
혹은 질문에 대한 대답을 하기 위한 prompt도 있다.
보통 "한국의 현재 대통령은 누구야?"라고 물은 경우 "한국의 현재 대통령은 [정답]입니다" 라고 대답하게 된다.
이처럼 prompt는 어떤 질문을 했을 때 매끄러운 답변을 하는 guidance를 만들어주는 역할도 할 수 있게 된다.
 
이처럼 task에 대한 guide를 제공하는 역할을 하는 prompt와 함께 학습하게 되면,
적은 양의 labeled data로도 좋은 성능을 보일 수 있으며 generalization에 뛰어나기 때문에 다양한 downstream 테스크에 대해 쉽게 학습할 수 있도록 하는 데에 도움을 준다.
 
 


3. Methods

 

학습 과정

  1. Pre-training: 먼저, 대규모 Transformer 모델과 대규모 데이터셋으로 pre-training한다. 이를 통해 모델은 이미지의 시각적 특징을 학습하고, 이를 바탕으로 다양한 downstream recognition task에서 좋은 성능을 보일 수 있게 된다.
  2. Prompt 생성: 다음으로, 각 task에 대해 task-specific한 prompt를 생성한다. 이 prompt는 input 이미지와 함께 입력되어 fine-tuning 과정에서 모델이 해당 task에 맞게 조정될 수 있도록 도와줍니다.
  3. Fine-tuning: 생성된 prompt를 input으로 추가한 후, pre-trained 모델의 encoder를 고정시키고 나머지 부분을 fine-tuning한다.

여기서 prompt는 image token과 같은 사이즈를 가진 vector가 된다.
제일 처음의 prompt의 경우 gaussian distribution을 따르는 random한 vector로 initialize된다.
그 후에는 downstream task에 맞는 loss function에 의해서 update되게 된다.
예를 들어, classification을 수행하고자 할 경우에는 cross entropy loss를 통해서 prompt vector를 업데이트 할 수 있다.
 
본 논문에서는 visual-prompt tuning을 하는 두 가지 방법을 제시했다.
1. VPT-Deep: Transformer Encoder를 거칠 때 마다 learnable한 visual prompt를 두고 학습함.
2. VPT-Shallow: 제일 처음 input 시에만 learnable한 visual prompt를 두고 학습함.
 
VPT-Deep이 Shallow 방법에 비해서 더 많은 파라미터를 학습해야하긴 하지만,
이것도 전체 모델을 재학습하는 것에 비하면 1%도 안되는 파라미터만 학습시키는 격이라고 한다.
 

 
 


4. Experiments

  • Model: ViT-B/16, ViT-L/16, Swin Transformer 등의 다양한 모델로 실험함
  • Dataset
    • FGVC (Fine-Grained Visual Classification): CUB-200-2011, NABirds, Oxford Flowers, Stanford Dogs, Stanford Cars과 같이 세부적인 classification이 필요한 데이터셋으로 이루어짐. (class 간의 차이가 크지 않아 어려운 분류에 해당하는 클래스들)
    • VTAB-1k: 이 데이터셋은 19개의 다양한 task로 구성되어 있으며, Natural, Specialized, Structured로 구분됨. Natural task는 일반적인 카메라로 촬영된 이미지를 사용하는 task (e.g.CIFAR-100, ImageNet 등). Specialized task는 전문적인 장비를 사용하여 촬영된 이미지를 사용하는 task (e.g. 의료 영상, 위성 영상). Structured task는 객체 수 세기와 같은 기하학적 이해가 필요한 task (e.g. COCO detection).
  • 비교군 fine-tuning protocol들
    • Full: pre-trained 모델의 모든 매개변수를 fine-tuning하는 방법
    • Linear: pre-trained 모델의 일부분만 fine-tuning하는 방법. 이 때, fine-tuning할 레이어의 수를 하이퍼파라미터로 지정함.
    • Partial: pre-trained 모델의 일부분만 fine-tuning하는 방법. 이 때, fine-tuning할 레이어와 그 레이어에서 사용할 매개변수의 수를 하이퍼파라미터로 지정함.
    • MLP: pre-trained 모델에 추가적인 MLP(Multi-Layer Perceptron) 레이어를 적용하여 fine-tuning하는 방법.
    • Sidetune: 'side' 네트워크를 만들어서 이를 학습시키고, pretrained 모델과 linear interpolate하는 방법.
    • Bias: pre-trained 모델의 bias term만 업데이트하고 나머지 매개변수들은 고정시키는 방법.
    • Adapter: pre-trained 모델의 일부분을 새로운 매개변수로 대체하여 fine-tuning하는 방법.

(1) 다양한 데이터셋에 대한 tuning 방법에 따른 결과 비교

 
괄호 안의 숫자는 Full Fine Tuning을 했을 때 보다 더 좋은 task의 개수를 나타내는 것이다.
VPT 모델은 다른 tuning 보다 좋은 성능을 보일 뿐만 아니라, full fine-tuing 했을 때보다 좋은 경우도 많다는 것을 보이고 있다.


각 테스크별로 성능을 세분화해서 나타낸 표는 각각 아래와 같다.

 
 


(2) Model Architecture 에 따른 결과 비교

- ViT model 크기에 따른 비교

- Swin-T model로 비교 

 
다양한 ViT 모델 (ViT-B, ViT-L, ViT-H) 에 따른 결과와 Swin Transformer 모델 architecture에 따른 성능도 비교해 보았을 때,
full fine-tuing보다 10%도 되지 않는 parameter를 통해서 좋은 성능을 보이고 있음을 강조하고 있다.

 


(3) Prompt Location 에 따른 결과 비교

prompt를 이미지 토큰의 channel에 추가하여 넣는 (concat-channel) 방법이나 prompt들을 하나로 channel-wise concat한 방법 (prepend-pixel)보다
prompt와 image를 element-wise 더한 방법 (add)나 prompt를 하나의 sequence로 넣는 방법 (prepending)이 더 좋은 결과를 보였다.
그 중 prepending이 전반적으로 더 좋은 성능을 보여 이것을 default 모델로 잡았다고 한다.
 


 

반응형
Comments