어쩌다데싸
LLM - Fine Tuning(미세조정) 본문
지난 한 달 간 LLM 기반 QA 서비스 공모전과 회사 프로젝트를 진행하며 Fine tuning 과 Prompt Engineering, RAG에 대해 공부하는 시간을 가졌습니다. 이번 글에서는 LLM Fine Tuning에 대한 개념과 학습데이터 구성을 통해 Fine Tuning하는 몇 가지 기법들을 알아보려 합니다.
1. Fine Tuning이란?
LLM 모델은 대용량 자연어 데이터를 사용하기 때문에, 라벨링을 한 지도학습(Supervised learning)을 하긴 어렵습니다. 그래서 LLM 모델은 자기지도학습(Self-supervised Learning)을 통해 학습이 되게 됩니다. 자기지도학습은 라벨이 없는 데이터에서 스스로 input 내에서 target으로 쓰일만 한 것을 정해서 모델을 학습하는 방식입니다. 자기지도학습으로 학습된 Pre-training 모델을 비교적 소규모 데이터로 Downstream task에 맞게 다시 학습해 파라미터를 조정하는 것을 'Fine Tuning(미세조정)'이라고 부릅니다. 이 때, Label이 있는 데이터를 사용해 Fine tuning 하는 것을 Supervised fine-tuning이라고 합니다.
2. Fine Tuning 전략 - 학습데이터 구성
처음 Fine-tuning을 접할 때는 Prompt Engineering과 헷갈리는 점들이 많았습니다. 질문과 함께 예시나 지시사항을 주는 Few-shot 방식과 문제에 대한 지시사항과 문제를 함께 주고 학습시키는 Instruction Tuning에 대해 이해할 때 특히 그랬습니다. 간단하게 정리하자면, Prompt Engineering은 모델에게 지시사항이나 예시를 주는 등 모델이 질문을 더 잘 이해할 수 있게 Prompt를 조정하는 작업이지만 이 때 입력되는 내용에 따라 가중치 업데이트가 일어나지는 않습니다. Fine Tuning은 새로운 데이터들이 들어오면 그에 맞춰서 그래디언트를 계산하고 파라미터를 업데이트 한다는 점에서 차이가 있습니다.
Fine Tuning 전략에는 학습에 사용할 데이터를 조정하는 방법과 파라미터를 효율적으로 업데이트하는 방법이 있습니다. 이번 글에서는 LLM의 학습데이터에 대한 Fine Tuning 전략을 간략하게 살펴보겠습니다.
(1) Instruction Tuning
앞서 잠시 설명했다 싶이, Instruction Tuning은 여러가지 종류의 문제에 대해 학습해 문제해결력을 키우는 방식입니다. 일반적인 Fine tuning이 특정한 테스크에 대해 데이터를 줘서 해당 테스크만 처리할 수 있는 것과 다르게, Instruction 튜닝은 문제에 대한 지시사항과 문제를 함께 사용하기 때문에 자연어로 주어진 지시사항을 이해하고 따르는 법 자체를 학습해 새로운 테스크에도 대응할 수 있게 됩니다.
(2) RLHF (Reingforcement Learning from Human Feedback)
Instruction Tuning의 핵심은 'Alignment' 였습니다. 사용자의 의도에 맞으면서 목표와 가치에 일치하게 대답을 하게끔 하는 것이었죠. 모델은 의도에는 맞지만 틀린 답이거나, 도움이 안되거나, 윤리적으로 어긋나는 대답을 할 수도 있습니다. 모델이 더 적절한 답을 하게 만들기 위해 Human Feedback을 사용할 수 있습니다. 좋은 대답에는 높은 점수를, 나쁜 대답에는 낮은 점수를 매겨주는 것입니다. 이렇게 스코어(사람의 선호도)를 강화학습에서의 리워드로 삼아서 리워드를 최대화 시키는 방향으로 모델을 학습하는 방식을 RLHF라고 합니다.
ChatGPT에 적용된 RLHF를 살펴보면 크게 3가지 단계로 나누어집니다. 우선, 사람이 선별한 Instruction Tuning 된 적은 양의 샘플 데이터로 Pre-triained 모델을 Supervised Fine-Tuning 합니다.
다음으로는, 해당 SFT 모델이 생성한 여러 답변 후보들 중, 인간 Labeler들이 무엇이 더 좋은 답변인지 랭킹을 매겨 점수화한 데이터셋을 수집하고, 이 데이터셋을 이용하여 새로운 Reward Model을 학습합니다. 실제로 ChatGPT를 사용하다 보면 2가지 혹은 3가지 답변이 주어지면서 무엇이 더 나은 답변인지 선택하는 경우가 종종 발생하곤 합니다. 사용자가 직접 Human Feedback을 주는 것이죠. 그 다음, PPO(Proximal Policy Optimization)를 이용해 SFT 모델을 강화학습합니다.
(3) DPO (Direct Preference Optimization)
DPO는 인간 피드백(선호도)에 맞는 결과를 도출한다는 것은 RLHF와 똑같지만, RLHF와는 달리 Reward Model이 필요하지 않아 RLHF에 대한 대안으로 주목을 받았습니다.
DPO는 강화학습에 대한 것을 binary cross entropy 로 풀어서 선호도 학습 파이프라인을 단순화시켰습니다. Reward Model에 대한 학습이 필요하지 않기 때문에 이에 대한 리소스가 절약되는 등의 장점을 가지면서 언어 모델의 성능을 향상시킬 수 있다는 장점이 있습니다.
이번 글에서는 LLM Fine tuning 전략 중 학습데이터를 조정하는 몇 가지 기법에 대해 알아보았습니다. 다음에는 Fine Tuning 시 파라미터를 효율적으로 업데이트 할 수 있는 PEFT(Parameter Efficient Fine-tuning)에 대해 알아보겠습니다.
< 참고 >
- Jason Wei et al. "Finetuned Language Models Are Zero-Shot Learners."
- Rafael Rafailov et al. "Direct Preference Optimization."
'Generative AI' 카테고리의 다른 글
LangChain으로 RAG 구현하기 (0) | 2024.02.04 |
---|---|
LLM(Large Language Model)이란? (1) | 2023.12.19 |