핵심은 이겁니다
과거 성공 경험을 메모리에서 꺼내 쓸 때, 그대로 복사하면 오히려 성능이 떨어집니다. 현재 상태에 맞게 다시 쓰는 단계를 넣어야 실제로 도움이 됩니다.
MemHarness는 이 재구성 단계를 GRPO로 end-to-end 학습시키는 프레임워크입니다. 7B 모델로 GPT-4o를 넘어서는 결과를 보였습니다.
메모리 리플레이가 성능을 떨어뜨리는 경우
LLM 에이전트에 경험 메모리를 넣으면 성능이 올라갈 거라고 생각합니다. 근데 실제로는 반대가 될 때가 많습니다.
과거 궤적에서 추출한 추상적 전략을 현재 상태에 그대로 끼워넣으면, 환경이 다를 때 잘못된 행동을 유도합니다. ALFWorld에서 “컵을 사이드테이블에 놓아라”인데, 기억에 “신용카드를 커피테이블에 놓았다”가 있으면 에이전트가 혼란에 빠집니다.
논문은 이걸 verbatim replay의 한계라고 부릅니다. 검색은 관련된 것 같은데, 실행 맥락이 다르면 마이너스가 됩니다.

그림에서 위쪽이 기존 방식(검색 → 그대로 사용), 가운데가 인간의 방식(검색 → 평가 → 수정 → 사용), 아래가 MemHarness입니다.
구조: 검색 → 비판 → 재구성 → 행동
MemHarness는 세 단계로 동작합니다.
- 검색(Retrieval): 현재 관찰에서 메모리 뱅크를 쿼리해서 과거 경험을 가져옵니다
- 재구성(Reconstruction): 가져온 경험이 현재 상황에 맞는지 비교하고, 맞지 않는 부분을 고쳐 씁니다. 쓸모없으면
<EMPTY>를 반환합니다 - 행동(Action): 재구성된 가이드를 보고 실행 가능한 행동을 생성합니다

세 단계 모두 하나의 정책 모델(Qwen2.5-7B-Instruct)이 처리합니다. 재구성 단계를 위한 정답 데이터가 없기 때문에, GRPO로 end-to-end 학습시킵니다. 태스크 보상(성공하면 10, 실패하면 0)만으로 재구성 능력이 자연스럽게 나타납니다.
숫자: GRPO 대비 +8.8%, +9.5%
ALFWorld(가정환경 시뮬레이션)과 WebShop(온라인 쇼핑)에서 평가했습니다.
| 방식 | ALFWorld 성공률 | WebShop 평균 점수 |
|---|---|---|
| GPT-4o (few-shot) | 62.3% | 59.2 |
| Gemini-2.5-Pro | 69.2% | 50.4 |
| GRPO only (7B) | 76.4% | 70.6 |
| Mem0 + GRPO | 69.0% | 65.1 |
| SimpleMem + GRPO | 72.7% | 68.0 |
| MemHarness (7B) | 85.2% | 80.1 |
여기서 중요한 관찰이 있습니다. 순수 GRPO에 메모리를 그냥 끼워넣으면 성능이 떨어집니다. Mem0+GRPO가 GRPO only보다 7.4%나 낮습니다. 과거 경험을 무비판적으로 넣는 게 해가 된다는 뜻입니다.
MemHarness는 재구성 단계 하나를 넣어서 이 문제를 해결합니다. GRPO 대비 +8.8%, +9.5% 개선입니다.
7B 모델이 GPT-4o를 ALFWorld에서 +22.9%, WebShop에서 +20.9% 앞섭니다.
OOD에서 재구성의 가치
ALFWorld의 OOD 설정(학습에 없던 방 배치와 객체 위치)에서는 메모리 리플레이의 위험이 더 큽니다.
| 방식 | OOD 평균 성공률 |
|---|---|
| RL + Raw Memory | 76.3% |
| 재구성 없이 메모리 사용 | 82.4% |
| 메모리 사용 안 함 (순수 정책) | 83.0% |
| MemHarness | 85.9% |
재구성 없이 메모리를 넣으면(82.4%) 메모리를 아예 안 쓰는 것(83.0%)보다 못합니다. 재구성이 있어야 메모리가 의미가 있습니다.

학습 과정에서 메모리 사용이 진화한다
학습이 진행되면서 에이전트가 메모리를 쓰는 방식이 바뀝니다.

ALFWorld에서는 검색 횟수가 점점 줄어듭니다. 초기에는 자주 검색하다가 나중에는 에피소드당 2-3회로 수렴합니다. 필요할 때만 메모리를 찾는 학습이 된 거죠.
WebShop에서는 검색을 계속 자주 하되, 거절(reject) 비율이 일정하게 유지됩니다. 환경 특성에 맞게 다른 메모리 전략을 학습합니다.

수용(accept)된 재구성이 포함된 궤적의 성공률이 거절(reject)된 궤적보다 일관되게 높습니다. 에이전트가 의미있는 판단을 하고 있다는 증거입니다.
재구성이 실제로 하는 일
소스 상태(source observation)를 빼면 어떻게 되는지 확인했습니다.
| 설정 | ALFWorld | WebShop |
|---|---|---|
| 전체 (osrc 포함) | 85.2% | 80.1 |
| osrc 제거 | 80.0% | — |
| osrc를 무작위로 교체 | 거절률 8.7% → 13.3% | 거절률 56.0% → 63.3% |
소스 관찰을 주면 현재 상태와 비교해서 “이 경험은 지금 상황과 다르다”고 판단합니다. 무작위로 바꾸면 거절률이 확 올라갑니다. 필드 유무가 아니라 실제로 비교하고 있다는 뜻입니다.
더 실습해보고 싶은 분들께
정리
- 메모리 증강 에이전트에서 “검색 → 실행” 사이에 “평가 → 수정”을 넣는 것만으로 큰 개선이 가능합니다
- 이 재구성 능력은 태스크 보상만으로 end-to-end 학습됩니다. 별도 라벨이 필요 없습니다
- 7B 모델로 GPT-4o를 넘어서는 성능을 보였습니다
- 재구성 학습을 하면 메모리를 안 쓰는 추론에서도 기본 추론 능력이 올라갑니다 (83.0% vs 76.4%)