Experience-Following Paper review
How Memory Management Impacts LLM Agents: An Empirical Study of Experience-Following Behavior
https://arxiv.org/abs/2505.16067
Experience-Following은 Harvard, University of Georgia, Michigan State, University of Minnesota에서 같이 쓴 논문이다.
에이전트 메모리에 무엇을 넣고 무엇을 지우느냐에 따라 에이전트 행동이 어떻게 바뀌는지를 실험으로 잰다.
2025년 5월 21일에 나왔고 10월 10일에 v2가 올라왔다. 저자 8명, 21쪽이다.
앞의 일곱 편은 주로 메모리를 어떻게 저장하고 꺼낼지를 다뤘는데, 여기서는 무엇을 넣고 무엇을 지울지를 본다. 뒤에서 볼 서베이의 분류로 보면 Experiential memory이고, Dynamics 중에서는 formation이랑 forgetting에 해당한다.
결론부터 말하면 전부 넣으면 아무것도 안 넣는 것보다 못하다고 한다.
좀 더 자세히 알아보자.
1. Introduction
memory addition(추가)이랑 memory deletion(삭제) 두 가지 연산만 본다. 많은 에이전트 프레임워크가 쓰는 제일 기본적인 조작이다.
논문이 찾은 현상이 하나 있고, 거기서 문제가 두 개 나온다고 한다.
현상은 Experience-following property다. 태스크 입력이 검색된 메모리 레코드의 입력이랑 비슷하면, 에이전트 출력도 그 레코드랑 매우 비슷해진다.
여기서 나오는 문제 두 가지.
- Error propagation (오류 전파) : 과거 경험에 있던 오류가 쌓여서 미래 성능을 떨어뜨린다
- Misaligned experience replay (어긋난 경험 재생) : 겉으로는 제대로 된 실행이었는데, 경험으로 다시 쓰면 도움이 별로 안 되거나 오히려 잘못 이끈다
2. 실험 설계
에이전트 네 개를 쓴다. 하나는 통제용으로 만든 합성 에이전트고, 셋은 실제 에이전트다.
- RegAgent (합성) : 데모를 보고 선형 함수의 출력을 회귀로 근사
- EHRAgent : 전자의무기록 질의
- AgentDriver : 자율주행
- CIC-IoT Agent : IoT 네트워크
RegAgent는 입력 벡터 x랑 근처 입력에 대한 과거 추측들을 받아서 wᵀx를 맞힌다.
모델이 주어진 데모에만 기대는 상황을 일부러 만든 것이라고 한다. 이렇게 하면 저장된 메모리에 노이즈를 얼마나 넣을지 조절할 수 있고, 결과 오차도 바로 잴 수 있다.
백본은 대부분 GPT-4o-mini다.
추가 전략은 네 가지를 비교한다.
- Fixed : 메모리를 늘리지 않는 베이스라인
- Add all : 전부 넣음
- Coarse : 자동 평가기(C1/C2/C3)로 골라서 넣음
- Strict : 사람 평가 기준으로 엄격하게 골라서 넣음
3. 전부 넣으면 나빠진다
| 평가기 | RegAgent SR | 메모리 | EHRAgent ACC | 메모리 | AgentDriver SR | 메모리 | CIC-IoT ACC | 메모리 |
|---|---|---|---|---|---|---|---|---|
| Fixed | 67.53 | 100 | 16.75 | 100 | 40.11 | 180 | 71.50 | 50 |
| Add all | 55.48 | 4,100 | 13.05 | 2,411 | 32.32 | 2,125 | 59.90 | 1,050 |
| Coarse C1 | 63.18 | 3,511 | 26.19 | 1,447 | 36.92 | 1,161 | 74.00 | 1,030 |
| Coarse C2 | 65.78 | 3,347 | 32.21 | 1,467 | 40.01 | 1,119 | 68.80 | 936 |
| Coarse C3 | 67.35 | 3,139 | 34.66 | 1,094 | 47.37 | 1,285 | 79.50 | 952 |
| Strict | 70.95 | 2,938 | 38.50 | 1,012 | 51.00 | 1,178 | 85.40 | 904 |
표를 보면,
- Add all이 네 에이전트 전부에서 꼴찌다. RegAgent는 메모리를 41배(100 → 4,100) 늘렸는데 성능이 67.53 → 55.48로 떨어졌다.
- Fixed가 coarse 평가기 일부보다 낫다. RegAgent, AgentDriver, CIC-IoT에서 고정 메모리가 C1·C2보다 낫거나 비슷하다. 노이즈가 있거나 품질이 낮은 걸 추가하면 메모리가 오히려 손해가 된다고 한다.
- Strict가 네 에이전트 전부에서 제일 좋다. 품질 좋은 레코드만 골라서 늘리면 좋아진다.
그래서 장기 성능은 실행 품질이랑 메모리 크기가 같이 정한다고 한다.
-> 크기만 키우는 건 손해라는 얘기다.
4. Experience-Following
질의마다 검색된 메모리 레코드와의 입력 유사도, 출력 유사도를 둘 다 재고, 질의 스트림 전체에 대해 누적 평균을 낸다.
고정 메모리 베이스라인은 입력 유사도도 출력 유사도도 둘 다 낮다. 반면 추가하는 방법들은 입력 유사도가 커질수록 출력 유사도도 높아진다고 한다.
이 상관관계를 experience-following이라고 부른다. GPT-4o나 DeepSeek-V3처럼 백본을 바꿔도 같은 패턴이 나온다고 한다.
해석은 이렇다. 지금 질의가 과거 예시랑 비슷할수록 에이전트는 검색된 경험을 더 그대로 따라 한다. 메모리가 커져서 경험이 다양해질수록, 새 질의랑 아주 비슷한 레코드가 검색될 확률도 커진다.
-> 좋은 경험을 넣으면 그대로 따라 하고, 나쁜 경험을 넣어도 그대로 따라 한다는 것이다.
4.1 오류 전파
잘못됐거나 노이즈가 섞인 레코드가 데모로 검색되면 지금 실행에 영향을 준다. 그 실행이 다시 메모리에 저장되면 오류가 다음 태스크로 넘어간다.
이걸 보려고, 추가 전략마다 검색 예시는 똑같이 쓰고 LLM 실행만 정답 출력으로 바꾼 “오류 없는 버전”이랑 비교한다.
두 에이전트 모두 오류 없는 버전보다 바로 성능이 벌어진다고 한다. 그리고 실행이 계속될수록 add-all이랑 coarse selective addition은 그 차이가 더 커진다.
예외는 AgentDriver의 strict selective addition 하나다. 처음엔 뒤처지다가 점점 따라잡는다.
나중에 볼 Rate-Distortion 리뷰의 반복 압축 실험에서는 요약이 요약을 낳으면서 사실을 잃는데, 여기서는 오류가 오류를 낳는다.
-> 메모리를 다시 쓰는 루프에서는 손실이 계속 쌓이는 것 같다.
5. 삭제
삭제 전략은 세 가지다.
- Periodical : 주기적으로 지움
- History-based : 이후 실행 기록을 보고 지움
- Combined : 둘을 합침
| 전략 | RegAgent SR | 메모리 | EHRAgent ACC | 메모리 | AgentDriver SR | 메모리 | CIC-IoT ACC | 메모리 |
|---|---|---|---|---|---|---|---|---|
| No del | 70.95 | 2,938 | 38.67 | 1,012 | 51.00 | 1,178 | 85.40 | 904 |
| Period | 67.65 | 949 | 38.59 | 302 | 50.94 | 467 | 80.80 | 310 |
| History | 69.80 | 2,286 | 42.06 | 784 | 51.81 | 846 | 89.60 | 788 |
| Combined | 66.58 | 890 | 42.34 | 248 | 49.97 | 323 | 85.50 | 188 |
(strict 평가기 기준)
- 주기적 삭제는 메모리를 많이 줄이는데 성능은 조금만 떨어진다. RegAgent에서 메모리 2,938 → 949(68% 감소), 성능 70.95 → 67.65다. 추가만 하는 메모리는 중복 항목이 많이 쌓인다고 한다.
- History-based 삭제는 성능이 오른다. EHRAgent 38.67 → 42.06, CIC-IoT 85.40 → 89.60. 지웠는데 좋아졌다.
- Combined가 메모리를 제일 많이 줄인다. EHRAgent에서 1,012 → 248(75% 감소)인데 성능은 42.34로 제일 높다.
5.1 왜 지우면 좋아지나
어떤 레코드는 도움이 별로 안 되거나 해로운 안내를 준다는 가설이다. 처음에 평가기 필터를 통과했더라도, 지금 태스크 분포랑 맞지 않을 수 있다고 한다.
어긋나는 원인은 두 가지를 든다.
- 저장된 궤적이랑 지금 실행 맥락이 안 맞음
- 평가기가 완벽하지 않아서 들어온 오류
RegAgent에서는 이걸 직접 볼 수 있다. 예측값이랑 정답값 차이로 레코드 품질을 잴 수 있기 때문이다. 삭제된 레코드랑 남은 레코드의 KDE 곡선을 그리면 품질 차이가 뚜렷하게 난다고 한다.
그래서 논문은 미래 태스크의 평가 결과가 저장된 메모리의 품질 라벨이 될 수 있다고 한다. 추가 비용 없이.
-> 넣을 때는 좋은 레코드인지 모르지만, 나중에 그 레코드가 검색됐을 때 결과가 어땠는지 기록해두면 라벨이 저절로 쌓인다는 것 같다.
6. 어려운 상황
먼저 태스크 분포 변화. EHRAgent랑 AgentDriver의 테스트셋 순서를 바꿔서 중간에 분포가 바뀌게 만든다.
결과가 갈린다. AgentDriver에서는 history-based가 분포 변화가 없는 버전보다도 좋았는데, EHRAgent에서는 history-based가 combined보다 못했다.
분포가 바뀌는 실제 상황에서는 단순한 주기적 삭제가 성능을 안정시키는 데 도움이 될 수 있다고 한다.
-> 분포가 바뀌면 “예전에 결과가 좋았던 레코드”라는 기준이 흔들리니까 그런 것 같다.
다음은 자원 제약. 메모리 용량을 초기 크기(EHRAgent 100, AgentDriver 180)로 고정한다. 주기적 삭제를 먼저 하고, 그래도 넘치면 평균 효용이 제일 낮은 레코드 하나만 지우도록 combined 정책을 바꾼다.
이렇게 하면 고정 메모리 버전보다 성능이 높다고 한다. 저장 공간이 작아도 관련 있고 품질 좋은 레코드만 남기면 된다는 것이다.
7. 지금 관점: FIFO 삭제를 쓰고 있다면
앞의 논문들이 저장 구조를 다뤘다면 이 논문은 저장 정책을 다룬다.
경험 메모리를 붙일 때 제일 흔한 첫 구현이 “일단 다 넣자”인데, Add all이 Fixed보다 못하다는 게 네 에이전트에서 다 나왔다.
평가기 차이도 크다. Coarse(C1) 63.18이랑 Strict 70.95가 7점 차이다.
-> 무엇을 넣을지 거르는 평가기를 대충 만들면 메모리를 붙인 의미가 없을 것 같다.
5.1의 공짜 품질 라벨은 바로 해볼 수 있을 것 같다. 레코드마다 검색된 횟수랑 그때 결과를 기록하고, 검색됐는데 태스크가 실패한 레코드는 후보에서 내리는 식이다. LLM 호출이 더 필요 없다.
삭제 정책은 상황마다 다르다. 분포가 안정적이면 History-based가 성능이 제일 좋았고, 분포가 바뀌면 Periodical이나 Combined가 안정적이었고, 저장 공간이 작으면 Combined에 최저 효용 하나씩 지우는 방식을 썼다.
주기적 삭제는 메모리를 68~75% 줄이면서 성능 손실이 3점 이내다.
-> 그만큼 중복이 쌓인다는 뜻인 것 같다. FIFO로 오래된 것만 지우고 있었다면 이 정도는 거의 손해 없이 얻을 수 있는 셈이다.
뒤에서 볼 Anatomy 리뷰는 full-context와 비교할 때의 ∆ 문제를 따지는데, 여기서는 같은 시스템에서 정책만 바꿔가며 재기 때문에 그 문제가 없다.
8. Conclusion
conclusion 부분을 보면, 추가와 삭제로 에이전트 메모리 관리를 연구했고, experience-following 현상과 거기서 나오는 두 문제(오류 전파, 어긋난 경험 재생)를 보였다고 한다.
그리고 평가기를 얼마나 믿을 수 있느냐가 결정적이고, 메모리 관리에 평가기 신호를 같이 써야 한다고 한다.
논문이 밝힌 한계는 두 가지다.
- 추가와 삭제 두 연산만 본다. 구조 변환, 병합, 요약, 반성 같은 더 복잡한 방식은 뺐다. 그런 갱신 방식을 쓰는 시스템에도 결론이 맞는지는 추가 분석이 필요하다
- 실험으로만 보였고 이론적인 증명은 없다
앞에서 본 Mem0(UPDATE/DELETE), Zep(무효화), A-MEM(진화)은 전부 “더 복잡한 방식” 쪽이다.
-> 이 결론이 그쪽에도 그대로 맞는지는 모르겠다. 다만 experience-following은 백본을 바꿔도 나오는 성질이라, 무엇을 남기느냐가 행동을 바꾼다는 건 그대로일 것 같다.
여태까지 나온 메모리 논문들이 어떻게 저장하고 꺼낼지를 봤다면, 이 논문은 무엇을 넣고 지우느냐가 에이전트 행동을 바꾼다는 걸 실험으로 보여준다.
다음은 What Deserves Memory(NEMORI)다. 무엇을 남길지를 중요도 점수가 아니라 “예측 실패”로 정하는 논문이다.
Leave a comment