Index
2026-10-06 — Analysis · 최종 종합

Zero-WAM RoboTwin 검증 최종 종합 (9/9 ~ 10/4)

Zero-WAM (arXiv 2608.26103) · 자체 재현 ZW w/o pretrain · 텍스트 전용 쌍둥이 · 공개 full ZW · 자체 LingBot-VA

TL;DR

+29.5 → +6.2
헤드라인 격차 (pp)
+6.1pp
demo 효과 (짝 비교)
88%
이득 중 잡기·놓기
+92.5pp
좌/우를 정한 장면 효과
0/103
언어 좌/우 지시 따름

1 배경 / 목적

Zero-WAM은 사람 영상 한 개를 in-context demo로 넣으면 로봇이 처음 보는 태스크를 수행한다고 주장한다. 논문의 가장 강한 문장은 "human demo가 task specification 역할을 한다"는 것이다. 이 검증은 네 질문에 답하려 했다.

  1. Q1. 헤드라인 우위(46.95 vs 17.45)는 공정한 비교에서도 유지되는가?
  2. Q2. 추론 시 demo는 실제로 성공률을 올리는가? 영상 내용을 쓰는가?
  3. Q3. 올린다면 무엇을 고치는가? "무엇을 할지"인가, "어떻게 할지"인가?
  4. Q4. 같은 장면에서 목표만 다를 때 demo(또는 언어)가 목표를 바꾸는가?
공통 조건: 자체 평가는 단일 시드, 태스크당 n=100이다(목표 명세 실험은 조건당 50 에피소드). 성공 기준은 Zero-WAM 공개 코드의 수정 기준으로 통일했다. 7태스크 macro의 표준오차는 약 ±1.5pp, 태스크 단위는 약 ±5pp다.

2 실험 지도

날짜실험답한 질문개별 보고서
09-0943/7 split asset 커버리지, 논문 ablation 수치 복원, 자체 LingBot-VA 대조Q1260909-robotwin_task_split_review
09-10반증 가능한 벤치마크 설계(K지선다)Q4 설계260910-falsifiable_benchmark_design
09-15공개 릴리스 분석 → 성공 기준 2개 수정 발견, HumanGen 분포Q1260915-zero_wam_public_release
09-15~16ZW w/o pretrain 재학습(Wan2.2-5B init, 32K step, 8 GPU 20h52m)Q1, Q2260916-zerowam_wopretrain_robotwin
09-16~19성공 기준 교란 분리, stamp_seal 프롬프트 2×2Q1260917-eval_criteria…, 260921-lingbot_va_fixed…
09-17~21같은 ckpt로 lang / ICL / 영상 교체 3조건Q2260918-…delta, 260921-demo_video_swap_control
09-29~10-0132K→50K 이어 학습 + 재평가재현 격차261001-zerowam_wopretrain_50k
10-02같은 장면 짝 비교(McNemar) + 실패 원인 분류 162건 + 맞는/엉뚱한 demo 97건Q2, Q3261002-demo_paired_failure_modes
10-02~04텍스트 전용 쌍둥이(DROP_ICL=1.0, 같은 recipe 32K)Q2261002-… 업데이트
10-02~04place_a2b 좌/우 목표 2×2×2, 언어 기준선, 공개 full ZWQ4261002-a2b_goal_spec
10-04좌/우가 명확한 human demo 생성(논문 HumanGen 파이프라인) + 블라인드 판정 + 재실험Q4261004-demo_judgment

3 Q1 — 헤드라인 격차는 어디서 오는가

7개 held-out 태스크, Zero-WAM 수정 성공 기준. "자체" 열은 우리가 학습하고 평가한 값이다.

task논문 LB자체 LB논문 ZW w/oP자체 ZW ICL 32K자체 ZW lang 32K논문 text-only논문 ZW
place_empty_cup42.3362.004628.0010.0065.6584.87
move_stapler_pad23.3361.007440.0052.0064.9869.14
place_bread_basket17.3360.003337.0031.0063.9235.00
stamp_seal3.6734.00 (pnp 47.00)5347.0030.0017.3347.00
open_microwave29.3334.002621.008.7041.4359.00
place_object_scale6.1734.002216.0013.0022.6824.67
stack_blocks_three0.000.0000.000.000.009.00
macro17.4540.7136.3627.0020.6739.4446.95
논문 주장 ZW 46.95 − LB 17.45 = +29.50pp ├ 데이터 효과 text-only 39.44 − LB 17.45 = +21.99pp (75%) └ ICL 경로 46.95 − 39.44 = +7.51pp (25%) 자체 LB, 같은 성공 기준 ZW 46.95 − LB 40.71 = +6.24pp ← 격차의 79%가 사라짐

4 재현 격차 — 스텝 부족 가설 기각

자체 ZW w/o pretrain ICL 27.00%는 논문 36.36%보다 −9.29pp 낮다. 우리는 32K step만 돌렸고 공개 recipe는 50K라서 처음에는 이것을 유력 원인으로 봤다. 같은 ckpt에서 50K까지 이어 학습해 확인했다.

taskICL 32KICL 50Klang 32Klang 50KΔdemo 32KΔdemo 50K
stamp_seal47453025+17+20
move_stapler_pad40365250−12−14
place_bread_basket37303130+60
place_empty_cup2821105+18+16
open_microwave21168.703+12.3+13
place_object_scale16101310+30
stack_blocks_three000000
macro27.0022.5720.6717.57+6.33+5.00

5 Q2 — demo는 성공률을 올리는가

같은 장면 짝 비교 (ZW 32K, lang = A, ICL = B, exact McNemar)

같은 seed는 같은 장면이다(첫 프레임 MAE 0.17–0.24 vs 다른 seed 1.25–2.91로 확인). 재실행 노이즈는 7%(29 중 2)만 결과가 바뀌어서, 조건 간 뒤바뀜은 대부분 실제 효과다.

tasknlang만 성공ICL만 성공B−Ap
place_empty_cup100422+18.00.0005
stamp_seal971329+16.50.020
open_microwave75516+14.70.027
place_bread_basket95611+5.30.33
place_object_scale9568+2.10.79
move_stapler_pad982715−12.20.088
stack_blocks_three1000001
pooled66061101+6.10.0021

영상 내용을 쓰는가 — 다른 태스크 demo로 교체 (ICL 모드 안에서)

stamp·stapler·cup 3태스크에서 demo를 다른 태스크 영상으로 순환 교체했다. 맞는 demo 38.33% → 엉뚱한 demo 25.33%, −13.0pp(Fisher p=0.0008, 짝 비교 p=0.0001). 영상 내용은 실제로 쓴다. 하지만 언어를 끈 상태에서 엉뚱한 demo로도 25%가 성공한다. 태스크 정보의 주 출처는 장면이다.

demo로 학습하는 것 자체의 효과 — 텍스트 전용 쌍둥이

lang 모드는 학습 조건 분포의 6%뿐이라(drop_icl=0.1 × droptext_target=0.4 독립) lang vs ICL 비교는 덜 학습된 모드와의 비교다. 그래서 데이터·init·스텝·IFP가 같고 DROP_ICL=1.0만 다른 쌍둥이를 학습했다.

task쌍둥이 langZW langZW ICL
place_empty_cup51028
move_stapler_pad455240
place_bread_basket193137
stamp_seal263047
open_microwave48.721
place_object_scale151316
stack_blocks_three000
macro16.2920.6727.00
Q2 답: 그렇다. demo로 학습하고 추론하면 언어 전용 학습보다 +10.7pp 높다. demo로 학습만 해도 lang 모드가 +4.4pp 높다. IFP는 세 모델 모두에 있으므로 이 차이는 IFP만으로 설명되지 않는다.

6 Q3 — demo는 무엇을 고치는가

결과가 바뀐 에피소드마다 head cam 6프레임 시트를 만들고 실패한 쪽의 원인을 분류했다. 사람이 무작위 샘플을 재확인했고 5/5 일치했다.

실패 원인lang vs ICL: demo가 줄인 수엉뚱한 vs 맞는 demo: 맞는 demo가 줄인 수
grasp_fail (잡기 실패)1625
place_off (놓기 빗나감)196
wrong_target (엉뚱한 대상)44
incomplete04
실행 단계 비중35/40 = 88%31/39 = 79%
place_empty_cup · seed 100010 — 같은 장면, lang vs ICL
lang (demo 없음): 빈손으로 코스터에 먼저 감 → 실패
ICL (맞는 demo): 컵을 잡아 코스터에 놓음 → 성공
move_stapler_pad · seed 100023 — 같은 장면, 엉뚱한 demo vs 맞는 demo
엉뚱한 demo: 스테이플러를 건드리지 않고 패드로 직행 → 실패
맞는 demo → 성공
move_stapler_pad · seed 100076 — demo가 손해인 반대 사례
lang → 성공
ICL: 스테이플러를 밀어내고 빈손으로 패드에 감 → 실패

7 Q4 — demo나 언어가 목표를 정하는가

Q3까지의 장면에는 대상이 하나뿐이라 명세를 잴 수 없었다. 그래서 학습 태스크 place_a2b_left/right(A를 B의 왼쪽/오른쪽에)를 썼다. 원본 생성기는 left일 때 A를 B 오른쪽에서 시작시키므로 장면이 목표를 누설한다. 장면을 억지로 모호하게 만들면 OOD가 되므로, 장면 생성기 × 조건 신호를 교차하는 설계로 바꿨다. 성공 판정은 어느 쪽이든 유효하게 놓으면 성공으로 고쳤고, 놓은 쪽을 따로 기록했다.

집계 기준: A를 8 cm 이상 실제로 옮긴 유효 배치만 센다. 처음 집계에서는 B를 옮긴 에피소드가 34% 섞여 좌/우 의미가 뒤집혀 있었다(10/04 정정).

7-1. HumanGen demo + 캡션 (ZW 32K, ICL 모드, 2×2×2, 각 50 ep)

요인P(left) 차이95% CI
장면 생성기 left vs right+92.5pp0.982 vs 0.057
영상이 left를 보여 줌+6.7pp[−0.1, +13.5]
캡션이 left라고 말함+4.0pp[−2.7, +10.7]

같은 장면에서 영상만 L↔R로 바꾼 42쌍 중 영상을 따라 바뀐 것은 2쌍이다. 공개 full ZW도 같은 설계에서 장면 +88.2pp, 영상 −2.4pp, 캡션 +6.6pp(둘 다 유의하지 않음)다.

7-2. 언어 지시 (텍스트 전용 쌍둥이 + ZW lang 모드)

모델장면이 left, 지시 right장면이 right, 지시 left지시를 따른 수
텍스트 전용 쌍둥이left 29 / right 0left 0 / right 180/47
ZW 32K langleft 35 / right 0left 0 / right 210/56

언어로만 학습한 모델도 장면과 반대인 지시를 한 번도 따르지 않았다. 지시문이 옮길 물체 A의 이름을 말하는데도 약 20%는 B를 옮긴다.

7-3. 좌/우가 명확한 생성 demo (논문 HumanGen 파이프라인 재현)

"HumanGen demo가 '옆에 놓기'로만 읽혀서 좌/우 정보가 없다"는 반론을 확인하려고 demo를 직접 만들었다. 로봇 평가 장면 첫 프레임 → VLM이 A/B 식별 → Nano Banana로 사람 장면과 끝 장면 편집 → Wan2.1-I2V-14B first-last-frame 생성 순서다. 블라인드 판정에서 좌/우는 10/10 의도와 일치했고, 9/10은 제3의 팔이나 순간이동이 있어 어색했다.

모델demo 세트demo 효과 P(left|L) − P(left|R)같은 장면 짝: demo를 따라 바뀜
ZW 32K두 손 (판정 통과, 2쌍)+0.0pp [−7.1, +7.1]0/39
공개 full ZW두 손 (판정 통과, 2쌍)+9.9pp [−6.7, +26.5]1/12
ZW 32K한 손 (1쌍, 판정 안 함)−6.3pp [−16.9, +4.4]0/39
공개 full ZW한 손 (1쌍, 판정 안 함)+11.0pp [−4.3, +26.4]1/16
이번 정리에서 새로 발견한 문제: 한 손 세트의 "오른쪽" demo는 마지막에 마우스가 비누 오른쪽이 아니라 비누 위에 겹쳐 놓인다(아래 영상). 이 세트는 블라인드 판정을 거치지 않았다. 그래서 10/04 로그의 두 세트 합산값(ZW32K −1.9pp, full +10.5pp)은 쓰지 않고, 판정을 통과한 두 손 세트 값만 주 결과로 쓴다. 결론은 바뀌지 않는다.
HumanGen demo · left 장면 seed 100001 — 반대 demo를 줘도 둘 다 왼쪽에 놓음 (ZW 32K)
왼쪽 demo 입력
→ 왼쪽에 놓음 (A 이동 15 cm)
오른쪽 demo 입력
→ 왼쪽에 놓음 (A 이동 16 cm)
언어 · 텍스트 전용 쌍둥이 · left 장면 seed 100001 — "left" 지시와 "right" 지시 모두 왼쪽
"…place left of the mouse with buttons and wheel." → 왼쪽
"Position the soft golden medium bread directly to the right of the dark gray mouse." → 왼쪽
생성 demo(두 손, 판정 통과) · right 장면 seed 100005 — demo는 바로 이 장면의 첫 프레임에서 만들었다
왼쪽 demo: 스테이플러를 원기둥 왼쪽으로 옮김
오른쪽 demo: 스테이플러를 원기둥 오른쪽에 놓음
ZW 32K + 왼쪽 demo → 오른쪽 (A 이동 15 cm)
ZW 32K + 오른쪽 demo → 오른쪽 (A 이동 14 cm)
공개 full ZW + 왼쪽 demo → 오른쪽 (A 이동 18 cm)
공개 full ZW + 오른쪽 demo → 오른쪽 (A 이동 17 cm)
문제가 있는 한 손 demo (판정 안 함) — "오른쪽" 버전이 비누 위에서 끝남
한 손 · 왼쪽: 마우스가 비누 왼쪽에서 끝남 (명확)
한 손 · 오른쪽: 마우스가 비누 위에 겹쳐 끝남 (모호)

롤아웃 영상은 키프레임마다 한 장씩 기록돼 원래 짧다(약 2.5초). 이 페이지에서는 0.5배속으로 재생한다.

8 Takeaway

내 판단

Zero-WAM이 RoboTwin에서 보여 주는 것은 "사람 영상을 보조 신호로 넣으면 실행이 조금 나아진다"이다. "사람 영상으로 할 일을 지정한다"가 아니다. demo 효과는 실재하고(짝 비교 p=0.002, 교체 −13pp, 쌍둥이 대비 +10.7pp), 그 이득은 잡을 물체를 제대로 잡는 데서 나온다. 반면 목표가 실제로 갈리는 장면에서는 demo, 캡션, 언어 어느 것도 목표를 바꾸지 못하고 장면 배치가 결과를 정한다.

이건 Zero-WAM만의 결함이라기보다 RoboTwin 학습 데이터의 구조 문제다. 학습 데이터에서 장면이 목표와 완전히 같이 움직이면, 어떤 조건 채널로 학습하든 정책은 장면 지름길을 배운다. 언어 전용 모델이 0/47로 같은 실패를 보인 것이 근거다. 그래서 RoboTwin 위에서는 "demo가 언어보다 나은 명세 인터페이스인가"라는 질문 자체를 측정할 수 없다.

공개 full ZW에서만 일관되게 약 +10pp의 양수 신호가 보인다. 대규모 ICL 사전학습이 demo를 아주 약하게 읽게 만들었을 수 있다. 다만 판정 통과 세트에서도 CI가 0을 포함하고 장면 효과의 1/9 수준이라, 주장으로 쓸 수 있는 크기는 아니다.

9 한계와 다음

한계

다음 — 벤치마크 이동