18. GRPO의 변종들 — 부품을 하나씩 의심하다

(d) 가중치를 자른다: CISPO는 토큰을 버리지 않는다

클리핑을 고치고 비율의 단위를 바꾸는 사이, 더 근본적인 물음도 나왔다. 로그확률 앞에 곱하는 가중치 — 비율과 어드밴티지 — 를 꼭 PPO처럼 만들어야 할까? 이 절은 PPO의 장치를 덜어내고 REINFORCE로 돌아가는 쪽을, 다음 절은 GRPO가 버린 비평가를 되살리는 쪽을 본다.

역사: 한 배치로 열여섯 번 고치는 사이 빠져나간 토큰

MiniMax-M1 보고서(arXiv:2506.13585, 2025년 6월)의 팀은 새 구조의 모델을 베이스 모델에서 곧바로 RL로 학습하다가, GRPO로는 긴 사고 습관이 좀처럼 자라지 않는 것을 봤다. 하나씩 빼 보는 실험 끝에 범인으로 지목한 것은 클리핑이었다. “However”, “Recheck”, “Wait” 같은 성찰 토큰은 풀이의 갈림길 노릇을 하는데, 베이스 모델에서는 드물어 확률이 낮다. 그래서 첫 업데이트만으로도 비율이 금세 클리핑 범위를 벗어난다. 이 팀은 한 번 뽑은 응답 묶음으로 업데이트를 16번 했으므로, 벗어난 토큰은 남은 15번의 업데이트에서 그래디언트가 0이었다. 추론 모델에게 가장 중요한 토큰이 가장 먼저 학습에서 빠진 셈이다. 상한만 높이는 DAPO의 Clip-Higher도 열여섯 번이나 다시 쓰는 이 설정에서는 효과가 작았다.

CISPO(Clipped IS-weight Policy Optimization, 「임포턴스 가중치를 자르는 정책 최적화」)는 업데이트를 자르지 않고 가중치를 자른다.

JCISPO=E[1∑i∣oi∣∑i∑tsg(r^i,t) A^i,t log⁡πθ(oi,t∣q,oi,<t)],r^i,t=clip(ri,t, 1−εlowIS, 1+εhighIS)\textcolor{#d62728}{J_\text{CISPO}} = \mathbb{E}\Big[\frac{1}{\sum_i \textcolor{#915a08}{|o_i|}}\sum_i\sum_t \text{sg}\big(\textcolor{#c2185b}{\hat r_{i,t}}\big)\,\textcolor{#8e44ad}{\hat A_{i,t}}\,\log \textcolor{#1565c0}{\pi_\theta}(\textcolor{#1c9c60}{o_{i,t}} \mid \textcolor{#0093b8}{q}, \textcolor{#1c9c60}{o_{i,<t}})\Big], \qquad \textcolor{#c2185b}{\hat r_{i,t}} = \text{clip}(\textcolor{#c2185b}{r_{i,t}},\,1-\textcolor{#1f6d7a}{\varepsilon^\text{IS}_\text{low}},\,1+\textcolor{#1f6d7a}{\varepsilon^\text{IS}_\text{high}})
JCISPOCISPO 목적함수 (REINFORCE 꼴)r^i,t잘라낸 임포턴스 가중치 (토큰은 버리지 않는다)ri,t토큰 단위 확률 비율A^i,t어드밴티지πθ학습 중인 정책q, oi,t프롬프트, 응답 i의 t번째 토큰∣oi∣응답 i의 토큰 수sg(⋅)그래디언트를 막는 연산 (stop-gradient)εIS가중치를 자르는 폭 \small\begin{array}{ll} \textcolor{#d62728}{J_\text{CISPO}} & \text{CISPO 목적함수 (REINFORCE 꼴)} \\ \textcolor{#c2185b}{\hat r_{i,t}} & \text{잘라낸 임포턴스 가중치 (토큰은 버리지 않는다)} \\ \textcolor{#c2185b}{r_{i,t}} & \text{토큰 단위 확률 비율} \\ \textcolor{#8e44ad}{\hat A_{i,t}} & \text{어드밴티지} \\ \textcolor{#1565c0}{\pi_\theta} & \text{학습 중인 정책} \\ \textcolor{#0093b8}{q},\ \textcolor{#1c9c60}{o_{i,t}} & \text{프롬프트, 응답 i의 t번째 토큰} \\ \textcolor{#915a08}{|o_i|} & \text{응답 i의 토큰 수} \\ \text{sg}(\cdot) & \text{그래디언트를 막는 연산 (stop-gradient)} \\ \textcolor{#1f6d7a}{\varepsilon^\text{IS}} & \text{가중치를 자르는 폭} \end{array}

sg\text{sg}는 그래디언트를 멈추는 연산(stop-gradient)이다. 임포턴스 가중치(다른 정책이 뽑은 샘플을 지금 정책 기준으로 보정하는 비율 r\textcolor{#c2185b}{r})는 상한으로 눌러 분산만 막고, 모든 토큰은 여전히 A^⋅∇log⁡πθ\textcolor{#8e44ad}{\hat A} \cdot \nabla \log \textcolor{#1565c0}{\pi_\theta} 꼴로 그래디언트를 받는다 — REINFORCE로 돌아간 셈이다. 실제 실험에서는 하한을 두지 않고(하한 폭을 아주 크게) 상한만 조정했다.

두 방식이 무엇을 다르게 하는지 토큰 비율이 [1.1, 0.9, 1.5, 0.8][1.1,\ 0.9,\ 1.5,\ 0.8]이고 A^>0\textcolor{#8e44ad}{\hat A} > 0인 네 토큰으로 견줘 보자. 클리핑 폭은 0.2, CISPO의 가중치 상한도 1.2라고 하자.

토큰 비율 1.1 0.9 1.5 0.8
PPO·GRPO 클리핑: 그래디언트에 곱해지는 수 1.1 0.9 0 (끊김) 0.8
CISPO: 그래디언트에 곱해지는 수 1.1 0.9 1.2 (눌림) 0.8

차이는 범위를 넘은 토큰 하나에서만 난다. 클리핑은 그 토큰을 학습에서 빼고, CISPO는 무게만 1.2로 누른 채 계속 가르친다. Qwen2.5-32B에서 CISPO는 DAPO와 같은 AIME 성능에 절반의 스텝으로 도달했다(2배 속도). 덧붙여 보고서는 M1 전체 RL 학습에 H800(NVIDIA의 데이터센터용 GPU) 512장으로 3주, 임대료로 약 53만 달러가 들었다고 밝혔다. "비평가 없이 가볍다"는 GRPO 계열도 이 규모에서는 결코 가볍지 않다.

문제 7 — 음의 어드밴티지에서는 어느 쪽이 잘리나

네 토큰짜리 응답의 토큰 비율이 [0.7, 1.0, 1.3, 0.95][0.7,\ 1.0,\ 1.3,\ 0.95]이고 A^=−1\textcolor{#8e44ad}{\hat A} = -1이다. (가) PPO·GRPO식 클리핑(ε=0.2\textcolor{#1f6d7a}{\varepsilon} = 0.2)에서 그래디언트가 끊기는 토큰은? (나) CISPO(가중치 상한 1.2, 하한 없음)에서 토큰마다 그래디언트에 곱해지는 가중치는?

김민준 (자신만만)
김민준
범위가 [0.8, 1.2]니까 밖에 있는 0.7하고 1.3, 둘 다 끊겨요.
선생님 (짚어주기)
선생님
민준 학생, Â가 음수일 때 min이 무엇을 고르는지 1.3 토큰으로 계산해 볼까요?
김민준 (평상)
김민준
r·Â = −1.3, 클립한 쪽은 1.2 × (−1) = −1.2. min이면 −1.3이니까 클립하지 않은 쪽이 골라져요.
김민준 (당황)
김민준
그럼 1.3은 안 끊기네요.
이서연 (평상)
이서연
0.7은 r·Â = −0.7, 클립한 쪽은 −0.8. min이 클립한 −0.8을 고르니까 상수가 되어 그래디언트가 0이야. Â가 음수면 아래쪽만 잘리는구나. 양수일 때와 거꾸로네.
선생님 (평상)
선생님
그래요. 이미 확률이 30% 내려간 토큰은 이번 묶음에서 더 누르지 않는 거죠. CISPO에서는요?
이서연 (평상)
이서연
가중치만 자르니까 0.7, 1.0, 1.2, 0.95. 1.3은 1.2로 눌리지만 버려지지 않고, 0.7은 하한이 없으니 그대로 0.7. 네 토큰 모두 그래디언트를 받아.
선생님 (질문)
선생님
하한을 두지 않으면 0.7 토큰은 계속 눌릴 텐데, 괜찮을까요?
이서연 (깨달음)
이서연
곱해지는 가중치가 비율 자체니까, 비율이 작아질수록 누르는 힘도 같이 작아져요. 아래쪽은 저절로 브레이크가 걸리고, 위험한 건 한없이 커질 수 있는 위쪽뿐이에요. 그래서 상한만 둔 거구나.
김민준 (평상)
김민준
많이 깎인 과제를 아예 채점에서 빼 버리는 게 클리핑이고, 감점 폭만 줄여서 계속 채점하는 게 CISPO네요.

정리 (가) 0.7인 토큰만 끊긴다. A^<0\textcolor{#8e44ad}{\hat A} < 0이면 min이 클립한 쪽을 고르는 것은 비율이 1−ε1-\textcolor{#1f6d7a}{\varepsilon} 아래로 내려간 토큰뿐이고, 1.3인 토큰은 그대로 그래디언트를 받는다. (나) 가중치 0.7, 1.0, 1.2, 0.950.7,\ 1.0,\ 1.2,\ 0.95. 네 토큰 모두 학습에 남는다. 가중치가 비율 자체라 아래쪽은 저절로 작아지므로 상한만 둔다.