-
Reasoning LLM 논문 톺아보기 (RLVR == Reinforcement Learning with Verifiable Rewards)AI/NLP 2025. 7. 6. 14:55728x90
0. 들어가기 전 : Before Reasoning
- 강화학습은 이미 LLM을 학습할 떄 적용하고 있었지만 주로 Alignment, 즉 인간의 만족도/답변의 안전성 등 사용성 측면을 위함
- 우리가 흔히 아는 PPO, DPO와 같은 학습 방법론이 그러하듯
- 따라서 우리는 이것들을 RLHF, Reinforcement Learning with Human Feedback이라고 했음
- 기존 RLHF에서는 인간 피드백이 주관적이고 일관성이 떨어질 수 있음
https://asidefine.tistory.com/280
LLM Alignment 방법 정리 (RLHF, DPO, KTO, ... )
LLM Alignment 방법 정리 (RLHF, DPO, KTO, ... ) Alignment란 AI 시스템을 인간의 목표, 선호도 및 원칙에 맞추어 조정하는 과정 인간의 윤리적 기준, 사회적 가치, 그리고 개별 사용자의 특정 요구를 반영하
asidefine.tistory.com
- 그러나 이런 강화학습을 사용성이 아닌 지식 학습의 측면에서 사용한다면 ?
1. Reasoning LLM with RLVR (Reinforcement Learning with Verifiable Rewards)
- DeepSeek-R1, DeepSeek-V3 등 추론 모델들이 위의 의문에 대한 답이 되어줌 - Reasoning이라는 지식 학습의 측면에서 적용되기 시작 !
- GRPO, DAPO 등의 RLVR (Reinforcement Learning with Verifiable Rewards)에서는 보상이 객관적으로 검증 가능한 기준에 기반함
- 수학 문제의 정답, 코드 실행 결과, 논리적 추론의 정확성 등 명확한 검증이 가능
- GRPO, DAPO 등의 RLVR (Reinforcement Learning with Verifiable Rewards)에서는 보상이 객관적으로 검증 가능한 기준에 기반함
Reasonning LLM 학습 방법론들 (2024년-2025년)
- DeepSeekMath (GRPO) (2024년 2월) - GRPO 알고리즘 첫 소개 [2402.03300] DeepSeekMath: Pushing the Limits of Mathematical Reasoning in Open Language Models
- DeepSeek-R1 (2025년 1월) - GRPO를 복잡한 추론에 적용
- S1 (2025년 1월) - 가장 간단한 테스트타임 스케일링 [2501.19393] s1: Simple test-time scaling
- DAPO (2025년 3월) - GRPO의 개선된 버전 https://arxiv.org/abs/2503.14476
- ProRL (2025년 5월) - 장기간(prolonged) RL 훈련을 통해 새로운 추론 전략 발견 HuggingfacePapers
s1: Simple test-time scaling
Test-time scaling is a promising new approach to language modeling that uses extra test-time compute to improve performance. Recently, OpenAI's o1 model showed this capability but did not publicly share its methodology, leading to many replication efforts.
arxiv.org
DeepSeekMath / DeepSeek-R1 : GRPO의 등장
GRPO의 핵심 아이디어
"Value Model 없이 그룹 비교로 어드벤티지 계산하기"
기존 PPO vs GRPO 비교
PPO (Proximal Policy Optimization)
# PPO는 2개 모델 필요 1. Policy Model (정책 모델): 행동 선택 2. Value Model (가치 모델): 상황의 가치 평가 # PPO 어드벤티지 계산 advantage = reward + γ * V(next_state) - V(current_state)GRPO의 혁신
# GRPO는 1개 모델만 필요! 1. Policy Model만 사용 2. Value Model 제거 → 메모리/계산 절약 # GRPO 어드벤티지 계산 (그룹 상대적) advantage = individual_reward - group_average_reward수학적 공식
GRPO 목적 함수
L_GRPO(θ) = E[min(r_t(θ)Â_t, clip(r_t(θ), 1-ε, 1+ε)Â_t)] 여기서: - r_t(θ) = π_θ(a_t|s_t) / π_θ_old(a_t|s_t) (importance ratio) - Â_t = 그룹 상대적 어드벤티지GRPO 어드벤티지
Â_{i,j} = R_{i,j} - (1/K) * Σ_{k=1}^K R_{i,k} 여기서: - i = 프롬프트 인덱스 - j = 응답 인덱스 - K = 그룹 크기 (프롬프트당 응답 수) - R_{i,j} = i번째 프롬프트의 j번째 응답 보상"그룹 내 상대 비교"
- 절대적 가치가 아닌 상대적 성능으로 판단
- 같은 프롬프트에 대한 다른 응답들과 비교
- "이 응답이 다른 응답들보다 얼마나 좋은가?"
- 핵심: 어려운 문제에서 정답을 맞히면 더 큰 어드벤티지!
GRPO 단계별 작동 과정
1단계: 그룹 샘플링
# 하나의 프롬프트에 대해 여러 응답 생성 prompt = "2+3은 몇인가?" # 모델이 여러 응답 생성 (예: 4개) responses = [ "2+3=5", # 응답 1 "2+3=6", # 응답 2 "2+3=5", # 응답 3 "2+3=4" # 응답 4 ]2단계: 개별 보상 계산
# 각 응답의 보상 계산 rewards = [ 1.0, # 정답 (2+3=5) 0.0, # 오답 (2+3=6) 1.0, # 정답 (2+3=5) 0.0 # 오답 (2+3=4) ]3단계: 그룹 평균 계산
# 이 프롬프트에 대한 그룹 평균 보상 group_average = (1.0 + 0.0 + 1.0 + 0.0) / 4 = 0.54단계: 상대적 어드벤티지 계산
# 각 응답의 어드벤티지 = 개별보상 - 그룹평균 advantages = [ 1.0 - 0.5 = +0.5, # 좋은 응답 (평균보다 좋음) 0.0 - 0.5 = -0.5, # 나쁜 응답 (평균보다 나쁨) 1.0 - 0.5 = +0.5, # 좋은 응답 0.0 - 0.5 = -0.5 # 나쁜 응답 ]5단계: 정책 업데이트
# PPO와 동일한 클리핑된 목적 함수 사용 for i, response in enumerate(responses): ratio = new_policy_prob[i] / old_policy_prob[i] clipped_ratio = clip(ratio, 1-ε, 1+ε) loss = min( ratio * advantages[i], clipped_ratio * advantages[i] )- 여기서의 Clipping과 KL Divergence 왜 필요한가 ?
- 핵심 문제: "RL 훈련에서 정책이 너무 급격하게 변하면 안 된다!"
- Clipping: 미시적 안전장치 (개별 토큰 레벨)
- 목적: 정책이 너무 급격하게 변해서 훈련이 불안정해지는 것 방지
- KL Divergence: 거시적 안전장치 (전체 분포 레벨)
Clipping은 ?
"토큰별로 확률 비교하고 클리핑"
1. 실제 구현 과정
Step 1: 시퀀스 생성과 확률 계산
# 예시: "2+3=5" 생성 sequence = ["2", "+", "3", "=", "5"] # 각 토큰에 대한 확률 계산 old_policy_probs = [0.8, 0.9, 0.7, 0.6, 0.4] # 이전 정책 new_policy_probs = [0.9, 0.95, 0.8, 0.8, 0.6] # 현재 정책Step 2: 토큰별 Importance Ratio 계산
# 각 토큰의 확률 비율 계산 ratios = [] for i in range(len(sequence)): ratio = new_policy_probs[i] / old_policy_probs[i] ratios.append(ratio) # 결과 ratios = [ 0.9/0.8 = 1.125, # "2" 토큰 0.95/0.9 = 1.056, # "+" 토큰 0.8/0.7 = 1.143, # "3" 토큰 0.8/0.6 = 1.333, # "=" 토큰 0.6/0.4 = 1.5 # "5" 토큰 ]Step 3: 토큰별 Clipping 적용
epsilon = 0.2 # 클리핑 범위 clipped_ratios = [] for ratio in ratios: clipped_ratio = clip(ratio, 1-epsilon, 1+epsilon) clipped_ratios.append(clipped_ratio) # 결과 (범위: [0.8, 1.2]) clipped_ratios = [ clip(1.125, 0.8, 1.2) = 1.125, # 범위 내 → 그대로 clip(1.056, 0.8, 1.2) = 1.056, # 범위 내 → 그대로 clip(1.143, 0.8, 1.2) = 1.143, # 범위 내 → 그대로 clip(1.333, 0.8, 1.2) = 1.2, # 범위 초과 → 1.2로 제한 clip(1.5, 0.8, 1.2) = 1.2 # 범위 초과 → 1.2로 제한 ]2. 손실 함수 계산
토큰별 손실 계산
# 어드벤티지는 전체 시퀀스에 대해 하나의 값 advantage = +1.5 # 이 응답이 좋았음 # 각 토큰별로 두 가지 손실 계산 unclipped_losses = [] clipped_losses = [] for i in range(len(sequence)): # 1. 클리핑 없는 손실 unclipped_loss = ratios[i] * advantage unclipped_losses.append(unclipped_loss) # 2. 클리핑된 손실 clipped_loss = clipped_ratios[i] * advantage clipped_losses.append(clipped_loss) # 결과 unclipped_losses = [1.125*1.5, 1.056*1.5, 1.143*1.5, 1.333*1.5, 1.5*1.5] = [1.69, 1.58, 1.71, 2.0, 2.25] clipped_losses = [1.125*1.5, 1.056*1.5, 1.143*1.5, 1.2*1.5, 1.2*1.5] = [1.69, 1.58, 1.71, 1.8, 1.8]GRPO의 장점
- 메모리 효율성: Value Model 불필요 → 50% 메모리 절약
- 학습 안정성: 그룹 평균으로 자연스러운 베이스라인
- 상대적 평가: 문제 난이도에 자동 적응
- 구현 단순성: PPO보다 간단한 구조
GRPO의 한계 (DAPO가 해결한 문제들)
- 제로 그래디언트: 모든 응답이 같은 보상 → 어드벤티지 = 0
- 엔트로피 붕괴: 탐색 부족으로 다양성 감소
- 길이 편향: 긴 응답의 가치 저평가
- 보상 노이즈: 잘린 응답에 대한 과도한 처벌
DAPO
https://asidefine.tistory.com/349
DAPO: An Open-Source LLM Reinforcement Learning System at Scale (25.03) 논문 리뷰
DAPO: An Open-Source LLM Reinforcement Learning System at Scale (25.03) 논문 리뷰 DAPO란?DAPO = Decoupled Clip and Dynamic sAmpling Policy OptimizationByteDance, Tsinghua University, The University of Hong Kong가 공동 개발한 오픈소스 강화
asidefine.tistory.com
클리핑과 엔트로피의 직접적 연관성
- 엄격한 클리핑 → 저확률 토큰 탐색 제한 → 엔트로피 감소
- 관대한 상한 클리핑 → 좋은 저확률 토큰 성장 허용 → 엔트로피 유지
- 비대칭성의 핵심 → 탐색은 촉진하되 안정성은 유지
DAPO의 철학
"좋은 발견은 더 적극적으로, 나쁜 행동 억제는 안전하게" 양의 클리핑 (탐색): "새로운 가능성을 더 크게 키워보자" 음의 클리핑 (안정성): "나쁜 건 기존처럼 조심스럽게 줄이자"결론
양의 클리핑 확장이 엔트로피 붕괴를 방지하는 핵심 메커니즘:
- 기존: 모든 토큰을 똑같이 제한 → 저확률 토큰 성장 기회 박탈
- DAPO: 좋은 결과를 낸 토큰만 더 큰 성장 허용 → 다양성 유지
- 결과: 분포가 한 토큰에 극단적으로 집중되지 않고 적절한 다양성 유지
"엔트로피 붕괴 = 탐색 기회 박탈"이고, "관대한 양의 클리핑 = 탐색 기회 제공"
S1
https://asidefine.tistory.com/339
S1: Simple Test-time scaling (25.01) 논문 리뷰
S1: Simple Test-time scaling (25.01) 논문 리뷰 1. 테스트 타임 스케일링(Test‑time scaling) 개념RLHF 방식으로 모델을 강화학습 후, 모델은 자연어 생성 단계에서 답의 정답과 길이가 다시 길어지는 경향이
asidefine.tistory.com
ProRL (2025.07)
https://asidefine.tistory.com/348
ProRL: Prolonged Reinforcement Learning Expands Reasoning Boundaries in Large Language Models 논문 리뷰
ProRL: Prolonged Reinforcement Learning Expands Reasoning Boundaries in Large Language Models 논문 리뷰 NVIDIA에서 개발했으며, 2,000 훈련 스텝 이상의 장기간 RL 훈련을 통해 기본 모델에서는 접근할 수 없었던 새로운
asidefine.tistory.com
https://discuss.pytorch.kr/t/r1-v-rlvr-vlm-feat-deep-agent/6072
R1-V, RLVR 기법을 활용한 시각-언어 모델(VLM)의 일반화 능력 강화에 대한 연구 (feat. Deep Agent)
R1-V 모델 소개 R1-V는 Deep Agent 팀이 공개한 모델로, RLVR(Reinforcement Learning with Verifiable Rewards) 기법을 활용하여 시각-언어 모델(VLM, Vision-Language Model)의 일반화 능력을 극대화하는 연구입니다. R1-V는
discuss.pytorch.kr
728x90'AI > NLP' 카테고리의 다른 글
[unsloth] LoRA Hyperparameters Guide 번역 (1) 2025.07.06 S1: Simple Test-time scaling (25.01) 논문 리뷰 (0) 2025.07.06 AI Agent Architectures (2) 2025.06.15 [AI Agent] LangChain/LangGraph invoke()와 stream() (+ 그리고 How to stream tool calls) (0) 2025.05.24 [AI Agent] Agent와 LangChain AgentExecutor (+ ToolFormer, ReAct, CodeAct Agent) (0) 2025.05.24 - 강화학습은 이미 LLM을 학습할 떄 적용하고 있었지만 주로 Alignment, 즉 인간의 만족도/답변의 안전성 등 사용성 측면을 위함