move_stapler_pad 1→61%, stamp_seal 4→34%).Zero-WAM은 사람 영상 한 개를 in-context demo로 넣으면 로봇이 처음 보는 태스크를 수행한다고 주장한다. 논문의 가장 강한 문장은 "human demo가 task specification 역할을 한다"는 것이다. 이 검증은 네 질문에 답하려 했다.
| 날짜 | 실험 | 답한 질문 | 개별 보고서 |
|---|---|---|---|
| 09-09 | 43/7 split asset 커버리지, 논문 ablation 수치 복원, 자체 LingBot-VA 대조 | Q1 | 260909-robotwin_task_split_review |
| 09-10 | 반증 가능한 벤치마크 설계(K지선다) | Q4 설계 | 260910-falsifiable_benchmark_design |
| 09-15 | 공개 릴리스 분석 → 성공 기준 2개 수정 발견, HumanGen 분포 | Q1 | 260915-zero_wam_public_release |
| 09-15~16 | ZW w/o pretrain 재학습(Wan2.2-5B init, 32K step, 8 GPU 20h52m) | Q1, Q2 | 260916-zerowam_wopretrain_robotwin |
| 09-16~19 | 성공 기준 교란 분리, stamp_seal 프롬프트 2×2 | Q1 | 260917-eval_criteria…, 260921-lingbot_va_fixed… |
| 09-17~21 | 같은 ckpt로 lang / ICL / 영상 교체 3조건 | Q2 | 260918-…delta, 260921-demo_video_swap_control |
| 09-29~10-01 | 32K→50K 이어 학습 + 재평가 | 재현 격차 | 261001-zerowam_wopretrain_50k |
| 10-02 | 같은 장면 짝 비교(McNemar) + 실패 원인 분류 162건 + 맞는/엉뚱한 demo 97건 | Q2, Q3 | 261002-demo_paired_failure_modes |
| 10-02~04 | 텍스트 전용 쌍둥이(DROP_ICL=1.0, 같은 recipe 32K) | Q2 | 261002-… 업데이트 |
| 10-02~04 | place_a2b 좌/우 목표 2×2×2, 언어 기준선, 공개 full ZW | Q4 | 261002-a2b_goal_spec |
| 10-04 | 좌/우가 명확한 human demo 생성(논문 HumanGen 파이프라인) + 블라인드 판정 + 재실험 | Q4 | 261004-demo_judgment |
7개 held-out 태스크, Zero-WAM 수정 성공 기준. "자체" 열은 우리가 학습하고 평가한 값이다.
| task | 논문 LB | 자체 LB | 논문 ZW w/oP | 자체 ZW ICL 32K | 자체 ZW lang 32K | 논문 text-only | 논문 ZW |
|---|---|---|---|---|---|---|---|
| place_empty_cup | 42.33 | 62.00 | 46 | 28.00 | 10.00 | 65.65 | 84.87 |
| move_stapler_pad | 23.33 | 61.00 | 74 | 40.00 | 52.00 | 64.98 | 69.14 |
| place_bread_basket | 17.33 | 60.00 | 33 | 37.00 | 31.00 | 63.92 | 35.00 |
| stamp_seal | 3.67 | 34.00 (pnp 47.00) | 53 | 47.00 | 30.00 | 17.33 | 47.00 |
| open_microwave | 29.33 | 34.00 | 26 | 21.00 | 8.70 | 41.43 | 59.00 |
| place_object_scale | 6.17 | 34.00 | 22 | 16.00 | 13.00 | 22.68 | 24.67 |
| stack_blocks_three | 0.00 | 0.00 | 0 | 0.00 | 0.00 | 0.00 | 9.00 |
| macro | 17.45 | 40.71 | 36.36 | 27.00 | 20.67 | 39.44 | 46.95 |
move_stapler_pad(1→61%)와 stamp_seal(4→34%)는 같은 LingBot-VA ckpt를 성공 기준만 바꿔 재평가한 값이다. 수정 기준은 xy 허용면적이 11배·9배이고 자세 조건이 빠졌다. 사실상 태스크 재정의다.stamp_seal은 프롬프트를 학습 분포 템플릿으로 바꾸면 LB 47.00 = ZW 47.00이 되어 격차가 0이다. 논문의 가장 큰 demo 이득 사례(+29.67)는 어휘 OOV와 허용오차로 설명된다.자체 ZW w/o pretrain ICL 27.00%는 논문 36.36%보다 −9.29pp 낮다. 우리는 32K step만 돌렸고 공개 recipe는 50K라서 처음에는 이것을 유력 원인으로 봤다. 같은 ckpt에서 50K까지 이어 학습해 확인했다.
| task | ICL 32K | ICL 50K | lang 32K | lang 50K | Δdemo 32K | Δdemo 50K |
|---|---|---|---|---|---|---|
| stamp_seal | 47 | 45 | 30 | 25 | +17 | +20 |
| move_stapler_pad | 40 | 36 | 52 | 50 | −12 | −14 |
| place_bread_basket | 37 | 30 | 31 | 30 | +6 | 0 |
| place_empty_cup | 28 | 21 | 10 | 5 | +18 | +16 |
| open_microwave | 21 | 16 | 8.70 | 3 | +12.3 | +13 |
| place_object_scale | 16 | 10 | 13 | 10 | +3 | 0 |
| stack_blocks_three | 0 | 0 | 0 | 0 | 0 | 0 |
| macro | 27.00 | 22.57 | 20.67 | 17.57 | +6.33 | +5.00 |
같은 seed는 같은 장면이다(첫 프레임 MAE 0.17–0.24 vs 다른 seed 1.25–2.91로 확인). 재실행 노이즈는 7%(29 중 2)만 결과가 바뀌어서, 조건 간 뒤바뀜은 대부분 실제 효과다.
| task | n | lang만 성공 | ICL만 성공 | B−A | p |
|---|---|---|---|---|---|
| place_empty_cup | 100 | 4 | 22 | +18.0 | 0.0005 |
| stamp_seal | 97 | 13 | 29 | +16.5 | 0.020 |
| open_microwave | 75 | 5 | 16 | +14.7 | 0.027 |
| place_bread_basket | 95 | 6 | 11 | +5.3 | 0.33 |
| place_object_scale | 95 | 6 | 8 | +2.1 | 0.79 |
| move_stapler_pad | 98 | 27 | 15 | −12.2 | 0.088 |
| stack_blocks_three | 100 | 0 | 0 | 0 | 1 |
| pooled | 660 | 61 | 101 | +6.1 | 0.0021 |
stamp·stapler·cup 3태스크에서 demo를 다른 태스크 영상으로 순환 교체했다. 맞는 demo 38.33% → 엉뚱한 demo 25.33%, −13.0pp(Fisher p=0.0008, 짝 비교 p=0.0001). 영상 내용은 실제로 쓴다. 하지만 언어를 끈 상태에서 엉뚱한 demo로도 25%가 성공한다. 태스크 정보의 주 출처는 장면이다.
lang 모드는 학습 조건 분포의 6%뿐이라(drop_icl=0.1 × droptext_target=0.4 독립) lang vs ICL 비교는 덜 학습된 모드와의 비교다. 그래서 데이터·init·스텝·IFP가 같고 DROP_ICL=1.0만 다른 쌍둥이를 학습했다.
| task | 쌍둥이 lang | ZW lang | ZW ICL |
|---|---|---|---|
| place_empty_cup | 5 | 10 | 28 |
| move_stapler_pad | 45 | 52 | 40 |
| place_bread_basket | 19 | 31 | 37 |
| stamp_seal | 26 | 30 | 47 |
| open_microwave | 4 | 8.7 | 21 |
| place_object_scale | 15 | 13 | 16 |
| stack_blocks_three | 0 | 0 | 0 |
| macro | 16.29 | 20.67 | 27.00 |
결과가 바뀐 에피소드마다 head cam 6프레임 시트를 만들고 실패한 쪽의 원인을 분류했다. 사람이 무작위 샘플을 재확인했고 5/5 일치했다.
| 실패 원인 | lang vs ICL: demo가 줄인 수 | 엉뚱한 vs 맞는 demo: 맞는 demo가 줄인 수 |
|---|---|---|
| grasp_fail (잡기 실패) | 16 | 25 |
| place_off (놓기 빗나감) | 19 | 6 |
| wrong_target (엉뚱한 대상) | 4 | 4 |
| incomplete | 0 | 4 |
| 실행 단계 비중 | 35/40 = 88% | 31/39 = 79% |
Q3까지의 장면에는 대상이 하나뿐이라 명세를 잴 수 없었다. 그래서 학습 태스크 place_a2b_left/right(A를 B의 왼쪽/오른쪽에)를 썼다. 원본 생성기는 left일 때 A를 B 오른쪽에서 시작시키므로 장면이 목표를 누설한다. 장면을 억지로 모호하게 만들면 OOD가 되므로, 장면 생성기 × 조건 신호를 교차하는 설계로 바꿨다. 성공 판정은 어느 쪽이든 유효하게 놓으면 성공으로 고쳤고, 놓은 쪽을 따로 기록했다.
| 요인 | P(left) 차이 | 95% CI |
|---|---|---|
| 장면 생성기 left vs right | +92.5pp | 0.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(둘 다 유의하지 않음)다.
| 모델 | 장면이 left, 지시 right | 장면이 right, 지시 left | 지시를 따른 수 |
|---|---|---|---|
| 텍스트 전용 쌍둥이 | left 29 / right 0 | left 0 / right 18 | 0/47 |
| ZW 32K lang | left 35 / right 0 | left 0 / right 21 | 0/56 |
언어로만 학습한 모델도 장면과 반대인 지시를 한 번도 따르지 않았다. 지시문이 옮길 물체 A의 이름을 말하는데도 약 20%는 B를 옮긴다.
"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 |
롤아웃 영상은 키프레임마다 한 장씩 기록돼 원래 짧다(약 2.5초). 이 페이지에서는 0.5배속으로 재생한다.
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 수준이라, 주장으로 쓸 수 있는 크기는 아니다.
classify_objects_by_language, stack_blocks_by_language, pour_by_language 등)는 장면과 스킬은 학습 태스크와 같고 지시문만 목표를 정한다. π0.5는 Open 8태스크 2.5%(2/80)다.stack_bowls에 10회 zero-shot으로 돌려(job 176021) 다른 로봇에서 잡기까지 가는지부터 확인한다.