이 핸즈온은 모방학습(Imitation Learning)과 강화학습(Reinforcement Learning)을 직접 시뮬레이션해보는 실습입니다. 목표는 처음부터 실제 로봇을 움직이는 것이 아니라, 자원 수준에 따라 세 가지 메뉴로 나누어 단계적으로 체험하는 것입니다.
핵심 아이디어는 간단합니다.
모방학습:
전문가가 어떤 상태에서 어떤 행동을 했는지 보고 따라 합니다.
강화학습:
환경에서 행동해보고 보상을 기준으로 더 나은 정책을 찾습니다.
추천 흐름:
Behavioral Cloning으로 시작
→ DAgger식 보정 데이터 추가
→ 필요하면 PPO/DQN 같은 RL로 개선
| 메뉴 | 필요 자원 | 실습 이름 | 핵심 목표 |
|---|---|---|---|
| 1 | 노트북 CPU | CourtCam-Lite 또는 EngineeringStudent-Imitator |
이미지 없이 저차원 상태값으로 모방학습과 간단한 RL을 실험합니다. |
| 2 | GPU | Vision Imitation Simulation |
카메라 이미지 기반 demonstration으로 더 좋은 품질의 정책을 학습합니다. |
| 3 | GPU + 실제 로봇 | LeRobot Hands-on |
실제 로봇 데이터를 기록하고 LeRobot으로 정책을 학습·평가합니다. |
첫 번째 실습은 고사양 GPU 없이 진행합니다. 중요한 원칙은 이미지를 쓰지 않고 상태값을 직접 설계하는 것입니다.
추천 주제는 두 가지입니다.
선택 A: CourtCam-Lite
움직이는 선수/물체를 따라가는 가상 카메라 pan 정책을 학습합니다.
선택 B: EngineeringStudent-Imitator
공대생의 공부, 디버깅, 실험 준비 루틴에서 다음 행동을 예측합니다.
처음에는 CourtCam-Lite가 더 직관적입니다. 디즈니식 Smooth Imitation Learning 아이디어처럼, 사람이 조작한 카메라 움직임을 모델이 따라 하되 너무 튀지 않게 만드는 것이 목표입니다.
Python
Gymnasium
NumPy / pandas
scikit-learn 또는 PyTorch MLP
Stable-Baselines3
imitation
matplotlib
이미지 대신 숫자 feature만 씁니다.
state:
- 주요 물체 x, y 위치
- 주요 물체 속도
- 현재 카메라 pan 값
- 이전 action
- 화면 중심과 목표 물체의 거리
action:
- pan_left
- pan_right
- stay
EngineeringStudent-Imitator로 바꾸면 이렇게 됩니다.
state:
- 현재 시간
- 과제 마감까지 남은 시간
- IDE 실행 여부
- 테스트 실패 여부
- Git diff 크기
- 최근 집중 시간
action:
- 코딩하기
- 테스트 돌리기
- 에러 로그 보기
- 질문하기
- 쉬기
1. Gymnasium 환경을 만듭니다.
2. 사람이 키보드로 전문가 행동 데이터를 10~20 episode 수집합니다.
3. state → action 데이터셋을 만듭니다.
4. Behavioral Cloning으로 작은 MLP를 학습합니다.
5. 모델이 직접 행동하게 한 뒤, 틀린 순간만 사람이 보정합니다.
6. 보정 데이터를 추가해 DAgger처럼 재학습합니다.
7. Stable-Baselines3의 PPO/DQN으로 보상 기반 fine-tuning을 해봅니다.
CourtCam-Lite에서는 다음처럼 보상을 줄 수 있습니다.
+1.0 목표 물체가 화면 중심 근처에 있음
-0.5 목표 물체가 화면 밖으로 나감
-0.1 pan을 너무 자주 바꿈
-0.2 이전 action과 크게 달라져 화면이 튐
이 실습의 핵심은 정확도만 높이는 것이 아닙니다.
좋은 정책 = 사람의 행동을 따라 하면서도 부드럽게 움직이는 정책
1. 사람이 조작한 trajectory
2. Behavioral Cloning 모델 trajectory
3. DAgger 보정 전/후 비교
4. PPO/DQN fine-tuning 전/후 reward 그래프
5. 움직임 smoothness 비교 그래프
두 번째 실습은 좀 더 품질 좋은 버전입니다. 여기서는 저차원 feature가 아니라 카메라 이미지를 observation으로 사용합니다. 그래서 GPU가 있으면 훨씬 유리합니다.
Vision Imitation Simulation
목표:
시뮬레이션 환경에서 demonstration을 보고,
카메라 이미지 기반 정책이 물체 집기, 이동, 정렬 같은 행동을 따라 하게 만듭니다.
실제 로봇은 쓰지 않고, 로봇 조작 시뮬레이터와 공개 demonstration 데이터셋을 사용합니다.
Python
PyTorch + CUDA
robomimic
robosuite 또는 MuJoCo 기반 환경
HDF5 demonstration dataset
Weights & Biases 또는 TensorBoard
이 단계부터는 입력이 다음처럼 커집니다.
observation:
- RGB image
- robot joint state
- gripper state
- previous action
action:
- end-effector delta position
- rotation
- gripper open/close
이미지 encoder, CNN, RNN, Transformer 계열 policy를 학습해야 하므로 CPU만으로는 실습 시간이 길어집니다.
1. robomimic 예제 dataset을 준비합니다.
2. Lift, Can, Square 같은 간단한 manipulation task를 선택합니다.
3. observation에 image + proprioception을 넣습니다.
4. BC 또는 BC-RNN policy를 학습합니다.
5. 학습된 policy를 시뮬레이터에서 rollout합니다.
6. 성공률, episode reward, 실패 case를 비교합니다.
비교 실험은 간단히 잡습니다.
실험 A:
low-dimensional state만 사용
실험 B:
RGB image만 사용
실험 C:
RGB image + robot proprioception 사용
기대되는 관찰은 다음과 같습니다.
state only:
빠르고 가볍지만 실제 화면 변화에 약합니다.
image only:
장면을 직접 보지만 학습이 어렵고 데이터가 많이 필요합니다.
image + proprioception:
비전과 로봇 상태를 함께 써서 가장 안정적입니다.
1. 학습 loss curve
2. rollout 성공률
3. 실패 episode 영상
4. state-only vs vision policy 비교
5. demonstration과 policy trajectory 비교
세 번째 실습은 실제 로봇까지 포함합니다. 여기서는 Hugging Face의 LeRobot을 사용해 데이터를 기록하고, policy를 학습하고, 실제 로봇에서 평가합니다.
이 세션은 가장 현실감이 크지만 준비물도 가장 많습니다.
GPU:
CUDA 가능한 NVIDIA GPU 권장
로봇:
LeRobot에서 지원하는 로봇팔 또는 저가 조작 로봇
센서:
카메라 1~2대
로봇 joint state
gripper state
소프트웨어:
LeRobot
PyTorch
Hugging Face dataset/hub 도구
Pick-and-place Imitation
목표:
사람이 직접 로봇을 조작해 demonstration을 수집하고,
그 데이터를 기반으로 로봇이 같은 작업을 따라 하게 만듭니다.
예시 task는 단순해야 합니다.
- 큐브 집어서 왼쪽 바구니에 넣기
- 특정 색 물체를 지정 위치로 옮기기
- 책상 위 공구를 정해진 트레이에 놓기
1. 로봇과 카메라를 calibration합니다.
2. 사람이 직접 20~100개 demonstration episode를 기록합니다.
3. LeRobot dataset 형식으로 저장합니다.
4. ACT, Diffusion Policy, CNN 기반 policy 중 하나를 선택해 학습합니다.
5. validation rollout으로 먼저 확인합니다.
6. 실제 로봇에서 천천히 evaluation합니다.
7. 실패 case를 다시 demonstration으로 추가합니다.
| 항목 | 시뮬레이션 실습 | LeRobot 실습 |
|---|---|---|
| 데이터 | 가상 환경 또는 공개 dataset | 직접 기록한 실제 robot dataset |
| 실패 비용 | 낮음 | 높음 |
| 주요 리스크 | 학습이 안 됨 | 로봇 충돌, calibration 오류, 안전 문제 |
| 핵심 역량 | 모델 학습과 평가 | 데이터 수집, 로봇 세팅, 안전한 rollout |
실제 로봇에서는 강화학습 탐험을 바로 시키면 안 됩니다. 처음에는 반드시 모방학습으로 시작합니다.
권장:
사람 demonstration
→ offline imitation learning
→ 낮은 속도에서 evaluation
→ 실패 case 추가 수집
→ 재학습
비권장:
초기 policy를 실제 로봇에서 무작위 탐험하게 하기
1. 직접 기록한 demonstration dataset
2. 학습된 LeRobot policy checkpoint
3. 실제 robot rollout 영상
4. 성공/실패 case 분석
5. 추가 demonstration 전/후 성능 비교
세 메뉴는 따로 떨어진 실습이 아니라 난이도 순서로 연결됩니다.
메뉴 1:
상태값만으로 정책을 배웁니다.
모방학습과 강화학습의 기본 감각을 익힙니다.
메뉴 2:
카메라 이미지를 observation으로 넣습니다.
비전 기반 정책의 데이터 요구량과 GPU 필요성을 체감합니다.
메뉴 3:
실제 로봇에서 demonstration을 기록합니다.
시뮬레이션과 현실 사이의 차이를 체감합니다.
가장 중요한 메시지는 이것입니다.
처음부터 실제 로봇 강화학습을 하지 말고, 작은 상태 기반 모방학습으로 시작한 뒤 비전 시뮬레이션과 실제 로봇으로 확장하는 것이 현실적입니다.
| 시간 | 내용 |
|---|---|
| 0-10분 | 모방학습, 강화학습, Behavioral Cloning, DAgger 개념 소개 |
| 10-25분 | 메뉴 1: CPU 기반 CourtCam-Lite 실습 구조 설명 |
| 25-40분 | 메뉴 2: GPU 기반 vision imitation simulation 구조 설명 |
| 40-55분 | 메뉴 3: LeRobot 데이터 수집·학습·평가 흐름 설명 |
| 55-60분 | 세 메뉴를 어떤 프로젝트로 확장할지 토론 |
CPU 실습:
- Gymnasium
- Stable-Baselines3
- imitation
- d3rlpy
- CleanRL
GPU 시뮬레이션:
- robomimic
- robosuite
- PyTorch
- MuJoCo
실제 로봇:
- Hugging Face LeRobot