블로그 목록
AI/ML 리서치

에이전트에 기억보다 '실행 검증'이 먼저인 이유

듀얼프로세스 에이전트에 기억(AMM)과 자기 반성(SRM) 모듈을 붙이고 ScienceWorld에서 소거 실험한 arXiv 논문을 풀이했어요. 핵심은 기억이 아니라 실행 시점 제어가 성능 병목이며, 무한 반성이 오히려 해롭다는 점입니다.

2026년 9월 18일 6분 읽기

기억만 더하면 에이전트가 나아질까요

LLM이 문장은 잘 만들지만, 환경과 주고받는 에이전트는 여전히 부서지기 쉬워요. 긴 작업에서는 상태를 끝까지 추적하고, 지금 세계에서 유효한 액션만 실행하고, 실패한 단계를 복구해야 하는데, 이게 모두 한 번에 필요하거든요. 잘 짠 계획이 실행 단계에서 무너지는 패턴도 흔해요.

같은 액션을 반복하거나, 현재 상태에 없는 액션을 내놓거나, 진전 없이 이리저리 헤매는 식이죠.

이번에 arXiv에 올라온 논문은 이런 인터랙티브 환경에서 언어 에이전트를 강화하는 두 가지 방법을 깔끔하게 겨뤄요. 하나는 과거 경험을 재사용하는 기억 모듈, 다른 하나는 실행 직전에 액션을 검증·수정하는 자기 반성 모듈이에요. 제목은 Cognitive Extensions for Dual-Process Language Agents이고, 리스본 Instituto Superior Técnico 연구진이 2026년 9월 16일에 올린 논문이에요. 결론이 흥미로운데, 성능을 좌우한 건 기억이 아니라 실행 시점의 통제였어요.

듀얼프로세스 에이전트, SwiftSage에서 출발

기반이 된 건 SwiftSage라는 아키텍처예요. 칸너먼의 이중처리 이론(System 1·System 2)을 에이전트로 옮긴 설계죠. Swift는 빠른 System 1 역할로, 매 타임스텝 비싼 모델을 부를 필요 없이 로컬하게 액션을 제안해요. Sage는 느린 System 2 역할로, 더 큰 계획을 세우고 그 결과를 액션 버퍼에 넣어 실행해요. 효율이 좋지만 두 가지 약점이 남았어요. 하나는 과거 에피소드를 골라 재사용할 영속적 기억이 없다는 점, 다른 하나는 액션을 실행 직전에 검증하거나 정체 상태에서 개입할 장치가 없다는 점이죠.

논문은 이 두 약점을 각각 메우는 모듈을 SwiftSage 위에 얹고, 같은 실행 기반(runtime)에서 네 가지 구성을 비교해요. 기준선(baseline), 기준선+기억(AMM), 기준선+반성(SRM), 그리고 둘 다 넣은 전체 시스템이요. 평가 환경은 일상생활 과학 실험을 텍스트 액션으로 수행해야 하는 ScienceWorld 벤치마크예요.

기억 모듈(AMM)은 정보만 바꿔요

AMM(Adaptive Memory Module)은 살리언스 게이트(salience gate, 중요 전환만 골라내는 문)로 에피소드를 저장하고, 특정 트리거에서만 꺼내 써요. 성공·점수 상승·근접 실패·무효 액션 실패처럼 정보량이 큰 전환 뒤에만 컴팩트한 준구조적 기록을 남겨요. 기록은 유형 태그로 구분해 두기 때문에 검색과 프롬프트 주입이 안전해요.

중요한 건 회수(retrieval)가 항상이 아니라 조건부라는 점이에요. Swift가 유효한 액션을 못 내면 T1 트리거로 관련 기억을 넣어 재시도하고, Sage 계획 단계에선 T4 트리거로 성공·근접 실패 기록을 제공해요. 증거는 어디까지나 힌트지 권위가 아니라는 지시가 프롬프트에 들어가고, 현재 관찰·가용 액션·제약이 항상 우선해요. 핵심은 AMM이 컨트롤러가 무엇을 기억·재사용할 수 있는지만 바꾸고, 최종 액션 선택 자체는 바꾸지 않는다는 점이에요.

자기 반성 모듈(SRM)은 실행을 통제해요

SRM(Self-Reflection Module)은 실행 시점에 개입해요. Gate-1이 액션이 환경에 닿기 직전에 유효성 검증을 하고, 사소한 불일치는 결정적으로 고치고, 남으면 그 액션을 버려요. Swift·Sage·수정자(Critic)가 만든 액션 전부가 이 게이트를 통과해요. 스텝 후에는 반복 관찰·무효 액션 루프·진전 없는 탐색 같은 정체 신호를 감지하고, 정체가 확실할 때만 Critic(제한된 반성자)을 소환해 짧은 수정 액션 목록을 만들게 해요. Critic 결과물도 다시 Gate-1을 거쳐 실행돼요.

핵심은 제한이에요. 반성은 켜두기만 하면 좋은 게 아니라, 트리거로 문을 걸고 예산과 쿨다운으로 통제하는 장치라는 설계예요. 논문이 이걸 강조하는 이유가 뒤의 민감도 실험에서 나와요. Critic 호출 상한을 에피소드당 3회에서 6회로 늘리면 오히려 성능이 떨어져요. 반성이 많다고 좋은 게 아니라는 뜻이죠.

성능을 끌어올린 건 실행 통제였어요

네 가지 구성의 핵심 결과를 표로 보면요.

구성최종 점수성공률성공 시 평균 스텝
기준선51.6723.99%24.48
+AMM(기억)53.8326.94%24.03
+SRM(반성)64.3341.33%19.76
전체 시스템64.6243.17%19.33

기준선 대비 전체 시스템은 최종 점수 +25.1%, SRM만 넣어도 +24.5%, AMM만 넣으면 +4.1%였어요. 즉 단독 개선의 대부분을 SRM이 차지하고, AMM은 작지만 긍정적 효과를 내요. 길이별로 보면 짧은 과제(Short)에선 SRM이 가장 좋았고(81.50, +41.2%), 중간·긴 과제에선 전체 시스템이 가장 좋았어요. 다만 긴 과제에선 격차가 작아서(61.69 vs 61.64) 기억이 빛을 발하려면 실행이 먼저 안정돼야 한다는 해석과 맞아요. AMM만 넣으면 긴 과제에서 오히려 6.6% 하락했고요.

메커니즘 로그가 이유를 설명해요. SRM의 개선은 잦은 반성적 재계획이 아니라 게이트 필터링에서 나왔어요. 에피소드당 버려진 액션(Drop)이 20회 안팎인데(SRM 20.03, 전체 17.48), 실제 유효한 Critic 호출은 약 1.4회에 불과했거든요. 대부분은 현재 가용 액션 세트에 없는 액션을 실행 전에 걸러낸 거예요. 또 전체 시스템은 System 2 호출이 기준선 24.6회에서 14.1회로 줄고, Swift 직접 실행 비율은 44%에서 62%로 늘었어요. 더 많은 숙고가 아니라, 빠른 경로를 더 안전하게 만들어 숙고 비용을 줄인 것이 성능의 원천이라는 뜻이에요.

기억이 실용적 단서로 빛나는 조건

그래서 기억이 쓸모없느냐면 아니에요. AMM은 대부분 근접 실패 기록을 저장해서 부분 진전을 포착했고, SRM이 실행을 안정시키면 기억 기반 회복 시도가 오히려 줄었어요(T1 트리거 17.1→12.2, T4 트리거 19.1→11.8). 경로가 안정될수록 기억을 더 선별적으로, 더 때맞춰 쓴다는 뜻이에요.

민감도 실험도 같은 결론이에요. 메모리를 넉넉히 채운 설정(53.83)이 빈약한 설정(51.47)보다 나았고, Swift 수준 기억 주입을 빼면(63.33) 특히 긴 과제에서 하락했어요. 기억은 유용하되, 실행이 안정된 뒤 단서로 쓰일 때 가장 빛난다는 해석이에요.

실용 시사점과 한계

개발 실무에도 떨어지는 교훈이 있어요. 환경과 맞닿는 에이전트를 만들 때 모델·프롬프트보다 실행 직전 검증(게이트)이 더 큰 병목일 수 있고, 반성·자기수정은 무한정 늘리면 오히려 역효과라는 점이요. 검증은 저렴하고 항상 켜 놓되, 무거운 반성은 명시적 정체 신호가 있을 때만 제한적으로 쓰는 설계가 데이터로 뒷받침돼요.

한계도 분명해요. 평가가 텍스트 기반 과학 환경(ScienceWorld) 하나에 국한돼서 다른 환경·멀티모달·로봇 액션 공간으로 바로 이어지긴 어려워요. 기억도 에피소드형이라, 반복 경험을 일반화된 절차 지식으로 압축하는 의미적 학습 단계는 아직 없어요. 반성 쪽 문턱·수정 규칙도 사람이 손으로 정한 수치라 학습된 검증기로 바꾸면 개선 여지가 남아 있어요. 자세한 표와 부록이 필요한 분은 논문 원문(arXiv:2609.19128, CC BY 4.0)을 확인하면 돼요.

#듀얼프로세스 에이전트#기억 모듈#자기 반성#ScienceWorld#실행 제어
Robeedau

발행 전 운영자가 직접 큐레이션·검수·편집합니다.