콘텐츠로 이동

GRPO와 DeepSeek-R1: 모델 안의 루프

모델 가중치 자체를 루프로 개선하기

섹션 제목: “모델 가중치 자체를 루프로 개선하기”

이번 절에서 살펴본 DSPy는 프롬프트를, AlphaEvolve는 알고리즘 해법을, DGM은 스캐폴드 코드를 루프로 개선했다. 이제 한 단계 더 내려가 모델 가중치 자체를 루프로 개선하는 이야기다.

강화학습(RL)으로 LLM을 학습시키는 아이디어는 새롭지 않다. 하지만 실용적으로 만드는 과정에서 핵심 병목이 있었다. PPO(Proximal Policy Optimization) 같은 기존 알고리즘은 별도의 critic 네트워크가 필요하다. Critic은 현재 상태의 가치를 추정하는 모델인데, 이를 학습시키고 유지하는 계산 비용이 크다. LLM처럼 거대한 모델에서는 이 비용이 두 배로 커진다.

DeepSeek-R1(DeepSeek-AI, 2025)이 사용한 **GRPO(Group Relative Policy Optimization)**는 이 문제를 우아하게 해결한다.

GRPO의 핵심 아이디어는 간단하다. 하나의 질문에 대해 여러 개의 응답을 샘플링하고, 그 응답들 간의 상대적 품질 차이로 advantage(장점 추정치)를 계산한다.

┌─────────────────────────────────────────────────────────────────┐
│ GRPO vs PPO 비교 │
└─────────────────────────────────────────────────────────────────┘
PPO:
질문 q ──▶ 응답 생성 ──▶ critic(q, 응답) ──▶ V(상태 가치)
별도 critic 네트워크 필요 (비용↑)
GRPO:
질문 q ──▶ 응답 G개 동시 샘플링
[응답₁: r₁=0.8]
[응답₂: r₂=0.3] ──▶ 그룹 평균으로 advantage 계산
[응답₃: r₁=0.9] aᵢ = (rᵢ - mean(r)) / std(r)
[응답₄: r₁=0.1]
critic 불필요 ─────▶ 정책 업데이트

각 응답의 보상을 그룹 내에서 정규화하면 자연스럽게 baseline이 생긴다. 보상이 그룹 평균보다 높으면 긍정 advantage(더 자주 선택), 낮으면 부정 advantage(덜 선택). Critic 없이도 안정적인 학습이 가능해진다.

DeepSeek-R1-Zero: 순수 RL로 추론 창발

섹션 제목: “DeepSeek-R1-Zero: 순수 RL로 추론 창발”

GRPO를 이용한 DeepSeek-R1-Zero 실험은 루프 엔지니어링 관점에서 특히 중요하다. SFT(Supervised Fine-Tuning) 없이 순수한 강화학습만으로 모델을 학습시켰다. 보상은 두 가지뿐이었다.

  1. 정확도 보상: 수학 문제의 최종 답이 맞으면 +1, 틀리면 0
  2. 형식 보상: 응답이 <think>...</think> 태그를 올바르게 사용하면 소량의 보상

이 단순한 보상 구조로 학습을 반복하자 예상치 못한 행동이 **창발(emerge)**했다.

학습 초기 → 단순 답변 생성
학습 중기 → <think> 태그 내에서 단계적 풀이 시작
학습 후기 → 체인-오브-쏘트(chain-of-thought) 자발적 사용
→ 틀린 경로 인식 후 백트래킹(backtracking)
→ "잠깐, 이 방법은 틀렸다. 다시 해보자" 자기수정

누가 CoT를 가르쳐 주지 않았다. 누가 백트래킹을 명시하지 않았다. 정확도 보상을 최대화하려는 과정에서 이 전략들이 저절로 나타났다. 이것이 순수 RL 창발의 의미다.

지금까지 이 책에서 다룬 루프는 모두 **추론 루프(inference loop)**였다. 학습이 끝난 모델을 실행하면서 도구를 호출하고, 관찰하고, 반복하는 루프다. GRPO와 DeepSeek-R1은 **학습 루프(training loop)**를 다룬다. 이 두 루프는 어떻게 연결되는가?

학습 루프 (훈련 단계)
┌───────────────────────────────────────────────┐
│ 질문 배치 샘플링 │
│ │ │
│ ▼ │
│ GRPO: G개 응답 생성 → 보상 계산 → 가중치 업데이트│
│ │ │
│ 반복 (수천~수만 스텝) │
└──────────────────────┬────────────────────────┘
│ 학습 완료
모델 가중치 (π*)
추론 루프 (서비스 단계)
┌───────────────────────────────────────────────┐
│ 사용자 쿼리 → π* 응답 → 도구 실행 → 관찰 │
│ → π* 재응답 → 도구 실행 → ··· → 완료 │
└───────────────────────────────────────────────┘

학습 루프가 더 나은 정책 π*를 만들면, 추론 루프는 그 정책을 실행한다. DeepSeek-R1-Zero의 창발된 CoT와 백트래킹은 추론 루프에서 더 적은 이터레이션으로 더 정확한 결과를 낳는다. 내부에서 더 많이 생각하기 때문에 외부 루프 이터레이션을 줄일 수 있는 셈이다.

대부분의 루프 엔지니어는 모델을 직접 학습시키지 않는다. 그럼에도 GRPO와 DeepSeek-R1에서 배울 수 있는 원칙이 있다.

보상 설계의 단순함: DeepSeek-R1-Zero의 보상은 놀랍도록 단순했다. 정확도와 형식 두 가지. 복잡한 단계 보상 없이도 원하는 행동이 창발했다. 루프의 검증기를 설계할 때도 가능한 한 단순하고 명확한 성공 기준을 먼저 시도해 볼 이유가 있다.

탐색의 중요성: GRPO는 하나의 응답 대신 여러 응답을 생성하고 비교한다. 루프 설계에서도 단일 경로만 탐색하는 것보다 여러 접근을 시도하고 그 중 최선을 선택하는 전략(Self-Consistency, 3-4절)이 유사한 이점을 준다.

창발을 허용하는 구조: 세부적인 행동을 모두 명시하는 대신, 명확한 목표와 적절한 탐색 공간을 제공하면 예상치 못한 효과적인 전략이 나타날 수 있다.

이것으로 11절 자기개선 RL을 마친다. MDP 형식화에서 시작해, 프롬프트 최적화(DSPy), 진화적 루프(AlphaEvolve), 자기수정 에이전트(DGM), 그리고 모델 가중치 학습(GRPO/DeepSeek-R1)까지 루프가 자기 자신을 개선하는 다양한 층위를 살펴봤다. 다음 절에서는 실전으로 돌아가 현실에서 루프를 어떻게 구축하는지를 다룬다.

퀴즈를 불러오는 중…

참고 자료