[리뷰] Few-Shot Parameter-Efficient Fine-Tuning is Better and Cheaper than In-Context Learning - NeurIPS 2022
이번에 리뷰할 논문은 Few-Shot Parameter-Efficient Fine-Tuning is Better and Cheaper than In-Context Learning 논문으로 LLM에서 FEFT라는 방법이 In-Context Learning보다 좋은 성능을 보일 수 있다는 논문입니다. 2023.11.02 기준 174회의 높은 인용수를 보이고 있습니다.
리뷰한 내용의 부족한 점, 잘못된 점에 대한 피드백은 언제든 환영합니다!
Abstract
Few-shot in-context learning(ICL)은 gradient based training 없이 이전에 보지 못한 task에 수행을 가능하게 합니다. 하지만 모든 training에 대한 example을 가지고 있어야 하므로 memory/storage cost가 매우 큽니다. 반대로, gradient based training을 수행하는 방법을 Fine-tuning이라고 합니다. 특히, 적은 수의 파라미터만을 업데이트해서 모델을 Fine-tuning 하는 방법을 Parameter-Efficient Fine-Tuning (PEFT)라고 합니다. 본 논문에서는 ICL이 아닌 저자들의 PEFT 방법인 T-Few는 매우 적은 파라미터의 업데이트만으로도 SOTA대비 6%의 성능 향상을 보인다고 합니다.
Introduction
In-context Learning (ICL)
ICL은 GPT2에서 처음 제안된 방법으로 기존 모델의 가중치를 업데이트 하지않고 좋은 입력을 모델에게 줌으로써 좋은 출력을 얻자는 방법입니다. 모델이 다양한 task를 수행하기 위해서는 fine-tuning이라는 해당 task에 적합한 가중치를 얻는 과정(학습)을 해야 합니다. 하지만 ICL에서는 모델의 입력에 대한 예시를 줌으로써 모델이 적합한 출력을 할 수 있게 합니다. prompt engineering과 같이 적합한 prompt와 질문을 입력하면 모델은 정답값에 근사한 예측(출력)을 얻을 수 있는 것과 같습니다.
이러한 ICL은 모델의 업데이트를 수행하지않는 것과 즉각적인 출력을 얻을 수 있다는 장점을 가지지만 입력을 위한 예시 prompt가 필요하다는 점과 prompt에 따라서 예측값이 많이 바뀐다는 단점을 가지고 있습니다.
Parameter-efficient fine-tuning (PEFT)
PEFT는 흔히들 알고 있는 fine-tuning 방법과 유사합니다. 앞의 Parameter-efficient는 모델 전체를 fine-tuning 하는 것의 cost가 매우 크기 때문에 효율적인 fine-tuning을 위해서 붙여진 이름입니다. 일반적으로는 매우 적은 파라미터만을 업데이트해서 fine-tuning 하며, 대표적인 방법으로는 Adapter를 추가하는 방법과, Prompt tuning, Prefix tuning 등이 있습니다. 본 논문에서는 PEFT 방법에 기반하여 새로운 방법을 제안합니다.
Method
본 논문에서는 기본적으로 T0 모델을 사용합니다. T0 모델은 T5 모델에 대해서 fine-tuning 한 방법으로 multitask mixture에서 학습했습니다. 이는 위의 그림과 같이 다양한 task에 대해서 수행할 수 있는 모델임을 의미합니다.
본 논문에서는 IA3라는 fine-tuning 방법을 제안합니다. 위의 그림에서 왼쪽은 attention을 수행하는 부분으로 Query, Key, Value에 대한 연산을 수행합니다. 이때, Value와 Key를 계산하는 부분에서 새로운 rescaling 파라미터 lv, lk가 추가됩니다. 기존의 파라미터에 대해서 lv와 lk는 각각 element multiplication을 수행합니다. 기존의 파라미터는 freeze를 유지하고 새로운 파라미터만 업데이트를 합니다. 또한 오른쪽과 같이 position-wise feed-forward network에 대해서도 새로운 파라미타 lff를 추가해서 업데이트합니다. 저자들은 다양한 실험을 통해 위와 같은 rescaling 파라미터만을 업데이트해도 좋은 성능을 보이며 다른 조합에서는 유의미한 결과를 찾지 못했다고 이야기합니다.
또한 본 논문에서는 아래와 같은 loss term을 추가해서 성능을 약 3% 올렸다고 합니다.
첫 번째, loss term은 Unlikelihood loss term입니다. 이 loss가 의미하는 것은 쉽게 이야기해서 정답이 아닌 것에 대해서 모델을 멀리 학습하는 것을 의미합니다. 따라서 y hat은 잘못된 정답을 의미하며 1에서 빼줌으로써 이와 반대로 학습이 진행되도록 합니다.
위의 식은 Length Normalization loss term입니다. B는 output sequence이며 이를 문장의 길이로 나눠줍니다. 이렇게 하는 이유는 보통 문장이 더 짧은 모델의 예측 확률이 높기 때문입니다. 문장이 길어지면 이를 구성하는 토큰에 대한 확률값들로 해당 문장의 확률 값이 구성되므로 짧은 문장보다 확률값이 낮아지게 됩니다. 이를 막고자 normalization을 수행합니다.
Experiments
Table 1은 held-out T0 task에서 가장 높은 성능을 보입니다. 또한 아래와 같이 RAFT 데이터 셋에 대해서도 좋은 성능을 보입니다. 참고로 RAFT 데이터셋은 오직 hugging face에서만 테스트할 수 있어 공정합니다.
본 논문에서는 새로운 PEFT 방법을 제안합니다. 매우 간단하면서 효율적인 방법을 통해 ICL보다 좋은 성능을 보일 수 있음을 보여줍니다. LLM 논문을 제대로 읽어보는 건 처음인데 기존에 알고 있던 것 보다 더 많은 발전이 이루어진 것 같습니다. 앞으로는 LLM과 관련된 최신 논문들을 읽어보고 자세하게 리뷰해 보겠습니다.