하네스 자가개선의 과적합을 정규화로 막은 RRSI는 벤치마크 밖에서도 통했다

RRSI는 하네스 자가개선에 노이즈 밴드와 편집 예산, 비용 규칙을 걸어 미학습 벤치마크로 전이되는 수정만 남긴다. arXiv 2609.24972의 어블레이션과 정책 교체 실험을 실측 수치로 정리한다.

하네스 자가개선의 과적합을 정규화로 막은 RRSI는 벤치마크 밖에서도 통했다 대표 이미지

핵심 요약

  • 에이전트 하네스 자가개선은 학습에 쓴 과제에서는 점수가 크게 오르지만, 학습에 쓰지 않은 벤치마크에서는 그 이득이 줄거나 사라지는 과적합을 보입니다.
  • Google Cloud AI Research가 2026-09-21 공개한 논문 RRSI(arXiv 2609.24972)는 하네스가 담을 수 있는 부품을 제한하는 대신, 하네스를 고쳐 나가는 탐색 과정 자체에 정규화를 겁니다.
  • 워크스페이스 과제(Harvey LAB) 어블레이션에서 정규화를 모두 뺀 진화는 학습 점수를 92.8로 가장 높게 만들었지만 미학습 벤치마크 3종 평균은 40.3에 머물렀고, RRSI는 학습 점수 상승폭이 가장 작은 90.5인 대신 미학습 평균 43.6을 기록했습니다.
  • 비용도 실측으로 갈렸습니다. 정규화 없는 진화가 시행당 380만 토큰을 쓴 자리에서 RRSI는 242만 토큰을 썼습니다.
  • 코드와 하이퍼파라미터가 GitHub 저장소에 Apache-2.0으로 공개돼 있어 자기 자가개선 루프에 그대로 이식해 볼 수 있습니다.

하네스 자가개선은 왜 학습에 쓴 벤치마크만 잘하게 되는가

동결된 모델 하나를 감싸는 프롬프트, 제어 흐름, 툴 인터페이스, 메모리와 스킬 파일, 컨텍스트 관리를 통틀어 하네스라고 부릅니다. RRSI는 그 하네스를 자동으로 고쳐 나가는 반복 탐색에 정규화(regularization)를 걸어, 학습 과제에서만 통하는 수정 대신 다른 환경에서도 통하는 메커니즘을 남기는 방법입니다. 논문은 Google Cloud AI Research를 중심으로 Stanford, UNC-Chapel Hill, Washington University 연구자 14명이 참여했고, 동결 정책 모델만 바꿔 가며 3개 도메인에서 반복 실험했습니다.

하네스를 자동으로 고치는 루프의 구조는 단순합니다. 후보 하네스를 하나 만들어 학습 과제 집합에서 점수를 재고, 점수가 오르면 그 후보를 새 기준으로 채택합니다. 이 루프를 20라운드쯤 돌리면 학습 과제 점수는 꾸준히 올라갑니다. 논문이 비교 대상으로 삼은 선행 방식 4종(Meta-Harness, AHE, TTHE, HarnessX)은 워크스페이스 과제에서 모두 학습 점수 90점대를 넘겼습니다(미진화 하네스는 89.4).

어려운 지점은 그다음입니다. 학습 과제 집합이 라운드마다 재사용되는 구조에서는 점수 상승분의 상당 부분이 과제 맞춤 적합, 평가 노이즈, 불필요한 복잡도에서 나옵니다. 논문은 이 상태를 "Because a finite evolve set is reused adaptively across rounds, apparent self-improvement can reflect benchmark-specific fitting, evaluation noise, or unnecessary complexity rather than transferable progress"라고 적었습니다. 학습 점수 92.8을 기록한 방식이 미학습 벤치마크에서는 미진화 하네스보다 0.6점 높은 데 그친 이유가 여기에 있습니다.

우리 블로그가 이미 같은 지점을 다룬 적이 있습니다. 8월에 정리한 Phantom Gains는 대조군과 노이즈 기준 없이 측정하면 개선처럼 보이는 값이 유령 이득이 된다는 사실을 7가지 측정 실패로 보였습니다. RRSI는 그 지적을 실제 탐색 알고리즘으로 구현한 사례입니다. 노이즈 밴드를 먼저 재고, 그 밴드를 넘는 이득만 영구 상태로 반영합니다.

RRSI가 제한하는 것은 하네스가 아니라 탐색입니다

RRSI는 어떤 부품을 고칠 수 있는지를 제한하지 않습니다. 프롬프트, 제어 흐름, 설정, 컨텍스트 관리, 툴, 스킬, 메모리, 서브에이전트까지 전부 편집 대상으로 남습니다. 대신 편집을 제안하는 쪽과 채택하는 쪽에 각각 규칙을 겁니다.

제안 측 규칙은 3개입니다. 첫째, 한 라운드가 묶을 수 있는 독립 편집 수에 상한을 두고 그 상한을 코사인 스케줄로 줄입니다. 코딩 설정의 편집 예산은 초반 4개에서 마지막 라운드 1개로 내려갑니다. 후보 하나에 여러 수정을 묶으면 어느 수정이 효과를 냈는지 귀속시킬 수 없기 때문입니다. 둘째, 전체 편집 이력을 제안자에게 제공해 반증된 가설을 그대로 다시 제안하지 못하게 합니다. 셋째, 3라운드 동안 기준 하네스가 노이즈 밴드 이상 움직이지 않으면 후보 슬롯 하나를 그동안 한 번도 건드리지 않은 부품에 예약합니다.

채택 측 규칙은 4개입니다. 평가를 시작하기 전에 별도 심사자가 후보의 변경 내용을 읽고 과제명, 엔티티명, 정답, 해당 벤치마크 전용 로직, 아무 기능도 하지 않는 기계를 먼저 걸러냅니다. 누설 후보가 부풀려진 학습 점수를 받은 뒤에는 이미 매력적으로 보이기 때문에 차단이 평가보다 앞서야 한다는 것이 논문의 설명입니다. 다음으로 진화 전에 기준 하네스를 반복 평가해 노이즈 밴드 δ를 실측하고 S'(H') ≥ S* − δ인 후보만 통과시킵니다. 이득이 δ를 넘을 때만 토큰 증가를 허용하는 비용 규칙도 붙습니다. 지난 창에서 개선을 만들지 못한 부품의 기계를 제거하는 구조 프루닝이 마지막 규칙이고, 제거 자체도 정당한 편집으로 취급합니다.

이 규칙들은 하이퍼파라미터로 공개돼 있습니다. 코딩 도메인의 설정 파일을 보면 라운드 20회, 라운드당 후보 2개, 노이즈 밴드 δ=0.017, 비용 계수 β0=0.10과 β1=44.5, 프루닝 창 4라운드를 씁니다. δ=0.017은 시행 178회 중 3회 통과분에 해당하는 폭입니다.

어블레이션에서 정규화를 빼면 학습 점수만 올라갑니다

논문은 워크스페이스 과제에서 정규화를 하나씩 떼어내는 실험을 했습니다. 같은 기준 하네스, 같은 정책, 같은 라운드 수와 후보 예산을 쓰고 규제만 바꾼 비교입니다.

구성 학습 과제 학습 내 held-out 미학습 3종 평균 시행당 토큰
미진화 하네스 89.4 86.9 39.7 156만
정규화 없는 진화 92.8 88.9 40.3 380만
제안측 규칙 제거 90.7 88.8 41.9 269만
채택측 규칙 제거 91.5 88.7 41.0 359만
RRSI 90.5 89.2 43.6 242만

표의 방향이 이 논문의 요지입니다. 규칙을 하나라도 빼면 학습 점수는 올라가고 미학습 점수는 내려갑니다. 채택 측 규칙을 빼면 학습 점수가 90.5에서 91.5로 오르는 대신 미학습 평균이 43.6에서 41.0으로 떨어지고 토큰은 절반가량 늘어납니다. 논문은 이 팔이 채택한 편집 대부분을 메커니즘 대신 노이즈와 컨텍스트에 썼다고 해석합니다. 제안 측 규칙만 빼면 학습 점수 손실은 0.2에 그치지만 미학습 점수는 1.7 내려갑니다. 탐색이 어디를 보는지를 정하는 일은 아무것도 거부하지 않을 때도 결과를 바꿉니다.

정규화를 전부 뺀 진화는 학습 점수 92.8로 모든 팔 가운데 가장 높았고, 미학습 평균은 40.3으로 미진화 하네스와 1점 이내에 머물렀습니다. 토큰은 시행당 380만으로 RRSI의 242만보다 57% 많습니다. 학습 점수만 보면 이 팔이 최고이고, 다른 환경에 옮기면 성과가 거의 남지 않습니다.

선행 방식 4종과의 비교에서도 순위가 갈렸습니다. Meta-Harness는 학습 점수 93.0으로 가장 높았지만 미학습 평균은 0.9점만 올렸고, HarnessX는 미진화 하네스와 같은 수준에 머물렀습니다. AHE와 TTHE는 출발점보다 낮은 미학습 점수를 기록했습니다. TTHE는 1.7점 내려갔습니다. RRSI는 학습 점수 상승폭이 가장 작은 대신, 미학습 평균을 1점 이상 끌어올린 유일한 방식입니다.

정책을 바꾸고 더 작은 모델에 옮겨도 남는가

논문은 코딩 도메인에서 정책 모델만 바꿔 진화를 따로 돌렸습니다. 학습은 Terminal-Bench 2.1(89개 컨테이너 태스크)에서만 하고, 만들어진 하네스는 한 번도 점수를 매기지 않은 SWE-bench Verified로 옮겼습니다.

정책 Terminal-Bench 2.1(학습) SWE-bench Verified(미학습)
Claude Opus 4.8 74.2 → 80.2 82.0 → 83.8
Gemini 3.5 Flash 64.6 → 78.7 76.8 → 79.0

두 정책 모두 학습에 쓰지 않은 저장소 수준 버그픽스 벤치마크에서 점수가 올랐습니다. Gemini 3.5 Flash에서 만든 최종 하네스를 검색에 참여하지 않은 더 작은 모델(Gemini 3.1 Flash Lite)로 옮긴 실험도 있습니다. Terminal-Bench 2.1 점수는 11.2에서 14.6으로 올라 상대 기준 30.4% 상승이었습니다. 하네스가 프로그램이라는 점을 감안하면, 검색에 쓴 정책에서만 작동하는 메커니즘은 재사용 가능한 자산이 아니라 그 정책의 부산물입니다. 이 실험은 그 구분을 확인하는 절차에 해당합니다.

수치를 인용할 때 주의할 부분도 실측으로 확인됩니다. 프로젝트 페이지는 학습 3개 벤치마크 평균 +4.0, 미학습 6개 평균 +3.4를 전면에 내세웁니다. 초록은 최대치인 +14.1과 +4.7을 씁니다. 토큰 절감도 초록은 30%라고 적고 어블레이션 표는 242만 대 380만으로 36% 감소를 보여줍니다. 최대치와 평균, 절감 기준이 섞여 있으니 인용할 때는 어느 쪽 수치인지 밝혀야 합니다.

저장소는 함께 살펴볼 만합니다. 2026-09-23에 직접 확인한 값으로 google-research/rrsi는 커밋 3개, 별 93개, 포크 5개, Apache-2.0 라이선스입니다. 3개 도메인 어댑터가 각각 SKILL.md와 PATTERNS.md, 설정 파일을 갖추고 있고, third_party를 제외한 Python 코드는 8,642줄입니다. 진화 대상인 하네스와 별개로 진화를 지시하는 쪽도 SKILL.md 문서로 관리된다는 점이 눈에 띕니다. 코딩 도메인의 문서에는 "No task-specific content"(과제 특정 내용 금지), "Never touch the verifier"(검증기 접근 금지), "Mechanism over wording"(문구보다 메커니즘) 같은 강제 규칙이 들어 있습니다. 후보 하네스는 git worktree에서 작성되고 채택되면 브랜치가 전진해, 기준 하네스가 항상 커밋 하나로 남습니다.

같은 주에 나온 다른 답, 가중치로 증류하기

2026-09-21에 함께 공개된 Harness-Zero는 반대 방향을 택합니다. 최적화된 하네스를 학습 시점의 안내로만 쓰고, 그 하네스가 유도하는 행동을 모델 가중치에 증류해 배포 시에는 특수 하네스를 떼어냅니다. 하네스를 제거한 상태에서 기본 모델의 과제 성공률은 23.3%에서 44.3%로 올라 특수 하네스를 붙인 상태의 41.7%를 넘었고, 하네스가 만든 28개 행동 패턴은 평균 82.3% 회복됐습니다.

두 방식은 자산을 어디에 두는지가 다릅니다. RRSI는 가중치를 동결한 채 하네스를 감사 가능한 커밋 이력으로 남기고 그 하네스의 미학습 전이성을 측정합니다. Harness-Zero는 하네스를 학습 시점의 신호로 소비해 배포 구성을 단순하게 만듭니다. 자기가 만든 하네스를 계속 관리해야 하는 조직이라면 전자가, 배포 단순성이 우선인 조직이라면 후자가 맞습니다.

비교 항목 RRSI Harness-Zero
최종 배포 형태 학습된 하네스를 그대로 배포하고 정책 모델은 동결 특수 하네스를 떼어내고 그 행동을 모델 가중치에 흡수
실측 성과 학습 점수 상승은 작고 미학습 6개 벤치마크가 모두 올랐으며 평균 이득 3.4 하네스 제거 상태에서 성공률 23.3%에서 44.3%로 상승, 부착 상태 41.7%를 상회
검증 방식 노이즈 밴드와 비용 규칙으로 채택 후보를 걸러 편집 이력을 커밋으로 남김 하네스가 만든 행동 패턴 28개를 재측정해 평균 82.3% 회복 확인
남는 위험 유한한 학습 집합과 하이퍼파라미터 선택에 성과가 의존 가중치를 다시 학습하므로 하네스를 사후에 감사하거나 되돌리기 어려움

같은 주에 나온 DolphinBench는 메모리 평가의 조건을 다른 각도에서 지적합니다. 정확도만 요구하는 벤치마크는 비용과 지연을 무리하게 맞바꾼 메모리 시스템을 통과시킵니다. 그래서 이 벤치마크는 정확도와 함께 총비용과 지연을 반드시 보고하게 합니다. 하네스든 메모리든, 개선 주장에는 점수와 비용이 함께 붙어야 비교가 됩니다.

판단과 실무 적용

세 편을 나란히 두면 공통 결론이 하나 나옵니다. 자가개선 루프에서 중요한 것은 무엇을 바꿀 수 있는가가 아니라, 반복된 피드백을 어떤 규칙으로 영구 상태로 바꾸는가입니다. 논문의 표현을 그대로 옮기면 "controlling not only what can change, but also how repeated feedback is converted into persistent changes"입니다.

우리 운영에 옮길 수 있는 항목은 구체적입니다. 스킬이나 프롬프트를 자동으로 고치는 루프를 돌린다면 다음 순서로 점검해 보십시오.

  1. 노이즈 밴드부터 측정하라. 같은 조건에서 개선 전 설정을 반복 평가해 점수의 자연 변동 폭을 재고, 그 폭을 넘는 이득만 반영합니다. RRSI의 δ=0.017은 시행 178회 중 3회 통과분입니다.
  2. 한 번에 묶는 수정 개수를 제한하고 라운드가 진행될수록 줄입니다. 여러 수정을 묶으면 어느 것이 효과를 냈는지 알 수 없습니다.
  3. 가설, 점수 변화, 비용 변화, 판정을 편집 이력으로 남기고 반증된 가설은 재제안하지 않습니다.
  4. 특정 과제명이나 정답을 스킬 본문에 넣지 않습니다. 그런 문자열은 다음 과제에서 무용해지거나 검증 절차를 우회하는 데 쓰입니다.
  5. 이득이 노이즈 밴드를 넘을 때만 토큰 증가를 허용합니다. 최소 수정 원칙과 같은 방향입니다.
  6. 개선 없이 쌓인 지침은 제거 목록에 올립니다. 스킬은 커지기만 하는 방향으로 두지 않습니다.
  7. 마지막은 학습에 쓰지 않은 과제에서 재측정하라. 같은 벤치마크에서의 상승만 보고 채택하면, 어블레이션 표의 92.8처럼 자기 채점표에 최적화된 결과를 얻습니다.

한계도 분명합니다. 이 논문은 모델 가중치가 고정된 조건만 다루고, 유한한 학습 집합과 정규화 하이퍼파라미터에 의존합니다. 저장소도 공개된 지 7일 된 3커밋 상태라 제3자 재현 결과는 아직 없습니다. 그럼에도 어블레이션과 정책 교체 실험, 검색에 참여하지 않은 모델로의 이전 실험은 수치와 코드가 함께 공개돼 있어 우리 조건에서 다시 돌려볼 수 있는 재료입니다. 다음에 스킬 자동 수정 루프를 돌릴 때는 개선 폭 기록보다 노이즈 밴드 측정을 먼저 붙이고, 채택 기준을 이력과 비용으로 다시 적어 보길 권한다.

참고 링크