정책이 잘못하는 순간 개입하고, 그 수정 내용을 그대로 학습시키기.
Behavior Cloning으로 학습한 정책은 시연이 다녀간 상태만 알고 있습니다. DAgger는 정책이 스스로 도달하는 상태의 데이터로 이 간극을 메웁니다. AY-Robots는 SO-100에서 전체 루프를 그대로 실행합니다: 체크포인트를 구동하고, 실행 도중 개입하고, 수정된 에피소드를 보관하고, 혼합 데이터셋을 구성하고, 방금 구동한 체크포인트에서 이어서 학습합니다.
- HG-DAgger, human-gated
- SO-100 / SO-101
- ACT, SmolVLA, Pi0, GR00T N1.5 / N1.7
- 라운드별 개입률
학습된 정책이 한 번도 시연되지 않은 행동을 하는 이유
Behavior Cloning은 제어를 평범한 지도학습으로 다룹니다: 관측이 들어가고 관절 목표가 나오며, 사람이 기록한 프레임에 맞춰 학습됩니다. 이는 로봇이 그 사람이 방문했던 상태에 머무는 동안에만 성립하는데, 실제로는 그렇지 않습니다. 그리퍼가 40밀리초 일찍 닫히면 큐브는 시연된 자세에서 2밀리미터 벗어납니다. 다음 관측은 학습 데이터셋에 없는 것이므로 그 지점의 행동은 외삽이 되고, 그 다음 상태는 한층 더 벗어나 있습니다. 학습 분포와 학습된 정책이 실제로 만들어내는 분포는 서로 다른 것이며, 에피소드가 진행될수록 후자는 전자에서 점점 더 멀어집니다.
Ross, Gordon, Bagnell은 2011년에 바로 이 환원 실패를 서술하고 그 피해를 수치화했습니다. 전문가 분포 아래에서 확률 e로 오류를 내는 분류기는 자신이 만들어내는 분포 아래에서는 T 스텝의 호라이즌에 걸쳐 대략 T의 제곱 곱하기 e에 해당하는 오류를 낼 수 있는데, 이는 하나의 실수가 전문가라면 결코 만들어내지 않았을 관측을 낳고 오류가 누적되기 때문입니다. 그 해법이 바로 이 페이지가 다루는 알고리즘입니다. 현재 정책을 구동하고, 그것이 방문하는 상태에 대한 전문가 라벨을 모으고, 지금까지 모은 모든 것과 취합하고, 다시 학습하고, 반복합니다. 같은 종류의 시연을 더 모아도 도움이 되지 않는데, 이는 같은 분포에서 다시 표본을 뽑는 것에 지나지 않기 때문입니다. 도움이 되는 것은 정책이 도달하는 상태에 대한 라벨입니다. 여기에 구현된 변형은 human-gated 방식(HG-DAgger, Kelly 등)입니다: 정책은 사람이 잘못되고 있다고 판단해 개입하기 전까지 계속 제어권을 쥐고 있으므로, 수정은 꼭 필요한 곳에서만 발생하고 팔이 오퍼레이터가 허용하지 않을 상태로 향하도록 지시받는 일은 없습니다.
- Behavior Cloning은 자신이 학습된 상태 분포 위에서만 유효합니다.
- 이 실패는 스스로 증폭됩니다: 작은 편차가 낯선 상태를 만들고, 그 상태가 더 큰 편차를 만듭니다.
- 해법은 더 많은 시연이 아니라 정책이 직접 도달하는 상태에 대한 라벨입니다.
- Human-gated란 자율성 점수가 아니라 오퍼레이터가 언제 개입할지 결정한다는 뜻입니다.
오차가 누적되는 이유
아래에서 호라이즌을 조절하면 그 효과를 바로 확인할 수 있습니다. Behavior Cloning에서는 기대 추가 비용이 대략 스텝 수의 제곱에 비례해 커지는데, 각 실수가 시연이 다루지 않은 상태를 만들어내기 때문입니다. 취합 루프는 이 증가를 거의 선형에 가깝게 유지합니다(Ross et al., 2011).
Ross et al. (2011)의 상한을 바탕으로 한 예시 곡선이며, 실제 로봇에서 측정한 값이 아닙니다. 중요한 것은 숫자가 아니라 곡선의 형태입니다.
DAgger 한 라운드, 여섯 단계
이것은 도식이 아니라 플랫폼이 실제로 이 루프를 실행하는 방식입니다. 아래 각 단계는 콕핏의 조작 요소 하나에 대응합니다.
루프 단계별로 살펴보기
같은 여섯 단계를 하나씩, 각 단계에서 팔과 데이터셋에 무슨 일이 일어나는지와 함께 살펴봅니다.
정책 구동 및 기록
직접 학습한 체크포인트로 추론 실행을 시작합니다. 실행은 진행되는 동안 그 실행 자체의 태스크 텍스트와 함께 기록되므로, 이 프레임들은 나중에 그저 보기만 하는 영상이 아니라 학습 데이터로 쓸 수 있습니다.
개입하고 수정하기
팔이 잘못된 동작을 하는 순간 테이크오버 버튼을 누릅니다. 러너는 멈추고 팔의 제어권은 넘어옵니다. leader 팔을 쓰는 경우에는 먼저 follower의 자세로 이동한 뒤 제어권을 인계하며, 실행 시작 시 선택한 키보드나 슬라이더 입력을 쓰는 경우에는 개입이 곧바로 수동으로 시작됩니다. 동작을 수정한 뒤 제어권을 다시 정책에 넘깁니다. 개입 중 기록된 프레임은 자동으로 개입 프레임으로 표시됩니다.
실행 분류하기
실행마다 그것이 무엇이었는지를 정합니다: 수정으로 분류하거나, 평가 실행으로 남기거나, 폐기합니다. 인계 전후의 정지 프레임은 raw 디렉터리에 남을 뿐 데이터셋에는 들어가지 않습니다.
수정 데이터셋 동기화
수정 내용은 정책별 수정 데이터셋에 모이고 자동 클라우드 동기화를 통해 버킷으로 전송됩니다. 이 시점에는 아무것도 병합되지 않으며, 수정 데이터는 그저 그 자체로 독립된 데이터셋입니다.
혼합 데이터셋 직접 구성하기
데이터셋 구성 기능으로 다음 라운드의 학습 데이터셋을 만듭니다: 원본 데이터셋에 수정 데이터를 더하고, 소스별로 에피소드를 명시적으로 선택합니다. 그 결과는 다른 데이터셋과 똑같이 동기화되고 학습되는 평범한 데이터셋입니다. 뒤에서 몰래 섞이는 것은 없고, 시뮬레이션 데이터가 자동으로 추가되는 일도 없습니다.
체크포인트에서 이어서 학습하기
구성한 데이터셋은 베이스 모델이 아니라 체크포인트에서 이어서 학습 기능으로 학습시켜, 라운드가 방금 구동한 정책에서 시작되도록 합니다. 정확히 말하면 이는 그 체크포인트에서 가중치를 초기화하는 것이며, 옵티마이저를 이어서 재개하는 것은 아닙니다.
플랫폼이 대신 처리하는 것
여기 나열된 항목은 모두, 그렇지 않았다면 직접 만들고 유지보수해야 했을 루프의 한 단계입니다.
leader 팔 없이 테이크오버하기
실행 시작 시 키보드나 슬라이더 입력을 선택하면 노트북 한 대만으로도 수정할 수 있습니다. 키보드 조작은 서버 측에서 관절당 2도, 그리퍼는 4도로 제한됩니다. 슬라이더 목표값은 절대값이며, 서버는 호출당 최대 6도만 그 방향으로 팔을 움직입니다. 이 제한은 UI가 아니라 서버가 강제하므로, 키가 눌린 채로 걸려도 팔이 폭주하지 않습니다.
텔레오퍼레이션 문서프레임 단위로 표시되는 개입
팔을 직접 조작하는 동안 기록되는 모든 프레임에는 개입 플래그가 붙고, action 컬럼에는 지시된 자세 전체가 담깁니다. 플래그 컬럼을 직접 관리하거나 나중에 프레임 인덱스에 맞춰 정렬할 필요가 없습니다.
LeRobot 데이터셋 형식분류: 수정, 평가, 또는 폐기
각 실행은 저장 카드에서 하나의 결정만 받습니다. 수정 실행은 다음 학습 라운드의 재료가 되고, 평가 실행은 학습에서 제외되어 깨끗한 측정치로 남으며, 잘못된 실행은 조용히 혼합 데이터를 오염시키는 대신 사라집니다.
세션과 에피소드혼합 데이터셋을 명시적으로 구성하기
라운드 n의 학습 데이터셋은 직접 조립합니다: 원본 데이터셋에 수정 데이터를 더하고 소스별로 에피소드를 선택합니다. 자동으로 섞이는 것도, 숨겨진 시뮬레이션 데이터도 없으며, 구성된 결과는 다른 데이터셋과 똑같이 동작합니다.
데이터셋체크포인트에서 이어서 학습하기
베이스 모델 대신 방금 구동한 체크포인트를 학습 실행의 대상으로 지정하면, 각 라운드는 이전 라운드가 끝난 지점에서 시작합니다. 초기화되는 것은 가중치뿐이며 옵티마이저 상태는 복원되지 않으므로, 1라운드는 실현 가능성 테스트로 다루는 편이 좋습니다.
학습라운드 단위로 대여하는 GPU
ACT와 SmolVLA는 4090에서, Pi0와 GR00T N1.5 또는 N1.7은 80GB A100에서 실행됩니다. 라운드를 시작하면 파드가 올라오고, 체크포인트는 버킷에 도착하며, 비용은 그 라운드가 걸린 시간만큼만 지불합니다.
GPU 요금라운드 계획하기
개입률은 이 루프의 진행 지표로, 수정된 프레임 수를 실행의 전체 프레임 수로 나눈 값입니다. 시작 값과 라운드마다 얻는 개선폭을 설정하면 목표에 도달하기까지 몇 라운드가 필요한지 확인할 수 있습니다.
| 라운드 | 개입률 | 수정된 프레임 |
|---|---|---|
| 1 | 30.0 % | 900 |
| 2 | 22.5 % | 675 |
| 3 | 16.9 % | 506 |
| 4 | 12.7 % | 380 |
| 5 | 9.5 % | 285 |
| 6 | 7.1 % | 214 |
| Σ | 2 960 | |
이것은 예측이 아니라 모델입니다. 실제 라운드는 들쭉날쭉하며, 개입률을 움직이지 못한 라운드는 아무 소득이 없었던 것입니다. 바로 그 신호를 지켜볼 가치가 있습니다.
루프를 직접 구축하는 경우와 여기서 실행하는 경우
이 중 어느 것도 손으로 못 만들 정도는 아닙니다. 문제는 몇 밤을 라운드가 아니라 인프라 구축에 쏟아붓느냐이며, 직접 만드는 쪽이 분명히 더 나은 답인 행이 하나 있습니다.
| 루프의 단계 | 직접 구축 | AY-Robots에서 |
|---|---|---|
| 실행 도중 개입하기 | leader 팔이나 서보 버스 위에서 동작하는 직접 작성한 코드가 필요합니다. 안전 제한을 포함한 키보드·슬라이더 개입은 직접 작성한 뒤 실제 하드웨어에서 디버깅해야 합니다. | leader 팔, 키보드, 슬라이더 중에서 실행 시작 시 선택합니다. 각도 제한은 서버에 있습니다. |
| 개입 표시하기 | 직접 플래그 컬럼을 추가하고 프레임 인덱스와 맞춰 정렬을 유지하며, 기록 형식이 바뀔 때마다 다시 확인해야 합니다. | 테이크오버 중 기록된 모든 프레임은 자동으로 표시되며, action 컬럼에는 지시된 자세가 담깁니다. |
| 실행 분류하기 | 디렉터리 규칙과 셸 스크립트가 필요합니다. 인계 전후의 정지 프레임은 직접 찾아서 걸러내야 합니다. | 저장 카드에서 실행마다 하나의 결정만 내리면 됩니다. 인계 프레임은 raw 디렉터리에 남습니다. |
| 혼합 데이터셋 구축하기 | 형식 버전마다 병합 스크립트가 필요합니다. 에피소드 인덱스, 메타데이터, 영상 참조를 일관되게 맞추는 일이 가장 번거로운 부분입니다. | 원본에 수정 데이터를 더해 소스별로 에피소드를 선택해 구성합니다. 결과는 평범한 데이터셋입니다. |
| 직전 정책에서 다음 라운드 시작하기 | 체크포인트를 직접 트레이너에 연결해야 하며, 진짜 이어서 재개하려면 옵티마이저 상태도 직접 복원할 수 있습니다. | 베이스 체크포인트를 지정하는 필드 하나뿐입니다. 가중치만 초기화할 뿐, 옵티마이저를 이어서 재개하는 것은 아닙니다. |
| 학습 루프에 대한 통제권 | 완전한 통제권을 가집니다. 손실 함수, 일정, 애블레이션, 계측까지 모두 직접 정하며 플랫폼이 끼어들지 않습니다. 연구 질문 자체가 학습 루프라면 직접 만드는 편이 맞습니다. | 정해진 정책 목록과 폼이 제공하는 하이퍼파라미터로 정해진 경로를 따르며, 임의의 코드는 작성할 수 없습니다. |
이 페이지가 근거로 삼는 논문들
이 루프에 이의를 제기하기 전에 먼저 읽어볼 논문들입니다. 각 링크는 페이월이 아니라 초록 페이지로 연결됩니다.
- A Reduction of Imitation Learning and Structured Prediction to No-Regret Online Learning
Stephane Ross, Geoffrey J. Gordon, J. Andrew Bagnell · 2011 · AISTATS 2011 (PMLR 15)
DAgger 원 논문입니다. 오차 누적 문제를 제시하고, 단순 지도학습 방식에 대한 T 제곱 상한을 제시하며, 학습자가 스스로 방문하는 상태로부터 데이터를 취합할 것을 제안합니다.
- HG-DAgger: Interactive Imitation Learning with Human Experts
Michael Kelly, Chelsea Sidrane, Katherine Driggs-Campbell, Mykel J. Kochenderfer · 2019 · arXiv:1810.02890, ICRA 2019
human-gated 변형입니다. 전문가가 정책이 선택한 상태에 대해 질문받는 대신 언제 제어권을 가져올지 직접 결정하며, 이 플랫폼이 구현하는 방식이 바로 이것입니다.
- EnsembleDAgger: A Bayesian Approach to Safe Imitation Learning
Kunal Menda, Katherine Driggs-Campbell, Mykel J. Kochenderfer · 2019 · arXiv:1807.08364, IROS 2019
개입을 게이팅하는 또 다른 방법입니다. 앙상블 간의 불일치를 학습자가 단독으로 행동해도 되는지에 대한 신뢰 신호로 사용합니다. 사람이 직접 판단하게 하는 방식과 대조해 볼 만합니다.
- ThriftyDAgger: Budget-Aware Novelty and Risk Gating for Interactive Imitation Learning
Ryan Hoque, Ashwin Balakrishna, Ellen Novoseller, Albert Wilcox, Daniel S. Brown, Ken Goldberg · 2021 · CoRL 2021
사람의 주의력을 희소 자원으로 취급해 새롭거나 위험한 상태에서만 도움을 요청합니다. 한 사람이 오후 내내 팔을 감독하는 상황에 맞는 틀입니다.
- DART: Noise Injection for Robust Imitation Learning
Michael Laskey, Jonathan Lee, Roy Fox, Anca Dragan, Ken Goldberg · 2017 · CoRL 2017
정직한 대안입니다. 정책을 온라인으로 수정하는 대신 시연에 섭동을 가해 전문가가 복구 동작을 보여주게 합니다. 개입 방식을 택하기 전에 알아둘 가치가 있습니다.
- Interactive Imitation Learning in Robotics: A Survey
Carlos Celemin, Rodrigo Perez-Dattari, Eugenio Chisari, Giovanni Franzese, Leandro de Souza Rosa, Ravi Prakash, Zlatan Ajanovic, Marta Ferraz, Abhinav Valada, Jens Kober · 2022 · arXiv:2211.00600
이 분야의 지도입니다. 어떤 형태의 인간 피드백이 있는지, 어떤 인터페이스가 이를 전달하는지, DAgger 방식의 개입이 그 안에서 어디에 위치하는지를 정리합니다.
- Learning Fine-Grained Bimanual Manipulation with Low-Cost Hardware
Tony Z. Zhao, Vikash Kumar, Sergey Levine, Chelsea Finn · 2023 · arXiv:2304.13705
ACT 논문입니다. 저렴한 팔을 애초에 모방 정책으로 구동할 수 있는 이유가 바로 action chunking이며, ACT는 DAgger 라운드를 가장 빠르게 반복할 수 있는 정책입니다.
- π0: A Vision-Language-Action Flow Model for General Robot Control
Kevin Black, Noah Brown, Danny Driess, Adnan Esmail, Michael Equi, Chelsea Finn et al. · 2024 · arXiv:2410.24164
사전학습된 vision-language model 위에 구축된 flow-matching 방식의 VLA이며, 여기서 파인튜닝할 수 있는 체크포인트 중 하나이기도 합니다. 논문은 새로운 스킬이 파인튜닝에서 나오는 것이지 베이스 모델만으로는 나오지 않는다고 명확히 밝힙니다.
실제로 자주 나오는 질문
DAgger에 leader 팔이 꼭 필요한가요?
아닙니다. 실행 시작 시 키보드나 슬라이더 입력을 선택하면 첫 프레임부터 브라우저를 통한 수동 테이크오버가 됩니다. leader 팔은 미세한 동작에 더 편하고, 인계 전에 팔이 스스로 자세를 맞추는 유일한 방식이기도 하지만, 루프 자체는 leader 팔 없이도 돌아갑니다.
DAgger 라운드는 몇 번 필요한가요?
정직하게 말하면 정해진 숫자는 없습니다. 핵심은 개입률입니다. 한 라운드에서 다음 라운드로 넘어갈 때 개입률이 떨어지지 않는다면 그 라운드는 아무 소득이 없었던 것이며, 원인은 대개 라운드 횟수가 아니라 과제 설정, 카메라, 원본 데이터셋에 있습니다.
이것은 진짜 DAgger인가요, 아니면 느슨한 변형인가요?
이것은 HG-DAgger, 즉 human-gated 변형입니다. 고전적인 DAgger는 정책이 선택한 상태에 대해 전문가에게 질문하는데, 여기에는 제정신인 오퍼레이터라면 실제 팔이 도달하게 두지 않을 상태도 포함됩니다. 여기서는 사람이 언제 개입할지 결정하고, 그 구간만 라벨이 됩니다.
수정 데이터만으로 학습하나요?
아닙니다, 그렇게 해서도 안 됩니다. 수정 데이터만으로 학습하면 복구하는 법만 아는 정책이 됩니다. 구성한 데이터셋은 원본 데이터에 수정 데이터를 더한 것이며, 각 소스에서 가져올 에피소드는 명시적으로 선택합니다.
체크포인트에서 이어서 학습하면 학습 실행이 재개되나요?
그 체크포인트에서 가중치를 초기화할 뿐입니다. 옵티마이저 상태는 복원되지 않으므로 엄밀한 의미의 재개는 아닙니다. 실제로는 학습된 동작을 라운드 사이로 옮기는 것이 가중치이지만, 둘 중 무엇을 얻고 있는지는 알아둘 가치가 있습니다.
개입률은 어떻게 계산되나요?
개입으로 표시된 프레임 수를 해당 실행의 전체 프레임 수로 나눈 값입니다. 테이크오버 상태에 표시되며, 구동한 체크포인트와 학습한 혼합 데이터셋과 함께 라운드마다 기록해 둘 가치가 있는 유일한 숫자입니다.
이 루프는 어떤 정책과 함께 실행할 수 있나요?
ACT, SmolVLA, Pi0, 그리고 GR00T N1.5 또는 N1.7입니다. 루프 자체는 데이터셋과 체크포인트만 만들어내므로 정책에 무관하며, 실질적인 차이는 한 라운드에 걸리는 시간과 필요한 GPU뿐입니다.
로봇을 직접 소유하지 않아도 할 수 있나요?
마켓플레이스에서 데이터셋을 구매하거나 오퍼레이터에게 의뢰하면 로봇 없이도 기록과 학습이 가능하며, 라이브 페이지에서는 브라우저로 실제 SO-100을 조작할 수 있습니다. 하지만 DAgger 라운드는 다릅니다: 실행 도중 개입할 수 있는 팔이 필요하므로, 루프 자체를 위해서는 자신의 책상 위에 하드웨어가 있어야 합니다.
A real SO-100, live in the browser. No signup, no hardware needed.
이번 주에 첫 라운드 실행하기
클라이언트를 설치하고, 이미 가진 체크포인트를 구동하고, 팔이 큐브를 지나쳐버리는 첫 순간에 개입합니다. 이 한 번의 실행이 축소판 DAgger 라운드이며, 그 다음은 모두 혼합 데이터셋을 구성하고 GPU 사용 시간을 지불하는 일입니다.