스텝을 단위로 삼는다 — 행동 단위 궤적 표현과 credit

Group-in-Group Policy Optimization for LLM Agent Training (Feng et al., Nanyang Technological University / Skywork AI, NeurIPS 2025)

Introduction

#5에서는 턴을 단위로 공을 나눴다. 턴은 “화자가 바뀌는 경계”라는 명확한 기준이 있어서 자르기 쉽다. 그런데 턴 하나 안에서 에이전트가 실제로 몇 개의 결정을 내리는지 세어 보면 이야기가 달라진다. ReAct 스타일 에이전트라면 한 번의 응답 생성 안에 “생각한다 → 도구를 호출한다 → 관측을 읽는다 → 다시 생각한다”가 여러 번 반복될 수 있고, 반대로 “로그인 페이지로 이동한다”처럼 여러 턴에 걸쳐야 끝나는 하위 목표도 있다. 턴이라는 경계와 “결정 하나”라는 경계가 항상 겹치지는 않는다는 뜻이다.

이 편이 다루는 단위는 스텝이다. 스텝은 환경 쪽 정의를 그대로 빌린다 — 상태 \(s_t\)에서 행동 \(a_t\)를 하나 실행하고, 보상 \(r_t\)와 다음 상태 \(s_{t+1}\)을 받는 전이(transition) 하나. WebShop이라면 “검색 결과 페이지에서 1번 아이템을 클릭한다”가 스텝 하나고, ALFWorld라면 “사과를 집는다”가 스텝 하나다. 턴이 대화의 단위라면 스텝은 환경의 단위다.

스텝을 단위로 쓰면 턴 단위에는 없던 힘이 생긴다. 여러 궤적이 우연히(또는 같은 초기 상태에서 출발했기 때문에 필연적으로) 같은 상태를 다시 만나는 경우가 있는데, 이때 그 상태에서 서로 다른 행동을 한 궤적들끼리는 직접 비교가 가능해진다. 같은 시험 문제를 여러 학생이 풀었으면 그 답안끼리는 정당하게 비교할 수 있는 것과 같다. 반면 에피소드 전체를 하나의 점수로 뭉치면, “그 학생이 이 문제를 어떻게 풀었는지”는 사라지고 “그 학생의 기말 성적이 몇 점인지”만 남는다.

이 편에서 다룰 여섯 가지 방법은 모두 “무엇을 하나의 결정으로 볼 것인가, 그리고 그 결정의 가치를 어떻게 추정할 것인가”라는 같은 질문에 서로 다르게 답한다.

방법 스텝을 다루는 방식 한 줄 요약
GiGPO 상태를 해싱해 재방문을 찾는다 같은 상태를 만난 행동들끼리 그룹을 만들어 비교한다
VinePPO 상태에서 다시 굴려 본다 Monte Carlo로 각 스텝의 가치를 직접, 편향 없이 추정한다
ArCHer 턴과 토큰을 분리한다 상위(턴) 가치함수가 하위(토큰) 정책의 종착 보상이 된다
AgentPRM TD로 부트스트랩한다 Monte Carlo 없이 promise(근접도)와 progress(개선도)를 함께 추정한다
SWEET-RL 정답을 몰래 보여준다 크리틱에게만 학습시점 정보를 주는 비대칭 구조로 턴 단위 advantage를 직접 학습한다
HICRA 토큰을 계획/실행으로 나눈다 스텝보다 더 잘게, “전략적 문구”에만 credit을 증폭한다

결론을 먼저 적으면 이렇다. 스텝 단위 credit은 “같은 상황이 여러 번 재현될 때” 강력해지는 단위다. 재현이 잘 되는 환경(결정론적이거나 초기 상태가 고정된 텍스트 게임, 수학 추론)에서는 값싸게 강한 신호를 만들 수 있지만, 상태를 정의하는 방식 자체가 흔들리는 순간 — 노이즈로 인한 과소 매칭, 유사도 임계값으로 인한 과대 매칭, 부분관측으로 인한 “같은 관측 다른 상태” — 그 신호도 함께 흔들린다. 이 편의 마지막 절은 그 실패를 구체적으로 다룬다.

Background — 스텝의 정의

행동 단위 궤적 표현

지금까지 LLM RL을 다루는 대부분의 프레임워크는 궤적을 “계속 자라나는 토큰 하나의 시퀀스”로 취급해 왔다. 프롬프트와 생성물을 이어붙인 뒤, 그 전체를 하나의 시퀀스로 놓고 토큰 단위 log-prob에 advantage를 곱하는 식이다. 단일 턴 응답이라면 이 표현으로 충분하다. 그런데 에이전트가 도구를 여러 번 부르고, 그때마다 환경이 새 텍스트를 끼워 넣고, 어떤 텍스트는 학습에서 제외해야 하는(도구 응답처럼 정책이 생성하지 않은 부분) 멀티턴 세팅으로 가면 이 표현은 버거워진다. 이 문제를 정면으로 짚은 것이 Agent-R1 프레임워크다.

Agent-R1: A Unified and Modular Framework for Agentic Reinforcement Learning (Cheng et al., arXiv 2025)

Agent-R1은 궤적을 “끝없이 자라나는 토큰 시퀀스로 보는 관점”이 컨텍스트 관리를 경직되게 만들고 롤아웃과 학습 사이에 표현 불일치를 만든다고 지적하면서, 대신 스텝을 기본 RL 전이 단위로 삼는 표현을 프레임워크의 중심에 놓는다. 상호작용 하나하나를 스텝 단위로 모델링해 두면, 그 위에서 토큰 단위 credit assignment든 스텝 단위 credit assignment든 자유롭게 얹을 수 있다는 것이 요지다.

이 표현을 수식으로 쓰면 궤적 \(\tau\)는 다음과 같은 열이 된다.

\[\tau = \big( (s_1, a_1, r_1), (s_2, a_2, r_2), \dots, (s_T, a_T, r_T) \big)\]
  • \(s_t\) — \(t\)번째 상태. 지금까지의 대화·관측 이력 전체일 수도, 환경이 보여준 현재 화면 텍스트일 수도 있다.
  • \(a_t\) — \(t\)번째 행동. 도구 호출 하나, 혹은 자연어 응답 하나.
  • \(r_t\) — 그 행동에 대해 환경이 준 보상. 대부분의 에이전트 벤치마크에서는 마지막 스텝에만 0이 아닌 값이 들어오는 희소 보상이다.

이 표현의 핵심은 \(s_t\)가 재사용 가능한 키(key)라는 점이다. 토큰 시퀀스 표현에서는 “3번째 도구 호출 직전”이라는 위치가 궤적마다 다른 토큰 오프셋에 있어서 서로 비교할 근거가 없다. 반면 상태를 명시적으로 분리해 두면, 서로 다른 궤적이 우연히 같은 \(s_t\)를 지나갔는지 바로 확인할 수 있다. 이 편에서 다룰 방법 대부분이 이 성질에 기대고 있다.

턴·스텝·토큰의 관계

세 단위는 포함 관계가 고정돼 있지 않다. 프레임워크 설계에 따라 달라진다.

단위 정의 전형적인 예 이 편에서 이 단위를 쓰는 방법
에피소드 궤적 전체 과제 하나를 끝까지 수행 GRPO/RLOO식 에피소드 baseline (GiGPO의 \(A^E\)가 이에 해당)
서브골 여러 턴에 걸친 하위 목표 “로그인부터 결제 완료까지” 이 편에서는 명시적으로 다루지 않음
턴(발화) 화자가 바뀌는 경계 에이전트의 응답 하나 ArCHer(고수준), SWEET-RL
스텝(행동) \((s_t, a_t, r_t)\) 전이 하나 도구 호출 1회 GiGPO, VinePPO, AgentPRM
세그먼트·토큰 텍스트 조각 또는 토큰 하나 “전략적 문구” 하나, 토큰 하나 ArCHer(저수준), HICRA

실무에서 자주 쓰는 ReAct 스타일 에이전트(생각 → 도구 호출 → 관측을 한 응답 안에 몰아넣지 않고, 도구 호출마다 새 턴으로 끊는 설계)에서는 턴 = 스텝이 되는 경우가 많다. 반대로 하나의 응답 안에서 여러 도구를 연쇄 호출하게 허용하면 한 턴에 여러 스텝이 들어간다. 즉 “스텝이 턴보다 항상 잘다”는 명제는 사실이 아니고, 프레임워크가 그렇게 설계했을 때만 성립한다. 이 시리즈에서 턴과 스텝을 별개의 편으로 다루는 이유가 여기에 있다 — 같은 문제(공을 어떻게 나눌 것인가)를 서로 다른 경계 기준으로 풀 수 있기 때문이다.

왜 스텝이 좋은 단위인가

스텝을 단위로 쓰는 이유는 하나로 요약된다. 같은 초기 조건에서 여러 궤적을 굴리면, 같은 상태를 여러 번 만난다. 이건 GRPO류 그룹 기반 RL이 이미 하고 있는 일 — 같은 문제에 대해 \(N\)개의 답안을 생성해 서로 비교하는 것 — 을 궤적 안의 중간 지점까지 확장한 것에 불과하다. “이 문제에 대한 \(N\)개의 최종 답” 대신 “이 갈림길에 도달한 \(N\)개의 순간”을 비교 단위로 쓰는 셈이다.

이 성질이 왜 중요한지는 반대 상황을 생각하면 분명해진다. 에피소드 단위 credit만 쓰면, 궤적 하나의 총점을 그 궤적에 속한 모든 행동에 똑같이 나눠준다. 3번째 행동이 결정적인 실수였어도, 그 뒤에 이어진 20번의 정상적인 행동과 똑같은 페널티를 받는다(이 시리즈 공통 브리프가 계속 지적하는 문제다). 반면 어떤 행동이 다른 궤적의 같은 지점에서도 반복해서 나타났다면, 그 지점만 따로 떼어 “이 갈림길에서는 이 행동이 저 행동보다 나았다”고 말할 수 있는 근거가 생긴다.

Method

GiGPO — 그룹을 두 겹으로 쌓는다

Group-in-Group Policy Optimization(GiGPO)은 GRPO의 “critic 없이, 그룹 안에서 상대적으로 비교한다”는 성질을 유지하면서, 그 비교를 에피소드 층위와 스텝 층위 두 곳에서 동시에 수행한다.

1단계 — 에피소드 상대 advantage. 같은 과제·같은 초기 상태에서 정책 \(\pi_{\theta_{\text{old}}}\)로 \(N\)개의 완전한 궤적 \(\{\tau_i\}_{i=1}^N\)을 굴린다. 각 궤적의 총 보상 \(R(\tau_i) = \sum_t r_t^{(i)}\)을 GRPO와 똑같은 방식으로 그룹 내 정규화한다.

\[A^E(\tau_i) = \frac{R(\tau_i) - \text{mean}(\{R(\tau_j)\}_{j=1}^{N})}{F_{\text{norm}}(\{R(\tau_j)\}_{j=1}^{N})}\]

이건 GRPO를 궤적 층위에 그대로 적용한 것과 같다(자세한 유도는 링크한 글 참고). 여기서 \(F_{\text{norm}}\)을 표준편차로 두면 GRPO의 기본값과 같아지는데, 저자들은 이렇게 하면 “쉬운 과제·어려운 과제처럼 그룹 내 분산이 작을 때 그래디언트가 과도하게 커지는” 난이도 편향이 생길 수 있다고 지적하며 \(F_{\text{norm}}=1\)(그러면 Leave-One-Out 추정량과 같아진다)도 대안으로 함께 검증한다.

2단계 — anchor state grouping. 이게 GiGPO의 핵심 아이디어다. 같은 초기 상태에서 \(N\)개 궤적을 굴렸으니, 서로 다른 궤적이 상호작용 도중 텍스트가 완전히 같은 상태를 다시 만나는 일이 실제로 일어난다(예: WebShop에서 같은 검색어를 입력해 같은 검색 결과 페이지로 돌아오는 경우). 이런 상태를 anchor state라고 부르고, 그 상태를 방문한 모든 (행동, 할인 보상) 쌍을 모아 그룹을 만든다.

\[R_t^{(i)} = \sum_{k=t}^{T} \gamma^{k-t} r_k^{(i)}, \qquad G^S(\tilde{s}) = \{(a_t^{(i)}, R_t^{(i)}) \mid s_t^{(i)} = \tilde{s},\; 1 \le i \le N,\; 1 \le t \le T\}\]
  • \(R_t^{(i)}\) — \(t\)시점부터 끝까지의 할인 보상. 즉시 보상만이 아니라 “이 행동 이후 무슨 일이 일어났는지” 전체를 반영한다.
  • \(\tilde{s}\) — anchor state. 여러 궤적, 여러 시점에 걸쳐 텍스트가 정확히 일치하는 상태를 키로 써서 해시맵에 모은다.
  • \(G^S(\tilde{s})\) — 같은 상태에서 갈라져 나간 (행동, 결과) 쌍들의 모음.

중요한 건 이 그룹핑에 추가 롤아웃이 전혀 들지 않는다는 점이다. 이미 \(N\)개를 굴리면서 나온 데이터를 재활용해 해시맵 키로 묶기만 하면 되기 때문이다. 이 그룹 안에서 GRPO와 똑같은 정규화를 스텝 층위에 적용한다.

\[A^S(a_t^{(i)}) = \frac{R_t^{(i)} - \text{mean}(\{R_t^{(j)}\})}{F_{\text{norm}}(\{R_t^{(j)}\})}, \quad \text{단 } (a_t^{(j)}, R_t^{(j)}) \in G^S(\tilde{s})\]

두 층위를 합쳐 최종 advantage를 만든다.

\[A(a_t^{(i)}) = A^E(\tau_i) + \omega \cdot A^S(a_t^{(i)})\]

\(\omega\)는 두 신호의 비중을 조절하는 하이퍼파라미터다. 논문이 든 실제 예시가 직관을 잘 보여준다. WebShop에서 \(\tau_1\)은 검색 결과 페이지에서 처음에 2번 아이템(오답)을 골랐다가 되돌아와 1번 아이템(정답)을 골라 성공한다. \(\tau_2\)는 같은 페이지에서 다음 페이지를 눌렀다가 결국 실패한다. 이 세 행동을 같은 anchor state 그룹으로 묶으면, 할인 때문에 늦게 나온 정답 선택(1번 아이템)이 더 높은 \(R_t\)를 받고, 결과적으로 \(A^S(\text{1번 아이템}) > A^S(\text{2번 아이템}) > A^S(\text{다음 페이지})\)라는 명확한 순서가 나온다. 에피소드 단위 신호만으로는 이 세 행동을 구분할 방법이 없다.

비용. ALFWorld에서 Qwen2.5-1.5B-Instruct로 측정한 반복(iteration)당 시간은 롤아웃·확률 계산·정책 업데이트를 합쳐 362.83초인데, anchor state grouping(해시맵 조회)은 0.01초, 스텝 relative advantage 계산(단순 산술)은 0.53초로 전체의 0.002% 미만이다. GRPO와 동일한 critic-free, 동일 GPU 메모리, 동일 롤아웃 비용을 유지한다는 저자들의 주장이 수치로 뒷받침된다.

결과. Qwen2.5-1.5B/7B-Instruct 기준, ALFWorld 평균 성공률에서 GRPO 대비 12%p 이상, WebShop에서 9%p 이상 개선했다고 보고한다(1.5B 기준 ALFWorld: GRPO 72.8% → GiGPO 86.1~86.7%; 7B 기준 ALFWorld: GRPO 77.6% → GiGPO 90.2%; WebShop 성공률 7B: GRPO 66.1% → GiGPO 75.2%). 검색 기반 QA 도구 사용 과제에서는 3B 42.1%, 7B 47.2%를 기록했다.

anchor state 재현은 얼마나 자주 일어나는가. 이 방법이 실제로 얼마나 자주 작동하는지도 저자들이 직접 측정했다. Qwen2.5-1.5B-Instruct로 ALFWorld를 학습시키는 동안, 그룹 크기가 1(즉 재방문이 전혀 없어 비교 상대가 없는 상태)인 anchor state는 학습 전 구간에서 35% 미만이었다 — 다시 말해 상태의 65% 이상이 여러 궤적에 걸쳐 반복해서 등장했다는 뜻이다. 학습 초반(iteration 10)에는 그룹 크기가 10 이상인 “거대 그룹”이 20%를 넘었는데, 이는 미숙한 정책이 같은 막다른 곳을 반복 방문하거나 무효한 행동을 되풀이하는 현상과 맞닿아 있다. 학습이 진행되면서(iteration 75) 이런 거대 그룹의 비중은 줄어든다 — 그룹 크기 10~50인 비중이 16.2%에서 12.1%로, 50 이상인 비중이 5.6%에서 3.1%로 감소한다. 정책이 막다른 곳과 무효 행동을 피하는 법을 배우면서 행동이 더 다양해지고, 자연히 같은 상태를 반복 방문하는 빈도도 줄어든다는 해석이다. 이 관찰은 anchor state grouping이 실험실에서만 통하는 우연이 아니라, 텍스트 기반 에이전트 환경에서 흔히 일어나는 현상임을 보여준다.

VinePPO — 다시 굴려서 직접 잰다

VinePPO는 스텝의 가치를 추정하는 문제로 곧장 들어간다. PPO는 이 문제를 가치망(value network) \(V_\phi(s_t)\)로 푼다 — 상태를 보고 “여기서부터 기대 보상이 얼마일까”를 예측하도록 별도 신경망을 학습시키는 방식이다. VinePPO는 이 가치망이 추론 중심 과제에서 실제로 얼마나 못 미더운지부터 정량적으로 보여준다.

가치망은 왜 못 미더운가. 저자들은 256번의 Monte Carlo 롤아웃 평균을 “정답”으로 놓고, DeepSeekMath 7B의 추론 스텝마다 가치망 예측과 비교했다. 예측이 정답과 0.05 이내면 “맞았다”고 정의했을 때, PPO의 가치망은 학습 초반 낮은 정확도에서 시작해 65%까지만 개선되는 반면 VinePPO의 MC 추정은 학습 내내 70~90%를 유지한다. 더 결정적인 건 행동 순위를 매기는 능력이다 — 같은 상태에서 나올 수 있는 5개의 다음 행동 중 진짜로 가장 좋은 것을 골라내는 테스트에서, PPO 가치망은 학습이 진행돼도 거의 무작위 수준에 머무는 반면 VinePPO는 지속적으로 높은 정확도를 낸다. 값 자체보다 “이게 저것보다 낫다”는 상대적 판단에서 가치망이 특히 취약하다는 뜻이다. 저자들은 explained variance가 0.7~0.9로 “잘 학습된 크리틱”임을 확인한 뒤에도 이 결과가 재현된다고 밝혀, 단순히 가치망 학습이 부족했던 게 아니라는 점을 못박는다.

MC로 직접 잰다. 언어 환경은 상태가 곧 지금까지 생성된 토큰의 나열이라는 성질 덕분에, 정책 \(\pi_\theta\)에게 임의의 중간 지점 \(s_t\)부터 이어서 생성하라고 시킬 수 있다. VinePPO는 이 성질을 이용해 \(s_t\)에서 \(K\)개의 보조 롤아웃 \(\eta_1, \dots, \eta_K \sim \pi_\theta(\cdot \mid s_t)\)을 뽑고, 그 보상의 평균을 가치 추정치로 쓴다.

\[V(s_t) = \mathbb{E}[R(\tau) \mid s_0 = s_t], \qquad \hat{V}_{MC}(s_t) = \frac{1}{K}\sum_{k=1}^{K} R(\eta_k)\] \[\hat{A}_{MC}(s_t, a_t) = r(s_t, a_t) + \gamma \hat{V}_{MC}(s_{t+1}) - \hat{V}_{MC}(s_t)\]

비유하면 이렇다. PPO의 가치망은 “이 갈림길이 얼마나 좋은 길일지” 지도를 보고 어림짐작하는 사람이고, VinePPO는 그 갈림길에서 실제로 \(K\)번 다시 걸어보고 평균 소요 시간을 재는 사람이다. 어림짐작은 지도가 부정확하면(가치망이 잘못 일반화하면) 틀리지만, 직접 걸어본 평균은 \(K \ge 1\)이기만 하면 정책 그래디언트의 불편(unbiased) 추정량이 된다 — 지도 자체가 필요 없기 때문이다. 다만 이 보조 롤아웃 \(\eta_k\)들은 가치 추정에만 쓰이고, 정책 업데이트에는 직접 참여하지 않는다(그 롤아웃 자체의 credit assignment는 하지 않았으므로).

실무적으로는 토큰 하나하나마다 MC 추정을 하지 않는다. 하나의 추론 스텝(수식 한 줄, 논리 전개 한 단락 등) 안의 상태들을 묶어서 advantage 하나를 계산하고, 그 스텝에 속한 모든 토큰에 똑같이 배정한다 — 정밀도와 비용을 맞바꾸는 설계다.

비용과 성능. 기본값은 \(K=9\)다. 매 스텝마다 \(K\)번 추가로 생성해야 하므로 반복(iteration)당 벽시계 시간은 RhoMath 1.1B에서 최대 5배, DeepSeekMath 7B에서 최대 2배까지 PPO보다 느려진다. 그런데도 같은 정확도에 도달하는 데 필요한 전체 학습 시간은 각각 3.0배, 1.51배 더 짧고, 필요한 그래디언트 스텝 수는 9배, 2.8배 더 적다. 스텝 하나가 비싸도, 그 스텝이 훨씬 정확한 신호를 주기 때문에 전체적으로는 이득이라는 것이다. 여기에 PPO는 7B 모델 기준 가치망(모델+옵티마이저)만으로 112GB의 GPU 메모리를 추가로 요구하는데, VinePPO는 가치망 자체가 없으므로 이 메모리가 통째로 절약된다.

ArCHer — 턴은 위에서, 토큰은 아래에서

ArCHer(Actor-Critic Framework with a Hierarchical Structure)는 스텝이 아니라 명시적으로 턴(utterance)을 상위 단위로 쓴다. 이 편에 포함시킨 이유는, “행동을 어떤 크기로 자를 것인가”라는 질문에 ArCHer가 GiGPO·VinePPO와는 다른 답 — 아예 두 개의 서로 다른 크기를 동시에 쓴다 — 을 내놓기 때문이다.

토큰 단위로 온폴리시 PPO를 곧장 돌리면, 매 토큰마다 벨만 백업(Bellman backup)을 하거나 거대한(사실상 어휘 크기만 한) 행동 공간에서 최댓값을 구해야 해서 오프폴리시 TD 학습이 힘들어진다. 반대로 발화(utterance) 전체를 하나의 행동으로 보면 재사용 가능한 오프폴리시 학습은 쉬워지지만, 그 “행동 공간”이 가능한 모든 문장의 집합이라 극단적으로 커진다. ArCHer는 이 둘을 층으로 나눠서 푼다.

  • 상위 층(고수준): 오프폴리시 TD 학습으로 발화 단위 가치함수 \(V(s, u)\)를 학습한다. 여기서 하나의 발화(턴) 전체를 하나의 “행동”으로 취급하지만, 벨만 백업은 토큰이 아니라 턴이라는 더 굵은 시간 단위에서만 일어나므로 계산이 감당할 만해진다.
  • 하위 층(저수준): 온폴리시 정책 경사 알고리즘(PPO 계열)으로 토큰 단위 정책을 학습하되, 그 턴의 “종착 보상”으로 실제 환경 보상 대신 상위 층 가치함수의 출력을 쓴다.

비유하면 팀장과 실무자 관계다. 팀장(상위 층)은 이번 대화 턴 전체가 방향을 잘 잡았는지만 굵직하게 판단하고, 실무자(하위 층)는 그 판단을 넘겨받아 문장을 토큰 단위로 어떻게 다듬을지 최적화한다. 팀장은 지난 대화 기록을 오프폴리시로 재사용할 수 있어 표본 효율이 좋고, 실무자는 익숙한 온폴리시 알고리즘을 그대로 쓸 수 있다.

결과. Twenty Questions 과제에서 PPO는 평균 보상이 -17을 넘기는 데 10만 개 넘는 표본이 필요했던 반면, ArCHer는 1,000개 미만의 표본으로 같은 지점에 도달해 최소 100배의 표본 효율을 보였다. 7B 규모까지 스케일이 유지되는 것도 확인했다.

AgentPRM — MC 대신 TD로 부트스트랩한다

AgentPRM은 process reward model(PRM)을 에이전트 과제로 확장한다. 다만 수학 추론용 PRM처럼 “이 스텝이 맞았는가/틀렸는가”로 채점할 수 없다는 데서 출발한다 — 에이전트의 행동에는 명확한 정오가 없고, 대신 “목표에 얼마나 가까워졌는가”로 평가해야 한다.

두 가지 신호: promise와 progress. 행동가치 \(Q^\pi(s_t, a_t)\)는 그 행동을 한 뒤 최종 성공 확률의 기댓값 — 즉 “지금 목표에 얼마나 근접했는가(promise)”다.

\[Q^\pi(s_t, a_t) = \mathbb{E}_{\tau \sim \pi(\cdot \mid s_t, a_t)}[r(u, \tau)], \qquad V^\pi(s_t) = \mathbb{E}_{a_t \sim \pi(\cdot \mid s_t)}[Q^\pi(s_t, a_t)]\]

그런데 promise만 보면 “이 행동이 방금 한 걸음만큼 상황을 개선했는가(progress)”는 놓친다. 논문이 드는 예시가 명확하다 — 웹 내비게이션 과제에서 댓글을 달려면 먼저 로그인 페이지로 이동해야 한다. 로그인 페이지로 가는 행동은 목표(댓글 작성 페이지)에서 일시적으로 멀어지는 것처럼 보이지만, 반드시 거쳐야 하는 필수 단계다. promise만으로 평가하면 이런 탐색적 행동이 부당하게 낮은 점수를 받는다. 이 문제를 advantage로 보완한다.

\[A^\pi(s_t, a_t) = Q^\pi(s_t, a_t) - V^\pi(s_t)\]

시험 비유로 풀면, promise는 “지금 내 누적 점수가 90점”이라는 정보고, progress는 “방금 푼 문제 덕분에 점수가 5점 올랐다”는 정보다. 둘은 서로 다른 질문에 답한다.

MC 대신 TD. 이 신호를 어떻게 값싸게 라벨링할지가 두 번째 기여다. 기존 MC 기반 라벨링은 스텝마다 \(N_{mc}\)개의 보조 롤아웃을 굴려 “그중 하나라도 성공에 도달했는가”로 \(\hat{Q}(s_t,a_t) \in \{0,1\}\)을 정한다. 논문 세팅에서는 이 방식에 스텝마다 \(N_{mc}=16\)번의 롤아웃이 든다. AgentPRM은 대신 TD 잔차를 정의한다.

\[\delta(s_t, a_t) = r_t + \gamma Q(s_t, a_t) - Q(s_{t-1}, a_{t-1})\]

그리고 GAE로 여러 스텝의 TD 잔차를 지수가중 합산해 advantage를 추정한다.

\[\hat{A}(s_t, a_t) = \sum_{k=0}^{\infty} (\gamma\lambda)^k \delta(s_{t+k}, a_{t+k})\]

핵심은 TD 기반 추정이 궤적(질의) 하나당 \(N_{TD}=16\)번만 굴리면 된다는 점이다 — 스텝마다가 아니라 궤적 전체에 걸쳐 한 번. 궤적 길이가 \(T\)스텝이면 MC 방식의 비용은 대략 TD 방식의 \(T\)배가 되는 셈이고, 저자들이 보고한 “8배 이상 더 컴퓨트 효율적”이라는 수치는 이 구조적 차이에서 나온다. WebShop·BabyAI·TextCraft 세 과제에서 Best-of-N 평가 결과, AgentPRM은 다른 보상 모델보다 우수한 성능을 내면서도 테스트 시점 컴퓨트를 늘릴수록 더 안정적으로 개선되는 경향을 보였다.

SWEET-RL — 크리틱에게만 정답을 보여준다

SWEET-RL(Step-WisE Evaluation from Training-time information)은 사람과 협업하는 멀티턴 과제 — 논문이 함께 제안한 ColBench(백엔드 프로그래밍·프론트엔드 디자인) — 를 배경으로 한다. 이 과제는 근본적으로 부분관측적이다. 에이전트는 사람 협업자의 짧은 지시만 보고, 완성해야 할 최종 산출물(정답 코드, 정답 웹페이지)은 대화가 끝날 때까지 직접 볼 수 없다.

SWEET-RL의 핵심 설계는 크리틱과 액터에게 비대칭적인 관측을 준다는 것이다. 액터(정책)는 실제 배포 때와 똑같이 지시문과 지금까지의 대화만 본다. 반면 크리틱(턴 단위 advantage를 매기는 모델)은 학습 시점에만 존재하는 정보 — Backend Programming에서는 참조 코드, Frontend Design에서는 참조 웹페이지 — 를 추가로 받는다. 면접관이 정답 이력서를 미리 알고 지원자의 답변을 채점하는 것과 비슷하다. 지원자(액터)는 정답을 모른 채 최선을 다해 답해야 하지만, 채점(크리틱)은 정답을 아는 상태에서 훨씬 정확하게 이뤄진다.

또 하나의 설계 선택은 가치함수를 거치지 않고 advantage를 직접 학습한다는 점이다. 일반적인 관행처럼 LLM의 은닉 상태 위에 value head를 올려 스칼라 가치를 회귀시키는 대신, advantage를 각 턴의 행동에 대한 평균 로그확률로 매개변수화하고 궤적 층위의 Bradley-Terry 목적함수로 학습한다. 저자들은 이 목적함수가 사전학습된 LLM의 구조와 더 잘 맞아서, 일반화 성능이 낫다고 보고한다.

결과. ColBench에서 SWEET-RL은 다른 최신 멀티턴 RL 알고리즘 대비 성공률·승률 모두 절대 6%p 이상 개선했다. Backend Programming에서는 테스트 통과율 56.8%·성공률 40.4%로, Multi-Turn DPO 베이스라인(48.0%·34.4%)은 물론 GPT-4o(54.6%·40.4%)와도 대등하거나 앞섰다. Frontend Design에서는 코사인 유사도 77.7·GPT-4o 대비 승률 48.2%를 기록했다(Multi-Turn DPO는 76.9·42.8%, GPT-4o는 자기 자신 대비 78.1·50.0%). Llama-3.1-8B-Instruct 기반으로 GPT-4o·o1-mini급 성능에 도달했다는 것이 저자들의 핵심 주장이다.

HICRA — 스텝보다 더 잘게, 계획하는 순간만

HICRA(Hierarchy-Aware Credit Assignment)는 이 편의 나머지 방법들과 결이 조금 다르다. 멀티턴 에이전트-환경 상호작용이 아니라 하나의 긴 추론 체인(CoT) 안에서 벌어지는 일을 다룬다. 그런데도 다루는 이유는, “행동의 경계를 스텝보다 더 잘게 내려보내면 무슨 일이 일어나는가”를 예고편처럼 보여주기 때문이다 — 그 본격적인 이야기는 #7의 몫이다.

저자들은 GRPO로 추론 모델을 학습시키는 과정을 관찰하며 두 국면을 발견한다. 초반에는 절차적 정확성(계산 실수 없이 단계를 밟는 능력)이 병목이고, 이게 어느 정도 갖춰지면 병목이 전략적 기획(어떤 경로로 문제에 접근할지 탐색하고 선택하는 능력)으로 옮겨간다. 그런데 토큰 단위로 credit을 고르게 나누는 GRPO는 이 두 국면을 구분하지 못하고 학습 신호를 모든 토큰에 균일하게 희석시킨다는 것이 저자들의 진단이다.

HICRA는 “계획하는 토큰”을 식별하기 위해 Strategic Gram이라는 프록시를 쓴다 — “wait”, “let’s reconsider”, “the key insight is” 같은, 추론 흐름을 재설계하는 순간에 특징적으로 등장하는 n-gram 사전(수백 개)을 미리 구축해 두고, 지금 생성 중인 토큰이 이 사전의 일부에 속하면 “계획 토큰”으로 표시한다. 그리고 GRPO의 토큰 단위 advantage를 계획 토큰에서만 증폭한다.

\[\hat{A}_{i,t}^{\text{HICRA}} = \begin{cases} \hat{A}_{i,t} + \alpha \cdot |\hat{A}_{i,t}| & t \in \mathcal{S}_i \text{일 때} \\ \hat{A}_{i,t} & t \notin \mathcal{S}_i \text{일 때} \end{cases}\]

\(\mathcal{S}_i\)는 궤적 \(i\) 안에서 Strategic Gram에 속하는 토큰 위치의 집합이고, \(\alpha \in (0,1)\)은 증폭 강도다(논문은 \(\alpha=0.2\)를 기본값으로 쓴다). “지도를 다시 펴서 경로를 재검토하는 순간”에는 credit을 20% 더 얹어주고, “이미 정해진 경로를 그냥 따라 걷는 순간”에는 원래 GRPO 신호를 그대로 두는 셈이다.

결과. Qwen3-4B-Instruct-2507 기준 AIME24에서 GRPO 대비 +5.4%p, AIME25에서 +5.1%p. Qwen3-4B-Base 기준으로는 AIME24 +6.1%p, Math500 +6.0%p 개선을 보고한다. 벤치마크에 따라 이득 폭은 다르지만(Olympiad에서는 -0.7%p로 오히려 GRPO보다 낮은 경우도 있었다), 일관된 방향의 개선이 여러 모델·벤치마크에서 재현됐다는 것이 핵심 주장이다.

Experiments

토이 예제 — 같은 상태, 다른 결말

GiGPO의 anchor state grouping이 실제로 무슨 신호를 만드는지 숫자로 따라가 보자. WebShop류 과제에서 \(N=4\)개의 궤적이 같은 초기 상태에서 출발했고, 그중 4개 모두가 같은 검색 결과 페이지 \(\tilde{s}\)를 지나갔다고 하자. 할인 계수는 \(\gamma=0.9\), 보상은 성공 시점에만 1이 주어지는 희소 보상이다.

궤적 \(\tilde{s}\) 방문 시점 \(t\) 그 시점의 행동 결말 \(R_t = \gamma^{k-t}\)
\(\tau_1\) 3 A (1번 아이템) \(t=4\)에 성공 \(0.9^1 = 0.9\)
\(\tau_2\) 1 A (1번 아이템) 실패 \(0\)
\(\tau_3\) 2 B (2번 아이템) 실패 \(0\)
\(\tau_4\) 1 C (다음 페이지) \(t=5\)에 성공 \(0.9^4 = 0.6561\)

이 네 쌍 \(\{(A, 0.9), (A, 0), (B, 0), (C, 0.6561)\}\)이 \(G^S(\tilde{s})\)가 된다. 평균은 \(0.389\), 표준편차는 \(0.398\)이다. 여기에 \(A^S(a) = (R_t - \text{mean}) / \text{std}\)를 적용하면 다음이 나온다.

행동(궤적) \(A^S\)
A (\(\tau_1\)) \(+1.28\)
C (\(\tau_4\)) \(+0.67\)
A (\(\tau_2\)) \(-0.98\)
B (\(\tau_3\)) \(-0.98\)

여기서 세 가지가 보인다.

  1. 같은 상태에서 같은 행동(A)도 결과에 따라 정반대 신호를 받는다. \(\tau_1\)의 A는 \(+1.28\), \(\tau_2\)의 A는 \(-0.98\). GiGPO는 “행동 A의 진짜 가치”를 따로 추정하는 게 아니라, 그 배치 안에서 A가 실제로 어떻게 흘러갔는지를 단일 표본으로 비교한다 — VinePPO처럼 같은 상태에서 여러 번 반복 샘플링해 평균을 내는 게 아니라는 뜻이다. 표본이 우연히 튀면 신호도 함께 튄다.
  2. 효율적인 성공과 비효율적인 성공이 구분된다. \(\tau_1\)은 3번째 스텝에서 곧장 정답을 골라 \(+1.28\)을 받고, \(\tau_4\)는 같은 성공이라도 “다음 페이지”를 거쳐 늦게 도달했기 때문에 할인 때문에 \(+0.67\)로 더 낮은 신호를 받는다.
  3. 실패한 두 행동(A, B)은 구분되지 않는다. 표본이 이 배치 안에서는 둘 다 \(0\)으로 끝났기 때문에 같은 \(-0.98\)을 받는다. 그룹 크기 \(N\)이 작으면 이런 우연이 신호를 왜곡할 여지가 남는다.

이제 에피소드 단위만 썼다면 무엇을 놓쳤을지 보자. \(R(\tau_1) = R(\tau_4) = 1\)(둘 다 성공), \(R(\tau_2) = R(\tau_3) = 0\)(둘 다 실패)이므로 \(A^E(\tau_1) = A^E(\tau_4)\)다. 3번째 스텝에서 곧장 정답을 고른 \(\tau_1\)과, 엉뚱한 페이지를 거쳐 늦게 도착한 \(\tau_4\)가 완전히 같은 credit을 받는다. 게다가 이 신호는 각 궤적에 속한 모든 행동에 똑같이 적용된다 — \(\tau_1\)의 3번째 스텝(정답을 고른 결정적 순간)과 \(\tau_1\)의 1번째 스텝(단순 탐색)이 구분 없이 같은 \(A^E(\tau_1)\)을 나눠 갖는다. 스텝 층위 신호가 정확히 이 두 가지 — “어느 결정이 결정적이었는가”와 “같은 결말이라도 경로의 효율이 다르다” — 를 되살린다.

방법별 요약

방법 입도 중간 신호 출처 보고된 개선 추가 비용
GiGPO 스텝(anchor state 재방문) 이미 굴린 궤적을 재사용(해시맵 그룹핑) ALFWorld +12%p, WebShop +9%p (GRPO 대비, Qwen2.5 1.5B/7B) 반복당 +0.54초 (전체 362.83초 중 0.002% 미만)
VinePPO 스텝(추론 스텝 그룹) 상태에서 재출발한 \(K\)개의 MC 롤아웃 MATH/GSM8K에서 동일 정확도까지 3.0배/1.51배 짧은 시간, 9배/2.8배 적은 스텝(1.1B/7B) 스텝마다 \(K=9\) 추가 롤아웃, 반복당 최대 5배(1.1B)/2배(7B) 느림
ArCHer 턴(상위) + 토큰(하위) 오프폴리시 TD로 학습한 발화 단위 가치함수 Twenty Questions에서 표본 효율 100배 이상 (PPO 10만+ 개 vs ArCHer 1,000개 미만) 오프폴리시 크리틱을 별도로 유지·학습
AgentPRM 스텝(행동) TD 잔차 + GAE (promise + progress) 베이스라인(MC 기반 PRM) 대비 8배 이상 컴퓨트 효율 궤적당 \(N_{TD}=16\)롤아웃(MC 방식은 스텝당 \(N_{mc}=16\))
SWEET-RL 턴(발화) 학습시점 전용 참조 정보를 받는 비대칭 크리틱 ColBench에서 SOTA 멀티턴 RL 대비 절대 6%p 이상 개선 오프라인 설정이라 추가 롤아웃 없음, 단 참조 아티팩트 필요
HICRA 토큰(전략 문구) GRPO advantage에 대한 사전 정의 n-gram 매칭 AIME24 +5.4~+6.1%p, Math500 +6.0%p (Qwen3 계열, GRPO 대비) 사전(수백 개 n-gram) 매칭만 필요, 추가 롤아웃·모델 없음

이 표를 가로로 읽으면 하나의 축이 드러난다 — “추가 비용을 어디서 지불하는가.” GiGPO와 HICRA는 이미 있는 데이터를 재활용해 사실상 공짜로 신호를 만든다. ArCHer와 SWEET-RL은 별도의 크리틱을 유지하는 비용을 지불한다. VinePPO는 그때그때 롤아웃을 더 뽑는 비용을 지불하고, AgentPRM은 그 비용을 TD 부트스트랩으로 줄이는 방법을 제시한다.

비용 계산 — MC 스텝 credit은 몇 배가 되는가

VinePPO처럼 모든 스텝마다 별도로 Monte Carlo 추정을 하면 비용이 얼마나 느는지 직접 계산해 보자. 궤적 하나가 \(S\)개의 (그룹화된) 추론 스텝으로 이뤄져 있고, 스텝마다 \(K\)개의 보조 롤아웃을 뽑는다고 하자.

  • 원래 궤적을 만드는 데 필요한 생성: 1회
  • 추가로 필요한 MC 보조 롤아웃: \(S \times K\)회

\(S=6, K=9\)(논문 기본값)를 대입하면 \(6 \times 9 = 54\) — 궤적 하나를 학습에 쓰기 위해 원래 생성보다 54번 더 이어쓰기(continuation)를 생성해야 한다는 뜻이다. 순수하게 생성 횟수만 보면 원래 대비 약 55배다.

실제 논문이 보고한 반복당 벽시계 시간 증가(1.1B에서 최대 5배, 7B에서 최대 2배)는 이보다 훨씬 작다. 이유는 세 가지다.

  1. 토큰이 아니라 스텝 단위로 묶는다. MC 추정은 토큰마다가 아니라 하나의 추론 스텝(수식 한 줄 등)당 한 번만 계산되므로, \(S\)가 토큰 수보다 훨씬 작다.
  2. 뒤쪽 스텝일수록 이어쓸 내용이 짧다. 마지막 스텝 근처에서 시작하는 보조 롤아웃은 처음부터 다시 쓰는 것보다 훨씬 짧게 끝난다.
  3. 빠른 추론 엔진으로 배치 처리한다. 저자들은 A100 한 장에서 7B 모델 기준 초당 5,000토큰까지 생성할 수 있는 최신 서빙 엔진 덕분에 이 방식이 실용적이라고 밝힌다.

같은 축에서 AgentPRM의 선택이 더 도드라진다. AgentPRM은 이 \(S \times K\) 비용 자체를 없애는 쪽을 택했다 — MC 방식이 스텝마다 \(N_{mc}=16\)번씩 굴려야 하는 것과 달리, TD 기반 추정은 궤적(질의) 전체에 걸쳐 \(N_{TD}=16\)번만 굴리고 나머지는 재귀적인 TD 관계로 부트스트랩한다. 궤적 길이가 \(T\)스텝이면 MC 비용이 TD 비용의 대략 \(T\)배가 되는 구조이니, 논문이 보고한 “8배 이상”이라는 수치는 실제 벤치마크의 평균 궤적 길이를 감안하면 자연스러운 결과다. 요컨대 “매 스텝 직접 재보기”(VinePPO)에서 “한 번 배워서 부트스트랩하기”(AgentPRM)로 넘어가는 것이 이 축에서 비용을 줄이는 가장 직접적인 방법이다.

반례 — 상태를 잘못 묶으면 생기는 일

스텝 단위 credit이 기대는 전제는 단순하다. “같은 상태에서 갈라진 행동들은 정당하게 비교할 수 있다.” 이 전제가 깨지는 두 가지 방향을 짚는다.

과소 그룹화와 과대 그룹화는 다르게 실패한다

GiGPO는 논문 스스로 이 한계를 인정한다. anchor state grouping은 결국 상태 매칭에 의존하는데, 복잡한 환경에서는 노이즈나 사소한 텍스트 차이 때문에 실제로는 같은 상태인데도 매칭에 실패할 수 있다. 예를 들어 같은 페이지인데 타임스탬프나 세션 ID처럼 의미 없는 문자열이 끼어 있으면 정확 문자열 매칭은 이를 다른 상태로 취급한다. 이런 과소 그룹화의 결과는 다행히 완만하다 — 아무 상태도 재매칭되지 않으면 \(A^S = 0\)이 되어 GiGPO는 그냥 GRPO로 되돌아간다. 신호를 잃을 뿐 잘못된 신호를 만들지는 않는다.

문제는 반대 방향, 과대 그룹화다. GiGPO는 정확 매칭 대신 최장 공통 부분수열(LCS) 유사도가 임계값(논문 실험에서는 0.9)을 넘으면 두 상태를 같은 것으로 묶는 유사도 기반 변형도 함께 검증한다. 임계값을 느슨하게 잡으면, 텍스트 구조는 거의 같지만 의미상 결정적으로 다른 두 상태 — 예를 들어 “가격 20달러 셔츠 상세 페이지”와 “가격 200달러 셔츠 상세 페이지”처럼 숫자 하나만 다른 페이지 — 가 같은 anchor state로 묶일 수 있다. 앞의 토이 예제로 돌아가면, 만약 \(\tau_3\)의 상태가 실제로는 \(\tilde{s}\)와 다른데도 느슨한 임계값 때문에 같은 그룹으로 잘못 묶였다면, 그 그룹의 평균·표준편차 자체가 오염되고, \(\tau_1, \tau_2, \tau_4\)에 대한 \(A^S\)까지 함께 틀어진다. 과소 그룹화는 “덜 똑똑한 GRPO”로 완만하게 무너지지만, 과대 그룹화는 아무 안전장치 없이 조용히 잘못된 비교를 만든다 — 이쪽이 훨씬 위험하다.

부분관측: 같은 관측이 곧 같은 상태는 아니다

더 근본적인 문제는 마르코프성(Markov property)에 있다. 스텝 그룹핑이 정당하려면, 같은 그룹에 묶인 모든 (상태, 행동) 쌍이 정말로 같은 미래 전이 분포를 공유해야 한다. 그런데 에이전트가 실제로 접근할 수 있는 건 상태 자체가 아니라 관측(observation) — 화면에 보이는 텍스트 — 뿐이다. 관측이 똑같다고 해서 관측 뒤에 숨은 진짜 상태까지 같다는 보장은 없다. 이게 부분관측 마르코프 결정 과정(POMDP)의 정의 그 자체다.

SWEET-RL의 설계가 이 문제를 정확히 겨냥한다. ColBench의 에이전트는 사람 협업자와의 대화 이력만 본다. 두 개의 서로 다른 과제 인스턴스가 우연히 같은 대화 이력(“좋아요, 로그인 기능을 추가해 주세요”)을 만들어냈다고 해도, 그 뒤에 있는 참조 코드(진짜 요구사항)는 인스턴스마다 다를 수 있다. 즉 겉보기 관측이 같아도 정답으로 가는 최적 행동은 다를 수 있다는 뜻이다. SWEET-RL이 크리틱에게만 참조 아티팩트를 보여주는 비대칭 구조를 쓰는 이유가 바로 이것이다 — 액터의 관측만으로 credit을 매기면, 겉보기엔 같은 상태에서 갈라진 행동들을 잘못 비교하게 될 위험이 있다는 걸 설계 단계에서부터 인정한 셈이다. 만약 스텝 단위 방법이 액터가 보는 텍스트만으로 anchor state를 해싱한다면, 숨겨진 요구사항이 다른 두 상황을 같은 그룹으로 묶어 결과를 오염시킬 수 있다.

HICRA의 Strategic Gram 매칭도 비슷한 종류의 위험을 안고 있다. “wait”라는 단어는 어떤 맥락에서는 진짜로 추론 경로를 재설계하는 전략적 전환점이지만, 다른 맥락에서는 그냥 말버릇에 가까운 채움말(filler)일 수 있다. 같은 문자열이 서로 다른 두 역할을 하는데, 사전 매칭은 이를 구분하지 못하고 둘 다 “계획 토큰”으로 표시해 credit을 증폭한다. 저자들이 별도로 전략적 문구를 30% 무작위로 제거하는 민감도 분석을 실었다는 사실 자체가, 이 사전이 완벽한 프록시가 아니라는 걸 저자들도 인지하고 있다는 뜻으로 읽을 수 있다.

세 사례를 관통하는 교훈은 하나다. 상태를 정의하는 기준(정확 매칭, 유사도 임계값, 표면 관측, 키워드 사전)은 전부 진짜 마르코프 상태의 근사에 불과하고, 그 근사가 거칠수록 스텝 단위 비교가 주는 이득도 함께 흔들린다.

그러면 실무에서는 무엇을 고르나

여섯 방법을 놓고 보면 선택 기준은 결국 “환경이 얼마나 재현 가능한가”와 “추가 롤아웃을 감당할 여유가 있는가” 두 축으로 좁혀진다.

  • 초기 상태가 고정돼 있고 상태 텍스트가 그대로 재현되는 환경(ALFWorld·WebShop처럼 결정론적이거나 준결정론적인 텍스트 게임)이라면 GiGPO가 가장 값싸다. 이미 굴린 궤적을 재활용할 뿐이라 GRPO 파이프라인에 거의 그대로 얹을 수 있다.
  • 하나의 긴 추론 체인에서 중간 지점의 가치가 특히 중요하고, 재생성 비용을 감당할 수 있다면 VinePPO가 가장 편향이 적은 신호를 준다. 다만 스텝 수 \(\times\) \(K\)만큼 생성이 늘어난다는 걸 예산에 반영해야 한다.
  • 대화가 매우 길고(수십 턴) 오프폴리시 데이터 재사용이 절실하다면 ArCHer처럼 턴 단위 크리틱과 토큰 단위 정책을 분리하는 구조가 표본 효율에서 유리하다.
  • MC 롤아웃을 감당할 여력이 없지만 스텝별 신호는 필요하다면 AgentPRM처럼 TD/GAE로 부트스트랩하는 쪽이 현실적이다. 다만 이 경우 부트스트랩의 초기 편향(TD 학습 특유의 문제)을 어떻게 관리할지는 별도로 검증해야 한다.
  • 환경이 근본적으로 부분관측적이고 정답 아티팩트를 학습 시점에 확보할 수 있다면(코드 리뷰, 스펙 대조처럼 “정답”이 존재하는 협업 과제) SWEET-RL의 비대칭 크리틱 설계가 이 편의 반례 절이 지적한 문제를 정면으로 피해 간다.
  • 단일 CoT 안에서 절차적 정확성은 이미 확보됐고 전략적 탐색이 병목이라면 HICRA처럼 스텝보다 더 잘게, 계획 순간에만 credit을 증폭하는 접근이 다음 단계로 자연스럽다.

Conclusion

스텝은 “같은 상황이 여러 궤적에서 다시 나타났을 때, 그 순간을 정당하게 비교할 수 있다”는 성질에 기대는 단위다. GiGPO는 이 재현을 텍스트 해시로 포착해 공짜에 가까운 신호를 만들고, VinePPO는 아예 그 상태로 돌아가 직접 다시 굴려서 신호를 산다. ArCHer는 이 문제를 발화와 토큰이라는 두 층으로 쪼개 풀고, AgentPRM은 VinePPO식 MC 비용을 TD 부트스트랩으로 줄인다. SWEET-RL은 부분관측 환경에서 크리틱에게만 특권 정보를 줘 이 비교를 안전하게 만들고, HICRA는 스텝보다 더 잘게, 계획하는 순간에만 credit을 얹는 실험을 보여준다.

핵심 트레이드오프는 명확하다. 상태 재현이 잘 일어나는 환경(초기 상태가 고정된 텍스트 게임, 형식이 정형화된 수학 추론)에서는 스텝 단위 신호가 값싸고 강력하다. 하지만 상태를 정의하는 방식 자체 — 정확 매칭이냐 유사도 매칭이냐, 관측이 상태 전체를 반영하느냐 — 가 흔들리면 그 신호도 함께 흔들린다는 걸 이 편의 반례 절에서 확인했다. 게다가 이 편에서 이미 스텝의 경계가 고정돼 있지 않다는 걸 봤다 — HICRA는 스텝 안의 토큰을 계획/실행으로 다시 쪼갰다. #7은 이 쪼개기를 정면으로 다룬다. 토큰이나 세그먼트까지 내려가면 credit assignment는 무엇을 더 얻고 무엇을 잃는가.

참고 문헌


Agentic RL 설계 시리즈

이 글은 Agentic RL 설계 시리즈의 여섯 번째 글이다.

1부. 왜 에이전트는 다른가

  1. 에이전트 RL은 무엇이 다른가 — 장기 지평·희소 보상·긴 궤적
  2. 공을 어디에 돌릴 것인가 — credit assignment 47개 방법의 지도
  3. 멀티턴 RL 실무 가이드 — 무엇이 실제로 작동하는가

2부. credit assignment — 공을 어디에 돌릴 것인가

  1. 결과만으로는 부족하다 — 장기 지평에서 증폭되는 RLVR의 한계
  2. 턴 단위로 공을 나눈다 — turn-level reward 설계
  3. (현재 글) 스텝을 단위로 삼는다 — 행동 단위 궤적 표현과 credit
  4. 토큰과 세그먼트로 더 잘게 — 세밀한 입도의 득과 실
  5. shaping은 약인가 독인가 — 중간 보상의 효율과 위험

3부. reward를 어디서 얻나

  1. 환경이 곧 reward다 — 샌드박스·테스트·상태 검증
  2. 도구 호출을 어떻게 채점하나 — ToolRL·ToolRM
  3. 궤적을 judge가 채점한다 — rubric 생성형 reward의 확장

4부. 도메인별 설계

  1. 검색 에이전트 — Search-R1에서 DeepDive까지
  2. 코드 에이전트 — SWE-RL과 테스트라는 reward
  3. 웹·GUI 에이전트 — end-to-end 멀티턴 RL

5부. 실패와 방어

  1. 에이전트의 reward hacking — 판정기가 뚫린다, 그리고 조합의 실패

6부. 실전 종합

  1. 프론티어 모델은 실제로 어떻게 하나 — 최신 모델들의 agentic RL 설계

본 시리즈는 16편으로 구성된다.




Enjoy Reading This Article?

Here are some more articles you might like to read next:

  • 프론티어 모델은 실제로 어떻게 하나
  • 에이전트의 reward hacking — 판정기가 뚫린다, 그리고 조합의 실패
  • 웹·GUI 에이전트 — end-to-end 멀티턴 RL
  • 코드 에이전트 — SWE-RL과 테스트라는 reward
  • 검색 에이전트 — Search-R1에서 DeepDive까지