이 글에서는 VLA 모델의 성능을 개선시키는 데이터 수집 방법이 몇가지 있어 공유하고자 포스팅을 작성했다.
프로젝트 개요
- 목적: VLA 성능 향상을 위한 데이터 수집 방법
- 환경: π0 모델 + 6축 로봇 SO-101 Arm
- 태스크: 흩어진 색깔 블록을 집어 같은 색 박스에 넣기. 블록이 다 치워질 때까지 반복
- 데이터: 텔레오퍼레이션으로 모은 60개 에피소드. 성공뿐 아니라 실패를 인지하고 보정하는 행동까지 포함
- 결과: 성공 중심 데이터 수집 방법 대비 성공률 84.7% → 88.8%, 약 4%p 향상
- 성격: 연구실 수준의 검증 case study
왜 VLA를, 왜 이 태스크에 썼는가
출발점은 기존 로봇 학습의 한계였다. 강화학습이나 모방학습으로 만든 정책은 정해진 한 작업, 정해진 환경에서는 잘 돌아간다. 그런데 환경이 조금 바뀌거나 새로운 지시가 들어오면 무너진다.
"빨간 블록을 빨간 박스에 넣어" 같은 작업은 매번 블록 배치가 다르고 지시도 달라질 수 있어서, 한 작업에 고정된 정책으로는 일반화가 어렵다.
VLA는 이 지점을 겨냥한 방식이다. VLA은 사전학습된 비전-언어 모델의 지식을 깔고 들어가기 때문에 처음 보는 물체나 지시에도 어느 정도 대응한다. 그중 π0는 사전학습된 비전-언어 모델 위에 flow matching 기반의 action expert를 얹어 연속적인 행동을 생성하는 구조다.
태스크로 색 매칭 블록 분류를 고른 데에는 이유가 있다.
- 색을 말로 지정해야 풀린다. 같은 블록 더미를 두고도 "빨간 건 빨간 박스에"라는 지시를 이해해야 맞는 행동이 나온다. 색 매칭을 그릇이나 박스에 적용하는 태스크는 VLA 평가에서 언어 이해를 시험하는 표준 항목으로 쓰인다. 단순히 다 쌓으라는 작업은 언어가 하는 일이 적어서 VLA를 쓸 이유가 약해진다.
- 둘째, 블록은 강체라 파지 실패가 잦다. 변형되는 천이나 빵과 달리 강체 블록은 그리퍼 자세에 민감해서, 잡는 각도가 조금만 어긋나도 미끄러지거나 밀린다. 실제 VLA 벤치마크에서도 블록을 박스에 넣거나 쌓는 태스크는 변형물체보다 성공률이 낮게 나온다. 보통은 단점이지만 내 연구에서는 다르다. 내가 보려는 게 실패를 보정하는 학습의 효과이기 때문에, 실패가 자주 나는 태스크라야 그 효과가 숫자로 드러난다.
- 셋째, 멀티스텝이다. 블록을 하나씩 여러 번 집어 넣는 반복 작업이라, 중간에 한 번 어긋나면 학습 때 본 적 없는 상태로 빠진다. 모방학습이 약한 지점이 실제로 터지는 구조라서, 보정 학습이 왜 필요한지가 태스크 자체에서 설명된다.
쌓기 태스크도 후보였지만 뺐다. 쌓기는 집기와 올리기 두 단계가 다 까다롭고, 블록이 무너지는 게 보정 부족 때문인지 그리퍼 정밀도 때문인지 섞인다. 박스에 넣기는 색 매칭이 분명하고 실패 원인이 깔끔해서, 같은 블록 작업이라도 검증용으로는 이쪽이 낫다고 판단했다.
태스크와 시스템 구성

- 로봇: 6축 로봇 암 SO-101
- 지시: "책상 위에 블록이 더 이상 남아 있지 않을 때까지 블록을 집어 각 색상과 일치한 박스에 정리해줘"
- 입력: 카메라 영상과 자연어 지시
- 출력: π0의 action expert가 내는 연속 행동 시퀀스
- 모델: π0를 베이스로 본 태스크에 맞춰 파인튜닝
이 구성에서 풀어야 할 질문은 둘이었다. 하나는 데이터를 어떻게 모아 어떻게 학습시켜야 이 반복 분류 작업을 잘 해내느냐, 다른 하나는 그 파인튜닝을 어떻게 더 효율적으로 하느냐다. 앞쪽이 태스크 설정의 문제이고, 뒤쪽은 PEFT가 들어가는 자리다. 사실 이 연구는 석사 학위논문에서 Case Study를 위해 프로젝트를 자체적으로 개발한것도 크다. 석사 학위 논문에서는 옵티마이저를 연구했고 해당 옵티마이저가 실질적으로 유효한지도 검증하기 위해 석사 학위 논문에서 제안한 방법론을 적용해봤다.
데이터 수집 — 성공만이 아니라 실패와 보정까지
처음에는 성공 동작 위주로 60개 에피소드를 텔레오퍼레이션으로 모아 학습했다.
하지만 이렇게 수집된 데이터로 학습하고 추론해 본 결과 블록 위치나 배치가 조금 바뀌면 파지에 실패했고, 한 번 실패하면 거기서 회복하지 못했다.
이건 모방학습의 잘 알려진 약점과 맞닿아 있다.
한 번 어긋나서 분포 밖 상태로 가면 그 상태에서 어떻게 돌아오는지를 배운 적이 없으니 오차가 쌓인다. covariate shift라고 부르는 문제다.
이걸 푸는 고전적인 처방이 DAgger 계열의 아이디어인데, 핵심은 정책이 실패해 빠지는 상태에서 사람이 개입해 회복하는 행동을 시연으로 더 넣는 것이다. 교정 데이터가 covariate shift를 줄여 정책 성능을 끌어올린다는 건 DAgger 계열 연구에서 이론과 실험 양쪽으로 보여져 왔다.
그래서 방향을 바꿨다. 모든 환경 변화를 데이터로 일일이 담는 건 불가능하다고 판단했다. 대신
텔레오퍼레이션 단계에서 로봇이 실패하는 상황을 인지하고, 그 실패를 보정하는 행동까지 함께 시연으로 담았다. 성공 궤적만이 아니라 어긋났을 때 어떻게 되돌리는지를 데이터에 포함시킨 것이다.
이렇게 하면 정책이 실패해 분포 밖 상태에 들어가도 그 상태에서 회복하는 행동을 본 적이 있으니 작업을 이어갈 수 있다. 60개라는 적은 에피소드로도 강건성을 높이려는 의도였고, 단순 성공 시연보다 확실히 견고하게 움직였다.
결과 분석
| Method | Episode Success (%) |
| 성공 위주의 데이터 수집 방법 | 78.7 ± 3.5 |
| 실패와 보정까지 포함한 데이터 수집 방법 | 84.7 ± 2.8 |
시행착오
성공 시연만 모으면 될 줄 알았다. 깔끔한 궤적을 충분히 보여주면 정책이 따라 할 거라고 봤는데, 환경이 바뀌면 파지가 실패했고 실패한 상태에서 회복하지 못했다. 성공만 보여준 데이터로는 실수했을 때 되돌리는 법을 가르치지 못한다는 걸, 모방학습의 covariate shift라는 이름으로 뒤늦게 연결해 이해했다.
그다음에 빠진 함정은 데이터를 더 모으면 된다는 생각이었다. 환경 변화를 더 많이 수집하면 덮이지 않을까 했지만, 가능한 모든 변화를 데이터로 덮는 건 비현실적이었다. 방향을 변화를 다 담기에서 실패를 인지하고 보정하는 행동을 담기로 바꾼 게 전환점이었다.
프로젝트 회고
잘한 점.
- 모방학습의 covariate shift를 인식하고, 실패-보정 시연으로 적은 데이터의 강건성을 끌어올렸다.
아쉬운 점
- 실물 로봇 데이터 60 에피소드라 규모가 작고, 더 다양한 환경에서의 일반화는 확인하지 못했다.
- 실패-보정 데이터를 사람이 직접 텔레오퍼레이션으로 만들어 수집 비용이 컸다.
다음 단계
- 시뮬레이션을 결합하겠다. LIBERO 같은 표준 시뮬 벤치마크에서 같은 PEFT 기법을 돌려보면, 실물 결과를 표준 환경 위에서 다시 검증할 수 있다. 시뮬에서 다양한 배치와 실패 상황을 대량으로 만들어 covariate shift를 더 넓게 덮고, 실패-보정 데이터를 사람 손에 덜 의존해 확보하는 방향을 보고 있다. 아직 구상 단계이고 검증된 결과는 아니다.
- 태스크와 블록 종류를 넓혀, 제안 기법의 효과가 더 다양한 조건에서도 유지되는지 확인하겠다.
'스마트팩토리 프로젝트' 카테고리의 다른 글
| [연구실 과제] 조립 공정 통합 관제 시스템 개발 (0) | 2026.06.29 |
|---|---|
| [연구실 과제] 조립 불량 검사 기반 제품 적재 공정 자동화 (0) | 2026.06.29 |
| [연구실 과제] 3D Pick & Place (0) | 2026.06.29 |
| [산학과제] 도메인 분리 표현 학습으로 내부 균열 탐지 모델 성능 개선 (0) | 2026.06.24 |
| [팀 프로젝트] PINN을 활용하여 외삽 구간 SoC 성능 추정 (0) | 2026.06.24 |