강화학습을 품은 LLM

Dobby·2026년 4월 1일

LLM

목록 보기
1/5

1. LLM 학습에 강화학습 끼얹기

LLM은 거대한 말뭉치를 통해 주어진 토큰의 다음 토큰을 예측하는 능력을 극대화하도록 사전 학습된다. 이 과정은 모델에게 폭넓은 세상 지식(world knowledge)과 뛰어난 언어 생성 능력을 심어주지만, 한계도 분명하다. 단순히 텍스트를 그럴듯하게 이어 쓰는 능력과, 사용자의 의도를 유용하고(helpful), 정직하고(honest), 무해하게(harmless) 따르는 능력은 다른 차원의 문제이다. InstructGPT 논문은 이 점을 명확하게 짚어낸다. 사전 학습의 목적함수 자체가 "사용자의 지시를 유용하고 안전하게 따르기"와는 거리가 멀기 때문에, 모델은 사실을 지어내거나, 유해한 출력을 내거나, 단순한 지시조차 오해할 수 있다. 즉, 사전 학습만으로는 '많이 아는 모델'을 만들 수는 있어도 '원하는 방식으로 행동하는 모델'은 얻기는 어렵다.

이 간극을 메우기 위한 시도로 Supervised Fine-Tuning (SFT)가 많이 쓰여왔다. 사람이 만든 모범 응답을 보여주고, 그 응답을 따라하도록 추가 학습시키면 instruction following 능력은 좋아진다. 그러나, 현실 세계의 복잡한 요청에 대응하기 위해서는 단순히 '하나의 정답'을 흉내내는 것만으로는 부족하다. 여러 유효한 답변들 사이에서 무엇이 더 유용하고, 안전하며, 사용자의 숨은 의도를 잘 반영하는지, 즉 응답 간의 상대적인 선호(preference)를 학습하는 과정이 필연적으로 요구된다.

이러한 배경 속에서 LLM은 강화학습(RL)을 본격적으로 품기 시작한다. 유저가 실제로 체감하는 LLM의 품질은 토큰 하나하나에 대한 국소적인 예측이 아니라, 문장 전체가 완성된 후의 종합적인 품질에서 나온다. 답변이 정답이더라도 위험한 발언이 포함되어 있거나 지정된 형식을 어겼다면 실패한 응답이다. 이러한 가치 판단은 시퀀스가 완전히 끝난 뒤에야 평가할 수 있다. 따라서 RL은 LLM의 학습 패러다임을 기존의 '다음 토큰을 잘 맞히는 문제'에서 '응답 전체를 관통하여 최적의 행동을 선택하는 문제'로 전환하는 핵심 열쇠가 된다. RLHF는 바로 이 원리를 이용해 사람의 선호를 보상(reward)으로 모델링하고, 이를 극대화하는 방향으로 정책(policy)을 최적화했다.
최근에 들어서는 LLM에 요구되는 기준이 유용성, 안전성을 넘어 복잡한 수학이나 코딩 문제를 풀어내는 논리적 추론(reasoning) 능력까지 확장되고 있다. 수학, 코딩 등의 영역에서는 사람의 주관적 선호뿐만 아니라 '정답인가?', '코드가 실행되는가?'를 규칙 기반으로 명확히 검증할 수 있다. 이러한 검증 가능한 보상(verifiable reward)이 주어지면, 모델은 자기 자신의 출력을 샘플링하는 온라인 샘플링을 통해 스스로 여러 풀이 경로를 시도해 보고, 더 나은 풀이에 더 높은 보상을 주면서 스스로 추론 능력을 강화할 수 있게 된다.

정리하자면, LLM 학습에 강화학습(RL)이 필수불가결해진 이유는 크게 세 가지이다.

  1. 사전 학습의 목적 함수는 사용자의 의도나 안전성 같은 정렬(alignment) 목표를 직접적으로 최적화하지 못한다.

  2. 좋은 응답의 기준은 토큰 단위의 정확성보다는, 시퀀스 전체 단위의 품질과 상대적 선호에 더 가깝다.

  3. Reasoning LLM 시대가 도래하면서, 검증 가능한 보상을 바탕으로 모델 스스로 정답에 이르는 경로를 탐색(exploration)하는 학습이 필요해졌다.

따라서 RL은 이제 LLM 학습 과정의 부가적인 기법이 아니라, alignment와 reasoning을 함께 완성하기 위한 가장 핵심적인 축으로 자리 잡게 되었다.

2. 이 글에서 사용할 Notation

참고 논문들의 서로 다른 notation들을 본 글에서는 아래와 같이 통일하고자 한다.

2.1. Notation

기호의미이 글에서의 정의다른 논문에서 자주 보이는 대응 표기
xxprompt / input모델에 주어지는 입력 문장 또는 문제qq
yyresponse / completion모델이 생성한 전체 응답 시퀀스oo, oio_i
yty_tt번째 token응답 yytt번째 tokenoto_t, oi,to_{i,t}
y<ty_{<t}prefixtt 이전까지의 응답 prefixo<to_{<t}, oi,<to_{i,<t}
πθ(yx)\pi_\theta(y\mid x)current policy현재 학습 중인 policy가 (x)에 대해 (y)를 생성할 확률동일
πold(yx)\pi_{\text{old}}(y\mid x)old policyrollout을 생성한 기준 policyπθold\pi_{\theta_{\text{old}}}
πref(yx)\pi_{\text{ref}}(y\mid x)reference policyKL 제약의 기준이 되는 reference model, 보통 SFT modelπref,πSFT\pi_{\mathrm{ref}}, \pi_{\mathrm{SFT}}
R(x,y)R(x,y)sequence-level rewardprompt (x)와 전체 응답 yy에 대해 부여되는 scalar rewardr(x,y)r(x,y), RiR_i
R(g)R^{(g)}g번째 응답의 reward같은 prompt에서 샘플링한 (g)번째 응답의 sequence rewardRiR_i, rir_i
A^t\hat A_ttoken-level advantagePPO에서 token tt에 대해 계산되는 advantage동일
A^(g)\hat A^{(g)}response-level/group-relative advantageGRPO에서 (g)번째 응답 전체에 부여되는 상대적 advantageA^i,A^i,t\hat A_i, \hat A_{i,t}
ρt(θ)\rho_t(\theta)importance ratio현재 policy와 old policy의 token-level 확률 비율rt(θ),ri,t(θ)r_t(\theta), r_{i,t}(\theta)
ϵ\epsilonclipping boundPPO/GRPO 계열에서 importance ratio를 자르는 clipping 폭ϵ,ϵlow,ϵhigh\epsilon, \epsilon_{\text{low}}, \epsilon_{\text{high}}
β\betareference 제약 강도KL 제약 또는 DPO에서 reference policy와의 상대적 이탈 강도동일
V(st)V(s_t)value functionPPO에서 advantage 추정을 위한 critic동일
sts_tstate at step ttRL 관점에서 tt 시점의 상태. LLM에서는 보통 (x,y<t)(x,y{<t})로 볼 수 있다동일
GGgroup size하나의 prompt에 대해 샘플링한 응답 수동일
y(1),,y(G)y^{(1)}, \dots, y^{(G)}grouped responses같은 prompt에서 뽑은 GG개의 응답oii=1G{o_i}_{i=1}^G
ywy_wpreferred response선호 데이터에서 chosen / winner responsey+y^+, chosen
yly_ldispreferred response선호 데이터에서 rejected / loser responseyy^-, rejected
D\mathcal Ddataset학습에 사용되는 데이터 분포 또는 데이터셋DD
σ()\sigma(\cdot)sigmoidDPO와 reward modeling에서 쓰는 logistic sigmoid동일
DKL(πθπref)D_{\mathrm{KL}}(\pi_\theta \| \pi_{\text{ref}})KL divergence현재 policy가 reference policy에서 얼마나 멀어졌는지 측정하는 항동일

2.2. 표기 통일의 원칙

첫째, prompt는 항상 xx로 쓴다. 둘째, 응답은 항상 yy로 쓴다. 셋째, sequence-level reward와 token-level quantity를 분리한다. DPO와 RLHF의 보상은 기본적으로 전체 응답 yy에 대한 scalar reward이므로 R(x,y)R(x, y)로 두고, PPO 및 GRPO objective 안에서 token마다 등장하는 확률비는 reward와 헷갈리지 않도록 ρt(θ)\rho_t(\theta)로 쓴다. 넷째, advantage는 문맥에 따라 두 종류로 구분한다. PPO에서는 value function을 바탕으로 token-level advantage A^t\hat A_t를 계산하고, GRPO에서는 같은 prompt에서 뽑은 여러 응답의 reward를 정규화해 얻는 response-level 또는 group-relative advantage를 A^(g)\hat A^{(g)}로 표기한다. GRPO 계열 논문에서는 A^i,t\hat A_{i,t}처럼 token 인덱스까지 붙여 쓰지만, 실제로는 같은 응답의 모든 token이 같은 advantage를 공유하는 경우가 많으므로, 이 글에서는 PPO의 advantage는 A^t\hat A_t, GRPO의 advantage는 A^(g)\hat A^{(g)}로 구분한다. 다섯째, β\beta는 일관되게 'reference policy에서 얼마나 멀어질 수 있는가'를 조절하는 계수를 나타낸다.

3. SFT와 preference learning의 차이

SFT는 입력 xx가 주어졌을 때, 사람이 작성한 모범 응답 yy를 정답으로 두고, 모델이 그 응답을 생성할 확률을 높이도록 학습한다. 수식으로 쓰면, SFT는 보통 아래와 같은 maximum likelihood 학습 형태로 이해할 수 있다.

LSFT(θ)=E(x,y)D[logπθ(yx)]\mathcal{L}_{\mathrm{SFT}}(\theta) = -\mathbb{E}_{(x,y)\sim \mathcal D} \left[\log \pi_\theta(y\mid x)\right]

여기서 logπθ(yx)\log \pi_\theta(y\mid x)는 현재 정책(policy)이 prompt xx에 대해 전체 응답 yy를 생성할 log-probability이다. 이 식은 모델이 사람이 보여준 정답 응답에 더 높은 확률을 주도록 만든다. 따라서 SFT는 명확한 target response가 존재할 때 매우 강력하다. 예를 들어, 요약이나 번역처럼 명확한 모범 답안을 제공할 수 있는 작업에서는 SFT가 효과적이다. RLHF나 DPO 파이프라인 역시 본격적인 선호 최적화에 앞서 SFT 모델을 먼저 구축하는 것을 기본 전제로 삼는다.

하지만 SFT에는 본질적인 한계가 있다. 현실 세계의 질문들에는 유일한 정답이 존재하기보다, 여러 훌륭한 응답 중 '어느 쪽이 더 나은지'를 가려야 하는 경우가 훨씬 많다. 예를 들어, 두 답변이 모두 사실 관계가 맞고 문법적으로 자연스럽더라도, 하나는 더 간결하고 안전하며 사용자의 숨은 의도를 더 잘 반영할 수 있다. 단순히 '좋은 예시'를 반복해서 보여주는 SFT 방식만으로는, 여러 선택지 사이에서 인간이 실제로 선호하는 미묘한 방향성을 모델에 온전히 학습시키기 어렵다.

이 지점에서 등장하는 것이 선호 학습(preference learning)이다. 선호 학습에서는 하나의 프롬프트 xx에 대해 두 개 이상의 응답을 준비하고, 그중 사람이 더 선호하는 응답 ywy_w와 덜 선호하는 응답 yly_l을 구분한다. 즉, 학습의 단위가 단일 정답인 (x,y)(x, y)에서 비교쌍인 (x,yw,yl)(x, y_w, y_l)로 확장된다. 여기서 모델이 배워야 하는 것은 특정 정답 문장을 앵무새처럼 복원하는 일이 아니라, '어떤 응답이 다른 응답보다 더 나은가'를 판단하는 기준점이다.

이 두 방법론은 모델에게 기대하는 일반화의 방향이 완전히 다르다. SFT는 모범 응답 패턴을 직접 모방하므로, 데이터에 포함된 task format과 문체를 잘 학습한다. 반면 preference learning은 어떤 응답이 더 낫다는 비교 신호를 통해, 보다 추상적인 선택 기준을 학습한다. 즉, 단순한 텍스트 생성을 넘어 '이런 상황에서는 어떤 방식의 대답이 더 바람직한가'라는 규칙을 내재화하게 된다. InstructGPT가 SFT만으로 끝나지 않고 비교 데이터와 보상 모델을 추가한 것도, 단순한 모방을 넘어 사용자 의도에 더 잘 맞는 행동 원리를 학습시키기 위해서였다.

물론 preference learning이 SFT를 완전히 대체하는 것은 아니다. 실제 파이프라인에서는 두 방법은 상보적으로 쓰인다. SFT는 모델에게 기본적인 instruction following 능력을 제공하고, 선호 학습은 그 위에서 여러 가능한 응답 중 더 바람직한 쪽으로 모델을 조정한다. InstructGPT가 SFT 모델을 기반으로 보상 모델을 학습시키고 PPO를 적용한 것, 그리고 DPO가 SFT 모델을 참조 모델(Reference policy)로 사용하는 것 모두 이 상보적 관계를 잘 보여준다.

정리하자면, SFT와 선호 학습의 차이는 모델에게 무엇을 보여줄 것인가의 차이라고 할 수 있다. SFT는 '좋은 응답의 예시'를 직접 보여주어 훌륭한 모방꾼을 만들고, 선호도 학습은 '응답 간의 우열'을 보여주어 상황에 맞는 최적의 행동을 선택하는 가치 판단 능력을 길러준다.

4. RLHF의 목적함수

RLHF의 핵심은 정책이 단순히 높은 보상을 받는 응답을 생성하도록 만드는 데 있지 않다. 실제로는 보상을 높이되, 참조 정책(reference policy)에서 지나치게 멀어지지 않도록 하는 것이 목적이다. 이 점이 중요하다. 보상 모델은 제한된 선호 데이터셋 위에서 학습되므로, 정책이 보상만 무작정 최대화하면 보상 모델의 허점을 파고드는 방향으로 쉽게 무너질 수 있다. 따라서 RLHF의 목적함수는 보상 최대화와 규제를 함께 포함한다. 아래는 DPO 논문에서 RLHF의 목적함수를 정리한 식이다.

maxπθ  ExD,  yπθ(x)[r(x,y)βDKL ⁣(πθ(x)πref(x))]\max_{\pi_\theta} \; \mathbb{E}_{x\sim \mathcal D,\; y\sim \pi_\theta(\cdot\mid x)} \left[ r(x,y) - \beta D_{\mathrm{KL}}\!\big(\pi_\theta(\cdot\mid x)\,\|\,\pi_{\mathrm{ref}}(\cdot\mid x)\big) \right]

여기서 r(x,y)r_(x,y)는 보상 모델이 입력 xx와 응답 yy에 부여하는 보상 점수이고, πref\pi_{\mathrm{ref}}는 보통 SFT로 얻은 참조 정책이다. β\beta는 보상을 얼마나 강하게 추구할지, 그리고 참조 정책에 얼마나 가깝게 머물지를 조절하는 계수이다. β\beta가 너무 작으면 참조 정책에서 너무 멀어질 수 있고, 반대로 너무 크면 reference policy에서 거의 벗어나지 못해 alignment improvement가 작아질 수 있다.

이 목적함수를 이해하기 위해, 먼저 규제 항이 없는 형태를 생각해보자.

maxπθ  ExD,  yπθ(x)[r(x,y)]\max_{\pi_\theta} \; \mathbb{E}_{x\sim \mathcal D,\; y\sim \pi_\theta(\cdot\mid x)} [ r(x,y)]

이 식만 보면 정책은 보상이 높은 응답을 점점 더 자주 생성하기만 하면 된다. 문제는 보상 모델이 진짜 인간 선호 그 자체가 아니라, 선호 데이터셋으로부터 학습된 근사 함수라는 점이다. 따라서 정책이 학습을 거듭할수록 보상 모델이 일반화를 잘 못하는 영역으로 이동할 수 있고, 그 결과 보상 점수는 높지만 실제 응답 품질은 나빠지는 현상이 나타날 수 있다. RLHF에서 KL 규제 항이 필요한 이유가 바로 여기에 있다.

참조 정책은 여기서 규제의 기준점으로 작동한다.

여기서 KL divergence는 yπθ(x)y \sim \pi_\theta(\cdot\mid x)에 대한 기대값 형태로 전개할 수 있으므로, 목적함수를 아래와 같이 sequence-level log-ratio를 포함한 형태로 다시 쓸 수 있다.

maxπθ  ExD,  yπθ(x)[r(x,y)βlogπθ(yx)πref(yx)]\max_{\pi_\theta} \; \mathbb{E}_{x\sim \mathcal D,\; y\sim \pi_\theta(\cdot\mid x)} \left[ r(x,y) - \beta \log \frac{\pi_\theta(y\mid x)}{\pi_{\mathrm{ref}}(y\mid x)} \right]

이 식은 sequence yy 단위에서 보면, 정책이 받는 유효 보상이 단순한 rϕ(x,y)r_\phi(x,y)가 아니라,

r~(x,y)=r(x,y)βlogπθ(yx)πref(yx)\tilde r(x,y) = r(x,y) - \beta \log \frac{\pi_\theta(y\mid x)}{\pi_{\mathrm{ref}}(y\mid x)}

로 바뀐 것처럼 해석할 수 있다. 즉 보상은 높을수록 좋지만, 현재 정책이 참조 정책보다 특정 응답을 과도하게 밀어주고 있다면 그만큼 패널티를 받는다. InstructGPT와 이후의 PPO-based RLHF는 바로 이런 형태의 KL 규제가 포함된 보상을 통해 정책을 안정적으로 업데이트한다.

RLHF 전체 파이프라인에서 이 목적함수가 등장하기까지는 한 단계가 더 있다. 보상 r(x,y)r(x,y)는 직접 주어지는 값이 아니라, 선호 데이터셋으로부터 먼저 학습된다. 보통 하나의 입력 xx에 대해 더 선호되는 응답 ywy_w와 덜 선호되는 응답 yly_l을 모으고, 보상 모델은 ywy_wyly_l보다 더 높은 보상을 갖도록 학습된다. DPO 논문은 이 보상 모델링 단계를 Bradley-Terry model 아래에서 다음과 같이 정리한다.

p(ywylx)=σ(r(x,yw)r(x,yl))p^*(y_w \succ y_l \mid x) = \sigma\big(r(x,y_w)-r(x,y_l)\big)

그리고 이에 대응하는 보상 모델의 loss는 보통 다음과 같은 binary classification 형태를 갖는다.

LRM=E(x,yw,yl)D[logσ(r(x,yw)r(x,yl))]\mathcal L_{\mathrm{RM}} = - \mathbb{E}_{(x,y_w,y_l)\sim \mathcal D} \left[ \log \sigma\big(r(x,y_w)-r(x,y_l)\big) \right]

즉, RLHF는 두 단계의 objective 이루어진다. 먼저 선호 쌍을 잘 구분하는 보상 모델을 학습하고, 그 다음 그 보상을 높이면서도 참조 정책에서 과도하게 벗어나지 않는 정책을 학습한다.

이제 RLHF의 핵심은 아래 한 줄로 요약할 수 있다.

reward를 최대화하되, reference policy로부터 너무 멀어지는 것은 제한한다.

이 구조 덕분에 RLHF는 더 직접적으로 인간 선호를 반영할 수 있다. 동시에 KL 규제 덕분에 최적화가 지나치게 불안정해지는 것을 막는다.

5. PPO

RLHF의 목적함수는 보상을 높이면서도 참조 정책에서 과도하게 벗어나지 않도록 하는 정책을 최적화하는 것이었다. 그러나 이 목적함수를 그대로 미분해서 안정적으로 학습시키는 것은 쉽지 않다. 정책이 업데이트될 때마다 샘플 분포가 계속 바뀌고, 보상 신호도 noisy하며, 한 번의 업데이트가 너무 크면 정책이 갑자기 무너질 수 있기 때문이다. PPO (Proximal Policy Optimization)는 바로 이러한 문제를 다루기 위해 등장한 알고리즘이다. 핵심 아이디어는 간단하다. 정책을 개선하되, 한 번에 너무 멀리 움직이지 않도록 제한하자. PPO는 이 제약을 clipping으로 구현한다.

PPO에서 먼저 필요한 것은 현재 정책과 과거 정책 사이의 token-level importance ratio이다.

ρt(θ)=πθ(ytx,y<t)πold(ytx,y<t)\rho_t(\theta) = \frac{\pi_\theta(y_t \mid x, y_{<t})} {\pi_{\mathrm{old}}(y_t \mid x, y_{<t})}

이 ratio는 현재 정책이 과거 정책에 비해 특정 토큰을 얼마나 더 선호하게 되었는지를 나타낸다. ρt(θ)>1\rho_t(\theta) > 1이면 현재 정책이 그 토큰의 확률을 올린 것이고, ρt(θ)<1\rho_t(\theta) < 1이면 낮춘 것이다. PPO는 바로 이 ratio를 이용해 업데이트의 크기를 제어한다.

PPO의 핵심 objective는 다음과 같다.

JPPO(θ)=E[min(ρt(θ)A^t,  clip(ρt(θ),1ϵ,1+ϵ)A^t)]\mathcal{J}_{\mathrm{PPO}}(\theta) = \mathbb{E} \left[ \min\left( \rho_t(\theta)\hat A_t,\; \operatorname{clip}(\rho_t(\theta), 1-\epsilon, 1+\epsilon)\hat A_t \right) \right]

여기서 A^t\hat A_t는 timestamp tt의 advantage이고, ϵ\epsilon는 clipping bound이다. 이 식의 의미는 다음과 같다. 만약 현재 업데이트가 적당한 범위 안에 있으면, 즉 ρt(θ)\rho_t(\theta)1ϵ1 - \epsilon1+ϵ1 + \epsilon 사이에 있으면, PPO는 일반적인 policy gradient처럼 ρt(θ)A^t\rho_t(\theta)\hat A_t를 사용한다. 반대로 ratio가 그 범위를 벗어나면, PPO는 더 이상 그 이득을 그대로 반영하지 않고 클리핑된 값을 사용한다.

왜 굳이 min()min()을 쓸까? A^t>0\hat A_t > 0이라면 그 토큰의 확률을 높이는 방향이 유리하다. 그런데 ρt(θ)\rho_t(\theta)가 너무 커지면, 모델은 그 토큰을 과거 정책보다 과도하게 선호하게 되고 정책이 한 번에 크게 흔들릴 수 있다. PPO는 이때 클리핑된 objective를 택해 과도한 업데이트를 막는다.

이제 남는 질문은 A^t\hat A_t를 어떻게 구하느냐이다. PPO는 보통 value function V(st)V(s_t)를 따로 학습하고, 이를 이용해 advantage를 추정한다. 가장 널리 쓰이는 방식이 GAE(Generalized Advantage Estimation)이다.

A^tGAE(γ,λ)=l=0(γλ)lδt+l\hat A_t^{\mathrm{GAE}(\gamma,\lambda)} = \sum_{l=0}^{\infty} (\gamma \lambda)^l \delta_{t+l}
δt=Rt+γV(st+1)V(st)\delta_t = R_t + \gamma V(s_{t+1}) - V(s_t)

여기서 δt\delta_t는 temporal-difference error이고, γ\gammaλ\lambda는 bias-variance tradeoff를 조절하는 하이퍼파라미터이다. 직관적으로 말하면, value function은 '이 상태에서 앞으로 얼마나 보상을 받을 것 같은가'를 예측하고, advantage는 실제로 선택한 행동이 그 기대보다 얼마나 좋았는지를 측정한다. PPO는 바로 이 advantage를 곱해 정책을 업데이트한다.

정리하면, PPO의 핵심은 다음 한 줄로 요약할 수 있다.

advantage가 큰 방향으로 정책을 업데이트하되, 과거 정책에서 한 번에 너무 멀리 움직이지 않도록 clipping으로 제어한다.

6. GRPO

PPO의 핵심은 클리핑이 적용된 목적함수를 통해 정책 업데이트를 안정적으로 제어하는 데 있다. 그러나 LLM에 PPO를 적용할 때는 한 가지 부담이 더 생긴다. 바로 advantage를 추정하기 위한 value function, 즉 critic을 별도로 학습해야 한다는 점이다. 시퀀스가 길고 보상이 sparse한 환경에서는 이 critic을 안정적으로 학습하는 것 자체가 쉽지 않고, 메모리와 계산 비용도 크게 증가한다.

GRPO(Group Relative Policy Optimization)는 바로 이 지점을 겨냥한다. PPO의 클리핑 적용 목적함수는 유지하되, critic 없이 advantage를 구하자는 것이 GRPO의 핵심 발상이다. DeepSeekMath는 이 방법이 PPO보다 자원을 덜 사용하면서도 추론 성능을 끌어올릴 수 있다고 주장한다.

GRPO의 아이디어는 다음과 같다. 하나의 입력 xx에 대해 과거정책으로부터 응답 하나만 샘플링하지 않고, GG개의 응답

y(1),y(2),,y(G)πold(x)y^{(1)}, y^{(2)}, \dots, y^{(G)} \sim \pi_{\mathrm{old}}(\cdot \mid x)

을 한꺼번에 샘플링한다. 그리고 각 응답에 대해 sequence-level reward R(g)R^{(g)}를 계산한 뒤, 이 값들을 같은 그룹 안에서 정규화해 advantage를 만든다. GRPO의 group-relative advantage는 다음과 같다.

A^(g)=R(g)mean(R(1),,R(G))std(R(1),,R(G))\hat A^{(g)} = \frac{R^{(g)} - \operatorname{mean}(R^{(1)}, \dots, R^{(G)})} {\operatorname{std}(R^{(1)}, \dots, R^{(G)})}

이 식의 의미는 분명하다. 어떤 응답이 같은 입력에 대해 샘플링된 다른 응답들보다 상대적으로 더 높은 보상을 받았다면 positive advantage를 갖고, 반대라면 negative advantage를 갖는다. 즉 GRPO는 '이 응답이 절대적으로 얼마나 좋은가'보다 같은 문제에 대한 다른 시도들과 비교했을 때 얼마나 더 나은가를 학습 신호로 삼는다.

DeepSeekMath는 바로 이러한 group-relative normalization을 통해 가치 모델 없이 baseline을 구성한다.

이제 PPO와 같은 방식으로 token-level importance ratio를 정의하면,

ρg,t(θ)=πθ(yt(g)x,y<t(g))πold(yt(g)x,y<t(g))\rho_{g,t}(\theta) = \frac{\pi_\theta(y_t^{(g)} \mid x, y_{<t}^{(g)})} {\pi_{\mathrm{old}}(y_t^{(g)} \mid x, y_{<t}^{(g)})}

GRPO의 목적함수는 다음과 같이 쓸 수 있다.

JGRPO(θ)=E[1Gg=1G1y(g)t=1y(g)min(ρg,t(θ)A^(g),clip(ρg,t(θ),1ϵ,1+ϵ)A^(g))βDKL(πθπref)]\mathcal J_{\mathrm{GRPO}}(\theta) = \mathbb{E} \left[ \frac{1}{G}\sum_{g=1}^{G} \frac{1}{|y^{(g)}|} \sum_{t=1}^{|y^{(g)}|} \min\left( \rho_{g,t}(\theta)\hat A^{(g)}, \operatorname{clip}(\rho_{g,t}(\theta), 1-\epsilon, 1+\epsilon)\hat A^{(g)} \right) - \beta D_{\mathrm{KL}}(\pi_\theta \,\|\, \pi_{\mathrm{ref}}) \right]

PPO에서는 A^t\hat A_t를 value function과 GAE로 추정했다. 반면 GRPO에서는 A^(g)\hat A^{(g)}를 group reward의 평균과 표준편차로부터 직접 계산한다. 다시 말해, PPO가 '현재 상태의 기대 reward 대비 얼마나 좋았는가'를 배우는 구조라면, GRPO는 '같은 입력에 대해 생성된 여러 응답 중에서 상대적으로 얼마나 좋았는가'를 배우는 구조이다.

GRPO를 이렇게 설계하면 두 가지 효과가 생긴다. 첫째, critic을 제거할 수 있다. 이를 통해 value model을 따로 학습하지 않아도 되므로 메모리 사용량이 줄고, reward estimation 과정에서 critic을 별도로 학습할 필요가 없으므로, value estimation error를 따로 관리해야 하는 부담도 줄어든다. 둘째, 같은 prompt에서 여러 응답을 직접 비교하기 때문에, reasoning task처럼 정답 여부가 outcome-level reward로 주어지는 환경에서는 특히 잘 맞는다.

또 하나 주목할 점은, GRPO에서는 보통 같은 응답의 모든 토큰들이 동일한 A^(g)\hat A^{(g)}를 공유한다는 점이다. 즉 응답 전체에 대해 계산된 상대적 보상이 그 응답 내부의 각 토큰 업데이트에 동일하게 적용된다. 이 점에서 GRPO는 토큰별로 세밀한 advantage를 추정하는 PPO보다 상대적으로 희석된 신호를 활용한다고 볼 수 있다. 하지만 reasoning RL에서는 reward가 대개 최종 정답 여부나 형식 준수처럼 sequence-level에서 주어지기 때문에, 이런 단순화가 오히려 실용적일 수 있다.

정리하면, GRPO의 핵심은 다음과 같다.

PPO의 clipped update는 유지하되, value function 기반 advantage를 버리고 그룹 내 상대적 reward로 advantage를 계산한다.

7. DPO

DPO(Direct Preference Optimization)는 PPO 기반 RLHF와 다른 목표를 푸는 방법이 아니라, 같은 목표를 더 직접적인 형태로 다시 쓰는 방법이라 할 수 있다. DPO 논문은 기존 RLHF가 보상 모델을 학습한 뒤 다시 RL로 정책을 최적화하는 단계를 하나의 preference optimization loss로 줄일 수 있다고 주장한다.

출발점은 4장에서 본 RLHF 목적함수이다.

π=argmaxπExD,  yπ(x)[r(x,y)βDKL ⁣(π(x)πref(x))]\pi^* = \arg\max_{\pi} \mathbb{E}_{x\sim \mathcal D,\; y\sim \pi(\cdot\mid x)} \left[ r(x,y) - \beta D_{\mathrm{KL}}\!\big(\pi(\cdot\mid x)\,\|\,\pi_{\mathrm{ref}}(\cdot\mid x)\big) \right]

위 objective를 최대로 만드는 최적의 정책 π(yx\pi^*(y\mid x)는 다음의 꼴을 갖는다.

π(yx)=1Z(x)πref(yx)exp ⁣(1βR(x,y))\pi^*(y\mid x) = \frac{1}{Z(x)} \pi_{\mathrm{ref}}(y\mid x) \exp\!\left(\frac{1}{\beta}R(x,y)\right)

여기서 Z(x)Z(x)는 분배함수(partition function)이다. 위 식의 분자만 보면 각 응답 yy에 대해

πref(yx)exp ⁣(1βR(x,y))\pi_{\mathrm{ref}}(y\mid x)\exp\!\left(\frac{1}{\beta}R(x,y)\right)

라는 점수가 계산된다. 그런데 이 점수들은 아직 확률이 아니다. 값들을 그대로 더하면 1이 되지 않을 수 있기 때문이다. 그래서 모든 후보 응답의 점수를 다 더한 값으로 나누어, 전체 합이 1이 되도록 맞춘다. 그 역할을 하는 것이 Z(x)Z(x)이다.

이 과정을 아주 직관적으로 보면 이렇다. 어떤 입력 xx에 대해 가능한 응답이 세 개 y1,y2,y3y_1, y_2, y_3 있다고 하자. 각 응답에 대해 πref(yix)exp(R(x,yi)/β)\pi_{\mathrm{ref}}(y_i\mid x)\exp(R(x,y_i)/\beta)를 계산하면 세 개의 양수가 나온다. 이를 각각 w1,w2,w3w_1, w_2, w_3이라고 하면, 최종 확률은 π(yix)=wiw1+w2+w3\pi^*(y_i\mid x)=\frac{w_i}{w_1+w_2+w_3}가 된다. 즉 Z(x)Z(x)는 점수들을 확률로 바꾸기 위해 전체 합으로 나눠주는 값이다. 다시 말해 확률의 총합을 1로 맞춰주는 상수이다.

다음 단계에서는 양변에 로그를 취한 뒤 정리하면 보상을 다음처럼 다시 쓸 수 있다.

R(x,y)=βlogπ(yx)πref(yx)+βlogZ(x)R(x,y) = \beta \log \frac{\pi^*(y\mid x)}{\pi_{\mathrm{ref}}(y\mid x)} + \beta \log Z(x)

원래는 '보상이 주어지면 최적 정책을 구한다'는 방향이었는데, 이제는 반대로 '최적 정책과 참조 정책의 비율로 보상을 표현한다'는 방향으로 바뀌었다. 여기서 첫 번째 항은 응답 yy에 따라 달라지지만, 두 번째 항 βlogZ(x)\beta log Z(x)는 입력 xx에만 의존하고 응답 yy에는 의존하지 않는다. 다시 말해, 같은 입력 아래에서는 모든 후보 응답에 똑같이 더해지는 상수이다.

DPO와 RLHF의 보상 모델은 보통 Bradley-Terry model을 사용한다. 즉 하나의 입력 xx에 대해 두 응답 ywy_w, yly_l이 있을 때, 사람이 ywy_w를 더 선호할 확률은 두 보상의 차이로 결정된다고 본다.

p(ywylx)=σ(R(x,yw)R(x,yl))p^*(y_w \succ y_l \mid x) = \sigma\big(R^*(x,y_w)-R^*(x,y_l)\big)

여기서 σ\sigma는 sigmoid 함수이다.
이제 방금 얻은 보상의 재표현을 그대로 대입해보자.

R(x,yw)=βlogπ(ywx)πref(ywx)+βlogZ(x)R^*(x,y_w) = \beta \log \frac{\pi^*(y_w\mid x)}{\pi_{\mathrm{ref}}(y_w\mid x)} + \beta \log Z(x)
R(x,yl)=βlogπ(ylx)πref(ylx)+βlogZ(x)R^*(x,y_l) = \beta \log \frac{\pi^*(y_l\mid x)}{\pi_{\mathrm{ref}}(y_l\mid x)} + \beta \log Z(x)

따라서 보상의 차이는

R(x,yw)R(x,yl)R^*(x,y_w)-R^*(x,y_l)
=(βlogπ(ywx)πref(ywx)+βlogZ(x))(βlogπ(ylx)πref(ylx)+βlogZ(x))= \left( \beta \log \frac{\pi^*(y_w\mid x)}{\pi_{\mathrm{ref}}(y_w\mid x)} + \beta \log Z(x) \right) - \left( \beta \log \frac{\pi^*(y_l\mid x)}{\pi_{\mathrm{ref}}(y_l\mid x)} + \beta \log Z(x) \right)
=βlogπ(ywx)πref(ywx)βlogπ(ylx)πref(ylx)= \beta \log \frac{\pi^*(y_w\mid x)}{\pi_{\mathrm{ref}}(y_w\mid x)} - \beta \log \frac{\pi^*(y_l\mid x)}{\pi_{\mathrm{ref}}(y_l\mid x)}

가 된다. 여기서 βlogZ(x)\beta \log Z(x)는 상쇄된다. 따라서 선호 확률은 다음처럼 쓸 수 있다.

p(ywylx)=σ(βlogπ(ywx)πref(ywx)βlogπ(ylx)πref(ylx))p^*(y_w \succ y_l \mid x) = \sigma\left( \beta \log \frac{\pi^*(y_w\mid x)}{\pi_{\mathrm{ref}}(y_w\mid x)} - \beta \log \frac{\pi^*(y_l\mid x)}{\pi_{\mathrm{ref}}(y_l\mid x)} \right)

즉 사람의 pairwise preference를 더 이상 '명시적인 보상 모델의 출력 차이'로만 볼 필요가 없다. 참조 정책 대비 선택된 응답과 거절된 응답의 상대적 log-probability 차이로도 표현할 수 있다. 최적 정책 π\pi^*를 찾기 위해, 우리가 학습할 정책 πθ\pi_\theta로 바꿔 놓고 최대 우도 학습을 하면 된다. 그러면 DPO loss는 다음과 같이 된다.

LDPO(θ)=E(x,yw,yl)D[logσ(βlogπθ(ywx)πref(ywx)βlogπθ(ylx)πref(ylx))]\mathcal L_{\mathrm{DPO}}(\theta) = - \mathbb{E}_{(x,y_w,y_l)\sim \mathcal D} \left[ \log \sigma \left( \beta \log \frac{\pi_\theta(y_w\mid x)}{\pi_{\mathrm{ref}}(y_w\mid x)} - \beta \log \frac{\pi_\theta(y_l\mid x)}{\pi_{\mathrm{ref}}(y_l\mid x)} \right) \right]

이 식을 직관적으로 읽으면 다음과 같다. 입력 xx에 대해 ywy_wyly_l보다 더 선호되는 응답이라면 학습은

logπθ(ywx)πref(ywx)\log \frac{\pi_\theta(y_w\mid x)}{\pi_{\mathrm{ref}}(y_w\mid x)}

는 키우고, 반대는 줄이는 방향으로 진행된다. DPO는 명시적인 보상 모델을 사용하는 대신, R^θ(x,y)=βlogπθ(yx)πref(yx)\hat R_\theta(x,y)=\beta \log \frac{\pi_\theta(y\mid x)}{\pi_{\mathrm{ref}}(y\mid x)}를 암묵적인 보상으로 사용한다. DPO는 offline preference dataset (x,yw,yl)(x, y_w, y_l)만 있으면 되므로 명시적인 보상 모델도, critic도, PPO 같은 RL loop도 필요 없다.

8. SimPO

DPO가 거대한 보상 모델을 사용하지 않고 파이프라인을 혁신적으로 단순화했다면, SimPO(Simple Preference Optimization)는 한 걸음 더 나아가 메모리를 차지하던 참조 모델마저 사용하지 않는 방법론이다.

DPO의 수식을 보면 을 보면 πθ\pi_\thetaπref\pi_{\text{ref}}에서 너무 멀어지지 않도록 하는 마진 역할을 하도록 하기 위해 항상 두 모델의 확률을 동시에 계산해야 한다. 하지만 SimPO에서는 '응답 시퀀스의 평균 로그 확률' 자체를 암묵적 보상으로 사용하면 굳이 참조 모델이 필요 없다'는 점을 보인다.

rSimPO(x,y)=1yi=1ylogπθ(yix,y<i)r_{\text{SimPO}}(x,y) = \frac{1}{|y|} \sum_{i=1}^{|y|} \log \pi_\theta(y_i \mid x, y_{<i})

SimPO는 이 평균 로그 확률을 바로 Bradley-Terry 모델에 대입하고, 선호/비선호 응답 사이에 최소한 마진 γ\gamma 이상의 확률 격차가 벌어지도록 하여 다음과 같은 목적함수를 도출한다.

LSimPO(θ)=E(x,yw,yl)[logσ(β(rSimPO(x,yw)rSimPO(x,yl))γ)]\mathcal{L}_{\mathrm{SimPO}}(\theta) = - \mathbb{E}_{(x, y_w, y_l)} \left[ \log \sigma \left( \beta \left( r_{\text{SimPO}}(x, y_w) - r_{\text{SimPO}}(x, y_l) \right) - \gamma \right) \right]

이 방식은 학습 중 πref\pi_{\text{ref}}를 띄울 필요가 없어 메모리 효율이 DPO 보다 뛰어나다.

9. PPO, GRPO, DPO, SimPO의 비교

지금까지 살펴본 알고리즘들은 모두 post-training 과정에서 정책을 더 바람직한 방향으로 옮기기 위한 방법이지만, 무엇을 학습 신호로 쓰고 어떻게 업데이트하는지에서 뚜렷한 차이를 지닌다.

  • PPO: 가장 일반적인 출발점이다. 보상 모델과 critic(value function)을 모두 띄워놓고 online RL을 수행한다. 다양한 alignment 문제에 적용 가능하지만, 4개의 거대한 모델이 필요하고 하이퍼파라미터 튜닝이 까다롭다.

  • GRPO: PPO의 뼈대는 유지하되, 같은 그룹 내 응답들의 상대 평가를 통해 무거운 critic 모델을 제거했다. 메모리를 크게 절약하면서도 수학/코딩과 같은 exploration 중심의 task에 잘 맞는다.

  • DPO: 수학적 치환을 통해 RL loop 자체를 제거했다. 오프라인 선호도 데이터셋만으로 binary cross-entropy를 풀듯 직관적으로 최적화한다.

  • SimPO: DPO에서 한 걸음 더 나아가 참조 모델마저 제거한 경량화 기법이다. 평균 로그 확률을 보상으로 삼아 메모리 효율을 극대화한다.

10. reasoning RL의 부상: reward와 online RL

DPO가 human preference alignment를 더 단순한 형태로 정리했다면, 최근의 reasoning LLM 흐름은 다시 online RL의 중요성을 부각시키고 있다. 그 이유는 reasoning task에서는 단순히 '어느 응답이 선호되는가'보다 실제로 답이 맞는가, 형식을 지켰는가, 제약을 만족했는가가 더 직접적인 학습 신호가 되기 때문이다.

이 변화는 post-training의 중심 질문이 '사람이 더 좋아하는 응답은 무엇인가'에서 '어떤 시도가 실제로 더 잘 풀었는가'로 옮겨가는 과정을 보여준다. 이 차이는 학습 방식에도 직접 반영된다. offline preference dataset은 이미 수집된 응답들 사이에서 우열을 가리는 데는 강하지만, 모델이 새로운 reasoning path를 능동적으로 탐색하도록 유도하는 데에는 한계가 있다.

반면 online RL은 현재 정책으로부터 응답을 샘플링하고 그 결과에 따라 다시 정책을 바꾸기 때문에, 모델 스스로 다양한 trajectory를 시도해 보고 새로운 행동 패턴을 학습할 수 있다. DAPO 논문에서 "test-time scaling과 long-CoT를 가능하게 한 중심 기술이 large-scale RL"이라고 언급한 이유도 여기에 있다.

또한 학습 신호가 human feedback에서 검증 가능한 보상으로 확장되었다. 수학 문제의 정답 비교, 코드 실행 결과처럼 규칙 기반으로 판정 가능한 신호가 많아졌기 때문이다. 이는 post-training의 목표가 '사람처럼 답하기'에서 점차 '검증 가능한 방식으로 더 잘 추론하기'로 확장되고 있음을 보여준다. 결과적으로 alignment를 위해서는 DPO/SimPO가 효과적일 수 있지만, 고도의 추론을 위해서는 명확한 보상과 onine RL의 조합이 다시 중심으로 돌아오고 있다.

11. GRPO 이후의 안정화: DAPO, DCPO, GDPO

GRPO는 critic 없이도 reasoning RL을 수행할 수 있게 만들었지만, 그것이 곧바로 안정적인 대규모 RL을 보장하지는 않았다. 이후 연구들은 GRPO의 기본 구조는 유지하되, 실제 학습 신호가 무너지거나 왜곡되는 지점을 보완하는 데 집중했다. DAPO는 long-CoT 환경에서의 탐색과 학습 안정성을, DCPO는 zero gradient와 token-level clipping 비효율을, GDPO는 multi-reward 환경에서의 보상 붕괴(reward collapse)를 겨냥했다.

11.1. DAPO: long-CoT RL을 위한 안정화

DAPO 논문에서는 PPO나 GRPO를 그대로 적용할 경우 정책의 entropy가 빠르게 감소하면서 응답들이 서로 거의 비슷해지고, 탐색이 너무 빨리 닫히는 현상을 관찰했다고 설명한다. 이 문제를 해결하기 위해 DAPO는 네 가지 장치를 사용한다. Clip-Higher, Dynamic Sampling, Token-level Policy Gradient Loss, Overlong Reward Shaping이 그것이다.

먼저 Clip-Higher는 upper clip이 낮은 확률의 탐색 토큰을 충분히 끌어올리지 못한다는 문제에서 출발한다. DAPO는 기존의 대칭적 clipping이 exploration 토큰의 확률 상승을 지나치게 억제한다고 보고, upper clip을 더 높게 두는 방식으로 탐색 공간을 넓힌다. 즉, 희귀하지만 유망한 토큰이 실제로 확률을 올릴 수 있도록 하는 것이다.

둘째, Dynamic Sampling은 동일한 보상만 나오는 그룹을 걸러내는 전략이다. DAPO 목적함수에서는

0<{y(g)is_equivalent(y,y(g))}<G0 < |\{y^{(g)} \mid \mathrm{is\_equivalent}(y^*,y^{(g)})\}| < G

라는 조건이 붙어 있는데, 이는 한 그룹 안의 모든 응답이 전부 맞거나 전부 틀려서 유효한 상대 신호가 사라지는 경우를 제외하겠다는 뜻이다. 저자들은 이런 zero-gradient 그룹을 계속 학습에 포함시키는 것보다, 걸러내고 다시 샘플링하는 편이 더 낫다고 본다.

셋째, Token-level Policy Gradient Loss는 긴 응답이 gradient를 과도하게 지배하거나, 반대로 sample-level 평균이 긴 응답 내부의 나쁜 패턴을 충분히 억제하지 못하는 문제를 겨냥한다. DAPO는 token-level로 합산한 뒤 전체 token 수로 나누는 형태를 사용해, 긴 시퀀스 내부의 국소적 패턴도 더 직접적으로 학습 신호에 반영되도록 만든다. 저자들은 이 변화가 성능 향상 자체보다도 training stability와 더 건강한 length 증가를 가져온다고 보고한다.

넷째, Overlong Reward Shaping은 truncated sample에 대한 보상 설계를 다룬다. 기본적으로 최대 길이를 넘긴 응답에 대해 처벌하는 보상을 주면, 실제 추론은 타당했음에도 단지 길다는 이유로 잘못된 학습 신호가 들어갈 수 있다. DAPO는 이를 reward noise로 보고, overlong filtering과 length-aware penalty를 통해 더 부드럽게 length를 제어한다. 핵심은 '긴 응답을 무조건 나쁘다고 찍는 것'이 아니라, 길이 초과가 reasoning validity 자체와 혼동되지 않도록 만드는 것이다.

11.2. DCPO: zero gradient와 fixed clipping의 비효율 극복

DCPO는 동일 reward standardization 때문에 advantage가 0이 되어버리는 문제, fixed clipping이 rare token exploration에 불리한 문제를 다룬다. 저자들은 DAPO가 zero-gradient 그룹을 필터링하는 방식으로 문제를 완화했지만, 이는 샘플링의 효율을 떨어뜨린다고 본다.

DCPO의 첫 번째 축은 Smooth Advantage Standardization (SAS) 이다. GRPO 계열에서는 현재 step에서 생성된 응답들만 가지고 보상을 표준화하는데, 이 경우 우연히 보상이 모두 같아지면 advantage가 0이 되어 prompt 전체가 업데이트에 기여하지 못한다. DCPO는 이를 보완하기 위해, 현재 step의 보상 분포와 지금까지 누적된 보상 분포를 함께 사용하는 cumulative-smooth standardization을 도입한다. 이 방식은 동일 보상이 나와도 완전히 0이 되는 것을 줄이고, high-entropy sampling 때문에 step마다 advantage가 크게 흔들리는 문제도 완화한다. 즉 DCPO는 '이번 step에서 차이가 없더라도, 지금까지의 분포 맥락에서는 여전히 학습 신호를 줄 수 있다'는 방향으로 advantage를 재정의한다.

두 번째 축은 Dynamic Adaptive Clipping (DAC) 이다. DCPO는 fixed clipping bound가 과거 정책에서 확률이 낮은 토큰에 대해 너무 보수적으로 작동한다고 본다. 희귀한 토큰은 조금만 확률을 올리려 해도 upper bound에 빨리 걸리기 때문에, 탐색이 제한된다는 것이다. 이를 해결하기 위해 DCPO는 clipping bound를 토큰의 과거 확률 q(x)q(x)에 따라 다르게 두는 확률 의존적 clipping을 제안한다. 확률이 낮은 토큰일수록 더 넓은 상한선을 주고, 확률이 높은 토큰은 더 보수적으로 제한한다.

DCPO는 여기에 개별 응답 하나 내에서만 토큰 단위의 손실 평균을 사용하는 손실 함수(Only Token Meas Loss)도 추가한다. 이는 batch 전체에 걸친 averaging이 response 간 상대적 advantage 구조를 희석시킨다고 보고, 각 응답 내부에서만 토큰 평균을 취하는 방식으로 loss를 바꾼 것이다. 즉, GRPO의 response-level signal을 token 수준으로 나누되, batch 차원에서 정보가 희석되는 것은 피하려는 설계이다.

정리하면, DCPO의 핵심은 유효한 advantage를 더 자주 남기고, 희귀 토큰에 더 많은 탐색 공간을 허용하며, response-level 신호가 batch 평균 속에서 희석되지 않도록 하는 것이다.

11.3. GDPO: multi-reward 환경에서 reward collapse 방지

reasoning RL이 발전할수록 reward는 correctness 하나만으로 끝나지 않는다. 실제로는 correctness, format, length, bug ratio, tool validity처럼 서로 다른 성격의 reward를 동시에 최적화해야 하는 경우가 많다. GDPO는 바로 이 multi-reward 환경에서, 기존 GRPO를 그대로 적용하면, 포맛을 맞혀 점수를 받은 것인지 정답을 맞혀 점수를 받은 것인지 구분할 수 없게 되는 보상 붕괴가 발생함을 지적한다.

GDPO의 해결책은 group reward-decoupled normalization이다. 말 그대로 보상을 한 번에 합쳐 정규화하지 않고, 각 보상 차원을 먼저 따로 정규화한 뒤 이를 결합한다.

Ak(g)=rk(g)mean(rk(1),,rk(G))std(rk(1),,rk(G))A_k^{(g)} = \frac{r_k^{(g)} - \operatorname{mean}(r_k^{(1)}, \dots, r_k^{(G)})}{\operatorname{std}(r_k^{(1)}, \dots, r_k^{(G)})}

이렇게 하면 correctness와 length처럼 서로 성격이 서로 다른 보상이 한 번의 표준화 안에서 서로를 덮어쓰지 않고, 각 보상 차원의 상대적 차이가 더 잘 보존된다. 그 뒤에는 보상의 개수가 많아져도 advantage scale이 과도하게 커지지 않도록 batch-wise normalization을 추가한다.

Asum(g)=kAk(g)A_{sum}^{(g)} = \sum_k A_k^{(g)}

저자들은 GRPO 대비 GDPO가 correctness와 constraint adherence를 동시에 더 잘 달성했다고 보고한다. 예를 들어 math reasoning에서 correctness reward와 length reward를 함께 최적화할 때, GRPO는 쉬운 reward인 length를 먼저 빠르게 최대화하면서 correctness가 흔들리는 반면, GDPO는 correctness를 더 잘 회복하고 length 제약도 더 안정적으로 유지한다고 설명한다.

11.4. 소결

정리하면, DAPO, DCPO, GDPO는 모두 GRPO의 뼈대 위에서 발생한 각기 다른 병목 현상을 타파하려는 시도였다. DAPO는 long-CoT reasoning RL을 위한 실용적인 탐색 기법들을 제시했고, DCPO는 advantage와 clipping의 비효율을 개선했으며, GDPO는 multi-reward 환경에서 서로 다른 보상을 붕괴 없이 동시에 최적화하고자 하였다.

12. 결론

이 글은 LLM post-training에서 RL이 어떤 문제를 해결하기 위해 도입되었고, 그 과정에서 방법들이 어떻게 갈라졌는지를 따라왔다. 모든 논문을 다룬 것은 아니지만, 큰 흐름은 다음과 같이 정리할 수 있다.

첫째, pretraining과 SFT만으로는 사용자의 의도, 상대적 선호, 그리고 복잡한 추론 성능까지 직접 최적화하기 어렵다. 그래서 InstructGPT는 SFT -> reward model -> PPO라는 RLHF 파이프라인을 통해 human preference를 직접 학습 신호로 사용했고, 이것이 LLM 학습에 RL이 활용되는 중요한 기점이 되었다.

그 다음 갈림길은 두 방향으로 전개되었다. 한 방향은 RLHF를 더 단순하게 만들려는 흐름이었다. DPO는 수학적 치환으로 RL loop를 직접 수행하지 않는 형태로 objective를 설계했고, SimPO는 reference model 없이도 preference 최적화가 가능하도록 단순화했다.

다른 한 방향은 reasoning을 위해 RL을 다시 강화하는 흐름이었다. 모델이 스스로 정답을 찾아가야 하는 reasoning 영역에서는 탐색이 필수적이기에 다시 online RL이 호출되었다. 이 과정에서 PPO의 무거운 critic 모델을 덜어낸 GRPO가 등장했고, 다시 그 GRPO가 대규모 추론 환경에서 겪는 한계들을 극복하기 위해 DAPO, DCPO, GDPO와 같은 안정화 기법들이 등장했다.

결국 PPO, DPO, GRPO 등은 서로 우열을 가리는 경쟁자라기보다 풀고자 하는 문제에 맞는 선택지에 가깝다. 앞으로의 핵심 질문은, 'LLM 학습에 RL을 쓸 것인가 말 것인가'가 아니라, '어떤 reward를 어떤 objective로 바꾸고, 그 신호를 얼마나 안정적으로 policy에 전달할 것인가'가 중요해질 것으로 보인다.

참고

profile
언어를 좋아하는 AI 엔지니어

0개의 댓글