본문 바로가기
Paper review

Visual Prompt Tuning(2022) 리뷰

by Yonghip 2024. 6. 13.

FAIR에서 저술한 논문이며 Vision도메인에 prompt를 적용시킨 논문이라 생각해 읽어보았는데 그보다는 LoRA와 같은 parameter efficient tuning이 메인이 되는 논문이었다. 최근에 모델 사이즈가 커지며 이 분야도 각광받고 있어서 그냥 계속 읽고 리뷰해 보았다.

Abstract

이 논문에서는 기존에 large scale transformer 모델들을 full fine-tuning(FF)를 통해 학습하는 것을 대체하는 Visual Prompt Tuning(VPT)를 제시한다.

 

VPT llm의 발전에서 영향을 받았고 모델의 backbone freeze한채 1% 이하의 parameter를 추가로 학습하여 FF와 비견되는 성능을 보여주는 효율적인 방법론임을 시사한다.

 

Introduction

더 많은 데이터에 model을 pretrain하는 방법은 성공적이고 트렌드를 이끌고 있지만, 이를 downstream에 적용시키는 데에는 대게 FF가 사용되는데 저자는 모델의 parameter가 점점 커지면서 이 방법론의 비효율성을 지적하며 Pretrained Transformer를 효율적으로 적용시킬 최선의 방법이 무엇일지 연구했다.

 

기존에 이를 위해 사용되던 대표적인 방법이 transfer learning인데 이 방법론은 대게 FF보다 낮은 정확도를 보여준다.

저자는 이에 대한 새로운 대안으로 VPT를 제시하는데 이는 pretrain된 Transformer를 freeze한채 input space에 약간의 parameter만을 추가해 학습하는 것이다.

또한 저자는 NLP에서 prompt tuning은 몇몇 상황에서를 이기지만 VPT는 이보다 더 확실한 강점을 가진다고 주장한다.

실제로 이 방법은 사용해 24개의 downstream task 학습을 진행한 결과 모든 transfer learning 방법론을 이기고 20개에서 FF의 성능을 능가했다.

 

여기서 NLP와 CV에서 prompt가 어떤 식으로 쓰이는지 차이를 알 수 있는데

  • NLP: 주로 input에 적용되며 조금 pretrain에 사용될 때는 task 혹은 general한 설명을 위해 붙이는 설명을 의미하고 fine tuning에서는 인간에게 적용되기 위해 위험도를 낮추거나 환각을 줄이는 등 더 bias가 높은 수준의 설명을 덧붙이거나 filtering하는 것을 의미한다.(NLP는 잘 몰라 틀린 점이 있을 수 있습니다)
  • CV: 주로 fine tuning시에만 적용되며 보통 backbone을 freeze한채 추가로 학습되는 parameter들을 의미함.

Approach

VPT는 약간의 learnable parameter Transformer input space에 추가한 다음 backbone freeze한 다음 downstream 학습을 진행하는 방법론이다.

Visual-Prompt Tuning(VPT)

VPT-Shallow

Shallow버전에서 prompts 위의 그림과 같이 Transformer L1 layer에 삽입되고 각 prompt token d차원 벡터이다. 사진에서 붉은 부분이 prompt이며 붉은색으로 칠해진 부분만 훈련되고 나머지는 frozen상태로 학습된다.

 

VPT-Deep

VPT-Shallow와 달리 prompt Transformer의 각 layer마다 추가된다.

Experiment

Base architecture로는 ViT Swin을 사용했으며 모두 ImageNet-21k를 사용했으며 여러 방법을 사용해 이 backbonefine tuning했다. 사용한 방법들은 다음과 같다.

  • Full Fine Tuning
  • Linear: Classification head만 사용
  • Partial-K: backbone에서 마지막 K개의 layer만 학습, 1로 설정하면 Linear probing과 동일하다.
  • MLP-K: Classification head로 k개의 MLP를 사용
  • 이에 더해 backbone에 parameter를 더해 학습시키는 세 가지 방법을 비교에 사용했다.

이에 더해 backbone parameter를 더해 학습시키는(parameter efficient tuning) 세가지 방법을 비교에 사용했다.

  • Sidetune
  •  Bias
  •  Adapter

 

성능 옆에 괄호는 몇 가지에서 FF보다 성능이 좋았는지를 보여주는데 VPT-Deep은 여러 task에서 FF보다 좋거나 혹은 비슷한 성능을 달성했다

 

Fine tuning Dataset의 크기와 Base architecture의 크기에 따른 실험에서도 VPT는 좋은 성능을 보여주었다.

 

Ablation on Model Design Variants

Prompt를 VPT처럼 주는 방식과 여러 방식을 비교했을 때 VPT에서 사용한 방법이 대체로 좋은 성능을 보여주었다.

 

Prompt depth와 성능은 대게 양의 상관관계를 보여주었으며 input부분에 가까운 prompt가 후반부의 layer들보다 성능에 더 많은 영향을 주었다.

Analysis and Discussion

Transformer의 마지막 layer [CLS] embedding t-sne를 적용한 결과를 통해 VPT-DEEP FF를 보함해 다른 모든 기법들보다 좋은 representation을 가지는 것을 시각적으로 확인할 수 있다.

 


Vision에서 prompt의 사용처에 대해 알 수 있었으며 parameter efficient tuning이 어떤 원리로 적용되는지 명확히 알 수 있었다. 

이러한 방식이 fine tuning도 가속화시킬 수 있을 것 같고 bakbone보다 매우 적은 가중치로도 성능을 유지할 수 있다는 점이 놀라웠다. 연구자들은 hyper parameter나 다른 요소들을 비교하는 실험을 빠르게 돌리는데 쓸 것 같고 개발자들도 데이터가 충분치 않을 때 고려할만한(트렌드를 보면 사실상 대부분) 기법인 것 같다.