Paper Review

[논문리뷰] NEFTune: Noisy Embeddings Improve Instruction Finetuning

oneonlee 2024. 1. 22. 22:59
반응형

(ICLR 2024) NEFTune: Noisy Embeddings Improve Instruction Finetuning

arXiv : https://arxiv.org/abs/2310.05914

code : https://github.com/neelsjain/NEFTune/tree/main

 

세 줄 요약

  1. NEFTune은 학습 과정에서 임베딩 벡터에 Uniform Random Noise를 더해주는 행위를 말한다.
  2. NEFTune을 통해 모델은 학습 데이터셋에 대한 오버피팅이 감소한다. (모델이 일반성을 갖게 됨)
  3. 오버피팅 감소의 부작용으로, NEFTune을 사용하면 결과의 verbosity가 증가하게 된다.

1. Introduction

  1. 논문이 다루는 task
    • LLM Instruction fine-tuning 기법
  2. 해당 task에서 기존 연구 한계점
    • Insturction fine-tuning을 통해 LLM을 길들이기 어렵다.
    • 대부분의 작은 instruction datasets를 통해 LLM의 성능이 결정된다.

2. Related Work

  • Instruction fine-tuning의 초기 형태들은 (ex> FLAN. T0)은 cross-task generalization(*)에 초점을 두었다.
    • (*) cross-task generalization : 일반화된 성능을 통해 학습 데이터셋에 없는 task에 대해서도 좋은 성능을 내는 것
  • 정말 다양하고 많은 NLP tasks에 대해 fine-tuning하는 연구가 있었고, 심지어 1000개의 tasks로 실험한 연구도 있었다.
  • 이러한 연구들을 통해 LLM은 (simple) NLP tasks에 대해 쉽게 적응될 수 있다는 것을 알 수 있다.
  • 그러나 현실의 문제는 simple NLP tasks와는 다르다. 
    • real-world scenarios는 복잡한 open-ended queries에 대해 서술형 답변을 제시할 필요가 있음.
      • (*) open-ended query : Yes/No로 대답할 수 없는 질문

 

  • open-ended query를 처리한 다양한 연구들이 있음.
    • 초기 : InsturctGPT, GPT-3 (using RLHF), ChatGPT
    • 응용 : Self-Instruct, Alpaca, WizardLM, ShareGPT, Platypus, AlpaGasus

 

  • noisy inputs가 모델을 향상시키는 여러 방면의 연구가 있음
    • Adversarial Scheme를 사용하여 MLM 모델이나 Graph 모델의 성능을 향상시킨 사례
    • image captioning system이나 알고리즘에서 사용된 사례

3. 제안 방법론

Main Idea

Fine-tuning의 forward-pass 동안 학습 데이터의 embedding vectors에 random noise를 더하면
모델의 일반화 (generaliztion) 성능이 증가한다.

 

  • 장점
    • 추가적인 계산이나 데이터 없이 성능을 향상시킬 수 있음
      • NEFTune을 사용한 LLaMA-2-7B 모델로 실험을 했을 때, AlpacaEval 데이터셋에서의 성능이 29.8%에서 64.7%로 약 35%p 상승하였음
      • 저자는 LLM fine-tuning에서 이 기술이 개꿀이라고 함 (This techniques seems to be a free lunch for LLM fine-tuning.)

 

  • NEFTune 방법
    • 학습 시, embeddings에 random noise vector를 더한다.
      1. noise는 iid uniform entries sampling을 통해 생성함 (range : [-1. 1])
      2. scaling factor ($\alpha / \sqrt{Ld}$)를 전체 noise vector에 곱함으로써 scaling
        • $L$ : sequence length, $d$ : embedding dim, $\alpha$ : tunable parameter
        • scaling rule은 adversarial scheme를 사용한 이전 연구들에서 따왔음
        • random vector의 결과는 $\alpha / \sqrt{3}$으로 expect

NEPTune's Algorithm

언뜻 보면 복잡해보이지만, 이해하면 1) 노이즈를 생성하고, 2) scaling factor를 곱해서, 3) 기존의 embedding vector에 더하는 게 전부다.


4. 실험

Baseline

아래의 모델들에 대해, NEFTune의 적용 유무를 비교

  • 7B parameters LLMs
    • LLaMA-1-7B
    • LLaMA-2-7B
    • OPT-6.7B
  • RLHF model
    • LLaMA-2-Chat (7B)
  • Etc.
    • LLaMA-2-13B
    • LLaMA-2-70B

Instruction Fine-tuning Dataset

  • 저자 측의 하드웨어 문제로 single-turn datasets 만을 사용하여 실험하였음
    • Alpaca
    • Evol-Instruct
    • Open-Platypus
    • ShareGPT
  • ShareGPT는 Vicuna system prompt를 사용하였고, 나머지 데이터셋에 대해서는 Alpaca system prompt를 사용하였음
  • LLaMA-1-7B 모델을 Alpaca 데이터셋으로 학습시키며 coarse sweep 방식으로 탐색한 하이퍼파라미터들 중, 기존 모델 대비 6% 성능 향상을 보인 하이퍼파라미터를 사용하였음
    • 해당 하이퍼파라미터를 나머지 다른 모델들에도 동일하게 적용

Evaluation Dataset

  • AlpacaEval (*)
    • 모델의 대화 능력 및 전반적인 답변의 quality를 확인하기 위해 사용
    • (*) AlpacaEval은 AI 모델 기반 자동화 평가 시스템임
      • 타겟 모델을 Text-Davinci-003과 대결하는 방식으로 평가가 진행되며, Win Rate를 측정함
      • Evaluator model (평가자 모델)은 보통 ChatGPT나 GPT-4를 사용함
      • AI 모델이 평가하기에 신뢰도가 떨어진다고 느낄 수 있으나, 기존 연구에서 2만 명의 human annotators들로부터 평가 방식을 검증 받았음
  • Hugging Face Open LLM Leaderboard (ARC, HellaSwag, MMLU, TruthfulQA)
    • NEFTune이 모델의 능력에 부정적인 영향을 끼치지 않는 것을 확인하기 위해 사용

5. 결과

Results

  • NEFTune improves Text QualityNEFTune can improve Chat models

LLaMA-2-7B 모델의 NEFT 적용 유무에 따른 AlpacaEval 결과 (Evaluator: GPT-4)

 

위 Table 1을 보면, NEFT를 적용했을 때 모든 dataset에 대해 상당한 성능 향상이 있다는 것을 확인할 수 있다. (평균 15.1%p 향상)

 

 

LLaMA-2 외에도 LLaMA-1, OPT 모델들의 NEFT 적용 유무에 따른 AlpacaEval 결과 (Evaluator : 비용과 API 제한 문제로 GPT-4 대신 ChatGPT를 사용)

 

Figure 2를 확인했을 때에도, 모든 모델들이 모든 데이터셋에서 성능 향상을 보였다. 다만, ShareGPT 데이터셋의 경우에는 향상폭이 적은데, 이것은 Evalutor가 ChatGPT일 때만 나타난다. (GPT-4를 evalutor로 사용한 Table 1에서는 성능 향상이 뚜렷함)

 

 

LLaMA-2 및 Chat 모델의 파라미터 크기 별 NEFT 적용 유무에 따른 성능 평가 결과 (AlpacaEval 결과로 추정, Evaluator는 unknown)

 

파라미터 크기에 상관없이 NEFT는 빛을 발한다. 심지어, 이미 RLHF로 튜닝된 Chat 모델에 대해서도 효과가 있다.


  • Effect on Capabilities

LLaMA-2 및 LLaMA-1 모델의 NEFT 적용 유무에 따른 OpenLLM Leaderboard 결과

 

NEFTune은 모델의 capabilities를 보존한다.


  • NEFTune works with QLoRA

Base 모델과 NEFT with QLoRA를 적용한 모델들의 AlpacaEval 성능 비교

 

NEFTune은 QLoRA를 적용했을 때에도 성능 향상이 있다. QLoRA의 파라미터인 $\alpha$ 값에 따라 성능 향상의 정도는 달라진다.

 

Table 3에서의 성능 향상은 full scale fine-tuning 보다는 덜 극명하다. 저자는 이 이유가 fine-tuning에서의 epochs 수 같은 하이퍼파라미터가 최적화되지 않았거나, 4-비트로 많이 양자화되었기 때문일 것이라 추측한다.


  • 정성적 사례

NEFTune을 사용했을 때, 답변 길이가 더 길어지고, superposition과 quantum entanglement에 대한 더 명확한 설명과 잠재적인 응용에 대한 언급을 포함하여 설명한다.

AlpacaEval instructions의 Vicuna Eval subset 중 'quantum computing prompt'를 사용한 예시


Analysis

  • 저자들은 '학습 시 임베딩에 노이즈를 더하는 것이, 모델이 instruction-tuning dataset의 세부 사항(*)에 대한 과적합이 감소할 것이라 가정'한다.
    • (*) : formatting details, exact wording, text length
  • NEFTune의 눈에 띄는 부작용은 모델의 결과가 더 일관성을 가지게 되고, 더 길어진다는 것이다.
    • 대부분의 dataset에서 인간과 기계 평가자 모두 더 길고 장황한 답변을 선호하지만
    • 저자는 "verbosity의 증가는 단지 과적합 감소로 인한 부작용일 뿐, 이것만으로는 성능 향상을 설명할 수 없다"고 설명함

Overfitting

 

NEFTune을 적용한 모델은 그렇지 않은 모델에 비해 Training Loss가 크지만, Test Loss에서는 작은 것을 확인할 수 있다.

이것은 NEFTune을 적용한 모델이 less overfitting & better generalization 된다는 것을 의미한다.

 


Conclusion

  • LLM training 시, 알고리즘과 regularizers의 중요성에 대해 종종 무시하곤 하는데, 저자는 이 점을 NEFTune의 성공 요인으로 꼽음
    • 컴퓨터 비전 분야에서는 regularization과 overfitting에 대한 연구가 수년 동안 연구되어 왔지만, LLM 분야에서는 optimizer stability 및 standardized training loops 만 연구되었을 뿐 generalization에 대한 연구는 거의 이뤄지지 않았음

Limitations

  • AlpacaEval이 Evaluator LLM의 한 번의 판단으로 인해 biases를 가질 수 있음
  • Compute resources 때문에 70B 이상의 모델에 대한 실험을 수행하지 못함
  • 경험적인 연구일 뿐, 왜 NEPTune이 잘 되는지 이해하지 못함

After Reading

  • 결과 설명이 명확하지 않은 것 같다.
    • ChatGPT나 GPT-4가 모델을 평가하는 방식인 AlpacaEval의 신뢰성이 부족한 것 같다.
      • 비록 기존 연구에서 AlpacaEval이 2만명의 annotators에 의해 검증되었다 하더라도, Table 1과 Figure 2에서 제시하는 ShareGPT의 Win Rate 결과가 Evaluator에 따라 비일관적이라는 점은 AlpacaEval의 신뢰성에 다시 한 번 물음표를 던지게 한다.
        • -> 추후, AlpacaEval의 Evaluator 선정에 따른 결과 비교 연구도 해볼만 하겠다.
    • OpenLLM Leaderboard를 가지고 실험하는 이유를 "NEFT가 모델의 능력에 부정적인 영향을 끼치지 않는 것을 확인하기 위해"라고 설명하는데, 너무 결과에 끼워 맞춘 서술인 것 같다 ㅋㅋㅋ
      • 어쨌든 제시한 Figure 3을 보았을 때, 성능의 변화가 없다는 점은 주목할 만하다.
      • 그러나, 왜 AlpacaEval의 성능은 올라갔지만 왜 OpenLLM Leaderboard는 변하지 않았는지에 대한 토론이 있다면 좋을 듯 하다.
    • 모델 실험이 너무 많았던걸까. Figure 3과 Table 3에서 누락된 ShareGPT 기반 모델의 결과가 있었다면 더 좋을 것 같다.
      • 특히, ShareGPT 기반의 결과는 앞서 말했던 것처럼 비일관적이었기 때문에, ShareGPT의 결과를 반드시 확인할 필요가 있다고 생각한다.
      • 개인적인 추측으로는 성능 하락이 있어서, 일부러 Figure 3 및 Table 3에서 제외시킨 것이 아닌가 하는 생각이 든다.
  • Noisy Embeddings를 다른 연구에 적용해볼 수 있을 것 같다.
반응형