[CVPR 2024] Active Prompt Learning in Vision Language Models

Active Learning 과 Vision Language Model을 결합한 연구가 있어 리뷰해보도록 하겠습니다. 결국 Active Learning에도 CLIP을 결합한 연구가 등장하였네요. 사실 올 초 신진연구 제안서 작업을 할 때, CLIP을 결합하여 Active Learning을 수행하는 것이 목표로 삼은 태스크 중 하나였는데.. 올해 CVPR에 해당 연구가 게재된 것을 보고 반가운 감정도 제법 들었습니다. 리뷰 시작해보겠습니다



1. Introduction

아시다시피 최근에는 비전 언어 모델(Vision Language Models, VLMs)은 여러 작업에서 뛰어난 성능을 보이며 주목받고 있습니다. 대표적으로 CLIP이 그 중 하나인데요. 이 모델은 이미지와 텍스트 인코더로 구성되며, 새로운 데이터셋을 학습하지 않고도 높은 분류 성능을 보이기도 하였습니다. 그러나, 이러한 모델을 새로운 작업에 적응시키기 위해서는 특정 작업에 대한 지식이 필요합니다. 게다가 모든 파라미터를 업데이트하는 것은 계산 비용이 많이 들기 때문에, 적은 양의 데이터와 파라미터로도 성능을 개선할 수 있는 방법이 연구되고 있습니다.

따라서 저자는 사전 학습된 VLMs를 Active Learning에 적용하는 방법을 다뤘습니다. Active Learning은 가능한 적은 데이터셋으로 높은 성능을 달성하는 것을 목표로 하는 방법으로, 데이터 샘플 선택과 모델 학습이 그 중심입니다. 저자가 이르길, 단순하게 Active Learning 에 VLMs을 적용할 경우, 오히려 성능이 저하되는 현상이 발견되곤 하는데, 이는 데이터셋의 클래스 불균형 때문이라고 합니다. 따라서, 저자는 VLMs의 지식을 활용하여 레이블링 전 클래스 균형을 맞추는 새로운 Active Learning 프레임워크인 PCB를 제안하였습니다.

2. Problem Formulation

2.1 Vision Language Model

우선 해당 논문을 이해할 수준으로 컨셉을 위주로 Vision Language Model(VLMs)에 대해 설명드리겠습니다. 아주 간단하게 다루니 디테일한 CLIP 리뷰가 궁금하신 분들은 그동안 저희 연구원이 다뤘던 리뷰를 참고하시기 바랍니다.

VLMs은 일반적으로 이미지 인코더와 텍스트 인코더로 구성됩니다. 이미지 인코더는 입력 이미지를 임베딩 벡터로 반환하고, 텍스트 인코더는 문장을 이미지 인코더 출력과 같은 차원의 임베딩 벡터로 매핑합니다. 대표적인 VLM인 CLIP는 ResNet과 ViT 아키텍처를 이미지 인코더로 사용하고, 텍스트 인코더로는 Transformer 아키텍처를 사용합니다. CLIP은 이미지와 텍스트 쌍의 임베딩을 정렬하기 위해 이미지-텍스트 Contrastive learning 을 사용하여 학습됩니다.

CLIP 모델의 분류 과정은 이미지와 텍스트 사이의 similarity score에 의존합니다. 주어진 이미지 x_i​에 대해, 이미지 임베딩 e_{img}​와 텍스트 임베딩 e_{txt}​는 다음과 같습니다:

여기서 T는 텍스트 템플릿을 나타내며, {CLS_k}는 각 클래스의 이름을 나타냅니다. 텍스트 템플릿이란 “A photo of {CLS_k}”와 같이 class 이름이 들어가기 위한 양식과 같습니다. 클래스가 강아지와 고양이 두 개가 존재한다면, 텍스트 인코더는 “A photo of cat” 혹은 “A photo of dog” 가 입력으로 들어가게 됩니다.

이미지와 텍스트 임베딩을 사용하여 각 클래스 k의 예측 확률은 다음과 같이 계산됩니다:

​ 여기서 \tau는 softmax에 들어가는 것과 같은 temperature parameter이고, cos(·,·)는 코사인 유사도를 나타냅니다.

해당 연구가 등장하기 전까지, 연구 방식은 대부분 “고양이 이미지”에 대해 “고양이”라는 레이블을 discrete한 벡터로 변경해서 매핑시키는 학습이 주를 이뤘습니다. 가장 전형적인 학습 방식인 supervised learning 이 바로 그 예시죠. 그런데 CLIP은 discrete한 벡터가 아닌 continuous text vector를 image feature와 정렬이 맞도록 학습하다보니 기존 연구에 비해 큰 효과를 보았습니다.

2.2 Prompt Learning

프롬프트 러닝(PL)은 프롬프트의 일부분을 학습 가능하게 하여 성능을 향상시키는 효율적인 적응 방법이라고 합니다. 프롬프트 학습에서 클래스 이름 {CLS}는 [CLS]로 토큰화되고, 텍스트 템플릿 함수 T는 다음과 같은 토큰을 생성합니다:

여기서 [V]_i는 learnable token을 의미하고, [CLS_k]는 각 클래스에 대한 고정 토큰입니다. 이러한 learnable parameter들은 Cross Entropy Loss를 사용하여 학습된다고 합니다:

Method: PCB

3.1 Pseudo-Class Balance for Active Prompt Learning in VLMs

Active Learning은 레이블링 비용을 최소화하면서 모델의 성능을 최대화하기 위해, 정보가 많은(가치있는) 샘플을 선택하는 것을 목표로 합니다. 하지만 단순히 정보가 많은 샘플을 선택할 경우, 클래스 불균형이 발생하여 모델의 성능이 저하될 수 있습니다. 이를 해결하고자 본 논문은 VLMs을 사용한 두 단계의 Active Learning 방법론을 제안하였습니다

Balance Sampler

우선, Balance Sampler를 사용하여 각 클래스의 샘플 수가 균형을 이루도록 데이터를 임의로 선택합니다. 이는Active Learning의 두번째 단계에서 수행됩니다. 첫 번째는 유익한(가치있는) 샘플을 선택하고, 두 번째 단계에서는 VLMs이 가진 사전 지식을 사용하여 선택된 샘플에 pseudo-label을 부여하게 됩니다.

Balance Sampler에 대한 알고리즘은 상단 그림에서 확인할 수 있습니다. Query Set은 Active Learning 에서 선택된 Labeled Dataset이라고 생각하시면 됩니다. 초기 Labeled dataset의 클래스 균형을 확인 후, 가장 적은 클래스에 해당할 경우, VLM에 Unlabeled Dataset을 태워서 나온 pseudo-label을 Labeled set으로 추가하여, 클래스 분포를 맞춰주자는 의미입니다. 이렇게 구해진 Query Set인 Q가 기존 AL에서 흔히 알고있는 Labeled set이 됩니다.

Proposed method.

저자가 제안하는 PCB (Pseudo-Class Balance)은 클래스 불균형 문제를 해결하기 위해 위에서 설명한 Balance Sampler 모듈을 기반으로 구현됩니다.

  1. 초기 라운드에서 무작위 데이터셋인 Q를 선택
  2. 두 번째 라운드부터는 Active Learning알고리즘을 통해 가치있는 데이터셋 P를 구축하고,
    해당 샘플에 pseudo-label 부여
  3. Balance Sampler를 사용하여 클래스가 균형을 이루도록 데이터셋 Q 구성
  4. Q에 대한 실제 레이블 추가 후, 이를 사용하여 학습된 프롬프트 파라미터 업데이트

3.2 Description Augmentation

Description Augmentation는 VLMs의 분류 성능을 향상시키기 위해, 외부 지식을 통합하는 방법입니다. 이는 큰 언어 모델(LLMs)을 사용하여 각 클래스에 대한 시각적 설명을 생성하는 방식으로 구성됩니다. 예를 들어, GPT-3와 같은 모델이 특정 클래스에 대한 설명을 생성하는 데 도움을 줄 수 있다고 합니다

기존 연구에서는 다음과 같은 템플릿을 사용하여 각 클래스에 대한 설명을 생성합니다:

이렇게 각 클래스에 대해 여러 개의 description을 생성할 수 있으며, 이를 \Delta_k로 나타냅니다. 다시 말해, 이 규칙을 통해 클래스 k에 대한 δ_k 개의 descriptions을 얻게됩니다.
이를 수식으로 나타내면: \Delta_k = {d^i_k}^{δ_k}_{i=1} d^i_k는 k 클래스에 대한 i번째 description

저자는 이러한 description을 학습에 활용하기 위해, 새로운 텍스트 템플릿 함수 T를 사용하였습니다:

(1) Average Similarity (AS)

아래 수식과 같이, 개별 임베딩의 유사도를 계산한 후 평균을 구하는 방식입니다.

(2) Average Embedding (AE):

평균 임베딩을 구하는 것으로, 먼저 임베딩을 평균낸 후 유사도를 계산합니다.

이 두 가지 방법의 차이점은 평균을 계산하는 시점에 있습니다. AS는 개별 임베딩을 계산한 후 유사도를 평균내고, AE는 임베딩을 평균낸 후 유사도를 계산합니다.

4. Experiment

4.1 Implementation Details

  • Classification 실험에서 사용된 데이터셋: EuroSAT, Oxford Pets, DTD, Caltech101, Flowers102, StanfordCars, FGVC-Aircraft, 총 7가지
  • 8개의 round(R=8)로 구성되며, 각 라운드마다 클래스의 수와 동일한 크기의 하위셋(N=K)을 선택

4.2. Overall Results

저자가 제안하는 PCB(Pseudo-Class Balance) 알고리즘은 다양한 기존 기법(Entropy, Coreset, BADGE)과 결합했을 때 성능을 개선한 결과를 보였습니다. 대부분의 데이터셋에서 PCB를 적용한 경우가 높은 성능을 보였는데, DTD 데이터셋에서 BADGE+PCB(AS)를 적용했을 때, PCB를 적용하지 않은 경우보다 3.35% 높은 성능을 보였다고 합니다. 또한 평균적으로 모든 데이터셋에서 PCB를 사용했을 때 최대 4.64%의 성능 향상이 있었습니다. 특히, PCB(AS)를 적용한 경우가 대부분 가장 높은 정확도를 보였습니다.

Active learning can be poor than Random

그러나 일부 데이터셋에서는 Random보다 낮은 성능을 보였는데, 예를 들어 EuroSAT와 Aircraft 데이터셋에서는 Entropy와 Coreset이 랜덤 샘플링보다 낮은 성능을 보였습니다. 이는 불균형 데이터셋을 선택하여 성능 저하를 초래했기 때문이라고 합니다.

Learning Curve

그림 2는 각 라운드별로 다양한 데이터셋의 평균 정확도를 나타내는 라운드 별 그래프입니다. 모든 경우에서 PCB(AS)를 적용한 경우가 가장 높은 성능을 보였으며, PCB를 사용했을 때 AL 없이 PCB를 적용한 경우보다 성능이 더 향상된 결과를 보였습니다. 또한 라운드가 커짐에 따라 PCB를 적용한 경우와 그렇지 않은 경우의 성능 격차가 증가함을 확인할 수 있었습니다.

그림 3은 각 라운드에서 클래스별 샘플 수의 분산을 나타내는 Imbalance curve를 나타냅니다. PCB를 적용했을 때 클래스 불균형이 감소한 것을 확인할 수 있었고, 이를 통해 불균형이 중요한 요소임을 확인할 수 있었다고 합니다

Additional analysis.

Oxford Pets 데이터셋의 경우, PCB는 zero-shot CLIP보다 낮은 성능을 보였는데, 각 라운드에서 선택된 샘플의 수(N)를 증가하여 더 자세하게 이 현상을 분석해보았습니다. N이 클래스 수의 4배일 때 (N=4K), PCB+BADGE의 경우 zero-shot CLIP보다 높은 성능을 보였으며, 이를 통해 Oxford Pets에서의 성능 저하의 원인은 학습에 포함된 샘플 수의 부족 때문임을 알 수 있었다고 합니다.

4.3 Detailed Analyses

Other types of image encoder.

테이블 2는 이미지 인코더 모델(ViT-B/32, ViT-B/16, ResNet-50 등)에 따른 비교 실험 결과입니다, PCB+BADGE의 경우, 대부분의 이미지 인코더 아키텍처에서 성능이 향상되었습니다. 특히, Random sampling 높은 정확도를 보였으며, Description Augmentation을 통한 성능 향상이 컸습니다. 그러나 모델 크기가 커질수록 AS와 AE 방법의 성능 차이가 줄어드는 경향이 나타났습니다.

Class imbalance analysis over different γ

다양한 γ값에 대해 클래스 불균형을 분석한 결과, γ 값이 증가할수록 클래스 불균형이 감소하였으며, 이를 통해 PCB가 클래스 불균형 문제를 해결하는 데 효과적임을 확인하였습니다. 이는 그림 4에서 flower102과 DTD 데이터셋의 정확도-불균형 그래프로 확인할 수 있습니다. 모든 경우에서 PCB(AS)를 적용한 경우가 가장 높은 성능을 보였습니다.


코드가 없어서 몇 가지 궁금한 점이 있는데 더 디테일한 내용을 다루지 못해 약간 아쉬움이 남습니다. 또한 CLIP을 결합한 것만 큰 의의가 있지 않나 라는 아쉬움이 조금 남는 것 같습니다

Author: 홍 주영

6 thoughts on “[CVPR 2024] Active Prompt Learning in Vision Language Models

  1. 궁금했던 기법인데 빠르게 리뷰 작성해주셔서 감사합니다.

    근데.. 익숙하지 않은 기술들이 결합되어서 그런지 이해가 잘 안가요…

    1. Balance Sampler에서 가치 있는 데이터를 어떻게 선정하는 것인지 이해가 안갑니다… ” Query Set은 Active Learning 에서 선택된 Labeled Dataset이라고 생각하시면 됩니다.”라고 하셨는데 이 뜻이 무엇인지 모르겠습니다… 하하…

    2. 3.2 Description Augmentation에서 LLM을 이용한 description을 CLIP의 text embedding으로 사용하는 것으로 이해했습니다.
    2-1. 이는 unlabeld data를 구분하기 위해서 사용되는 것일까요?
    2-2. AS와 AE는 어떻게 사용되는 것인가요? 둘 다 사용해서 loss를 구하는 것일까요?

    1. 해당 방법론에 대해 다시 한번 이해하기 쉽게 설명드리겠습니다.
      우선 Active Learning 은 좋은 학습데이터를 선택하는 것을 목표로 합니다.
      이 때, 학습 데이터는 (x, y)데이터와 레이블이 페어로 구성됩니다.
      다시 말해, Label을 보지 않고도 성능 향상에 도움이 될 데이터 x 를 선택하는 것이 목적이죠.

      저자는 균형잡힌 클래스로 구성된 데이터셋을 선택하는 것이 중요하다고 하였습니다.
      따라서 학습 데이터는 D_L 를 선택할 때에는 클래스를 고려하는 것이 중요하죠.

      저자가 클래스를 고려하여 데이터를 선택한 절차는 아래와 같습니다.
      0. 가장 첫번째: Labeled Dataset D_L랜덤하게 선택
      —- (이제, 데이터 가치 판단 및 선택 단계) —-
      1. 가치있는 데이터 선택단계
      – 기존 Active Learning 기법 사용
      – γ|D_u| 개의 가치 있는 데이터 집합인 P선택
      2. Pseudo-label 추출 단계
      – Vision Language Model인 f를 이용
      – f를 통해 P에 대한 pseudo label을 얻음
      3. 가치있는 데이터 필터링 및 최종 선택 단계
      – P에서 가치있는 N개의 데이터 선택
      – 학습데이터인 D_L의 클래스를 고려해야함
      – 이를 위해 D_L에서 가장 적은 개수를 가진 클래스 k를 찾고
      – k에 해당하는 pseudo-label 중 한 개를 가치있는 데이터로 선택
      – 이 과정을 N번 반복하여 가치있는 데이터 집합 Q 최종 선택
      4. 선택된 데이터로 [V]_i학습
      – 프롬프트 학습에는 AS와 AE 둘 중 하나를 사용

      ==============================
      이제 답변을 드리자면
      1. 위의 과정 중 3번인 클래스를 고려하여 한 개씩 데이터를 선택하는 것을 Balance Sampler 라고 합니다.
      2-1. 이는 CLIP 모델의 표현력을 향상시키기 위함입니다.
      2-2. 둘 중 하나를 사용하여 프롬프트를 학습시킵니다.

  2. 안녕하세요 홍주영 연구원님. 좋은 리뷰 감사합니다.

    intro 부분에서 AL에 VLM을 적용할 경우 클래스 불균형에 의해 성능 하락이 발생할 수 있다고 설명해 주셨는데, 여기서 클래스 불균형이란 AL에서 unlabeled 에서 데이터를 선정할 때 정보량을 기준으로 선정하게 되면 선정된 데이터셋 내부의 분포에서 발생하는 것을 의미하는 것일까요? 그렇다면 VML의 사전 학습 데이터는 class가 균형적임을 가정하고 있는지도 궁금합니다.

    또한 본 논문에서는 가치있는 샘플의 기준을 어떤 것으로 삼았는지 궁금합니다. ‘overall results’부분에 entropy, coreset은 어느 정도 알고 있으나 BADGE 기법은 처음 들어보는지라 간단히 설명해 주실 수 있을까요?

    감사합니다.

    1. “여기서 클래스 불균형이란 AL에서 unlabeled 에서 데이터를 선정할 때 정보량을 기준으로 선정하게 되면 선정된 데이터셋 내부의 분포에서 발생하는 것을 의미하는 것일까요?”
      -> 네, 학습에 사용할 데이터셋의 클래스 불균형을 의미합니다.
      “그렇다면 VML의 사전 학습 데이터는 class가 균형적임을 가정하고 있는지도 궁금합니다.”
      -> 그러나 해당 가정은 없습니다. 우선 CLIP에 사용한 데이터셋에는 접근이 불가능할 뿐더러, 저자는 CLIP이 가진 풍부한 정보량은 pseudo-label을 뽑기에 기존 모델보다 신뢰성이 있다고 판단하기 때문입니다. 클래스 불균형을 해소하기 위한 솔루션으로 CLIP을 직접적으로 사용한 것은 아니기 때문에 해당 가정은 크리티컬 하다고 생각되진 않습니다.

      ” BADGE 기법은 처음 들어보는지라 간단히 설명해 주실 수 있을까요?”
      -> BADGE는 기울기를 이용하여 데이터를 선택하는 방식입니다. 모델 파라미터의 마지막 레이어에 대한 그래디언트의 크기를 사용해 불확실성을 측정한 뒤, k-MEANS++ 초기화 방법을 사용하여 다양한 방향으로 그래디언트를 가지는 배치를 선택합니다. 불확실성과 다양성을 모두 고려하는 방식으로 지금까지도 높은 성능을 내는 방법론입니다.

  3. 홍주영 연구원님, 좋은 리뷰 감사합니다.
    AL와 CLIP을 완전히 별개의 영역이라고 생각했었는데, 이 둘을 결합한 내용이 흥미로웠습니다. 특히 AL에서 imbalance 문제를 기존에 깊게 생각해본적이 없었는데, 중요성을 다시 알게 되었습니다.

    리뷰를 읽다가 궁금한 점이 생겨 질문 남깁니다.
    proposed method에서는 1. init set Q를 선택하고 2. 고가치 set P를 구축한 뒤 수도라벨링을 하고 3. balance sampler를 사용하여 클래스가 균형을 이루도록 데이터셋 Q를 구성한다고 했습니다. 이 부분에서 제가 이해하기로는 고가치 set P에서 Alg1(Balance_sampler)를 이용해 P의 balancd subset Q를 구성하는것으로 이해했는데, 올바르게 이해한 것일까요?

    감사합니다.

    1. 넵 제대로 이해하셧습니다
      더 디테일한 과정은 아래 추가로 달아두겠습니다.

      저자가 클래스를 고려하여 데이터를 선택한 절차는 아래와 같습니다.
      0. 가장 첫번째: Labeled Dataset D_L랜덤하게 선택
      —- (이제, 데이터 가치 판단 및 선택 단계) —-
      1. 가치있는 데이터 선택단계
      – 기존 Active Learning 기법 사용
      – γ|D_u| 개의 가치 있는 데이터 집합인 P선택
      2. Pseudo-label 추출 단계
      – Vision Language Model인 f를 이용
      – f를 통해 P에 대한 pseudo label을 얻음
      3. 가치있는 데이터 필터링 및 최종 선택 단계
      – P에서 가치있는 N개의 데이터 선택
      – 학습데이터인 D_L의 클래스를 고려해야함
      – 이를 위해 D_L에서 가장 적은 개수를 가진 클래스 k를 찾고
      – k에 해당하는 pseudo-label 중 한 개를 가치있는 데이터로 선택
      – 이 과정을 N번 반복하여 가치있는 데이터 집합 Q 최종 선택
      4. 선택된 데이터로 [V]_i학습
      – 프롬프트 학습에는 AS와 AE 둘 중 하나를 사용

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 항목은 *(으)로 표시합니다