시즌 3의 시작입니다. 18편까지는 “걷게 만들고 의심하기”였다면, 이번에는 과제가 통째로 바뀝니다. 걷기가 아니라 테이블 위 물건 옮기기, 강화학습이 아니라 모방학습, 관절 숫자가 아니라 카메라와 문장입니다. 이 편에서는 데이터 공장을 세우고 첫 정책을 학습시킨 뒤, loss가 100배 떨어졌는데 성공률이 0인 상황을 만납니다.
왜 갑자기 팔인가요
시즌 1~2의 G1은 이제 걷고, 돌고, 밀쳐도 버티고, 16cm 계단을 오릅니다. 잘하는데, 한 가지를 못 합니다. 시키는 대로 하지 못합니다. 우리가 준 명령은 늘 숫자였습니다. 전진 속도 0.8, 회전 0.5. “빨간 블록을 파란 받침에 올려”라고 말할 수 있는 통로가 없습니다.
2026년의 로봇 학습이 몰려가는 곳이 정확히 거기입니다. 카메라 이미지와 사람 말을 받아서 행동을 내놓는 모델, 이른바 VLA(Vision-Language-Action)입니다. 시뮬레이터가 있고 GPU가 한 장 있으면 집에서도 전체 루프를 돌려볼 수 있는 크기의 모델이 나와 있습니다. 그래서 시즌 3의 1단계를 이렇게 잡았습니다. 환경 만들기 → 시연 수집 → 파인튜닝 → 평가. 파인튜닝은 이미 학습된 모델을 우리 데이터로 이어 학습시키는 일입니다.
개념 박스: 강화학습과 모방학습 강화학습은 로봇이 직접 넘어져 가며 배웁니다. 보상을 주면 그 보상을 최대로 만드는 행동을 스스로 찾아냅니다. 시즌 1~2가 이 방식이었습니다. 모방학습은 정답 시연을 보여 주고 따라 하게 합니다. “이 상황에서는 이 행동”의 짝을 잔뜩 모아 지도학습으로 흉내 내게 합니다. 사람이 조종한 데이터를 쓸 수 있어 실제 로봇 팔 분야에서는 이쪽이 주류입니다. 대신 시연에 없는 상황에는 약합니다.
준비 운동에서 한 번 창피했습니다
인터넷 소개 글에는 “Genesis 1.4가 로봇 학습 표준 포맷 내보내기를 지원한다”고 적혀 있었습니다. 그 말을 믿고 계획서를 썼는데, 실제로 패키지를 뒤져 보니 그런 기능은 없었습니다. 릴리스 노트 1.1부터 1.4까지 직접 확인했습니다. 그건 같은 이름을 쓰는 상용 플랫폼 쪽 기능이었고, 오픈소스에 들어온 데이터 기능은 자체 포맷 궤적 녹화뿐이었습니다.
다리는 우리가 놓았습니다. 시뮬레이터에서 궤적을 npz로 뽑고, 학습 라이브러리 쪽 API로 직접 기록하는 경로를 만들어 왕복 검증까지 마쳤습니다. 저장한 숫자가 다시 읽었을 때 1e-6 안에서 같고, 학습용 묶음을 꺼내는 것까지 정상이면 통과입니다.
준비 운동에서 함정도 하나 밟았습니다. 시뮬레이터에 내장된 Franka 로봇 팔의 손가락은 기본 설정에서 힘이 사실상 0입니다. 그대로 쓰면 손가락이 흘러내린 채 큐브를 밀고 다닙니다. 첫 수집 세 번을 그렇게 날리고 나서야 게인(관절을 목표로 끌어당기는 힘의 세기)을 명시해 줘야 한다는 걸 알았습니다.
데이터 공장 — 3초에 시연 하나씩
장면은 이렇게 짰습니다.
- 탁자 위에 색 큐브 3개(빨강, 초록, 노랑)와 받침 2개(파랑, 보라)
- 매번 위치를 무작위로 뽑되 서로 겹치지 않게
- 지시문은 “Put the {색} cube on the {색} pad.”
- 카메라는 비스듬한 측면 1대(뒤에서 3대로 늘어납니다)

조합은 3 × 2 = 6가지인데, 그중 (노랑 큐브, 보라 받침) 한 조합은 학습에서 뺐습니다. 이 조합만 평가에 씁니다. 노랑도 봤고 보라도 봤지만 둘을 함께 본 적은 없는 상태에서 “노랑을 보라에 올려”가 되는지 보려는 겁니다.
개념 박스: 홀드아웃 학습에서 일부러 빼 두고 평가에만 쓰는 몫입니다. 시험 범위에서 제외한 문제를 시험에 내는 셈이라 야박해 보이지만, 외운 것과 이해한 것을 가르는 가장 손쉬운 방법입니다.
시연은 사람이 아니라 스크립트 전문가가 만듭니다. 물체 좌표를 알고 있으니 역기구학(손 위치에서 관절 각도를 거꾸로 계산하는 것)으로 손 위치를 계산해 접근-하강-파지-인양-이동-하강-놓기-후퇴 8구간을 고정 시간표대로 수행합니다. 시연 하나 만드는 데 약 3초, 성공률 300/300. 하룻밤이면 시연 수천 개도 만들 수 있는 공장입니다.

이 “완벽함”이 나중에 우리 발목을 잡습니다. 지금은 넘어갑시다.
첫 학습 — loss는 아름다웠습니다
모델은 SmolVLA(약 4억 5천만 파라미터)를 골랐습니다. 16GB GPU에서 여유 있게 돌아가는 크기입니다. 시연 300개로 2만 스텝(가중치를 한 번 고치는 단위)을 학습시켰습니다. 이 첫 정책을 v1이라 부르겠습니다. 아래 표의 loss는 학습 데이터의 정답 행동과 정책 출력의 차이입니다.
| 항목 | 값 |
|---|---|
| 학습 속도 | 1.38 step/s |
| VRAM | 6.9GB / 16GB |
| 학습 loss | 2.23 → 0.023 (100배 감소) |
곡선이 교과서처럼 매끄럽게 내려갔습니다. 기분이 좋아진 채로 평가를 돌렸습니다. 학습에 쓴 5조합 각 5회, 홀드아웃 5회. 총 30회.
성공 0회입니다.
실패에도 결이 있습니다
“완전 실패”라고 적고 넘어가면 아무것도 안 남습니다. 어떻게 실패하는지가 다음 실험을 정하니까요. 네 단계로 파고들었습니다.
하나, 행동을 눈으로 봅니다. 정책은 하강하고, 손가락을 오므리고, 옮기고, 놓습니다. 순서는 완벽합니다. 위치만 엉뚱합니다. 전문가의 고정 시간표를 통째로 외운 것이고, 눈은 뜨지 않은 상태입니다.

전체 영상:
둘, 이미지가 모델에 들어가기는 하는지 봅니다. 배선이 끊겼을 수도 있으니까요. 진짜 이미지, 새까만 이미지, 옆으로 민 이미지를 넣고 출력을 비교했더니 최대 0.78 rad 차이가 납니다. 이미지는 들어갑니다. 연결 문제는 아닙니다.
셋, 얼마나 보는지 숫자로 잽니다. 큐브를 y축으로 +24cm와 −24cm에 놓고 같은 순간 손끝이 얼마나 따라 움직이는지 쟀습니다. 완전히 보고 있다면 약 48cm 차이가 나야 합니다. 측정값은 −3.5cm, 오히려 반대쪽으로 조금 움직였습니다. 거의 안 봅니다. 이 측정을 접지 프로브, 손끝 차이를 48cm로 나눈 비율을 접지율이라고 부르겠습니다.
넷, 눈 자체의 성능을 봅니다. 이미지 인코더가 뽑은 특징에서 큐브 위치를 선형 회귀로 맞혀 봤습니다. 처음 나온 결정계수가 −37이었습니다. 0이면 평균만 찍는 수준인데 그보다 한참 나쁩니다.
진단 도구가 먼저 고장 났습니다
−37은 “이미지에 정보가 없다”는 뜻이 아니었습니다. 회귀가 망가진 것이었습니다. 특징은 1920차원인데 표본은 240개, 정칙화(과적합을 막는 벌점)가 약하니 과적합으로 터진 겁니다. 정칙화 세기를 훑고 다시 재니 결정계수 x 0.68 / y 0.79, 평균 오차 8.6cm가 나왔습니다. 위치 정보는 상당히 있었습니다.
비슷한 사고가 한 번 더 있었습니다. 접지 프로브를 체크포인트마다 한 번씩 재고 “학습이 진행되면서 조금씩 보기 시작한다”고 기록했다가, 곧 철회했습니다. 이 정책은 행동을 확률적으로 뽑습니다. 같은 가중치, 같은 장면인데 실행할 때마다 답이 다릅니다. 5회씩 다시 재 봤습니다.
| 체크포인트 (k = 천 스텝) | 접지율 평균 | 표준편차 |
|---|---|---|
| 5k | 13% | 9%p |
| 10k | 23% | 14%p |
| 15k | 30% | 23%p |
| 20k | 6% | 16%p |
표준편차가 평균만큼 큽니다. 추세라고 부를 게 없습니다. 한 번 재고 그린 그래프는 그래프가 아니라 낙서였습니다.
이 시리즈의 오래된 교훈이 또 나왔습니다 10편에서 “영상은 검증이 아니다, 수치 잣대로 재라”고 적었습니다. 이번엔 그 수치 잣대 자신이 고장 나 있었습니다. 진단 도구부터 진단하십시오. 아는 답이 있는 곳에서 먼저 돌려 보고, 한 번 재고 판정하지 마십시오.
이번 편에서 남은 것
- 언어로 시키는 픽앤플레이스 환경과, 3초에 시연 하나씩 찍어내는 데이터 공장이 생겼습니다.
- 첫 정책은 loss 0.023에 성공률 0/30입니다. 낮은 loss는 성공을 보증하지 않습니다.
- 실패의 결은 분명합니다. 순서는 외웠고 눈은 안 떴습니다.
- 그리고 진단 도구가 두 번 고장 났습니다.
다음 편에서는 “그러면 뭘 더 주면 되나”를 세 번 시도하고 세 번 다 기각당합니다. 그 세 번의 기각이 있어야 진짜 원인에 도달하는데, 미리 말씀드리면 원인은 우리가 준 것에 있지 않고 정책이 무엇을 보지 않기로 했는가에 있었습니다.
로봇에게 “빨간 걸 파란 데 올려”라고 말했더니 빨간 것도 파란 것도 안 보고 허공에서 아주 정확한 시간표대로 춤을 췄습니다. 시키는 대로 하긴 했습니다. 시간표대로요.
이 시리즈의 전체 글 목록 → 시리즈 목차