더보기
57일 차 회고.
어제 빅데이터분석기사 기본서를 다 보고 기출문제 풀이에 들어갔다. 그런데 빅데이터분석기사 생긴 지 별로 안 됐기 때문에 기출문제만 푸는 걸로는 시험을 보기에 부족하다고 해서 내가 공부한 내용을 확인하는 방식으로 풀려고 한다.
1. PPO
1-1. RLHF
RLHF(Reinforcement Learning from Human Feedback)
- 인간 피드백을 활용하여 Agent가 더 나은 정책(Policy)을 학습한다.
- 강화학습
- 환경(Environment)과 상호작용하며 상태(State)에 따라 행동(Action)을 선택하고, 그에 따른 보상(Reward)을 기반으로 학습한다.
RLHF 학습 프로세스
- Supervised Fine Tuning
- 데모 데이터를 수집하여 지도 학습(Supervised Learning) 방식으로 초기 모델을 학습한다.
- Training a Reward Model
- 모델이 생성한 여러 개의 응답 또는 행동을 비교하여 더 나은 선택지를 사람이 평가한다.
- 보상 모델(Reward Model)을 학습한다.
- Optimize Policy
- 보상 모델을 활용하여 강화 학습(Reinforcement Learning)을 수행하여 정책(Policy)을 최적화한다.
1-2. PPO
PPO(Proximal Policy Optimization)
- 강화 학습 알고리즘
- 인간의 피드백에 근접하도록 보상 모델을 훈련하는 알고리즘
- 정책(Policy)을 업데이트할 때 너무 큰 변화 없이 점진적으로 최적화한다.
- RLHF에서 정책 모델을 안정적으로 훈련하는 데 자주 사용된다.
PPO 작동 방식
- Rollout
- 언어 모델이 문장의 시작이 될 수 있는 쿼리(Query)를 기반으로 응답(Response)을 생성한다.
- 현재 정책(Policy) 모델이 실행(Rollout)되며, 샘플이 수집된다.
- Evaluation
- 쿼리-응답 쌍을 평가하여 스칼라 값(보상, Reward)을 산출한다.
- 함수 기반 평가
- 모델 기반 평가
- 인간 피드백
- 쿼리-응답 쌍을 평가하여 스칼라 값(보상, Reward)을 산출한다.
- Optimization
- 쿼리-응답 데이터를 활용하여 모델을 최적화한다.
- 로그 확률 계산
- 각 쿼리-응답 쌍에서 토큰의 로그 확률을 계산하여 정책을 업데이트한다.
- KL-발산
- 생성된 응답이 기존 참조 모델(Pre-trained Model)에서 너무 멀어지지 않도록 KL-발산(Kullback-Leibler Divergence)을 추가 보상 신호로 사용한다.
- 참조 모델에서 크게 벗어날 경우 보상을 낮춰 모델이 지나치게 창의적인 출력을 하지 않도록 제어한다.
- 로그 확률 계산
- 쿼리-응답 데이터를 활용하여 모델을 최적화한다.
PPO 구조
- Actor-Critic 구조
- Actor Model
- 토큰 시퀀스(텍스트)를 생성한다.
- 현재 정책을 따라 행동을 수행하며, 보상을 극대화하도록 업데이트된다.
- LLM의 역할을 한다.
- Critic Model
- Actor Model이 생성한 시퀀스(텍스트)에 대해 보상을 예측한다.
- 보상 모델(Reward Model)과 유사하게 동작하지만, 강화 학습 내에서 직접 학습된다.
- 각 행동(응답)에 대한 가치를 평가하여 학습이 올바른 방향으로 진행되도록 돕는다.
- Actor Model
2. DPO
2-1. RLHF
RLHF 단점
- 구조가 복잡하다.
- RLHF는 총 4개의 모델이 필요하다.
- Actor Model
- Reward Model
- Critic Model
- Reference Model
- RLHF는 총 4개의 모델이 필요하다.
- 학습 안정성 부족
- Actor Model이 Reward Model과 Critic Model에 의존하여 과적합될 수 있다.
- 하이퍼파라미터에 매우 민감하기 때문에 튜닝이 어렵다.
RLHF 대체 방법론
- RRHF(Rank Response to Align Language Models with Human Feedback without Tears)
- 보상 모델 없이 선호 순위(Ranking)만을 활용하여 학습한다.
- SLiC-HF
- Contrastive Learning을 활용하여 선호 데이터를 학습한다.
2-2. DPO
DPO(Direct Preference Optimization)
- 강화 학습 없이도 RLHF의 효과를 얻을 수 있도록 설계된 방법론
- 보상 모델이 필요없다.
- 선호 데이터를 직접 활용한다.
- PPO 없이 Logits만으로 학습이 가능하다.
- 학습 과정에서 원치 않는 출력을 줄일 수 있다.
- 보상 모델이 필요없다.
DPO 학습 프로세스
- 데이터 수집
- 사람(Annotator)이 두 개의 모델 응답 중 하나를 선택한다.
- 확률 계산 및 비율 측정
- 입력 컨텍스트에서 응답 문장이 생성될 확률을 계산한다.
- 기존 레퍼런스 모델과 현재 학습 중인 모델의 확률을 비교한다.
- 최적화
- 선호 데이터만을 활용하여 Loss Function을 최소화한다.
- 로그 확률 비율(Log Likelihood Ratio)을 기반으로 학습한다.
3. LLM 프로젝트
3-1. File Structure
LLM_PROJECT
├─ database
│ ├─ db
│ └─ docker-compose.yml
├─ etl
│ ├─ README.md
│ ├─ requirements.txt
│ ├─ test.ipynb
│ └─ youtube.py
├─ training
│ └─ README.md
├─ web
│ ├─ .venv
│ ├─ common
│ │ ├─ database
│ │ │ └─ connector.py
│ │ ├─ display
│ │ │ ├─ constant.py
│ │ │ ├─ history.py
│ │ │ ├─ input.py
│ │ │ ├─ output.py
│ │ │ └─ utils.py
│ │ ├─ model
│ │ │ ├─ groq.py
│ │ │ ├─ ollama.py
│ │ │ ├─ openai.py
│ │ │ ├─ provider_class.py
│ │ │ └─ provider.py
│ │ ├─ service
│ │ │ └─ film_service.py
│ │ └─ pages
│ │ └─ db.py
│ ├─ .env
│ ├─ chatbot.py
│ ├─ requirements.txt
│ └─ test.ipynb
├─ .gitignore
└─ README.md
3-2. 개발 과정
Youtube 크롤링
'SK네트웍스 Family AI캠프 10기 > Daily 회고' 카테고리의 다른 글
| 59일차. 프롬프트 엔지니어링 - LangChain(Output Parser & LCEL) & LLM 프로젝트 (0) | 2025.04.04 |
|---|---|
| 58일차 - Fine Tuning - LLM 평가지표 & 프롬프트 엔지니어링 - LangChain(Prompt & Model) (0) | 2025.04.03 |
| 56일차. Fine Tuning - Prompt & Quantization & PEFT & GGUF (0) | 2025.04.01 |
| 55일차. Fine Tuning - DeepSpeed & Accelerate & LLM 프로젝트 (0) | 2025.03.31 |
| 54일차. Hugging Face - SFT Trainer & LLM 프로젝트 (0) | 2025.03.28 |