물리 시뮬레이터를 검증기로 세워 VLM이 스스로 반사실 문제를 만들어 푼다
PhysEvolve: Verifier-grounded Self-evolution for Physical Reasoning with Executable Worlds
무엇인가
비전언어모델(VLM)은 정적 객체 인식이나 공간 관계에서는 비교적 안정적이지만, 장면이 어떻게 전개되고 외부 개입에 어떻게 반응하는지 예측하는 동역학·개입·반사실 추론에서는 여전히 신뢰하기 어렵다. 저자들이 지목하는 근본 병목은 훈련 데이터다. 실제 영상은 이미 일어난 하나의 사실 궤적만 담기 때문에, 통제된 개입 아래 결과가 어떻게 달라지는지를 담은 검증 가능한 반사실 주석은 사실상 구할 수 없다. 코드·수학에서 자기진화(self-play)가 통하는 이유는 인터프리터가 모델이 쓴 명세를 실행해 정확한 정답을 돌려주기 때문인데, 물리 추론에는 그 자리에 놓을 '진실의 원천'이 없었다.
어떻게 동작하나
논문의 3.1절은 물리 영역에 이 패러다임을 그대로 이식하면 왜 무너지는지를 두 가지 실패 모드로 진단한다. 첫째, 단일 궤적 실행만으로는 개입 과제를 만들 수 없다. 저자들이 순진한 이식 베이스를 100 라운드 감사한 결과 생성된 개입·반사실 과제는 정확히 0개였고, PhysBench 동역학 정확도는 정체했다. 둘째, 연속 근접도(proximity) 보상이 학습 가능성 착시를 만든다. Forward 예측에서 평균 graded reward는 0.373까지 올라갔지만 정확 일치(exact match)는 100 라운드 내내 0이었고, Inverse는 0.664, Parameter는 0.787의 보상을 받으면서도 정확도는 7% 미만이었다. 오류 감사에서 정책은 정지 상태의 초기 속도를 746회, 파라미터 사다리의 중간값을 145회 출력하는 모드 붕괴를 보였다. 즉 부분 점수를 긁어모으면서 물리 사건 자체는 풀지 않는 보상 해킹이다.
무엇과 다른가
PhysEvolve의 구조는 이 두 실패를 정면으로 겨냥한다. 하나의 공유 VLM이 Proposer와 Solver 역할을 겸하고, Proposer는 샘플링된 추론 의도 σ(투척·충돌·운동의 세 뉴턴 역학 패러다임 아래 8개 의도)를 조건으로 실행 가능한 세계 프로그램 W와 증거 스키마 S를 만든다. W는 강체 시뮬레이션 위에 얹은 도메인 특화 Python API인 PhysDSL로 작성되며 3D 기하, 질량·반발계수·마찰 같은 재료 속성, 초기 상태, 운동학 제약, 렌더링 시점을 지정한다. 결정론적 실행기가 샌드박스에서 이를 파싱·실행해 역할 선언이 실제 시뮬레이션과 맞는지 검증하고, 통과한 세계는 불변 장면 정의로 동결한다. 동결 덕분에 이후 모든 개입 분기는 동일한 초기 기하·재료·시드 ξ를 공유하므로, 결과 차이는 오직 선언된 개입에만 귀속된다.
어떻게 쓰나
이어서 실행기는 특정 신체와 그에 종속된 제약을 제거한 짝 분기 (τ_∅, τ_B)를 같은 시드와 시간 지평으로 실행한다. Solver는 기준 궤적 τ_∅의 영상 렌더링만 보지만, 실행기는 분기 궤적들을 객관적 정답으로 보유한다. 판독값이 유일하지 않거나 실현 불가능하거나 민감한 물리 마진(예: 속도 차 0.30 m/s 미만) 안에 들면 문항은 폐기되고, otherwise 정답 선택지 인덱스 a*∈{A,B,C,D}에 결속된 객관식 문항이 렌더링된다. '어느 벽을 제거해야 공이 목표 구덩이에 떨어지는가' 같은 역방향 개입 과제는 후보 제거를 모두 실행해 정확히 하나만 목표를 달성하는지 검증하고, 어느 분기도 목표에 닿지 않을 때만 '해당 없음'이 정답이 된다. 이 엄격한 정보 경계 — 정책은 환경 탐색만 하고, 물리적 타당성과 사실/반사실 정답은 고정된 시뮬레이터만 결정한다 — 가 라벨 오염과 보상 해킹을 차단하는 핵심 장치다.
전제와 한계
훈련 신호는 이진값이다. Solver 롤아웃 G개에 대해 r_i = 1[â_i = a*]로 정확 일치만 인정하고, 이 이진 보상으로 GRPO가 공유 파라미터를 갱신한다. 커리큘럼은 두 층으로 나뉜다. 거시 수준에서는 8라운드 콜드스타트 후 과제군 f별 롤링 정확도 ā_f로 의도 샘플링 가중 w_f = ρ_f·max(0.05, 4ā_f(1−ā_f))를 정해, 정확도가 0.5 근처인 '학습 경계' 의도에 훈련을 집중시킨다. 미시 수준에서는 Proposer가 컴파일 성공, 동적 충돌 실현성, 구조 편집 거리 다양성에 보상을 받되 복사·포화 억제 항으로 규제된다. Proposer와 Solver는 동일 파라미터를 공유하며 참조 정책 π_ref 대비 정규화된 GRPO로 함께 최적화된다.
실험은 Qwen3-VL-8B-Instruct에서 시작해 100 스텝, 1에폭 GRPO, 학습률 10^-6으로 단일 실행했다. 스텝마다 의도 4개를 샘플링하고 의도당 세계 프로그램 제안 4개를 생성하며, 활성 Solver 그룹은 32개, 그룹당 롤아웃 4개로 상한을 둔다. 인간 개입 주석 데이터는 전혀 쓰지 않았다. 결과는 PhysBench에서 Throwing +8.78점, Judgment +5.08점, Motion +1.74점, 전체 +0.55점으로, 순진한 자기놀이 베이스가 Throwing −0.24, Judgment +0.26에 그친 것과 대조적이다. 더 눈에 띄는 것은 강체 훈련 템플릿에 전혀 없던 연속 매체로의 전이다. ContPhy의 Counterfactual Removal은 44.26%에서 51.64%로 7.38점, Goal-Pit은 20.00%에서 44.44%로 24.44점 올라 Qwen3-VL-32B의 26.7%까지 앞선다. 실제 영상 벤치마크 CausalPhys에서도 Anticipation +2.46, Intervention +2.27점이 붙었다. 세부 범주로는 Fluid Flow +11.00점, Action Substitution +9.09점이며, 분기 비활성 대조군 대비 Fluid Flow에서 23.00점 차이다. 항목 단위 짝 감사에서도 PhysEvolve는 Throwing 69문항을 Base가 놓친 반면 역전은 33건(순 +36), Judgment 순 +39, Motion 순 +25로 실제 역량 획득을 보였다.
절제 실험은 설계의 필수 요소를 확인한다. 분기 시뮬레이션과 그에 종속된 Counterfactual/Inverse 과제군을 제거하면 ContPhy Counterfactual Removal이 8.20점, Goal-Pit이 23.33점 떨어져 사실상 미세조정 전 Base 수준으로 되돌아간다. Proposer 업데이트를 동결하고 Solver 롤아웃만으로 학습시키면 표현 붕괴가 일어나 CausalPhys 15.01%, ContPhy 17.85%로 추락하고, 답 파싱률은 CausalPhys 26.07%, 이후 스텝에서 0%까지 무너진다. Proposer가 세계 생성의 다양성과 물리적 비자명성을 유지해주지 않으면 Solver가 퇴화한 데이터 스트림에 과적응한다는 뜻이다.
개발자 관점에서 이 논문의 실무적 교훈은 보상 설계에 있다. 연속 물리 출력을 근접도로 채점하면 부분 점수가 해킹되고 커리큘럼의 학습 가능성 지표 자체가 오염된다. 반대로 시뮬레이터 API를 이미 갖고 있다면, 세계 정의를 동결하고 짝 분기를 실행해 이산 정답에 결속하는 이 파이프라인은 합성 훈련 데이터 생성기로 바로 참고할 만하다. 다만 도입 전에 확인할 것은 세 가지다. 평가 벤치가 훈련에 쓴 강체 템플릿과 얼마나 겹치는지, 이득이 상호작용 민감·개입형 문항에 집중되고 정적 관계·객체 식별 같은 비표적 영역은 베이스 수준에 머문다는 점, 그리고 시뮬레이터의 마진 임계값이 문항 폐기율과 난이도를 좌우한다는 점이다.
저자들은 별도의 한계 절을 두지 않았지만 방법론에 전제가 명시돼 있다. 실행기는 유효한 기하와 비자명한 물리 사건, 의도의 인과적 선행 조건을 갖춘 세계만 채택하며, 판독값이 비유일하거나 민감 마진 안에 들면 문항을 버린다. 훈련 분포는 강체 시뮬레이션의 세 패러다임·8개 의도로 한정되고, 일반 시각 능력은 베이스 모델과 비슷하거나 약간 위 수준을 유지하는 데 그친다. 즉 이 프레임워크가 보장하는 것은 저자가 설계한 실행기 계약 안에서 검증 가능한 물리적 사실이며, 그 계약 밖의 물리 현상에 대한 정답성은 별도로 검증되지 않는다.