Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[20230406] Weekly VLM1 - CoOp #2

Open
kalelpark opened this issue Apr 5, 2023 · 4 comments
Open

[20230406] Weekly VLM1 - CoOp #2

kalelpark opened this issue Apr 5, 2023 · 4 comments
Assignees

Comments

@kalelpark
Copy link
Contributor

kalelpark commented Apr 5, 2023

Paper
Learning Transferable Visual Models From Natural Language Supervision (a.k.a. CoOp)

Summary
CLIP과 같이, VLM의 Contrastive Learning 방법론 중 하나임. 11가지 Dataset에서 높은 성능을 보여줌.
다만, Noise가 있는 데이터셋에서는 성능이 좋지는 않음 (ex Food101)
learnable vector(Fig1의 learnable context)를 활용하여, Prompt Engineering을 도와주는 Context Optimizer를 제시함.

(Fig1)
image

CLIP과 Image Encoder는 동일하지만, Text Encoder에서 learnable context를 사용하는데, 위의 Fig1은 Class가 우측에 놓여있지만, 유연하게 놓일 수 있음을 수식에서 설명함.
image

Strength

  • learnable vector라는 새로운 방법을 제시함.
  • 11가지 데이터셋에서 상당히 높은 성능을 보여줌.
  • few shot으로 학습한다는 점에서 저비용 GPU (그래서 CVPR 떨어진듯)

Weakness

  • fixed vector가 아니기에, interpretability가 적음
  • Noisy dataset에서 부적합

Speaker
WongiPark

@kalelpark kalelpark self-assigned this Apr 5, 2023
@kalelpark kalelpark changed the title [20230406] Weekly VML1 - CoOp [20230406] Weekly VLM1 - CoOp Apr 5, 2023
@SoongE
Copy link
Collaborator

SoongE commented Apr 10, 2023

CLIP을 더 improve 시킨 논문. CLIP과 가장 큰 차이점은 문맥을 바탕으로 text encoder의 input을 tokenization -> vectorization으로 바뀌었다는 점이다. Continuous prompt learning이라고 소개하며 text input을 learnable parameter를 포함하는 vectorization하여 문맥을 학습하게 했다고 주장하고 있으며, prompt learning에 대한 다양한 실험이 있어서, prompt learning에 관심이 많다면 한 번쯤 읽어볼만하다.

@dh58319
Copy link
Collaborator

dh58319 commented Apr 10, 2023

CLIP에서 조금 더 발전된 형태의 논문이다.
세미나 초반 학습 가능한 벡터에 대한 설명 부분에서 조금 헷갈리는 부분이 있어서 따로 읽어보았는데,
NLP Prompt learning에 대해서는 따로 배워본 적이 없었는데 신선한 방법이라는 생각이 들었고, prompt learning에 대한 전반적인 이해가 앞으로 VLM을 연구하는데에 있어서 필요할 것 같다는 생각을 하게 해주었다.

@gompaang
Copy link

소감: Prompt learning 라는 것이 신선하게 다가왔다. prompt에 따라서 성능이 달라진다는 점이 신기했고, prompt learning을 통해서 최적의 prompt 를 찾아준다는 점이 인상적이었다. CLIP에 prompt learning을 접목시킨 논문의 아이디어가 놀랍다.

@kalelpark kalelpark reopened this Apr 11, 2023
@ddiyoung-x4
Copy link
Collaborator

ddiyoung-x4 commented Apr 13, 2023

CoOp(Context Optimization)

Prompt 정의
Input 문장에 특정한 template를 붙여서 정답을 예측할 수 있다. [MASK] 토큰을 포함한 형태의 탬플릿 문장이 들어가면, pre-trained 모델이 [MASK] 토큰 위치에 들어갈 단어를 맞추게 된다. 이 때 예측된 word는 사전에 특정 label에 매핑되어 최종적으로 label을 예측할 수 있고, 해당 단어를 label word라고 부른다.
Prompt = Template + label word

Continous Prompt
[MASK] -> [0.1, 0.2, 0.3 ... ]
prompt 역할을 담당할 가상의 임베딩 vector를 배정

Prompt Engineering 한계점

  1. Word tuning 많은 시간 소요
    Prompt를 구성함에 있어서 적절한 태스크와 관련된 context를 매우 세밀하게 추가해주어야 함
  2. 사전 지식(task, language model) 요구

CoOp은 Prompt Engineering이 학습 가능하도록 만드는 방법이다.
prompt의 context words를 학습 가능한 vector로 모델링한다. 이 때, learnable context는 random 혹은 pre-trained된 word 임베딩으로 초기화되어 있다.

Unified Context
모든 class에 동일한 context 공유
Class Token의 위치가 prompt 중간 또는 끝에 위치

Class-specific Context
각 class마다 특정 context vector 학습

강점

  • input text의 prompt를 optimization 방법을 제안하여, few-shot 성능 향상

단점

  • interpretablity가 적음 <- continous prompt의 단점(?)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

5 participants