Visual prompt tuning(VPT)은 대규모로 사전학습된 vision transformer(ViT)를 새로운 downstream task에 효율적으로 적용하기 위해 제안된 parameter-efficient fine-tuning 방법이다. VPT를 이해하기 위해서는 먼저 transformer에서 vision transformer, 그리고 대규모 사전학습 모델을 새로운 문제에 적용하는 pretrain-then-finetune paradigm으로 이어지는 흐름을 이해할 필요가 있다.

Transformer는 원래 자연어 처리 분야에서 발전한 구조로, self-attention을 이용하여 입력 token들 사이의 관계를 학습한다. Vision transformer는 이러한 transformer의 아이디어를 이미지에 적용한다. 이미지를 일정한 크기의 patch로 나누고 각각의 patch를 하나의 token처럼 표현한 다음, transformer를 통해 patch들 사이의 관계를 학습한다. 충분히 큰 데이터로 사전학습된 ViT는 이미지에 포함된 다양한 시각적 특징을 표현할 수 있기 때문에, 이후 새로운 이미지 분류 문제와 같은 downstream task에 효과적으로 활용할 수 있다.


이러한 사전학습 모델을 활용하는 전통적인 방법은 pretrain-then-finetune 방식이다. 먼저 대규모 데이터로 하나의 범용 모델을 사전학습한 후, 관심 있는 새로운 task의 데이터를 이용하여 모델의 파라미터를 다시 학습한다. Full fine-tuning에서는 사전학습된 backbone의 거의 모든 파라미터를 업데이트하기 때문에 새로운 task에 대한 적응 능력은 높지만, 모델의 규모가 커질수록 상당한 계산 및 저장 비용이 발생한다. 특히 여러 개의 downstream task를 다루는 경우에는 각 task마다 거대한 모델의 파라미터를 별도로 학습하고 저장해야 한다는 문제가 있다.


여기에서 자연스럽게 등장하는 것이 parameter-efficient fine-tuning(PEFT)이다. 핵심 질문은 간단하다. 이미 대규모 데이터로 좋은 표현을 학습한 모델이 있는데, 새로운 task를 학습할 때 과연 모델 전체를 다시 학습해야 하는가? 그건 아니다. 기존 모델의 지식은 그대로 유지하면서 새로운 task에 필요한 극히 일부의 파라미터만 추가적으로 학습할 수 있다면 훨씬 효율적일 것이다.


Visual prompt tuning
은 바로 이러한 관점에서 등장하였다. Jia et al. ECCV 2022에서 발표한 VPT의 핵심 아이디어는 놀랄 만큼 단순하다. 사전학습된 ViT backbone의 파라미터를 freeze하여 변경하지 않고, 입력 공간에 소수의 학습 가능한 prompt token을 추가한다. 새로운 task를 학습할 때는 거대한 backbone 전체를 수정하는 대신 이 prompt classification head 등 소수의 파라미터만 학습한다. 원 논문에서는 전체 backbone 파라미터의 1% 미만에 해당하는 task-specific parameter만으로도 강력한 성능을 얻었으며, ViT-B를 사용한 24개의 downstream classification task 가운데 20개에서 full fine-tuning보다 높은 성능을 보고하였다.


따라서 VPT prompt는 자연어에서 우리가 사용하는 "이 이미지를 분류해라"와 같은 사람이 작성한 문장이 아니다. 모델이 학습 과정에서 스스로 최적화하는 learnable continuous vector, 즉 학습 가능한 token이다. 일반적인 ViT의 입력을 단순화하면 [CLS], x₁, x₂, …, x
과 같이 표현할 수 있다. 여기에서 x들은 image patch token이다. VPT에서는 여기에 [P₁, P₂, …, P]이라는 학습 가능한 prompt token을 추가한다. Backbone weight는 그대로 두면서 이 prompt를 학습함으로써, 사전학습 모델이 가지고 있는 표현을 현재의 downstream task에 적합한 방향으로 유도하는 것이다.


이 점이 VPT의 가장 흥미로운 부분이다. 기존의 fine-tuning이 모델 자체를 새로운 task에 맞게 변화시키는 방식이라면, VPT는 모델을 거의 그대로 유지하면서 모델에 들어가는 학습 가능한 입력을 변화시켜 원하는 지식을 끌어내는 방식이라고 이해할 수 있다. , "모델을 어떻게 바꿀 것인가?"라는 문제를 "고정된 모델에 어떤 prompt를 주어야 하는가?"라는 문제로 전환한 것이다.


VPT
에는 대표적으로 VPT-shallowVPT-deep이라는 두 가지 방식이 있다. VPT-shallow에서는 transformer의 첫 번째 layer에 들어가는 입력에 prompt token을 추가한다. 이후 prompt image patch token들과 self-attention을 통해 상호작용하면서 downstream task에 필요한 정보를 유도한다. 반면 VPT-deep에서는 여러 layer에 각각의 learnable prompt를 추가한다. 따라서 prompt가 초기 입력 단계에서만 영향을 주는 것이 아니라 모델의 여러 representation level에 직접 개입할 수 있다. 원 논문의 실험에서는 전반적으로 VPT-deep이 더 강력한 성능을 보여주었다.


VPT
의 의미는 단순히 "학습할 파라미터의 수가 적다"는 데만 있지 않다. 대규모 pretrained backbone 하나를 여러 task가 공유할 수 있다는 장점이 있다. 예를 들어 100개의 서로 다른 vision task가 있다면 full fine-tuning에서는 사실상 100개의 task-specific model을 관리해야 한다. VPT에서는 거대한 backbone은 하나만 유지하고 각 task에 해당하는 작은 prompt head를 별도로 관리할 수 있다. 모델이 수십억 개의 파라미터를 가지는 foundation model 시대로 갈수록 이러한 특성은 더욱 중요해진다.


VPT
가 성공적인 결과를 보여주면서 다음 연구 질문도 자연스럽게 등장했다. "Prompt를 어디에 넣어야 하는가?", "몇 개의 prompt가 필요한가?", "모든 transformer block prompt가 필요한가?"와 같은 문제이다. , VPT "prompt를 사용하자"는 가능성을 보여주었다면 이후의 연구는 prompt pretrained model에 어디에서, 어느 정도로 개입하는 것이 가장 효과적인가를 연구하기 시작했다고 볼 수 있다.


특히 중요한 문제 중 하나는 VPT의 효과가 pretrained backbone의 특성에 따라 달라질 수 있다는 점이다. Supervised learning으로 사전학습된 ViT에서 좋은 결과를 보였던 VPT MAE MoCo v3와 같은 self-supervised learning 기반 ViT에서는 반드시 동일하게 좋은 결과를 보이지는 않는다. Yoo et al. ICML 2023 연구에서는 이러한 현상을 분석하면서 prompt token이 어느 transformer block과 상호작용하느냐가 성능에 상당한 영향을 준다는 점을 보였다. 특히 MAE MoCo v3의 경우 prompt를 처음부터 개입시키는 것보다 상대적으로 뒤쪽 block에 삽입했을 때 classification 성능이 향상되는 현상을 관찰하였다.


이는 중요한 의미를 가진다. 모든 ViT에 대해 "prompt는 무조건 첫 번째 layer부터 넣어야 한다"거나 "모든 layer에 넣는 것이 가장 좋다"고 일반화하기 어렵다는 것이다. Pretraining 방법에 따라 각 layer가 형성하는 representation의 특성이 다를 수 있으며, downstream task에 적응하기 위해 prompt가 개입해야 하는 위치 역시 달라질 수 있다.


그러나 새로운 task나 새로운 pretrained model이 등장할 때마다 prompt를 어느 layer에 넣어야 하는지 일일이 실험하는 것은 비효율적이다. 이러한 문제를 해결하기 위해 gated prompt tuning 연구에서는 각 ViT block에 학습 가능한 gate를 두어 prompt에 대한 block의 개입 정도를 조절하도록 한다. 다시 말해 연구자가 prompt insertion point를 고정적으로 지정하기보다는, 어느 block task adaptation을 위해 중요한지를 학습 과정에서 결정하도록 하는 것이다. 이 방법은 FGVC VTAB image classification뿐 아니라 ADE20K semantic segmentation에서도 기존 VPT 변형보다 향상된 결과를 보고하였다.

* FGVC(fine-grained visual classification): 유사한 세부 범주를 구별하는 fine-grained 이미지 분류 과제
* VTAB(visual task adaptation benchmark):
사전학습 비전 모델의 다양한 downstream task 적응 능력을 평가하는 벤치마크, 자연 이미지, 특수 도메인 이미지, 구조적 이미지 등 다양한 이미지 분류 task로 구성
* ADE20K:
이미지의 각 pixel을 객체/영역별로 분류하는 semantic segmentation용 대표 데이터셋


결국 visual prompt tuning의 발전 과정을 보면 하나의 일관된 연구 흐름을 발견할 수 있다. 처음에는 대규모 pretrained model을 새로운 task마다 모두 fine-tuning하는 것이 비효율적이라는 문제에서 출발하였다. VPT pretrained backbone을 고정하고 매우 적은 수의 learnable prompt만을 이용해서도 새로운 task에 효과적으로 적응할 수 있음을 보여주었다. 이후 연구에서는 단순히 prompt를 추가하는 것을 넘어 prompt의 길이, 위치, 삽입되는 layer, pretrained representation prompt의 상호작용을 어떻게 설계할 것인가가 중요한 연구 문제로 발전하였다. 실제로 이후 연구에서도 prompt initialization prompt length, self-supervised backbone에서의 성능 등이 VPT의 중요한 과제로 계속 다루어지고 있다.


따라서 VPT의 핵심을 단순히 "ViT에 몇 개의 token을 추가하는 방법"이라고 이해하는 것은 충분하지 않다. 더 본질적인 의미는 이미 대규모 사전학습을 통해 풍부한 지식을 가지고 있는 모델 자체를 크게 변경하지 않고, 소수의 task-specific parameter를 통해 그 지식을 원하는 downstream task에 맞게 유도한다는 것에 있다. 이러한 관점에서 VPT full fine-tuning에서 parameter-efficient adaptation으로 변화하는 흐름을 잘 보여주는 대표적인 방법론이며, 동시에 대규모 foundation model을 여러 task에 효율적으로 활용하기 위한 중요한 연구 방향을 제시한 방법이라고 볼 수 있다
.