YoojLee / paper_review

paper review archive
6 stars 2 forks source link

Learning to Prompt for Vision-Language Models (2022) #56

Open YoojLee opened 1 year ago

YoojLee commented 1 year ago

image

Summary

VLM은 prompting을 통해 zero-shot transfer가 가능해진다는 장점이 있음. 그러나, 효과적인 zero-shot transfer를 위해 번거롭고 domain expertise를 요구하는 prompt engineering을 수행해야 한다는 단점이 있음. VLM (e.g., CLIP)의 input으로 들어가는 text prompt를 learnable continuous prompt로 대체하여 tune하는 CoOp을 제안함 (large vision models에 text prompting을 적용한 첫 연구). 이를 통해, downstream task (classification skill에 국한하여 다양한 downstream dataset에서 실험)으로의 transfer learning을 수행한 결과, 적은 양의 이미지로도 zero-shot clip 및 linear probe clip 대비 좋은 성능을 보여줌. 또한, domain generalization에 있어서 zero-shot / linear-probe 대비 좋은 성능을 보여줌.

Method Highlights

image 전체적인 학습 메커니즘은 위의 그림과 같다.

image

NLP에서 많이 활용되던 continuous prompt tuning 방식을 적용하여, learnable token을 prompt에 context words로 넣어줌. prompt에 들어가는 형태는 위의 그림과 같음. prompting 방식을 두 가지로 적용할 수 있는데, 1) Unified context 2) class-specific context임.

CSC의 경우에는 unified 대비 더 fine-grained class (조금 더 세밀하게 클래스가 구분되는 경우)를 구분하는 데에 효과적이라고 얘기하고 있음.

Context Optimization의 경우, cross-entropy loss를 통해 학습이 이루어짐. 이때, gradient는 text encoder를 통해 prompt token까지 back-propagate됨 (text encoder는 고정되어 있고, prompt의 context token만 update된다는 점).

Experiment Highlights

논문에서는 CoOp의 base model을 CLIP으로 지정하고, linear probe CLIP과 zero-shot CLIP과의 비교를 주로 진행. Evaluation protocol의 경우에는 CLIP에서 실험한 setting을 차용함. 또한, CoOp의 경우에는 context token의 길이를 16으로 고정하였으며, Unified context와 CSC / class token의 위치 (end, mid)에 따라 4가지 variation을 두었음.

image

위의 결과는 11개의 데이터셋에 대해서 few-shot transfer를 수행한 결과임. 전체 데이터셋에 대한 결과를 평균한 경우 (top-left), Unified context를 적용한 CoOp이 가장 좋은 성능을 내었으며, linear probing과 zero-shot과의 성능 차가 어느 정도 벌어지는 것을 확인할 수 있음. 이는 hand-crafted prompts를 기반으로 하는 것보다 soft prompt tuning이 더 좋다는 것을 뒷받침한다고 저자들은 주장. 또한, linear probing 대비해 CoOp은 더 적은 데이터로 성능 개선을 이끌어낼 수 있음을 보임 (transfer learning에 있어서 linear classifier를 추가 학습하는 것보다 prompt를 tuning하는 것이 data-efficient하게 training할 수 있는 방법임을 뒷받침함). 전반적으로 CoOp의 training 이미지 개수에 따른 성능 변화를 볼 때에 성능 개선의 momentum이 줄어드는 것으로 보아 overfitting이 발생하였을 것임을 추측.

개별 데이터셋 결과를 볼 때에 consistent하게 CoOp이 효과적이었다고 말하기는 어려움. OxfordPets나 Food101 같은 경우에는 실제로 zero-shot 대비해서 few shot의 성능이 뒤떨어지는 경우가 많았음. 특히, Food101의 경우에는 실제로 모든 CoOp의 variation에 대해서 성능이 zero-shot보다 떨어짐. 이는 데이터셋 자체에 noise가 끼어있기 때문이라고 저자들은 밝히고 있음.

또한, context vector를 class 간 공유하는 것 (unified context)이 전반적으로 성능 개선에 도움이 되고 있음을 보이고 있음. 반면에, class 간 독립적으로 유지할 경우에는 전반적으로 성능이 떨어지긴 하지만 StanfordCars, Flowers102, FGVCAircraft 등의 fine-grained datasets에 있어 성능이 잘 나옴 (그러나, OxfordPets, Food101 같은 경우에는 또 아님). CSC가 더 많은 파라미터를 요구하기 때문에 low data regime에서 unified context보다 더 성능이 안 나오는 것으로 볼 수 있음.

image

CoOp이 distribution shift에 어느 정도 민감한지 확인하기 위해서 domain transfer에 대해 비교 실험을 수행. source dataset인 ImageNet에서 나머지 target dataset에 어느 정도로 잘 zero-shot transfer되는지 확인한 결과, 전반적으로 CoOp을 적용한 결과가 가장 좋았음. 이는 CoOp이 training data의 distribution에 specific하게 tuning을 수행했음에도 data distribution shift에 robust하게 작용함을 알 수 있음.

image context token의 개수와 vision backbone의 variation을 주고 실험을 한 결과임. context length가 길어질 수록 성능이 오르는 것은 사실이지만 context length를 길게할 수록 domain generalization 성능은 떨어지기 때문에 (dataset에 overfitting) context length에 있어서 golden rule은 없음을 확인할 수 있음. 또한, vision backbone의 경우에는 더 좋은 backbone을 쓸 수록 성능이 올라가는 것을 알 수 있었으며 zero-shot clip과의 차이는 모든 아키텍처에서 다 유의한 차이를 보여주었음.

image 여러 아키텍처에서 prompt ensembling을 한 결과와 비교를 했을 때 CoOp의 결과가 consistent하게 더 좋았음. prompt ensembling 전략을 CoOp과 incorporate하는 것도 재밌을 듯.

image prompt의 initialization을 random으로 할 것인지 아니면 manual하게 할 것인지에 대한 비교를 수행. 그렇게 큰 차이가 없었음을 확인. 실제로 manual init을 조금 더 tuning할 수는 있겠지만, 그냥 random하게 init한 게 더 simple하므로 그렇게 수행할 것을 저자들은 권장.

image 다른 fine-tuning method들과 비교한 결과. linear probing과 full fine-tuning (image encoder)를 한 결과, 실제로 zero-shot 대비 성능이 하락함. few shot regime이니 당연히 full fine-tuning은 성능 하락 폭이 매우 큼을 확인할 수 있음. text output에 transformation layer와 bias term을 추가하여 tuning한 결과, zero shot보다 성능이 향상됨. 그러나, CoOp의 성능 향상 폭만큼 크지는 않았음. 이는 text encoder에서 전파되는 gradient가 informative함을 방증함.

image continuous prompt tuning의 단점은, 산출된 prompt가 interpretable하지 않다는 점임. tune된 prompt가 어떤 semantic을 갖는지 확인하기 위해, word embedding space 상에서 euclidean distance로 가장 가까운 word를 찾아 나열한 결과임. 결과적으로 prompt 내 각 토큰과 매칭된 word가 각 데이터셋을 어느 정도 설명하는 듯한 모습이 보였음 (e.g., enjoyed for Food101, fluffy, paw for OxfordPets). 그러나, 매칭된 word sequence를 보았을 때 사람이 해석 가능한 수준은 아니라는 점에서 vector의 semantic을 nearest words와 매칭하는 형태로 vector의 semantic을 해석하는 데에는 한계가 있음을 보여줌.

Strengths

Weaknesses

YoojLee commented 1 year ago

open review를 살펴본 결과,

According to Table 4 in the paper, the nearest neighbor words of the learned context vectors rarely have practical semantic meaning. This casts doubt on using the word “context”. From this perspective, these soft prompts are just more parameters to improve the model capacity. Hence, can we say that CoOp is just a better version of fine-tuning? In other words, there might be a similar fine-tuning way to utilize additional parameters to get better performance.

와 같은 리뷰를 보았음. 흥미로운 시각 같다!

YoojLee commented 1 year ago

zero-shot clip의 prompt engineering을 잘못 이해해서 좀 헤맸던 것 같다 (task transfer에 대한 prompt engineering이었다!)