원래 GRPO는 목적함수의 −βDKL 항으로 정책을 학습 전 모델 근처에 묶었다(β=0.04). 그런데 긴 사고를 배우려면 학습 전 모델에서 멀리 가야 한다. 목줄을 풀면 멀리 갈 수는 있다. 목줄이 원래 하던 일은 무엇이었고, 풀어도 될까?
KL 제거 논쟁. DAPO, Dr. GRPO, 그리고 뒤에 볼 Olmo 3와 ScaleRL은 KL을 뺐다. DAPO가 든 근거는 "긴 사고 학습에서는 모델이 초기 모델에서 크게 벗어나야 하므로 이 제약이 필요 없다"였다. KL을 빼면 레퍼런스 모델을 메모리에 올려 둘 필요도 없어진다. 반면 NVIDIA의 ProRL(Prolonged RL, 「오래 이어 하는 RL」. Liu et al., arXiv:2505.24864, 2025년 5월)은 KL을 유지했다. 이 팀은 베이스 모델이 아니라 이미 긴 사고를 할 줄 아는 증류 모델(DeepSeek-R1-Distill-Qwen-1.5B)에서 출발했고, 그런 모델에서는 KL 항이 학습을 안정시키고 엔트로피가 마르지 않게 돕는다고 봤다.
대신 문제가 하나 있었다. 학습이 길어져 정책이 레퍼런스에서 멀어질수록 KL 항이 손실을 지배해, 업데이트가 점점 작아졌다. ProRL은 레퍼런스를 주기적으로 리셋했다. 평가용 데이터(학습에 쓰지 않은 문제) 성능이 정체되거나 떨어지면 πref를 최근의 πθ로 바꾸고 옵티마이저 상태도 새로 시작한다. 목줄을 끊는 대신 말뚝을 옮기는 방법이다. 이렇게 2,000스텝 넘게 학습을 이어가며 1.5B 모델의 추론 범위가 넓어진다고 보고했다 — "RL은 베이스 모델의 천장을 뚫지 못한다"는 pass@k(k번 뽑아 한 번이라도 맞힐 확률) 관찰에 대한 부분적 반론이다.
KL로 묶은 RL이 결국 어디로 가는지는 식 하나로 적을 수 있다. 레퍼런스에 eR/β 를 곱해 다시 정규화한 분포다.
(가) 레퍼런스가 정답 풀이 A에 확률 0.1, 오답 풀이 B에 0.9를 준다. 검증기가 A에 보상 1, B에 0을 주고 β=0.04일 때, 위 식의 최적 정책 π∗(A)는? (나) 이번에는 학습한 보상 모델이 형식만 그럴듯한 엉터리 답 C에, 정직한 답 D보다 0.05 높은 점수를 준다. 레퍼런스에서 C의 확률은 D의 0.01배다. β=0.04에서 π∗(C)/π∗(D)는? β를 0으로 보내면?
김민준
β = 0.04면 목줄이 있으니까 0.1에서 크게는 못 가겠죠. 한 0.5쯤?
선생님
식에 넣어 볼까요? e1/0.04가 얼마죠?
김민준
e25≈7.2×1010. 0.1을 곱해도 7.2×109이고 B는 0.9 그대로니까… π∗(A)=1−1.25×10−10.
김민준
거의 1이네요.
이서연
그럼 KL은 처음부터 아무것도 안 묶는 거 아니에요?
선생님
(나)를 계산해 봐요.
이서연
비는 0.01×e0.05/0.04=0.01×3.49=0.035. 엉터리 답은 정직한 답의 3.5% 정도에 머물러. 그런데 β를 0으로 보내면 e0.05/β가 한없이 커지니까 엉터리 답이 다 가져가.
선생님
그래요. 보상 차이가 β보다 훨씬 크면 목줄은 도착점을 거의 못 바꾸고, β 정도로 작으면 크게 바꿔요. 검증기의 0과 1처럼 차이가 크고 믿을 만한 보상 앞에서는 속도만 늦추고, 보상 모델처럼 작고 틀릴 수 있는 차이를 쫓을 때는 엉뚱한 답으로 쏠리는 걸 막는 거죠.
김민준
그래서 RLHF에서는 KL이 리워드 해킹을 막는 목줄이었고, 검증기 보상을 쓰는 DAPO나 Dr. GRPO는 뺀 거군요.
이서연
해석학 시간에 ex/β 꼴에서 β를 0으로 보내면 가장 큰 x 하나만 남는다고 배웠어. 소프트맥스가 최댓값 하나로 몰리는 거랑 같네.
정리 (가) π∗(A)=1−1.25×10−10, 사실상 1. 보상 차이 1이 β=0.04보다 훨씬 커서 목줄은 도착점을 바꾸지 못한다. (나) 비 0.01×e1.25≈0.035. 보상 차이가 β 정도로 작으면 목줄이 엉터리 답을 드문 채로 붙잡지만, β→0이면 엉터리 답이 모두 가져간다. 검증기 보상에서 KL을 빼는 쪽이 많아진 까닭이다.