Abstrcat
대규모 이미지-텍스트 데이터로 학습된 VLM은 classification에서 상당한 개선을 이루었으나, 모델의 성능이 프롬프트 품질에 의존하게 됩니다. 최근 연구들은 LLM이 생성한 시각적 설명이 VLM의 일반화 능력을 향상시킬 수 있다는 것을 보여주었으나, LLM의 hallucination으로 인해 클래스별 프롬프트가 부정확하거나 변별력이 저하될 수 있습니다. 해당 논문은 사람의 개입 없이, 최소한의 학습을 통해 시각적 변별력이 뛰어난 프롬프트를 찾는 것을 목표로 합니다. 이를 위해, task-specific 템플릿에서 클래스별 설명으로 프롬프트를 점진적으로 최적화하는 알고리즘을 제안합니다.
단순 템플릿이 아닌 클래스별 프롬프트를 탐색하는 방식은 탐색 공간이 기하급수적으로 증가하여 비용 및 반복 횟수, overfitting등의 문제를 일으키게 됩니다. 이를 해결하기 위해 저자들은 LLM을 한번만 쿼리하여 다양한 후보 프롬프트를 생성할 수 있는 방식을 제안하며, 더 나은 초기 탐색 지점을 찾기 위한 두가지 샘플링 방식을 제안합니다. 또한, overfitting을 막기 위해 엔트로피 제약이 포함된 fitness score를 도입합니다. 이러한 방식을 통해 one-shot 세팅에서 기존의 텍스트 프롬프트 기반의 방식보다 뛰어난 성능을 달성하였으며, 13개의 image classification 데이터셋에서 성능 개선을 이루었습니다. 또한, 저자들의 방식으로 도출한 최적의 프롬프트가 다양한 백본 모델에 효과적으로 전이 가능함을 입증하였다고 합니다.
Introduction
CLIP과 같은 VLM 모델의 등장으로 다양한 이미지 분류 분야에서 강력한 일반화가 가능해졌습니다.이러한 연구들은 쿼리 이미지와 텍스트 사이의 유사도를 계산하는 방식으로 동작하였으며, 텍스트 프롬프트 퀄리티에 크게 의존하였습니다. 따라서 최적의 프롬프트를 찾는 것이 중요한 문제가 되었습니다.
수동 프롬프트 엔지니어링 방식은 "a photo of a {class}, a type of bird"와 같이 테스크에 특화된 프롬프트 템플릿을 정해둔 방식으로, 도메인에 특화된 전문가가 필요하며 프롬프트 내에 클래스 이름만이 식별 정보를 제공하여 fine-grained 카테고리 인식에는 정보가 부족하다는 한계가 존재합니다.
Prompt tuning 방식은 학습 가능한 토큰을 도입하여 프롬프트를 튜닝하는 방식으로 VLM의 성능은 개선되었으나, 추가적인 학습이 필요하며 토큰을 해석하는 데 어려움이 존재합니다.

LLM 기반의 description을 생성하는 방식들은 LLM을 통해 클래스별 상세 설명을 생성하여 구분력 있는 정보를 찾아낼 수 있으나, LLM의 hallucination 문제로 부정확한 설명이 만들어질 수 있으며(food Peking Duck(음식 카테고리의 북경오리)에 “feet”이 포함됨), fine-grained 인식에 필요한 변별력이 부족(Figure 1 (a)의 두 카테고리에 "webbed feet"과 "hooked bill"이 공통으로 등장)할 수 있습니다. 또한 "strong smell"과 같이 시각적으로 확인이 어려운 속성이 등장하기도 합니다.
따라서 저자들은 “최소한의 지도학습과 인간의 개입 없이fine-grained 카테고리에 대한 시각적 변별력이 있는 최적의 프롬프트를 어떻게 찾을 수 있을 까?”라는 질문을 제기하였고 이를 해결하고자 하였습니다.
저자들은 언어 분야의 자동 프롬프트 최적화(Automatic Prompt Optimization, APO) 연구에서 영감을 받아, 클래스 간 구분력은 유지하면서 모호한 표현은 제거하는 방식으로 클래스별 특화 프롬프트를 점진적으로 개선하고자 하였습니다. 먼저, APO에 최소한의 정보를 이용하는 one-shot 방실으로 접근합니다. 또한 기존의 APO 연구는 테스크별 프롬프트에 집중하였으며, 시각적으로 구분력 있는 디테일한 정보를 포함하도록 하기 위해 클래스별 프롬프트 방식으로 확장하고자 하였습니다. 그러나 클래스별 특화 프롬프트를 개선하는 방식은 세부 클래스와 설명에 대한 공간까지 고려해야하므로 탐색 공간이 크게 증가하게 됩니다.(Figure 1(b)) 따라서 많은 비용과 시간이 소요되며, 과적합 문제가 발생하게 됩니다. (과적합의 경우 Figure 1 (c)에서 확인할 수 있듯이 train set에서 정확도가 가장 높아졌을 때 test set의 성능이 저하되는 것을 확인할 수 있습니다.)
이에 저자들은 task-specific에서 class-specific으로 프롬프트를 반복적으로 최적화하는 Progressively Automatic Prompt Optimiation(ProAPO)알고리즘을 제안합니다. 초기에는 LLM을 이용하여 프롬프트 라이브러리를 생성한 뒤, 반복 과정에 추가·삭제·교체와 같은 편집 연산과 교차·변이 같은 진화 연산을 통해 다양한 프롬프트 후보를 만들어냅니다. 생성된 후보는 새로운 적합도 점수로 평가하여 높은 점수를 달성한 프롬프트만 다음 반복에 활용됩니다. 또한, 엔트로피 제약을 적용해 과접합을 줄이고, 프롬프트 및 그룹 샘플링을 활용해 탐색 범위와 반복 횟수를 줄임으로써, 적은 LLM 호출 비용으로도 적합한 최종 클래스별 프롬프트를 생성합니다.
해당 논문의 contribution을 정리하면,
- 사람의 개입 없이 task-specific에서 class-specific 수준으로 점차 진화하는 one-shot 프롬프트 최적화 방식을 통해 LLM 기반의 description 생성 방식의 부정확성과 부족한 구분력 문제를 해결
- 오프라인 후보 생성, 엔트로피 제약 적합도 점수, 두 가지 샘플링 전략을 통해 LLM 호출 비용과 과적합, 반복 횟수를 문제를 완화
- 13개의 데이터 셋에 대한 실험을 통해 ProAPO가 one-shot 조건에서도 최고의 성능을 달성 가능함을 실험적으로 입증하였으며, 다른 어댑터 기반의 방식과 백본모델로도 확장 가능함을 보임
Method


Figure 2는 ProAPO의 전체적인 구조도이며 Algorithm 1처럼 동작하게 됩니다. 먼저 템플릿에 대해 반복적인 최적화를 통해 후보 프롬프트를 생성하며, 이후 class-specific 설명에도 유사한 반복 최적화를 수행합니다. 반복적인 최적화 과정에는 여러 연산자를 활용해 후보 프롬프트를 생성한 뒤, 적합도 점수를 평가하는 방식으로 이루어지게 됩니다.
Preliminaries
- 이미지와 카테고리 프롬프트에 CLIP을 적용한 뒤, 유사도를 계산하여 가장 높은 카테고리를 선택하는 방식으로, 카테고리 프롬프트는 특정 카테고리와, 사람이 이해할 수 있는 자연어 표현으로 구성됩니다. (e.g. "a photo of a bird: {class}. {description}." )
- 일부 카테고리는 서로 다른 템플릿이나 설명을 가진 프롬프트를 함께 사용하며 이러한 방식은 프롬프트 앙상블이라 표현합니다.
- 모든 카테고리 프롬프트를 포함하는 집합을 후보 프롬프트 P, one-shot으로 구성된 학습 데이터는 \mathcal{D} = \{(x,y)\}_n (x는 이미지 y는 라벨)로 표현됩니다.
- 해당 논문의 목표는 자연어 공간에서 프롬프트를 최적화하여 각 학습 샘플에 대한 성능을 개선하는 것입니다.
1. Automatic Template Optimization
task별 문맥 정보를 제공하기 위해 먼저 템플릿을 반복적으로 최적화 합니다. "a photo of a {class}." 를 초기 프롬프트로 사용하며, LLM에 한번만 질의하여 여러 템플릿을 생성하거나, 사전 정의된 템플릿이나 LLM이 생성한 데이터 셋의 도메인 정보를 추가하는 등, n개의 템플릿 라이브러리 B_t=\{d_1, ... , d_n\} (d_n은 하나의 템플릿)를 구축합니다.
APO는 점진적으로 템플릿 집합\mathcal{U}_t을 개선하며, 다음 3단계를 반복합니다.
- 현재 프롬프트 집합\mathcal{U}와 라이브러리 B를 기반으로 편집 연산(추가/삭제/교체)과 진화 연산(교차/변형)을 통해 새로운 후보 프롬프트 생성
- 추가/삭제/교체: 다양성을 주기 위해 현재의 후보 프롬프트 P에 특정 요소를, (라이브러리 B에서 추가하거나 / 제거하거나 / 라이브러리B의 요소와 교체)
- 교차: 높은 점수를 얻은 두 후보 프롬프트를 결합
- 변형: 탐색이 local minima에 빠지지 않도록, 라이브러리 B에서 무작위로 선택한 요소를 후보 프롬프트에 추가하여 변형을 주는 방식
- 새로운 후보 프롬프트에 대하여 평가
- 평가 점수에 따라 프롬프트 집합을 갱신하고, 높은 점수를 얻은 상위 k개의 프롬프트 유지
해당 과정을 반복하여 최종적인 후보 프롬프트 집합 \mathcal{U}를 반환합니다. (해당 논문에서는 4번 반복을 기본으로 설정)
2. Score Function
후보 프롬프트를 평가하여 최적화하기 위해, 기울기 역할을 하기 위한 fitness score를 제안합니다. 이미지에 대하여 각 클래스에 해당하는 프롬프트들과 이미지간의 cosine 유사도 평균을 계산하여 가장 높은 점수를 가진 클래스로 예측하고, 이에 대한 정확도를 계산합니다.
추가로 저자들은 과적합을 막기 위해 엔트로피 제약을 추가합니다. 제약은 아래의 식으로 정의되며, 잘못된 라벨에 대해 강한 페널티를 주게 됩니다.

즉, 예측 결과의 정확도와, 엔트로피 제약을 가중합한 값이 최종 fitness score가 됩니다.
3. Sampling Strategy for Initialization
최적의 템플릿을 탐색한 뒤, 클래스별 설명을 최적화 합니다. 반복 최적화 비용을 줄이기 위해, 저자들은 좋은 초기 시작 지점을 찾는 prompt sampling 방식과 모든 클래스 대신 일부 중요 클래스를 선택하는 group sampling 방식을 도입하였습니다.
- Prompt sampling
- LLM을 이용하여 시각적 설명을 생성하며, 이때 설명의 수와 다양성을 늘리기 위해 LLM이 동의어로 클래스 이름을 변경하기도 함
- 각 클래스의 설명을 무작위로 조합하여 여러 후보 프롬프트를 만들고, 가장 높은 점수를 가진 후보를 초기 후보 프롬프트 \hat{P}_0로 선택함
- Group sampling
- 계산 비용을 줄이고, 효과적으로 최적화를 수행하기 위해, 전체 카테고리를 탐색하지 않고 주요한 일부 카테고리만을 탐색함. 이를 위해 다음 두가지 기준을 통해 주요 카테고리를 선정함
- n_{wst}: 정확도가 낮은 n개의 카테고리 그룹과 해당 그룹에서 잘못 분류된 카테고리
- n_{sln}: 설명을 추가하였을 때 성능이 크게 향상되는 카테고리와 해당 케이스들의 잘못 분류된 카테고리
- 계산 비용을 줄이고, 효과적으로 최적화를 수행하기 위해, 전체 카테고리를 탐색하지 않고 주요한 일부 카테고리만을 탐색함. 이를 위해 다음 두가지 기준을 통해 주요 카테고리를 선정함
Group sampling을 통해 선택된 클래스들의 설명을 반복적으로 최적화하며, 앞선 템플릿 최적화와 동일하게 클래스에 대한 시각적 설명을 모아 라이브러리를 구성한 뒤, APO 알고리즘을 통해 자동으로 설명을 개선하여 가장 높은 점수를 얻은 후보 P^*를 구합니다.
Experiments
Dataset
저자들은 ImageNet-1K, Caltech101, CUB200-2011(조류분류) 등을 포함하여 기존의 프롬프트 튜닝 및 LLM 기반 description 생성 연구에서 사용하는 13개의 벤치마크에서 실험을 진행합니다.
Comparison with SOTA Methods

"a photo of a {class}" 템플릿을 이용하는 텍스트 프롬프트 기반의 SOTA 방법론들과 프롬프트 튜닝 방법론들, 사람이 최적의 프롬프트를 찾은 human-engineering 방식, LLM 기반의 description 생성 방식, 프롬프트 최적화 방법론들을 함께 비교합니다. 위의 Table 1이 정량적 결과로, ResNet50과 ViT-B/32에서 전반적으로 우수한 성능을 달성하는 것을 확인할 수 있습니다. 또한, ProAPO는 training-free 방식으로, 11개의 데이터에 프롬프트 튜닝 방식(CoOp, PLOT, ProGrad)보다도 높은 정확도를 달성하였으며, 특히 CUB, FLO 등의 fine-grained 데이터셋에서 뛰난 성능을 달성하였습니다. 또한 ProAPO w/DCLIP 는 CLIP이 아닌 DCLIP으로 확장한 실험 결과로 이러한 방식도 기존의 방법론보다 성능 개선이 이루어짐을 확인할 수 있습니다.
반면, ImageNet이나 Caltech과 같은 데이터셋에서는 성능 향상 폭이 상대적으로 작으며, 이에 대해 (1) coarse-grained 카테고리 레벨에서는 LLM이 범주간의 구분력 있는 설명을 충분히 만들수 있었기 때문에 ProAPO의 필요성이 낮아진 것이라 분석하였습니다. 또한, (2) Places나 SUN과 같은 장면 인식용 fine-grained 데이터셋은 서로 다른 이미지 사이의 혼동이 발생하기 쉬워 각 카테고리에 대한 설명을 최적화하는 데 어려움이 있다고 한계가 있음을 밝힙니다.
More Benefits by Optimal Prompts

Figure 3은 Adapter 기반의 방법론으로 전이 가능한지에 대한 실험 결과입니다. ProAPO를 다른 프롬프트 초기화를 적용한 adpater 기반 방법론에 적요한 것으로, SOTA 방법론인 CuPL과 비교한 결과입니다. ProAPO가 일관되게 더 좋은 성능을 보인다는 것을 그래프를 토앻 확인할 수 있습니다. 특히, low-shot 세팅에서 ProAPO를 사용함으로써 성능이 개선이 가능하다는 것도 확인할 수 있습니다.

Table 2는 다른 백본으로의 전이 실험을 나타낸 것으로, ResNet50에서는 가장 좋은 성능을 보였던 CoOp가 백본 모델이 변경됨에 따라 성능이 크게 저하되는 것에 반해, ProAPO는 안정적으로 성능 유지가 가능하다는 것을 확인할 수 있습니다. 또한, Figure 4 시각화 결과를 통해서는 source 모델에서 target 모델로 전이할 때 CuPL 대시 안정적으로 성능 개선이 이루어진다는 것을 확인할 수 있습니다.
Analysis

Figure 5 (a)를 통해 단일 프롬프트를 사용하는 방식에 비해, 여러 프롬프트를 활용하는 방식이 성능이 더 좋은 경향을 보인다는 것을 확인할 수 있습니다.

Figure 6에서 프롬프트 최적화를 통해 "flight over ocean"이나 "long wings and hooked bill"과 같이 일반적인 설명은 제거되며, Laysan Albatross의 경우 "white body", Sooty Albatross는 "black underpants"와 같이 구분력이 좋은 설명이 유지되는 것을 확인할 수 있습니다.
Ablation study

Table 3은 후보 프롬프트를 생성할 때, 각 연산자들의 사용 여부와 그에 따른 성능을 나타낸 것 입니다. edit-based 연산자의 경우 추가, 삭제, 교체를 모두 다 사용하는 것이 가장 좋은 성능을 나타내는 것을 확인하였으며, 여기에 교차와 변형을 추가할 경우 성능이 가장 좋았음을 보이고있습니다.

저자들은 최적화를 위 2가지 샘플링 방식 사용 여부에 따른 성능을 검토하였습니다. 프롬프트 샘플링을 사용하지 않을 경우 full model 대비 성능 저하가 발생하며, group sampling이 없을 경우 시간이 눈에 띄게 증가하고, 성능도 큰 차이가 없다는 것을 확인할 수 있습니다. 이를 통해 저자들은 정확도와 속도 측면에서 두 샘플링 방식을 모두 사용하는 것이 가장 좋다는 것을 어필합니다.
Conclusion
VLM이 task-specific에서 class-specific으로 점진적으로 프롬프트를 최적화 할 수 있는 ProAPO 알고리즘을 제안합니다. ProAPO는 프롬프트 라이브러리 기반의 프롬프트 생성을 통해 과적합을 완화하고자 하였으며, 최적의 프롬프트 탐색 시 2가지 샘플링 방식을 통해 성능을 개선하고, 반복 시간을 효과적으로 줄일 수 있었습니다. 13개의 데이터 셋에 대한 실험을 통해 ProAPO가 기존 방식에 비해 성능이 개선되는 경향을 입증하였으며, 다양한 adapter 기반의 방법론 및 백본으로 전이가 가능함을 보였습니다.
안녕하세요 승현님 좋은 리뷰 감사합니다!
Group sampling을 통해 주요 카테고리를 선별하는 과정에서, 카테고리 그룹이 정확히 어떤 범위를 포함하는 개념인지 궁금합니다. 그리고 n_wst와 n_sln이라는 두 기준을 세운 이유도 궁금한데, 정확도가 낮은 클래스와 설명을 추가하면 이득이 큰 클래스의 차이가 분명한 것인가? 굳이 둘로 나눈 이유가 무엇인가 하는 궁금증이 있습니다. 저자의 추가 설명이 있었는지 궁금합니다.