🤖 AI/ML

RLHF

Reinforcement Learning from Human Feedback

인간 피드백 기반 강화학습. ChatGPT, Claude의 핵심 학습 기법. 모델을 인간 선호도에 정렬.

📖 상세 설명

RLHF(Reinforcement Learning from Human Feedback, 인간 피드백 기반 강화학습)는 인간의 선호도 피드백을 활용하여 AI 모델을 학습시키는 기법입니다. ChatGPT, Claude 등 현대 대화형 AI의 핵심 학습 방법으로, 모델이 인간의 가치관과 선호도에 맞게 응답하도록 정렬(Alignment)하는 데 사용됩니다.

RLHF는 2017년 OpenAI와 DeepMind에서 게임 AI 학습에 처음 적용되었고, 2022년 InstructGPT 논문에서 LLM에 본격 적용되었습니다. 기존 지도학습만으로는 "도움이 되면서도 안전한" 응답을 생성하기 어려웠고, RLHF는 이 문제를 해결하는 혁신적인 방법으로 주목받았습니다.

RLHF의 핵심 원리는 3단계 학습 파이프라인입니다. 1) SFT(Supervised Fine-Tuning)로 기본 능력 학습, 2) 인간이 응답 쌍을 비교하여 Reward Model 학습, 3) PPO(Proximal Policy Optimization) 알고리즘으로 Policy Model 최적화. 이 과정에서 모델은 인간이 선호하는 방향으로 점진적으로 개선됩니다.

실무에서 RLHF는 AI 안전성과 유용성의 균형을 맞추는 핵심 기술입니다. 다만 수천 명의 인간 라벨러가 필요해 비용이 높고, 라벨러 간 일관성 유지가 어려운 단점이 있습니다. 최근에는 DPO, RLAIF 등 효율적인 대안들이 연구되고 있습니다.

💻 코드 예제

TRL 라이브러리를 활용한 RLHF 파이프라인 개요입니다.

# pip install trl transformers torch
from trl import PPOTrainer, PPOConfig, AutoModelForCausalLMWithValueHead
from transformers import AutoTokenizer

# 1. 모델 및 토크나이저 로드
model_name = "gpt2"  # 실제로는 SFT된 모델 사용
model = AutoModelForCausalLMWithValueHead.from_pretrained(model_name)
tokenizer = AutoTokenizer.from_pretrained(model_name)
tokenizer.pad_token = tokenizer.eos_token

# 2. PPO 설정
ppo_config = PPOConfig(
    model_name=model_name,
    learning_rate=1.41e-5,
    batch_size=16,
    mini_batch_size=4,
    gradient_accumulation_steps=1,
)

# 3. PPO Trainer 초기화
ppo_trainer = PPOTrainer(
    config=ppo_config,
    model=model,
    tokenizer=tokenizer,
)

# 4. RLHF 학습 루프 (개념적 예시)
def reward_fn(response: str) -> float:
    """Reward Model이 응답 품질 점수 반환"""
    # 실제로는 학습된 Reward Model 사용
    return len(response) * 0.01  # 단순 예시

# 학습은 PPO 알고리즘으로 진행
# ppo_trainer.step(query_tensors, response_tensors, rewards)
print("RLHF 파이프라인 준비 완료!")

🗣️ 실무에서 이렇게 말하세요

💬 회의에서
"우리 챗봇이 가끔 부적절한 답변을 하는데, RLHF로 안전성 정렬을 강화하면 해결될 수 있어요."
💬 면접에서
"RLHF의 3단계는 SFT, Reward Modeling, PPO입니다. 핵심은 인간 선호도를 Reward 신호로 변환하는 것이죠."
💬 기술 토론에서
"RLHF의 KL Divergence 페널티는 모델이 원래 분포에서 너무 벗어나지 않게 합니다. 이게 없으면 Reward Hacking이 발생해요."

⚠️ 흔한 실수 & 주의사항

Reward Hacking 무시: 모델이 실제 품질이 아닌 Reward를 속이는 방법을 학습할 수 있습니다. KL 페널티와 다양한 평가 메트릭으로 방지하세요.
라벨러 일관성 미확인: 라벨러 간 평가 기준이 다르면 Reward Model이 노이즈를 학습합니다. 라벨러 간 일치도(Inter-rater agreement)를 반드시 측정하세요.
DPO 활용 검토: Reward Model 없이 직접 선호도 학습이 가능한 DPO(Direct Preference Optimization)가 더 효율적일 수 있습니다.

🔗 관련 용어

📚 더 배우기