다자 대화 기억의 발화자 귀속과 상태 재구성을 위한 이중 트랙 메모리

SpeakerMem-R1: Speaker-Centered Dual-Track Memory for Multi-Party Dialogue

HF Daily2609.26780

Haobo Zheng, Tan Tang, Yan Chen2026-09-22조회 9

무엇인가

이 논문은 다자간 장기 대화에서 언어 에이전트가 기억을 어떻게 저장하고 검색해야 하는지를 다룬다. 기존 메모리 연구는 주로 단일 사용자나 두 사람 대화를 대상으로 했지만, 그룹 채팅에는 발화자 관계, 답글 구조, 주제 분기, 상태 수정이 섞여 있어 메시지를 시간순으로 평탄화하거나 요약하는 방식으로는 한계가 있다. 저자들은 GroupMemBench, SocialMemBench, EverMemBench 같은 최근 벤치마크에서 범용 LLM 메모리 시스템이 인물·그룹 관계를 잃거나 구성원·그룹·시간에 흩어진 단서를 통합하지 못한다고 지적한다. 그래서 문제를 두 가지로 정리한다. 하나는 누가 무엇을 말했고 그 내용이 누구에 관한 것이며 개인 정보인지 공유 정보인지를 구분하는 메시지 귀속이고, 다른 하나는 여러 구성원과 그룹, 시간에 분산된 단서로 현재 또는 과거 상태를 복원하는 상태 재구성이다. 단순 관련성 검색은 저빈도 구성원이나 올바른 분기를 후보에 넣는다는 보장이 없고, 요약·사실 집계·일반 메모리 그래프는 출처와 소유자, PERSON/GROUP 범위, 상태 버전을 잃을 수 있다고 본다.

어떻게 동작하나

제안 시스템 SpeakerMem-R1의 핵심은 추적 가능한 이중 트랙 메모리다. System 1은 유일한 원문 계층으로 각 메시지를 텍스트, 발화자, 시간, 채널과 함께 저장한다. System 2는 파생 상태를 담는 4개 계층 구조로, PERSON 범위의 Core(안정적 정체성, 사실, 입장, 반복 행동)와 Profile(한 사람 또는 사람 간 인식에 대한 관찰), GROUP 범위의 Interaction(발화자 간 사건, 관계, 결정)과 Insight(그룹 규범, 합의, 예외)로 나뉜다. 각 파생 레코드는 내용 x, 출처 src, 소유자 own, 범위 scope, 사건 event, 시간 time, 상태 state, 출처 참조 ref를 갖는다. src와 own을 분리해 정보를 제공한 사람과 그 내용이 대상으로 하는 사람을 구분하고, from_ids로 모든 파생 레코드를 근거 메시지에 연결한다. 쓰기 단계에서 Writer는 로컬 메시지 구간과 명단, 현재 System 2 상태를 읽고 Add, Update, Noop 중 하나를 반환한다. 결정적 코드가 이를 검증하고 출처를 붙여 System 2에 쓴다. Update는 기존 entry_id를 인용해 새 노드를 덧붙이되 소유자, 출처, 계층 좌표를 재사용하고, links와 superseded_by로 상태를 연결해 역사를 덮어쓰지 않는다. 이 구조가 head 질의와 full 질의를 모두 지원한다.

무엇과 다른가

질의 시점에는 Project가 질의와 결정적 명단을 공통 제약 Q_q=(rows(q), issue(q), mode(q), scope(q))로 컴파일한다. rows(q)는 다룰 PERSON/GROUP 행, issue(q)는 사건 제약, mode(q)는 head 또는 full의 시간 모드, scope(q)는 출처-소유자 제약이다. 예를 들어 모든 사람은 전체 명단 행으로 확장되고, 최종 결정은 GROUP 행을 선택하며, Alice가 Bob을 어떻게 보는지는 source=Alice, owner=Bob으로 고정된다. System 1은 원문 트랙에서 정확한 표현과 국소 문맥을 검색하고 필요하면 Expand로 이웃 메시지를 확장하며, Sufficiency/ASK로 한 번의 보충 검색을 수행한다. System 2는 rows(q)에 따라 PERSON/GROUP 행을 확장한 뒤 각 행 안에서 issue, relation, event, time으로 레코드를 고른다. 논문은 이를 C_p(q) = {r in M_der: own(r)=p, match(r,q)=1}와 V_q[p] = Temporal_mode(q)(Select(C_p(q)))로 표현한다. 두 검색 경로는 독립 예산을 쓰고, 파생 행이 비면 해당 인물의 원문 메시지로 폴백하며, 그래도 증거가 없으면 명시적 빈 행을 남긴다. 마지막으로 Anchor–Separate–Resolve–Compose가 출처·소유자·사건·시간·출처 증거를 유지하고, 명단에서 PERSON/GROUP 행을 분리하며, 각 행에서 이슈와 병렬 사건, 현재와 과거 버전을 구분한 뒤 인물·관계·업데이트 체인을 따라 증거를 구성해 고정된 답변 모듈에 넘긴다.

어떻게 쓰나

Writer 훈련은 시스템 수준에서 모델에 독립적이지만, 논문은 비싼 프롬프트 기반 Writer를 로컬 배포 가능한 소형 모델로 대체하는 실험을 따로 한다. Qwen2.5-3B의 Add/Update/Noop 결정만 RL로 훈련하고 System 1 쓰기, 질의 구성, 답변은 고정한다. 구조 신호로 SpeakerLevenshtein을 쓰는데, 이는 표준 편집 거리가 아니라 토큰 수준 F1과 정규화된 시퀀스 매칭률을 결합한 것이다. 소유자 버킷 안에서 좌표 일관성 있는 일대일 매칭을 수행해 개인 레코드, GROUP 레코드, 사람 간 관찰이 서로 상쇄되지 않게 하고 누락과 과잉 쓰기를 벌점화한다. 국소 구조 포텐셜은 Φ_SL(M,M*) = w1*(1/|P|)Σ_p F_p + w2*min_p F_p이며 w1=0.80, w2=0.20을 쓴다. 매크로 평균 항은 전체 상태를 보고, 최악 소유자 항은 빈번한 인물이 희귀 인물이나 GROUP을 가리지 않게 한다. Speaker-conditioned GRPO는 정렬된 쓰기 위치를 비교해 소유자 수준 상태 점수와 최종 QA 이득을 함께 쓴다. 국소 신호는 UPDATE 전이와 구조적 유효성을 평가하고, 전역 신호는 같은 System 1 증거에서 R_g^QA = QA(System1+System2; M_g,T) - QA(System1; M_g,T)로 System 2의 이득을 측정한다. 쓰기 위치 t의 반환은 r_g,t = w_valid R_valid + w_mem R_mem + P_g,t + w_QA γ^{T-1-t} R_g^QA이고 γ=0.95, 가중치는 w_valid=0.20, w_mem=0.45, w_QA=0.35다. 같은 네트워크에 여러 궤적을 샘플링하고 같은 쓰기 위치에서만 그룹 상대 이점을 계산해 clipped GRPO로 업데이트하며, 그룹 내 변화가 없는 위치는 업데이트에서 제외한다.

전제와 한계

실험은 GroupMemBench 745문항, SocialMemBench 1,031문항, EverMemBench 2,400문항에서 BM25, dense retrieval, Mem0, A-MEM, HippoRAG, 가능한 경우 Full context와 비교한다. LoCoMo 1,986문항은 두 사람 장기 대화 경계 테스트로 쓴다. 주요 지표는 문항 수준 이진 정확도이고 보조로 token-F1을 보고한다. SpeakerMem-R1은 GroupMem, SocialMem, EverMem에서 각각 47.9%, 69.2%, 61.9%의 최고 정확도를 낸다. 각 벤치마크에서 Full context를 제외한 주류 베이스라인 최고치는 44.6% BM25, 56.8% A-MEM, 52.5% BM25였고, SpeakerMem-R1은 각각 3.3, 12.4, 9.4 퍼센트포인트 높다. Full context는 SocialMemBench에서만 가능했고 그 결과 69.4%로 SpeakerMem-R1의 69.2%와 거의 같았다. SocialMem에서 전체 시스템은 MeanQ/MeanN 0.710/0.693, 네트워크 수준 95% 신뢰구간 [0.659,0.726]을 기록했다. EverMind-AI가 공개한 EverMemBench 리더보드에서는 GPT-4.1-mini/Gemini-3-Flash 구성으로 2,400문항 중 1,496문항을 맞혀 62.33%를 기록했고, EverOS 약 60.08%, RippleMem 54.75%보다 높았다. 다만 Single, Const, Proact, Update는 강했지만 Multi, Skill, Role은 약해 교차 증거, 선호, 역할 귀속 병목이 드러난다. EverMem 개방형 질문에서는 BM25가 27.0%인 반면 SpeakerMem-R1은 40.0%로 13.0포인트 높다. 논문은 이진 정확도와 token-F1이 단조롭지 않다고도 밝힌다. 전체 시스템은 SocialMem에서 어떤 변형보다 정확도가 낮지만 token-F1은 32.7 대 27.4로 더 높은데, 여분의 인물이나 잘못된 범위가 겹치는 답변을 무효화할 수 있기 때문이다.

절제 실험에서는 두 트랙 중 하나를 제거하면 세 벤치마크 모두 정확도가 떨어지고, 발화자별 레코드나 그룹 레코드만 남겨도 성능이 저하된다. ASK를 끈 SpeakerMem-R1*은 GroupMem/SocialMem/EverMem에서 47.0/69.2/60.5%를 얻어 ASK를 켠 47.9/64.9/61.9%와 비교된다. 보충 검색은 GroupMem과 EverMem에서 흩어진 단서를 회수하지만 SocialMem에서는 중복 증거를 더할 수 있다. 통제 평가는 10개 홀드아웃 SocialMem 네트워크의 305문항에서, ASK 없는 주 구성(System 1 recall-n=40, 최종 top-k=10, System 2 k=2/source-k=1)으로 진행된다. Qwen2.5-3B Writer-R1은 68.20±0.66%를 기록해 SFT의 57.38±0.33%보다 10.82퍼센트포인트 높고, 33문항을 더 맞힌다. 같은 프로토콜에서 LLM Writer 참조는 71.48±0.66%(218/305)로 R1보다 3.28포인트 앞서며, R1은 LLM Writer 정확도의 95.4%에 도달한다. LoCoMo에서는 70.85%(1,407/1,986)를 기록했지만 다중 홉과 개방형 질문은 여전히 약하다.

개발자 관점에서 이 논문은 다자 대화 에이전트, 그룹 비서, 사회 시뮬레이션, 장기 메모리에서 발화자 귀속과 개인·그룹 범위가 중요한 경우에 참고할 만하다. 실무 설계로 가져갈 핵심은 원문 메시지를 발화자·시간·채널과 함께 그대로 보존하는 트랙과, 출처·소유자·범위·사건·시간·상태·참조를 갖는 파생 구조 트랙을 분리하는 것이다. 업데이트는 기존 항목을 덮어쓰지 않고 superseded_by 같은 연결로 이력과 현재 head를 함께 남기며, 질의 시점에는 rows, issue, mode, scope 제약으로 증거를 재구성해야 한다. Writer만 RL로 훈련해 로컬 소형 모델이 LLM Writer에 근접할 수 있다는 결과도 실용적이다. 다만 이 시스템은 신뢰할 수 있는 명단과 발화자·출처 메타데이터, 시간 식별을 전제로 하므로, 실제 서비스에서는 별칭, 멤버십 변경, 암시적 청중, 병렬 사건을 어떻게 처리할지 먼저 점검해야 한다. 또한 벤치마크별로 정확도와 token-F1이 다르게 움직이고, Multi·Skill·Role 같은 유형이 약하므로 자체 데이터에서 귀속·범위·교차 증거 오류를 따로 측정하는 것이 좋다.

저자들이 밝힌 한계는 분명하다. 시스템은 신뢰할 수 있는 명단, 출처/소유자 귀속, 시간 식별을 가정하며 별칭, 멤버십 변경, 암시적 청중, 병렬 사건은 여전히 어렵다. 향후 과제로 구성과 검색 비용 절감, 교차 증거 추론, 개방형 QA, 도메인과 언어 전반의 일반화를 든다. 또한 넓은 RL 일반화, 전체 구성원 커버리지, 교차 증거 추론, 메모리 외부 지식은 열린 문제로 남는다. 305문항 통제 실험의 RL 개선은 특정 프로토콜에서의 결과이지 광범위한 교차 도메인 RL 일반화의 증거는 아니라고 논문은 선을 긋는다.

관련 논문