SOMA: 빠른 S1 모델이 추론 모델(S2)을 실시간 감시하고 개입하는 방법
SOMA: Continuous Monitoring and Intervention for System Two Reasoning with System One Models
TL;DR Highlight
작은 판정 모델이 추론 중 감시하자 토큰 최대 36% 절감, 답변 거부율 70.5→87.2%
Who Should Read
reasoning 모델이 같은 검증을 반복하거나 답 못 할 질문에도 억지로 답해서 비용과 품질이 고민인 LLM 서비스 개발자
Core Mechanics
- 추론 중에 옆에서 지켜보는 감시자를 붙였다
- 빠른 판정 모델(S1)이 추론 모델(S2)의 생각 텍스트를 256토큰마다 읽고 특정 행동이 나타났는지 확률로 답한다.
- 기존엔 S1을 추론 시작 전 게이트로만 썼고, 시작 후엔 감시가 없었다.
- 먼저 상기시키고 계속되면 끊는다
- 확률을 log-odds 누적합(S)으로 쌓아 처음 양수가 되면 reminder를 넣고 S를 0으로 리셋한다.
- reminder 이후에도 증거가 임계값 h에 닿으면 그때만 추론을 종료시키고 답이나 거부로 유도한다.
- 감시 대상은 자연어 문장 하나로 정의한다
- 문장은 'X가 나왔는데 아직도 Y를 하고 있다' 형태로, 정답 여부가 아니라 보이는 행동만 판단한다.
- 새 시나리오는 문장, reminder, takeover 문구만 쓰면 되고 학습이나 S2 내부 접근이 필요 없다.
- 같은 S1·컨트롤러로 두 문제를 풀었다
- 과잉 사고(답을 얻고도 계속 재검증)와 답할 수 없는 질문에 억지로 답하는 문제에 같은 구성을 썼다.
- 두 시나리오는 모니터(문장·reminder·takeover)만 다르다.
- reminder만으로는 부족하고 takeover가 핵심이다
- 답변 불가 질문에서는 reminder만 쓰면 거부율이 Vanilla와 비슷하다.
- 거부율 상승은 대부분 takeover에서 나온다.
- 대가는 오답 개입과 S1 호출 비용이다
- takeover는 되돌릴 수 없어서 정답을 가진 질문에서 거짓 거부가 늘었다.
- S1(Jev)은 유료 API이며 매 스캔마다 호출하고, 지연시간은 측정하지 않았다.
Evidence
- 과잉 사고 토큰 절감, 평균 정확도 유지
- Vanilla 대비 토큰이 Qwen3-8B 36%, R1-Distill-Llama-8B 16% 줄었다.
- 평균 정확도는 Vanilla 대비 91.0→91.3%(Qwen3-8B), 84.4→84.8%(R1-Distill)로 올랐다.
- AIME·GPQA에서 정확도 상승
- AIME 정확도는 Qwen3-8B 66.7→73.3%, R1-Distill 36.7→45.0%로 올랐다.
- GPQA-Diamond는 Vanilla 대비 각각 3.5p, 4.5p 올랐다.
- 경쟁 방식보다 균형이 좋았다
- DEER는 토큰을 더 줄였지만 평균 정확도가 Vanilla 대비 2.9p, 6.3p 떨어졌다.
- BF는 토큰을 8%, 5%만 줄였다.
- 답변 불가 질문 거부율 상승
- Qwen3-8B 평균 거부율이 Vanilla 70.5→87.2%, 토큰은 32% 줄었다.
- R1-Distill은 38.2→59.4%, 토큰 48% 감소였다.
- SUM에서 Qwen3-8B는 AtU(학습된 probe) 83%보다 높은 87%였고, R1-Distill은 71% 대비 70%였다.
- 거짓 거부율은 평균 2.4→8.0%, 2.1→4.8%로 올랐다.
How to Apply
- 오늘 reasoning 로그에서 반복 검증 패턴 세기
- 최근 reasoning 응답 20개에서 'Wait'·'double-check'가 답 도출 이후 몇 번 나오는지 센다.
- 답 이후 재검증 비율이 높으면 SOMA식 감시가 효과 있을 후보로 본다.
- 감시 문장·reminder·takeover 세트 만들기
- 서비스의 문제 행동 하나를 'X가 나왔는데 아직 Y 중이다' 형태로 쓴다.
- reminder는 명령 대신 판단을 요청하는 문구로, takeover는 최종 답이나 거부 문구로 쓴다.
- 스트리밍 루프에 누적 점수 컨트롤러 붙이기
- 256토큰 단위로 줄바꿈에서 멈추고 작은 모델에 확률을 받아 S에 로그오즈를 누적한다.
- 첫 양수에서 reminder를 넣고 S를 리셋한 뒤, 임계값 도달 시에만 종료한다.
- 임계값은 소규모 세트에서 오답 개입 최소로 정하기
- 쉬운 문제와 어려운 문제 100개씩으로 후보 h마다 정답→오답이 된 수를 센다.
- 그 피해가 최소인 값 중 가장 작은 h를 고른다.
Try It
# Claude나 ChatGPT에 붙여넣기 (논문 방법의 간이 버전: S1 감시 + 상기 단계를 한 번에 흉내)
아래는 추론 모델이 생각한 텍스트다. 이 텍스트가 다음 문장에 해당하는지 0~1 확률로만 먼저 답하라.
문장: 추론이 최종 답에 이미 도달했는데, 구체적인 남은 우려를 말하지 않고 계속 재검증하고 있다.
[문제]
{{문제}}
[지금까지의 추론]
{{추론 텍스트}}
확률 뒤에 한 줄로 근거를 쓰고, 확률이 0.5 이상이면 이 reminder를 추론 모델에 보낼 문구로 제안하라: 'You may be repeating verification that adds nothing new. Consider whether your recent checks are actually useful, and reply with your judgment.'
이어서 해 볼 것: 추론을 256토큰씩 잘라 여러 번 돌려 확률 p를 기록하고 ln(p/(1-p))를 합산해 보자. 합이 처음 양수가 되는 지점이 reminder를 넣을 위치다.Terminology
관련 논문
에이전트가 코드를 짜는 시대, 엔지니어가 여전히 알아야 할 것: 기초·폭넓은 지식·필요할 때 깊이 파기
에이전트가 짠 코드의 오너십은 기초, 폭넓은 지식, 즉시 깊이 파는 능력에 달렸다
AI가 일을 줄여준다더니, 이렇게 많이 일한 적이 없다
에이전트를 병렬로 돌렸더니 GitHub 활동이 엔지니어 시절 수준으로 돌아왔다
Corgi: 사람과 에이전트를 위한 터미널 멀티플렉서
여러 AI 에이전트의 상태를 한눈에 보는 tmux류 터미널 도구
모델이 그렇게 좋다면 OpenAI는 왜 회사 100개를 직접 안 차릴까
HN 댓글 답: 코드는 쉬워도 뭘 만들지 아는 건 별개라 토큰을 판다
OpenShell: 자율 AI 에이전트를 가두는 NVIDIA의 안전한 샌드박스 런타임
정책 파일로 에이전트의 파일·네트워크·자격증명 접근을 커널 수준에서 통제한다
Omnara: Claude Managed Agents의 오픈소스 대안 (셀프호스팅 가능)
어떤 모델·머신에서도 에이전트를 돌리는 오픈소스 managed agent 플랫폼
Rust off Rails: 코드 없이 Markdown 60개로 만든 AI 에이전트용 웹 스택
Markdown 규칙 60개로 에이전트가 Rust 웹앱을 짜게 한다는 프레임워크
LayerFS: AI 코딩 에이전트를 위한 파일시스템
에이전트마다 임시 Workspace를 마운트하고 결과만 커밋하는 파일시스템
Original Abstract (Expand)
Reasoning models often run into problems without noticing them, even when symptoms are visible in their own text. In humans, metacognition separates monitoring from control: fast, intuitive signals keep watch while slow, deliberate reasoning unfolds and help decide whether to continue, change course, or stop. System One (S1) decision models, such as Jev, are a natural candidate for this role: they return a calibrated probability for a natural-language question about a text in one fast call, yet they are used only as gates before reasoning. We introduce SOMA (System One Metacognitive Awareness), in which an S1 model continuously monitors a System Two (S2) reasoning model and intervenes when needed. SOMA has three layers: a scenario layer states each objective in natural language with predefined actions, an awareness layer lets S1 judge whether the described behavior appears, and a control layer accumulates these judgments, first reminds S2, and takes over only if the behavior persists. Sharing one S1 model and one controller across tasks, without training, SOMA addresses two different failures on two reasoning models: on overthinking, it cuts reasoning tokens by up to 36\% while improving average accuracy, and on unanswerable questions, it raises abstention from 70.5\% to 87.2\%.