RL과 일반화의 메커니즘에 대한 완전한 이해
웹에서 수집한 데이터는 대부분 결과 중심입니다:
웹 데이터의 분포:
- "2+2=4" (정답만) ────────────── 90%
- "먼저 2를 보고, 2를 더하면... 4" (과정 포함) ── 5%
- "2+2=5" + 그럴듯한 설명 (틀린 답) ───── 5%왜 과정이 적은가?
프리트레이닝만으로는:
Verifiable 도메인: 답의 정확성을 객관적으로 검증 가능
| 측면 | RLHF | RLVR |
|---|---|---|
| 보상 기준 | 인간의 선호 | 객관적 검증 |
| False Positive | 그럴듯한 설명에 속을 수 있음 | 답이 틀리면 무조건 탈락 |
| 적용 도메인 | 범용 | 검증 가능한 문제에 한정 |
핵심 차이:
RLHF: "2+2=5"를 정말 그럴듯하게 설명
→ 사람이 속을 수 있음
→ 보상 받을 수 있음
RLVR: "2+2=5"
→ 계산기: "틀림"
→ 보상 없음 (끝)Phase 1: 프리트레이닝 (완료)
└─> 웹 데이터로 기본 지식 학습
Phase 2: RL 학습 (OpenAI/Anthropic이 수행) ← 여기!
└─> 추론 능력 강화
Phase 3: 배포 (유저 사용)
└─> 학습된 모델로 추론1단계: 문제 제시
시스템: "123 × 456 = ?"
모델: [답변 생성 시작]2단계: 모델의 답변
모델: "먼저 100×456을 계산하면 45600
그다음 20×456은 9120
마지막으로 3×456은 1368
합치면 56088"3단계: 보상 결정 - 두 가지 방식
검증 시스템: 56088 == 123×456 ?
→ True → 보상 +1장점: 간단, 구현 쉬움
단점: 잘못된 과정도 우연히 답이 맞으면 보상
예시:
모델: "100×456 = 99999 (틀림)
20×456 = 1 (틀림)
3×456 = -44912 (틀림)
합: 56088 (우연히 맞음!)"
ORM: 최종 답만 확인 → 맞음 → 보상 ✓
→ 문제: 잘못된 과정이 강화됨단계 1: "100×456 = 45600" → 검증 → ✓ → 보상 +0.3
단계 2: "20×456 = 9120" → 검증 → ✓ → 보상 +0.3
단계 3: "3×456 = 1368" → 검증 → ✓ → 보상 +0.3
최종: "56088" → 검증 → ✓ → 보상 +0.1장점: 세밀한 피드백, 학습 효율 높음
단점: PRM 자체를 학습해야 함
PRM은 어떻게 만들어지는가?
ORM vs PRM: 학습 효율성 비교
100단계 추론에서 99단계가 맞고 마지막만 틀린 경우:
수백만 개 문제 반복 후:
확률 분포 변화:
Before RL:
P("2+2=4") = 80%
P("먼저 2를 보고, 2를 더하면... 4") = 5% ← 가치있지만 드물었음
P("2+2=5" + 그럴듯한 설명) = 15%
After RL:
P("2+2=4") = 40% (여전히 높지만 상대적으로 감소)
P("과정 포함 정답") = 55% ← 극적으로 증가!
P("그럴듯한 틀린 답") = 5% ← False positive 제거왜 과정 포함 정답이 증가했는가?
핵심 인사이트:
기존 모델:
질문 입력 → 2초 내 답변 생성 → 출력추론 모델 (o1, QwQ 등):
질문 입력 → 30초간 내부 탐색 → 최종 답변 출력30초 동안 무엇을 하는가?
여러 경로를 탐색하고, 각 경로를 검증하며, 최선의 답을 찾습니다.
구체적 예시:
문제: x² + 5x + 6 = 0을 풀어라
[경로 1 시도]
"인수분해를 해보자..."
→ (x+2)(x+3) = 0
→ x = -2 또는 x = -3
→ [내부 검증] 대입: (-2)² + 5(-2) + 6 = 4 - 10 + 6 = 0 ✓
→ ✓ 성공! 이 경로 유지
[경로 2 시도]
"x = 1을 대입해보자..."
→ 1 + 5 + 6 = 12 ≠ 0
→ [내부 검증] 틀렸음 ✗
→ ✗ 막다른 길! 포기
[경로 3 시도]
"근의 공식을 써보자..."
→ x = (-5 ± √1)/2
→ x = -2 또는 -3
→ [내부 검증] 경로 1과 일치 ✓
→ ✓ 확신 증가!
최종 출력: x = -2 또는 x = -3 (높은 확신)핵심 메커니즘:
중요: 배포 후에는 외부 도구(계산기, 코드 실행) 없이도 작동
어떻게 가능한가?
사람이 종이에 "17 × 20 = 340"을 쓰고 검증할 때:
모델도 마찬가지:
[토큰 생성 중]
"17 × 20 = ..."
[다음 토큰 예측 - 확률 분포]
- "340" 확률: 95%
- "300" 확률: 3%
- "400" 확률: 2%
→ "340" 선택
[자가 검증 패턴 활성화]
"이게 맞는지 확인해보자..."
"10×20 + 7×20 = 200 + 140 = 340"
"맞다! 계속 진행"이것은 RL 학습 때 배운 휴리스틱입니다:
| 작업 | 내부 검증 | 외부 Tool |
|---|---|---|
| 17 × 23 = ? | ✓ 충분 | 불필요 |
| 123456789 × 987654321 = ? | ✗ 불충분 | ✓ 필요 (Python) |
| 간단한 코드 검증 | ✓ 대략 가능 | △ 선택적 |
| 복잡한 코드 실행 | ✗ 불가능 | ✓ 필수 |
트레이드오프:
실제 전략:
결과만 학습한 모델 (RL 전):
프리트레이닝 데이터:
"2+2=4"
"3+3=6"
"4+4=8"
...
"7+7=14" (이것도 포함되어 있을 가능성 높음)
테스트 1: "7+7=?"
→ 프리트레이닝에서 봤을 가능성 높음
→ 패턴 매칭: "14" 출력
→ 이건 일반화가 아니라 암기!
테스트 2: "347+347=?" (이건 못 봤을 가능성 높음)
→ ???
→ 직접 패턴 매칭 실패 가능과정을 학습한 모델 (RL 후):
RL 학습 데이터 (패턴):
"2+2는... 2를 2번 더하는 것... 4"
"3+3은... 3을 2번 더하는 것... 6"
학습된 규칙:
- X+X는 X를 2번 더하는 것
- 큰 수는 분해해서 계산 가능
- 덧셈은 곱셈으로 변환 가능
테스트: "347+347=?"
→ 규칙 적용 가능! (아래에서 설명)단순히 "같은 답을 두 번 계산"하는 게 아닙니다.
시나리오 A: 암기 모델 (RL 학습 전)
Q: 347+347=?
[내부 과정]
토큰 샘플링: "6" "9" "4"
출력: "694"
끝.시나리오 B: 추론 모델 (RL 학습 후)
Q: 347+347=?
[경로 1: 직접 추론]
"347+347은..."
[프리트레이닝 패턴 검색... 없음]
[추론 시도] "대충 700 정도?"
"694" (확률 60%, 낮은 확신)
[경로 2: 분해 전략]
"분해해서 계산하자"
"300+300 = 600"
[내부 검증] 3+3=6, 뒤에 00 → 600 ✓
"40+40 = 80"
[내부 검증] 4+4=8, 뒤에 0 → 80 ✓
"7+7 = 14"
[내부 검증] 프리트레이닝에서 본 패턴 → 14 ✓
"600+80+14 = ..."
[내부 검증] 600+80=680, 680+14=694 ✓
"694" (확률 85%, 높은 확신)
[경로 3: 곱셈 변환]
"347+347 = 347×2로 바꿀 수 있지"
"347×2 = ..."
"300×2 = 600"
[내부 검증] 3×2=6 → 600 ✓
"40×2 = 80"
[내부 검증] 4×2=8 → 80 ✓
"7×2 = 14"
[내부 검증] ✓
"600+80+14 = 694"
[내부 검증] ✓
"694" (확률 90%, 매우 높은 확신)
[종합 판단]
- 세 경로 모두 694
- 각 경로마다 중간 검증 통과
- 서로 다른 논리적 접근인데 같은 답
→ 최종 확신도: 99%
→ 출력: "694"핵심 요소 4가지:
왜 RL 전에는 안 됐는가?
Before RL:
P("347+347=694" 직접) = 60%
P("분해 전략") = 5% ← 프리트레이닝에 존재했지만 확률 낮음
P("변환 전략") = 3% ← 마찬가지
→ 대부분 경로 1만 시도
→ 확신도 낮음
→ 틀릴 가능성 높음
After RL:
P("분해 전략") = 35% ← 극적으로 증가!
P("변환 전략") = 25% ← 극적으로 증가!
P("직접") = 40%
→ 여러 경로 시도 가능
→ 교차 검증 가능
→ 확신도 높음
→ 일반화 성공!문제: "1234 + 5678 = ?"
Before RL (암기 모델):
→ 프리트레이닝에 이 정확한 계산 없음
→ 비슷한 패턴 찾기 시도
→ "대충 6900?" (틀림: 정답은 6912)
After RL (추론 모델):
[경로 1: 단위별 분해]
1000+5000=6000
200+600=800
30+70=100
4+8=12
합: 6000+800+100+12=6912 ✓
[경로 2: 올림 고려]
1234+5678
끝자리: 4+8=12 (2 쓰고 1 올림)
십의자리: 3+7+1(올림)=11 (1 쓰고 1 올림)
백의자리: 2+6+1(올림)=9
천의자리: 1+5=6
답: 6912 ✓
두 경로 일치 → 확신도 높음 → 정답!이게 진짜 일반화입니다. 프리트레이닝에 없던 계산을, 학습된 규칙을 조합해서 풀어냈습니다.
적용 가능 도메인 제한:
완벽하지 않은 검증:
프리트레이닝 의존성:
Training-time:
Test-time:
현실적 이유:
현실적 전략:
| 사용 케이스 | 적합한 모델 | 이유 |
|---|---|---|
| 일반 대화, 요약 | Claude Sonnet, GPT-4 | 빠르고 저렴 |
| 복잡한 수학, 코딩 | o1, Claude Opus | 정확도 중요 |
| 창작, 브레인스토밍 | 일반 모델 | 검증 불가능 |
하이브리드 접근:
┌─────────────────────────────────────────────────────────┐
│ Phase 1: 프리트레이닝 │
├─────────────────────────────────────────────────────────┤
│ • 웹 데이터 학습 │
│ • 결과 중심 데이터 90%, 과정 포함 5%, 틀린 답 5% │
│ • 일반화 규칙은 존재하지만 확률 낮음 │
└─────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────┐
│ Phase 2: RL 학습 (핵심!) │
├─────────────────────────────────────────────────────────┤
│ 1. 수백만 개 문제로 학습 │
│ 2. ORM/PRM으로 자동 검증 │
│ 3. False positive 제거 │
│ 4. 올바른 추론 과정 강화 │
│ 5. 중간 검증 패턴 학습 │
│ │
│ 결과: 확률 분포 재조정 │
│ • 과정 포함 정답: 5% → 55% │
│ • 그럴듯한 틀린 답: 15% → 5% │
└─────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────┐
│ Phase 3: 배포 후 추론 │
├─────────────────────────────────────────────────────────┤
│ • Test-time compute: 30초간 탐색 │
│ • 여러 독립적 경로 시도 │
│ • 각 경로에서 내부 검증 (학습된 휴리스틱) │
│ • 교차 검증으로 확신도 증가 │
│ • 필요시 외부 Tool 호출 │
│ │
│ 결과: 일반화 성공! │
│ • 프리트레이닝에 없던 문제 해결 │
│ • 규칙 조합으로 새로운 문제 접근 │
└─────────────────────────────────────────────────────────┘RLVR이 false positive를 제거하면서, 프리트레이닝 때 5%였던 "일반화 가능한 추론 패턴"이 55%로 증가했고, test-time에 이 패턴들을 다양하게 조합/검증하면서 새로운 문제를 풀 수 있게 되었다.
모델 선택:
프롬프팅:
비용 최적화:
이 문서는 최신 ML 연구(2024-2025)를 바탕으로 작성되었습니다.