Index
2026-09-03 — Plan

Restore ② 설계 확정 — 클래스 유일성 실측 + Stateful 혼합안 채택

scene_bench | Task 격자: Restore Direct②/Stateful② 셀

TL;DR

84%
후보 물체 클래스 유일(평균)
8%
find_distractor 쌍둥이율
23%
find_target 쌍둥이율
N→1
재목격 비용 절감

1 배경 / 목적

260903-restore2_two_sightings.html에서 제안한 Restore② 초안("심기 초반 A에서 목격 → 못 본 세계 변화로 B 이동 → 재목격 → 로봇 앞 teleport → '처음 있던 자리로'(정답 A·미끼 B)")은 find distractor와 정확히 같은 관측 이력·같은 정답 구조를 갖는다는 지적을 받았다. 여기에 더해 사용자가 두 가지를 질문했다: ① 안 볼 때 옮겨진 물체가 같은 물체인지 다른 물체인지 로봇이 판단 가능한가(정체 문제) ② 대안으로 "컨텍스트는 그대로, 끝난 상태에서 그 물체(distractor)를 로봇 앞에 두고 '원래 자리로' 시키면?"이라는 더 단순한 안이 낫지 않은가.

기존 한계: 단순 teleport 안은 생성 비용이 낮고 정체 문제도 해결하지만, 컨텍스트에서 물체가 한 곳에만 있었다면 기억할 사실이 "마지막 본 위치" 하나뿐이라 find distractor(동사만 pick→place로 바뀜)와 메모리적으로 중복된다.

2 작업 내용

정체 문제 해법: Restore②를 클래스 유일 물체로 제한(twin_nearby/twins 필드로 필터 가능 — find distractor도 같은 제한 사용). 이 제한이 데이터에 얼마나 손실을 주는지 v1 find 584행으로 직접 실측했다.

실측 대상: HF v1 find 584행 (target 293 · distractor 291) find_target: 쌍둥이 있는 답 67/293 (23%) — 질의가 "the vase I moved earlier"로 로봇 행동에 정체를 고정(① 유형의 해법) find_distractor: 쌍둥이 있는 답 22/291 (8%) → n_candidates 2~3인 행은 같은 클래스 어느 인스턴스든 정답 인정(any-instance)으로 정체 문제를 우회 — 유일성 필터가 아니라 채점 규약으로 해소 후보 물체 풀(편당 100개 컨텍스트): 클래스 유일 비율 중앙값 100%, 평균 84% → 유일성 필터의 손실은 평균 16%, 중앙값 0%

Restore② 정체 처리 3안 비교

안내용장단
(a) 유일 클래스 필터②는 클래스 유일 물체만손실 작음(평균 16%·중앙 0%), 의미 엄격. find distractor 92%가 이미 무쌍둥이
(b) any-instance (find 방식)쌍둥이면 "같은 클래스 인스턴스들의 첫 위치 집합"이 정답, 최근 목격 B는 오답쌍둥이 집 안 버림. 핵심 변별(최근 위치 거부)은 유지, 의미는 느슨
(c) 인스턴스 구분에셋 해시 다른 쌍둥이만 허용, 로봇 앞 물체의 외형으로 매칭시각 메모리 필수 → 텍스트 로그 불리, 난이도↑. 층화 태그로만 사용

권고: (a) 기본 + (b) 폴백 (find와 동일 규약). (c)는 층화 태그로만 남긴다.

Stateful② (multi-object) 설계 진화

기본형(바뀐 물체 2~3개를 로봇 앞에 모아 "각각 처음 자리로")도 검토했으나, 같은 클래스 묶음 + 집합 채점(컵 3개 A1·A2·A3 → 이동 → "컵들을 처음 자리로" 정답 = 위치 집합 {A1,A2,A3}, 인스턴스↔자리 대응 불문)이 단일 Restore②에는 없는 해법을 제공한다는 걸 발견했다. 하지만 진짜 비용은 재목격 N회(못 본 이동 후 로봇 동선이 각 물체를 다시 지나야 함)이고, 이게 보장 안 되면 "find distractor의 multi place 판"으로 퇴화한다.

최종 채택안 — 두 번 본 물체 1개 + 한 번 본 물체 여러 개 혼합 (사용자 제안)

Restore① multi가 이미 n_hops 혼합(1회/2회 이동)으로 구성돼 있다는 데 착안 — ② multi도 같은 꼴로 구성: 세계가 옮겨 두 번 본 X(n_hops=2, 정답 A·미끼 B) 1개 + 한 번 본 Y·Z(n_hops=1, 정답=본 자리)를 끝난 상태에서 로봇 앞에 모아 "각각 처음 있던 자리로" 지시. 재목격 비용이 행당 N회 → 1회로 줄어든다.

핵심 결정: 신규 스키마 없이 기존 n_hops/other_origins 필드로 표현 가능. 진단 효과도 확인됨 — 행 내에서 "마지막 본 곳" 휴리스틱 모델은 2/3만 맞고(X를 B로 착각), restore 기억을 쓰는 모델만 3/3. 진행 추적(Stateful 요소)은 전 물체에 걸린다.

3 결과 (수치)

지표값의미
find_target 쌍둥이 보유율67/293 (23%)질의문이 로봇 행동으로 정체를 고정 — Direct① 유형의 해법
find_distractor 쌍둥이 보유율22/291 (8%)any-instance 채점 규약으로 정체 문제 대부분 우회됨
후보 물체 풀 클래스 유일 비율중앙 100% · 평균 84%(a) 유일 클래스 필터를 적용해도 평균 손실 16%, 중앙값 손실 0%
Stateful② 재목격 비용행당 N회 → 1회혼합안(두 번 본 1개 + 한 번 본 다수)이 재목격 스케줄 부담을 결정적으로 낮춤
조건 3가지(혼합안 성립 조건): ① 행당 두 번 본 물체 ≥1(0이면 find distractor multi place로 퇴화) ② 전 물체 로봇 미접촉(개입 중 로봇이 옮겼으면 Direct① 출처로 분류) ③ 정체 규칙은 X(두 번 본 물체)에만 적용(클래스 유일 또는 같은 클래스 묶음 집합 채점), Y·Z(한 번 본 물체)는 any-instance.

4 Takeaway

의미

이걸로 Task 격자(4가족 × Direct/Stateful)의 마지막 미확정 셀 중 하나였던 Restore②(Direct·Stateful 둘 다)가 구체적인 생성 스펙까지 확정됐다. 핵심은 "재목격"이라는 새로운 생성 장치를 최소 비용(행당 1회)으로 넣으면서도, find distractor와의 메모리적 중복을 완전히 해소했다는 점 — Restore의 본질("그 전엔 어디였나")을 Restore②에서도 지켜냈다. 데이터 생성팀에 넘길 수 있는 수준의 스펙(스키마 재사용, 조건 3개)이 나왔으므로 다음 병목은 순수하게 생성 파이프라인 쪽(재목격 동선 스케줄링) 확인으로 옮겨간다.

5 Next Steps

미해결 한계

재목격(못 본 이동 후 로봇 동선이 B를 경유)이 생성기 일정상 항상 보장되는지가 아직 확인되지 않았다. 이는 우리 통제 밖(데이터 생성팀)의 문제다. 보장 안 되는 편이 많으면 혼합안의 "두 번 본 물체 ≥1" 조건을 만족하는 행 자체가 줄어 Stateful② 표본 크기가 작아질 위험이 있다.

다음 실험

① 데이터팀에 두 가지 확인 요청: 세계 이동 후 재목격 동선 스케줄 가능 여부, 편당 유일 클래스 물체 후보 수(② 생성 가능 편 비율 추정용). ② 재목격 보장이 안 되는 경우의 폴백 경로 확정: "place 동사의 find distractor"로 명명하고 Restore②는 비워둔 채 격자 로직은 무손상으로 유지. ③ Resume②(외부 진행 유닛)도 "두 시점 상태 목격"이라는 동일 원리로 설계 가능 — 260902 로그(claude/260902) 참조해 후속 설계 착수.