한줄 요약
GSPO(Group Sequence Policy Optimization)는 대규모 언어 모델(LLM)의 강화학습에서 답변 전체(sequence)를 하나의 기본 단위로 보고 policy를 업데이트하는 알고리즘이다.
기존 GRPO는 별도의 가치 모델(value model) 없이 그룹 내 상대 평가로 어드밴티지(advantage)를 구하지만, 정책을 업데이트할 때는 각 토큰마다 확률 비율(importance ratio)을 따로 계산하고 토큰마다 개별적으로 클리핑(clipping)을 적용했다. 반면 GSPO는 “채점이 답변 전체를 대상으로 매겨진다면, 업데이트에 쓰는 확률 비율과 클리핑도 답변 전체 단위로 맞춰야 한다”는 문제의식에서 출발한다.
| 알고리즘 | 가치 모델 (Critic) | Advantage 단위 | Policy Ratio / Clipping 단위 | 핵심 특성 |
|---|---|---|---|---|
| PPO | 필요함 (별도 모델) | 토큰 또는 문장 | 토큰 (Token) | 메모리와 연산 비용이 큼 |
| GRPO | 없음 (제거) | 그룹 내 상대 점수 (Sequence) | 토큰 (Token) | 채점 단위와 업데이트 단위가 불일치 |
| GSPO | 없음 (제거) | 그룹 내 상대 점수 (Sequence) | 답변 전체 (Sequence) | 채점 단위와 업데이트 단위를 일치 |
Qwen 팀은 Qwen3 시리즈의 포스트 트레이닝 과정에서 이 방식을 도입했다. 긴 사고 과정(Chain-of-Thought)을 요구하는 수학·코딩 벤치마크에서 안정적인 성능 향상을 보였으며, 특히 MoE(Mixture of Experts) 모델의 강화학습 안정성을 획기적으로 개선했다.
GRPO: "좋은 답변 안에 포함된 수많은 토큰 각각의 확률을 개별적으로 어떻게 밀어줄 것인가?"
GSPO: "좋은 답변 하나 전체가 이전 정책(old policy) 대비 평균적으로 얼마나 더 그럴듯해졌는가?"왜 기존 GRPO의 토큰 단위 ratio가 문제가 되었나
채점 단위와 업데이트 단위의 불일치
수학 문제 풀이나 코딩처럼 정답 여부를 검증할 수 있는 환경(RLVR, Reinforcement Learning with Verifiable Rewards)에서는 보통 답변 하나 전체에 대해 하나의 보상(reward)이 부여된다. 최종 답이 맞았으면 1점, 틀렸으면 0점이다.
Prompt (문제)
│
▼
Response (답변 전체 y)
│
▼
Verifier (검증기 채점) ──▶ r(x, y) = 1 (답변 하나에 보상 하나)문제는 GRPO가 이 보상을 다루는 방식이다. GRPO는 답변 전체에 매겨진 보상으로 어드밴티지 값을 계산한 뒤, 모델 파라미터를 업데이트할 때는 답변에 포함된 수백–수천 개의 토큰마다 개별적으로 확률 비율을 계산하고 토큰마다 클리핑을 건다.
┌──────────── 답변 y (토큰 512개) ────────────┐
채점 (Verifier) │ r(x, y) = 1 ──▶ A = +0.8 │
└────────── 답변 하나에 점수 하나 ────────────┘
GRPO의 업데이트 [토큰 1] [토큰 2] [토큰 3] ... [토큰 512]
- 토큰마다 개별 ratio 계산 (512개)
- 토큰마다 개별 클리핑 판정 (일부는 잘리고, 일부는 통과)
- 채점 단위(문장)와 업데이트 단위(토큰)가 어긋남
GSPO의 업데이트 [──────────────── 답변 y 전체 ────────────────]
- 답변 전체의 평균 ratio 1개 계산
- 답변 전체에 대해 클리핑 1회 판정 (통째로 반영 또는 제한)
- 채점 단위와 업데이트 단위가 일치이 불일치는 실제 학습 과정에서 심각한 부작용을 낳는다.
단일 토큰 샘플로 만든 ratio는 노이즈가 된다
강화학습에서 중요도 샘플링(Importance Sampling)은 이전 정책 에서 생성된 데이터를 활용해 현재 정책 의 기댓값을 추정하기 위한 장치다. 이때 두 정책 사이의 확률 비(likelihood ratio)를 가중치로 곱해준다.
이 통계적 보정이 이론적으로 성립하려면 충분한 수의 샘플을 평균내어 기댓값을 구해야 한다. 그러나 언어 모델이 답변을 생성할 때 각 위치 에서 나오는 토큰은 수만 개 이상의 어휘(vocabulary) 중에서 단 한 번 무작위로 추출된 단일 샘플이다.
단 하나의 토큰 샘플에 대해 계산된 비율 는 두 정책 분포의 차이를 정확히 나타내지 못한다. 오히려 우연에 의해 심하게 튀는 고분산 노이즈(high-variance noise)를 그래디언트에 직접 주입하게 된다.
토큰별 클리핑이 추론 흐름을 토막 낸다
수학 문제를 풀거나 코드를 작성할 때는 수백–수천 개의 토큰이 하나의 긴 논리적 흐름(CoT)을 이룬다. 답변 전체가 정답을 맞혀 이라는 높은 보상을 받았다고 하자.
GRPO에서는 각 토큰 위치마다 개별적으로 클리핑(보통 허용 범위 )을 적용한다.
- 우연히 확률이 20% 이상 크게 튄 토큰들은 클리핑에 걸려 그래디언트가 으로 잘려나간다.
- 덜 튄 주변 토큰들은 그래디언트가 온전히 남아 모델을 업데이트한다.
결과적으로 하나의 완결된 논리적 추론 문장 안에서 특정 토큰들만 임의로 빠진 채 누더기 형태로 그래디언트가 반영된다. 추론 단계가 길어질수록 이 노이즈와 왜곡이 누적되어 학습이 급격히 불안정해진다.
MoE 모델에서의 학습 붕괴
MoE(Mixture of Experts) 아키텍처에서는 토큰마다 서로 다른 전문가 네트워크(Expert)로 라우팅된다. 정책 파라미터가 조금만 업데이트되어도 이전 스텝에서는 Expert 1로 가던 토큰이 Expert 2로 라우팅될 수 있다.
라우팅이 바뀌면 해당 위치의 토큰 확률이 예측하기 어려울 정도로 요동친다. GRPO는 이 요동치는 토큰 확률을 그대로 비율에 반영하기 때문에, MoE 모델을 학습할 때 정책이 쉽게 붕괴하는 현상이 발생했다. 이를 막기 위해 이전 정책의 라우팅 결정을 캐시에 저장해 두고 억지로 재현하는 복잡한 기법(Routing Replay)을 동원해야만 했다.
핵심 아이디어: 단위를 sequence로 옮긴다
GSPO의 해법은 단순하고 명확하다. 보상이 답변 전체에 주어지듯, 확률 비율(ratio)과 클리핑(clipping)도 답변 전체 단위로 계산하는 것이다.
Group 상대 Advantage 계산 (GRPO와 동일)
먼저 하나의 질문(prompt) 에 대해 현재 모델 이전의 정책 에서 개의 답변을 독립적으로 생성한다.
각 답변 는 검증기(verifier)로부터 점수를 받는다.
같은 문제에 대해 나온 개의 답변 점수를 기준으로 평균과 표준편차를 구해, 각 답변의 상대적 우수함을 나타내는 어드밴티지(advantage)를 계산한다.
그룹 평균보다 잘 푼 답변은 양수(), 못 푼 답변은 음수()를 받는다. 여기까지는 GRPO와 동일하다.
Sequence-level Importance Ratio
차이는 확률 비율을 정의하는 지점에서 나타난다. GRPO는 토큰별 비율 를 사용했다.
GSPO는 개별 토큰이 아니라, 답변 전체 의 생성 확률을 비교한다. 언어 모델에서 문장 전체의 생성 확률은 각 토큰 조건부 확률의 누적 곱이다.
따라서 문장 전체의 확률 비율은 각 토큰 비율들의 곱이 된다. GSPO는 여기에 답변 길이 로 제곱근을 취하는 기하평균(geometric mean) 형태의 sequence ratio 를 정의한다.
수식에 쓰인 기호의 정의는 다음과 같다.
| 기호 | 설명 |
|---|---|
| 입력 질문 (Prompt) | |
| 한 질문당 생성하는 답변 개수 (Group size, 보통 4–16개) | |
| 생성된 번째 답변 (Response sequence) | |
| 번째 답변의 총 토큰 수 (답변 길이) | |
| 번째 답변의 번째 토큰 | |
| 번째 토큰 앞에 이미 생성된 이전 토큰들 (Prefix context) | |
| 현재 학습하여 업데이트하려는 정책 모델 (Current policy) | |
| 샘플을 생성할 때 사용한 이전 정책 모델 (Old policy / Rollout policy) | |
| 번째 답변이 그룹 내에서 얻은 표준화된 어드밴티지 | |
| GSPO의 길이 정규화된 시퀀스 레벨 확률 비율 (Sequence importance ratio) | |
| 정책의 급격한 변화를 제한하는 클리핑 임계값 (Clipping epsilon) |
왜 길이 정규화(기하평균)가 필수적인가
단순히 두 문장의 확률 비율 을 그대로 쓰지 않고, 굳이 제곱근을 취하는 이유는 누적 곱의 복리 폭발을 막기 위해서다.
토큰 하나하나의 확률 비율이 평균 (즉, 증가)로 아주 미세하게 달라졌다고 가정해보자. 답변 길이에 따라 단순 누적 곱과 기하평균이 어떻게 달라지는지 비교하면 다음과 같다.
| 답변 길이 () | 단순 누적 곱 () | 기하평균 () |
|---|---|---|
| 100 토큰 | 1.105 (약 10% 증가) | 1.0010 |
| 512 토큰 | 1.668 (약 67% 증가) | 1.0010 |
| 2,000 토큰 | 7.374 (약 637% 증가) | 1.0010 |
| 5,000 토큰 | 148.0 (약 14,700% 증가) | 1.0010 |
토큰 하나당 정책 변화율()은 모든 경우에 완전히 동일하다. 그러나 단순 곱을 취하면 답변이 길다는 이유만으로 비율이 수백 배로 폭증하거나 반대로 0으로 쪼그라든다. 이렇게 되면 문장 길이에 따라 클리핑 기준을 일정하게 잡는 것이 불가능해진다.
승(기하평균)을 취해주면 문장 길이와 무관하게 값이 일정해진다. 즉, 가 측정하는 값은 **“이 답변을 이루는 토큰 하나당 평균적으로 확률이 몇 배 증가(또는 감소)했는가”**가 된다. 덕분에 답변 길이가 몇 토큰이든 동일한 클리핑 임계값 을 적용할 수 있다.
그래디언트의 균등 분배: 토큰 왜곡이 사라지는 원리
수식 를 도입했을 때 실제 역전파(Backpropagation)에서 모델 파라미터가 어떻게 업데이트되는지 살펴보면 GSPO의 핵심 이점이 명확히 드러난다.
목적함수 에서 클리핑이 걸리지 않은 상태의 그래디언트를 구하면 다음과 같이 전개된다.
따라서 파라미터 에 전달되는 그래디언트는 다음과 같다.
이 식이 의미하는 바는 다음과 같다.
- 모든 토큰에 완벽히 균등한 가중치가 실린다: 문장 안의 모든 토큰 는 동일한 스케일 를 곱한 그래디언트를 받는다.
- 토큰 단위 누더기 업데이트가 사라진다: 특정 토큰만 확률이 튀어서 중간에 클리핑되거나 그래디언트가 왜곡되는 현상이 원천적으로 차단된다.
- 전체 논리 구조가 보존된다: 좋은 답변()이면 문장 전체의 토큰들이 일관되게 강화되고, 나쁜 답변()이면 문장 전체가 일관되게 억제된다.
Objective와 Clipping의 비밀
Clipped Surrogate Objective
GSPO의 최종 목적함수는 PPO, GRPO와 동일한 형태의 클리핑 구조를 취한다.
문장 레벨의 비율 가 허용 범위 를 벗어나면 클리핑되어 추가적인 이득이 제한된다.
이 0.2에서 0.0003으로 3자리나 작아진 이유
실무에서 GRPO에서 GSPO로 전환할 때 가장 많이 혼동하는 부분이 하이퍼파라미터 의 크기다.
| 알고리즘 | 클리핑 대상 | 논문 권장 값 |
|---|---|---|
| GRPO | 개별 토큰의 비율 () | 0.2 (약 20% 변동 허용) |
| GSPO | 문장 전체 토큰 비율의 기하평균 () | 0.0003 – 0.0004 () |
왜 GSPO는 이렇게 극단적으로 작은 을 사용할까? 기하평균은 편차를 강하게 압축하기 때문이다.
1,000개의 토큰으로 이루어진 답변을 생각해보자.
- GRPO 관점: 토큰 하나의 확률이 에서 로 변하는 것은 언어 모델에서 흔히 일어나는 국소적 변동이다. 따라서 가 적절하다.
- GSPO 관점: 는 1,000개 토큰의 평균 변화율이다. 만약 가 (즉, 토큰당 평균 증가)가 되었다면, 문장 전체 확률의 변화는 다음과 같다.
토큰당 평균으로는 고작 늘어났을 뿐인데, 1,000개 토큰 전체의 결합 확률은 무려 가까이 폭증한 것이다.
만약 GSPO에 GRPO의 기본값인 를 그대로 대입한다면 어떻게 될까? 토큰당 평균 증가를 허용한다는 뜻이므로, 1,000토큰 문장 전체 확률로는 배의 변화를 허용하게 된다. 실질적으로 클리핑이 단 한 번도 작동하지 않는 것과 같다.
따라서 GSPO에서는 토큰 수가 긴 문장의 특성을 반영하여 을 수준으로 설정해야 비로소 정책 변화를 안정적인 구간 내로 제어할 수 있다.
GSPO-token: 토큰별 어드밴티지가 필요할 때
대화형 멀티턴(multi-turn) 에이전트 환경이나 단계별 보상 모델(Process Reward Model, PRM)이 있어서 특정 단계나 토큰마다 서로 다른 어드밴티지 를 부여해야 하는 경우가 있다. 이때는 GSPO의 기본형을 살짝 변형한 GSPO-token을 사용한다.
여기서 는 역전파 시 그래디언트가 흐르지 않게 막는 stop-gradient 연산이다.
이 수식의 동작 메커니즘은 다음과 같다.
- 값 자체의 크기: 오른쪽 분수식은 분자와 분모의 수치가 완전히 같으므로 값은 항상 이다. 따라서 의 수치값은 시퀀스 레벨 비율인 와 정확히 같다. 클리핑 판정도 시퀀스 단위로 안정적으로 수행된다.
- 역전파 경로: 왼쪽의 는 상수로 취급되어 그래디언트가 차단되고, 오른쪽 분자의 를 통해서만 역전파된다.
- 효과: 클리핑은 시퀀스 레벨의 안정적인 비율로 판정하면서도, 역전파되는 그래디언트에는 토큰별로 서로 다른 어드밴티지 를 곱해줄 수 있다.
만약 모든 토큰의 어드밴티지가 동일하다면 GSPO-token과 표준 GSPO의 결과는 수학적으로 완전히 같다.
실무와 엔지니어링에서 실제로 얻은 이점
GSPO를 실제 대규모 학습 인프라에 적용했을 때 나타나는 핵심적인 실무적 장점은 다음과 같다.
더 많이 클리핑되는데도 학습 효율이 더 높은 이유
GSPO를 적용하면 모니터링 대시보드에서 **클리핑에 걸리는 토큰의 비율(clipped ratio)**이 GRPO 대비 훨씬 높게(두 자릿수 이상) 치솟는 현상이 관찰된다.
- GRPO는 문장 안에서 튀는 몇몇 토큰들만 솎아내어 클리핑한다.
- GSPO는 문장 전체의 평균 비율 가 임계값을 넘으면 문장 전체에 속한 수천 개의 토큰이 한꺼번에 클리핑 처리된다.
직관적으로는 토큰이 너무 많이 버려져서 학습이 느려질 것 같지만, 실제 실험 결과는 반대다. 같은 스텝 수나 토큰 수를 소모했을 때 GSPO의 벤치마크 점수가 훨씬 빠르고 높게 상승한다.
이는 GRPO가 유지하던 수많은 토큰 레벨의 업데이트 신호들이 실제로는 학습에 유익한 정보가 아니라 분산만 키우는 노이즈였음을 증명한다. GSPO는 신뢰할 수 없는 과도한 변화를 문장 단위로 과감하게 차단함으로써 훨씬 깨끗한 그래디언트만 모델에 전달한다.
MoE 모델에서 Routing Replay의 완전한 제거
기존 GRPO로 DeepSeek-V3나 Qwen-MoE 같은 거대 MoE 모델을 학습할 때는 토큰별 라우팅 변화 때문에 학습이 터지는 문제가 심각했다. 이를 막기 위해 롤아웃(rollout) 당시의 전문가 선택 정보를 GPU 메모리에 저장해 두었다가 학습 스텝에서 강제로 재현하는 Routing Replay 기법을 써야 했다. 이는 막대한 통신 비용과 메모리 오버헤드를 유발했다.
GSPO는 개별 토큰이 어떤 전문가를 거쳤는지에 연연하지 않는다. 문장 전체 수천 개 토큰의 결합 확률만 평가하기 때문에, 몇몇 토큰의 전문가 라우팅이 바뀌더라도 문장 전체 수준에서는 통계적으로 상쇄된다. Qwen 팀은 GSPO 도입 후 번거롭고 무거운 Routing Replay 메커니즘을 완전히 제거할 수 있었다고 보고했다.
추론 엔진(vLLM)의 생성 확률 직접 재사용
강화학습 파이프라인에서는 속도를 위해 롤아웃 생성은 vLLM 같은 추론 전용 엔진으로 수행하고, 가중치 업데이트는 Megatron-LM이나 PyTorch FSDP 같은 분산 학습 엔진으로 수행한다.
문제는 두 엔진의 구현 커널, FP16/BF16 부동소수점 연산 순서가 미세하게 다르다는 점이다.
- GRPO에서는 이 미세한 수치 오차가 개별 토큰 ratio에 직접 반영되어 분산을 유발하므로, 생성된 문장을 학습 엔진에 다시 통과시켜 forward pass 확률을 재계산해야 했다.
- GSPO에서는 토큰 수천 개의 기하평균을 취하는 과정에서 엔진 간의 미세한 부동소수점 오차가 자연스럽게 평균 으로 상쇄된다. 따라서 vLLM이 롤아웃 시점에 뱉어낸 로그 확률(logprob)을 추가 재계산 없이 목적함수에 그대로 주입할 수 있다.
이로 인해 forward 연산 비용이 대폭 절감되고 학습 파이프라인의 복잡도가 획기적으로 낮아졌다.
한계와 후속 흐름
GSPO가 GRPO의 고질적인 노이즈 문제를 해결했지만, 모든 문제가 사라진 것은 아니다.
길이 편향(Length Bias)과 LUSPO
GSPO의 목적함수에서 문장 확률 비율 는 길이 로 정규화되어 있다. 그리고 목적함수는 여러 문장들의 손실(loss)을 단순 평균()한다.
이 구조로 인해 긴 답변 안에 포함된 토큰 하나가 전체 손실에 미치는 영향력이 짧은 답변의 토큰보다 훨씬 작아지는 문제가 발생한다.
- 100토큰짜리 답변의 토큰 1개는 손실에 의 비중을 갖는다.
- 2,000토큰짜리 긴 추론 답변의 토큰 1개는 손실에 의 비중만 갖는다.
이 불균형에 엔트로피 붕괴를 막기 위한 비대칭 클리핑(DAPO의 Clip-Higher 등)이 결합되면, 모델이 학습할수록 복잡하고 긴 추론을 기피하고 답변 길이를 비정상적으로 줄여버리는 답변 길이 붕괴(Length Collapse) 현상이 발생할 수 있다.
이 한계를 보완하기 위해 제안된 후속 연구가 **LUSPO(Length-Unbiased Sequence Policy Optimization)**다. LUSPO는 GSPO 목적함수에 다시 문장 길이 를 가중치로 곱해줌으로써, 토큰 레벨 기여도의 균형을 복원한다.
세밀한 신용 할당(Fine-grained Credit Assignment)의 부재
GSPO는 답변 전체를 하나의 덩어리로 묶어 처리한다. 만약 10단계로 이루어진 긴 수학 증명 과정에서 1–9단계는 완벽했고 마지막 10단계의 사소한 연산 실수로 오답이 나왔다면, GSPO는 문장 전체에 음수 어드밴티지를 부여하고 1–9단계의 훌륭한 추론 토큰들까지 함께 억제하게 된다.
추론의 각 중간 단계(step)별로 잘잘못을 정밀하게 따져야 하는 작업이라면, 과정 검증기(PRM)를 활용한 스텝 단위 채점과 함께 앞서 살펴본 GSPO-token과 같은 하이브리드 접근법이 필요하다.
Qwen-AgentWorld에서 왜 필수적이었는가
Qwen-AgentWorld는 자율 에이전트 학습을 위한 환경 시뮬레이터(World Model)를 구축하는 연구다. 여기서 강화학습 단계는 일반적인 질의응답과 입력·출력 구조가 크게 다르다.
입력 (Prompt): 수만 토큰에 달하는 장기 상호작용 이력 (Long Interaction History)
출력 (Response): 에이전트 행동 뒤에 이어질 단 하나의 환경 상태 관찰값 (Observation)출력되는 관찰값은 보통 아래와 같은 구조화된 JSON 데이터다.
{
"screen": "checkout_page",
"status": "payment_failed",
"error_code": "card_expired",
"ui_elements": ["retry_button", "back_button"]
}이 환경에서 검증기가 평가하는 것은 특정 단어(예: "checkout_page") 하나가 맞았는지가 아니다.
- JSON 문법이 올바르게 닫혔는가?
- 앞선 수만 토큰의 히스토리와 논리적으로 모순되지 않는가?
- 에이전트의 이전 액션과 인과관계가 현실적인가?
즉, 평가의 본질이 JSON 블록 전체의 일관성과 현실성에 있다. 여기에 수만 토큰의 컨텍스트를 다루는 MoE 모델이 결합되어 있으므로, 토큰 단위의 비율 진동은 치명적이다. 관찰값 블록 전체의 확률을 한 단위로 묶어 평가하고 업데이트하는 GSPO가 최적의 선택이 될 수밖에 없었던 배경이다.
실무 도입 체크리스트
실제 강화학습 파이프라인에 GSPO를 도입하고자 한다면 다음 항목들을 순서대로 점검해야 한다.
- 보상 단위 확인: 현재 풀고자 하는 태스크의 보상이 문장 전체 단위(규칙 기반 검증, 최종 결과 채점)로 주어지는가?
- 클리핑 재설정: GRPO의 기본값()을 그대로 두고 돌리지 않았는가? 기하평균을 고려해 범위로 조정했는가?
- 클리핑 토큰 비율 모니터링: Wandb 대시보드 등에서 클리핑 비율이 GRPO보다 현저히 높게(두 자릿수 퍼센트) 나오는지 확인했는가? (GSPO에서는 이것이 정상적인 현상이다.)
- 답변 길이(Length) 변화 추적: 학습이 진행되면서 모델의 평균 출력 토큰 수가 급격히 줄어드는 Length Collapse 징후가 없는가? 징후가 보인다면 LUSPO 가중치 도입을 검토해야 한다.
- MoE 모델 적용 시: 불필요해진 Routing Replay 코드를 걷어내고 메모리 확보 및 통신 오버헤드 감소를 확인했는가?
- 추론 엔진 연동: 롤아웃 시 vLLM이 생성한 logprob을 학습 엔진 forward pass 없이 직접 활용하도록 파이프라인을 간소화했는가?
면접에서 이렇게 답변하자
Q1. GSPO와 GRPO의 핵심적인 차이는 무엇인가요?
“가장 큰 차이는 확률 비율(importance ratio)과 클리핑을 계산하는 단위입니다. GRPO는 보상을 문장 전체 단위로 받으면서도, 정책을 업데이트할 때는 각 토큰별 확률 비율을 계산하고 토큰 단위로 클리핑합니다. 단일 토큰 샘플로 계산된 비율은 분산이 큰 노이즈가 되어 긴 추론 과정에서 그래디언트를 왜곡합니다. 반면 GSPO는 문장 전체 확률의 기하평균을 취해 시퀀스 레벨의 비율을 만들고 클리핑도 문장 단위로 적용합니다. 그 결과 채점 단위와 최적화 단위가 완벽히 일치하여, 문장 내 모든 토큰이 왜곡 없이 균등한 가중치로 안정되게 업데이트됩니다.”
Q2. GSPO에서 클리핑 임계값 을 GRPO()보다 수백 배 작은 수준으로 설정하는 이유는 무엇인가요?
“GSPO의 비율 는 문장에 포함된 수백–수천 개 토큰 확률 비의 기하평균이기 때문입니다. 기하평균은 개별 토큰의 편차를 크게 압축합니다. 1,000토큰 문장에서 토큰당 평균 확률이 고작 만 증가해도, 문장 전체 확률로는 배, 즉 가까이 폭증합니다. 만약 GRPO처럼 를 쓰면 문장 전체 확률이 천문학적으로 변할 때까지 클리핑이 전혀 걸리지 않으므로, 기하평균의 스케일에 맞춰 을 수준으로 작게 잡아야 정책 폭주를 방어할 수 있습니다.”
Q3. GSPO가 MoE 모델 학습에서 Routing Replay를 제거할 수 있었던 원리는 무엇인가요?
“MoE 모델은 정책이 조금만 업데이트되어도 토큰이 라우팅되는 전문가가 바뀌어 토큰별 확률이 요동칩니다. GRPO는 토큰별 확률을 직접 비율에 반영하므로 라우팅 변화가 곧장 학습 불안정으로 이어져, 이전 라우팅을 강제로 재현하는 Routing Replay가 필요했습니다. 하지만 GSPO는 문장 전체 수천 개 토큰의 결합 확률만 평가하므로, 일부 토큰의 전문가 라우팅 변화가 전체 평균에서 자연스럽게 상쇄됩니다. 따라서 별도의 라우팅 고정 장치 없이도 MoE 학습을 안정적으로 유지할 수 있습니다.”
Q4. GSPO의 한계점과 이를 보완한 후속 연구는 무엇이 있나요?
“두 가지가 있습니다. 첫째는 **신용 할당(credit assignment)**의 한계로, 문장 전체를 하나로 묶어 평가하므로 긴 추론 과정 중 어느 단계가 결정적이었는지 세밀하게 구별하지 못합니다. 둘째는 **길이 편향(length bias)**입니다. 시퀀스 길이로 정규화하는 과정에서 긴 답변에 속한 토큰의 손실 기여도가 짧은 답변보다 작아져, 학습이 진행될수록 답변이 짧아지는 길이 붕괴가 발생할 수 있습니다. 후속 연구인 LUSPO는 GSPO 손실에 문장 길이를 다시 가중치로 곱해줌으로써 토큰별 기여도의 균형을 맞춰 이 문제를 해결했습니다.”
References
- Zheng et al., Group Sequence Policy Optimization (Qwen Team)
- Zheng et al., Group Sequence Policy Optimization HTML
- Liu et al., Length-Unbiased Sequence Policy Optimization (LUSPO)
- GRPO
- DPO
- DAPO
- LLM Post-Training for Natural Korean
- Qwen-AgentWorld