Logical Scribbles

[딥러닝 이론] Prompt Tuning VS Prefix Tuning 본문

딥러닝/딥러닝 이론

[딥러닝 이론] Prompt Tuning VS Prefix Tuning

KimJake 2023. 12. 19. 18:44

시험기간이 끝나고 오랜만에 글을 써본다. 내 공부는 꾸준히 하고 있었지만 시험 기간이 겹쳐 글을 쓸 시간이 도저히 없었다. (핑계..)

 

오늘은 여러 논문들을 들으며 헷갈렸던 개념들, 특히 'Visual Prompt Tuning' 이라는 논문과 자연어 처리 쪽의 논문들을 읽으며 헷갈렸던 개념들(Prompt tuning, Prefix tuning)에 대해 정리를 해보고  스스로 명확하게 하고자 한다.

 

'Visual Prompt Tuning' 이라는 논문에 대해서는 추후 리뷰를 작성할 예정이다. 혹시 관심이 있는 분이라면 읽어보시길 바란다!

 

Visual Prompt Tuning

The current modus operandi in adapting pre-trained models involves updating all the backbone parameters, ie, full fine-tuning. This paper introduces Visual Prompt Tuning (VPT) as an efficient and effective alternative to full fine-tuning for large-scale Tr

arxiv.org

 

1. Pre-trained Language Models

prefix tuning과 prompt tuning에 대해 알아보기 전 pre-trained model에 대한 이해가 필요하다. 직역하자면 사전-훈련된 모델이라는 뜻인데, 사전 훈련된 AI 모델은 특정 작업을 수행하기 위해 대규모 데이터 세트에서 훈련된 딥러닝 모델이다.

 

유명한 BERT나 GPT 계열의 모델들이 모두 사전 훈련된 딥러닝 모델이다. 이러한 사전 훈련된 모델 중 사전 훈련된 언어 모델을 pre-trained language model이라고 하고, 그 안에는 순방향 언어 모델과 역방향 언어 모델 등으로 나뉘는데, 이에 대해서는 나중에 차차 알아보기로 하고, 이 pre-trained model이 왜 중요한지에 대해서만 알면 될 것 같다.

 

예를 들어보자. 나는 엄청난 시간과 돈을 들여 거대한 언어 모델(LLM)을 만들었다. 그리고 이 모델을 학습시킬 때 모델에 주어진 task는 문장의 감정을 분류하는 것이었다. 이 모델이 학습이 잘 되었다고 해보자. 그러면 이 모델은 내가 입력하는 문장에 대해서 감정 분류를 0 혹은 1로 훌륭하게 해낼 것이다.

 

며칠 뒤, 나에게 새로운 task를 해결 해야하는 모델을 만들어야 할 일이 주어졌다. 새로운 모델은 next-sentence prediction task를 훌륭하게 수행해내야한다. 또 다시 엄청난 시간과 돈을 들일 것인가?

 

Pre-trained Language model, 즉 사전 학습 모델이란 학습 과정에서 랜덤하게 초기화하던 모델의 가중치들을 다른 문제(task)에 학습시킨 가중치들로 초기화하는 방법이다.   

 

그리고 이 방법이 통한 것이다! next sentence prediction을 위한 모델을 새롭게 학습시키는 것보다 우리가 갖고 있는 감정 분류 모델을 약간의 튜닝을 통하여 학습시키는 것이 효율적이라는 것이 알려져있다. 또한 이 방법은 이전 글에서 소개한 전이 학습에 사용된다.

 

 

[딥러닝] 전이학습(Transfer Learning)이란?

이번 포스팅에서는 전이학습에 대해 알아보자. 우선, 아래의 퀴즈를 풀며 시작해보자. 아르마딜로와 천산갑(Pangolin)을 구분하는 간단한 문제이다. 평소에 아르마딜로와 천산갑의 외형적 차이를

stydy-sturdy.tistory.com

 

2. Prefix Tuning 

Prefix Tuning은 자연어 처리 분야에서 사용되는 전이 학습 기법 중 하나이다. 이 방법은 주로 BERT나 GPT와 같은 LLM에 사용되는데, 이러한 모델들을 특정 작업에 맞게 조정하는 데 사용된다. Prefix Tuning의 주요 아이디어모델의 전체 매개변수를 fine-tuning 하는 대신, 입력 시퀀스에 학습 가능한 'prefix'를 추가하여 모델을 특정 작업에 적응시키자는 것이다.

 

아래 그림은 prefix tuning과 fine-tuning간의 차이점을 보여주고 있다. fine-tuning은 모든 언어 모델의 파라미터를 업데이트하여 리소스가 많이 필요하지만, prefix tuning에서는 prefix를 제외한 모든 언어 모델의 파라미터를 동결하고 전이 학습이 진행된다.

 

 

Prefix Tuning의 핵심 내용을 정리해보면 아래와 같다.

  • 학습 가능한 프리픽스 추가: Prefix Tuning은 (모든 트랜스포머 블록에서) 입력 시퀀스의 시작 부분에 고정된 길이의 학습 가능한 토큰 시퀀스를 추가하여 모델이 특정 task를 더 잘 이해하고 수행할 수 있도록 한다.
  • 모델의 나머지 부분은 고정: Prefix를 제외한 모델의 나머지 부분은 동결된다. 즉, 사전 훈련된 모델의 원래 파라미터는 변경되지 않고, 오직 프리픽스 부분만이 특정 작업에 맞게 학습된다.
  • 파라미터의 효율성: Prefix Tuning은 전체 모델을 fine-tuning 하는 것보다 훨씬 적은 수의 파라미터를 조정하며, 따라서 파라미터 수가 많은 LM에서 유용하다.
  • 전이 학습: Prefix는 특정 task에 대한 모델의 이해를 돕고, 해당 작업에 대한 모델의 성능을 향상시키는 데 중점을 둔다.

3. Prompt Tuning 

Prompt tuning에는 hard prompt와 soft prompt가 있지만 이번 글에서 prompt tuning을 soft prompt tuning과 같은 뜻으로 사용하겠다.

 

위 사진은 Hard prompting과 Soft prompting의 비교이다. hard prompting은 인간이 이해할 수 있지만, 그만큼 노가다를 통하여 많은 prompt를 작성해야하는 단점이 있다. soft prompting은 인간이 이해할 수 없는 벡터 형태의 prompt이지만, 학습 가능하다는 장점이 있다.

 

Prompt tuning은 모델 가중치를 동결하고 프롬프트의 매개변수를 업데이트 함으로서 전이 학습에 적용된다.

 

위의 그림은 task에 따라 pre-trained 모델을 매번 학습시키는 과정과 prompt tuning의 과정을 비교하며 보여주고 있다. 오른쪽의 prompt tuning을 자세히 보면 새로운 모델을 학습시키는 것이 아닌 사전 학습된 모델을 그대로 사용하고 있음을 볼 수 있다. 즉,  prompt tunig을 사용하면 모든 작업에 동일한 모델을 사용할 수 있다. 추론 시간에 적절한 프롬프트를 추가하기만 하면 다양한 작업에서 일괄 처리가 더 쉬워진다.

 

4. Prefix Tuning VS Prompt Tuning 

사실 너무 비슷한 개념이고 같은 시기에 나온 방법론들이라 구분이 어려웠다. 내가 이해한 곳까지 적어보겠다.

 

 

prefix tuning은 입력 시퀀스에 task 별 prefix가 삽입되어 모델의 더 많은 layer에 전파(prefix tuning시 prefix는 트랜스포머의 모든 블록에 입력된다.)되게 하므로 더 많은 파라미터를 업데이트 해야 한다. 반면 prompt tuning은 입력 프롬프트 임베딩을 업데이트하는 것만을 포함하므로 파라미터가 업데이트되는 횟수가 줄어든다. 이를 통해 prompt tuning을 prefix tuning보다 더 파라미터 efficient하게 만들 수 있지만, 각각의 task에 적용되는 능력은 제한될 수 있다는 것을 보여준다.