TL;DR
- MEM = 언어 메모리(장기, 자연어 요약 m_t를 매 chunk 재작성·압축) + 비디오 메모리(단기 ≤54s). 고수준 정책이 (o_t, m_t, g) → (l_{t+1}, m_{t+1}).
- 우리 rf-v2: 골격(이전 메모리+관측 → 갱신 메모리+다음 행동 예측)은 같지만 append-only(청크당 1줄 누적, 재작성 0) — 논문이 "significantly worse"라고 한 naive 연결 baseline에 더 가깝다.
- rf-v2 붕괴(loc 0.235, 기권 45%)의 직접 원인(방 이름 누락, distractor 부재, 노트 비대)은 정확히 "재작성·압축 없음"의 귀결.
- → rf-v3 (MEM-faithful): 매 청크 전체 요약 재작성 + NEXT. 읽기는 요약 텍스트만(단기 비디오 메모리는 공유 관측이라 생략). 표기 "MEM-style language memory (prompted, task-agnostic, text-only read)".
1 MEM 메서드 (원문 근거)
언어 메모리 예: "I placed a plate in the cabinet and moved to the counter."
→ "I placed a plate in the cabinet, moved to the counter, and picked up a bowl."
쓰기: π_HL(o_t, m_t, g) → (l_{t+1}, m_{t+1}); "remove or compress information in the language memory whenever appropriate"
예: "I placed three bowls in the top right cabinet"; "Discarding failed attempts … reduces distribution shift"
읽기: π_LL(최근 K 프레임 ≤54s, m_t, g, l_{t+1})
학습: π0.6 (Gemma3-4B) + LLM 생성 요약 데이터; 프롬프트 원문 미공개
ablation: "Naive language memory (이전 subtask 지시문 단순 연결) works significantly worse than our model-predicted summaries"
2 대조표
| 축 | MEM | 우리 rf-v2 | 판정 |
| 언어 메모리 = 로봇이 한 일의 자연어 기록 | ✔ | ✔ NOTE 라인 | 일치 |
| 갱신 입력 = 이전 메모리 + 현재 관측 | m_t + o_t | notes so far + 청크 4프레임 | 일치 |
| 다음 행동 예측 동시 출력 | l_{t+1} | NEXT (미사용) | 일치 |
| 갱신 방식 | m_{t+1} 통째 재작성·압축 | append-only, 재작성 0 | 불일치 (핵심) |
| 실패 시도 처리 | 요약에서 제거 | 기록/오기록 혼재 | 불일치 (부차) |
| 과제 목표 g 조건화 | 쓰기 시 제공 | 없음 — 질의는 사후 | 의도적 차이 (task-agnostic, 명시) |
| 단기 비디오 메모리 ≤54s | ✔ | 질의 시 마지막 1프레임 | 불일치 (find엔 영향 작음) |
| 갱신 주기 | action chunk | 세그먼트 (편당 12~24) | 근사 일치 |
| 모델 | 학습된 VLA | 프롬프트된 API VLM | 재현 층위 차이 |
판정: 현 rf-v2를 "MEM"으로 부르면 논문이 baseline으로 깎아내린 방식을 MEM으로 소개하는 셈. v1 실측 노트(편당 12~24줄·80자, GT 방 언급 34%, distractor 언급 17%)가 그 귀결.
3 MemER (arXiv 2510.20328) 대 vis-pure
MemER: fine-tuned Qwen2.5-VL-7B가 매 timestep (최근 8프레임, 과제 지시, 이전 키프레임 K_t)를 받아 (subtask, 후보 키프레임)을 출력, 클러스터링으로 대표 프레임 선택, |K_t| ≤ 8, 버리기 메커니즘 없음(한계로 명시). vision-only 키프레임이 text+vision보다 우수.
| 축 | MemER | vis-pure | 판정 |
| VLM이 고른 키프레임 집합, 이전 키프레임 되먹임 | ✔ | ✔ m_i + F_j → KEEP | 일치 |
| 메모리 예산 | |K_t| ≤ 8 | cap 8 | 일치 |
| 선택 주기·후보 | 매 timestep, 최근 8 | 세그먼트당, 청크 4 | 근사 |
| 버리기 | 없음 | DROP + 축출 | 우리가 추가 (필수) |
| 과제 조건화 / 모델 | ✔ / fine-tuned | ✗ / prompted | 의도적 차이 |
vis-pure = "MemER-style keyframe memory (prompted, task-agnostic, +drop)" — 핵심 아이디어 일치, cap 8은 MemER 예산과 동일.
4 rf-v3 구현 · 카나리아 · 런
prompts/rollforward_v3.txt — 매 청크: MEMORY(전체 요약 재작성·압축, 물체별 최신 위치, 본 물체 기록) + NEXT
rollforward.ingest_rewrite: m_t + 청크 4프레임 → m_{t+1} (history 보존) · rewrite_memory_turns: 최종 요약 텍스트만 (최근 54s 프레임은 공정성 위반이라 제거 — 질의 시점 관측은 전 전략 공통 1장)
tests/eval/test_rollforward_v3.py 5개 통과
카나리아 (flash, train_1299__2, 19청크, $0.154) — 최종 메모리 555자 단일 요약 (v2: 19줄 누적):
"…noted objects on the dining table (house plant, cup, bowl, …), kitchen countertop (…), light wood dresser (watch,
credit card; vase on floor nearby), dark dresser (house plant, cell phone), toilet (…). Previously, I moved a cell phone
to the dark dresser, an irish potato to the kitchen countertop, and a tomato to the dining table. In this clip, I placed
the pen from the dining table onto the toilet lid."
질의 1/6 (pen→bathroom/toilet ✓). 실패: remote control→"cell phone" 오인식(hidden 기권) · 낙하 cup→"dining table" 오기록 · pen/pencil 혼동
런: 98727 v1final_flash_rfv3(오늘, ≈$15 → 오늘 누적 ≈$88) · 98728 v1final_sonnet_p1(blind/textlog/frames/rf-v2/rf-v3, 21:00 UTC) · 97370 p2(vis-pure/tagmem). 내일 ≈$87. rf-v2는 MEM 논문의 naive-연결 ablation 행으로 유지.
5 Next
rf-v3 (MEM-faithful): 청크마다 전체 메모리 요약을 재작성(압축·통합·실패 정리) + NEXT 유지 + 읽기 시 최종 요약 + 최근 ≤54s 프레임 2~3장. 비용 rf-v2와 동급(≈$10/100편 flash). 결정: 오늘 21:00 UTC 예약된 sonnet p1(rf-v2 포함)을 rf-v3로 교체할지, 둘 다 둘지.