시뮬레이션-현실 전이(Sim-to-Real Transfer)

시뮬레이터(simulator)에서 학습됐지만 하드웨어(hardware)에서 실패하는 정책(policy)은 시뮬레이터를 외워버린 정책입니다. 학습된 컨트롤러(controller)가 현실 간극(reality gap)을 건너게 만드는 세 가지 도구는 도메인 무작위화(domain randomization), 도메인 적응(domain adaptation), 시스템 식별(system identification)입니다.

유형: Learn 언어: Python 선수 지식: Phase 9 · 08 (PPO), Phase 2 · 10 (Bias/Variance) 예상 시간: 약 45분

문제

실제 로봇을 학습시키는 일은 느리고, 위험하며, 비쌉니다. 이족보행 로봇(biped)이 걷는 법을 배우려면 수백만 회의 학습 에피소드(training episode)가 필요합니다. 실제 이족보행 로봇이 단 한 번만 넘어져도 하드웨어가 망가질 수 있습니다. 시뮬레이션(simulation)은 무제한 리셋(reset), 결정론적 재현성(deterministic reproducibility), 병렬 환경(parallel environments), 그리고 물리적 손상이 없다는 장점을 제공합니다.

하지만 시뮬레이터는 틀립니다. 베어링(bearing)에는 MuJoCo 모델이 가정하는 것보다 큰 마찰력(friction)이 작용합니다. 카메라(camera)에는 시뮬레이터가 포함하지 않는 렌즈 왜곡(lens distortion)이 있습니다. 모터(motor)에는 지연(delay), 백래시(backlash), 포화(saturation)가 있고, 시뮬레이션 모델의 99%는 이를 건너뜁니다. 바람, 먼지, 변동하는 조명은 깨끗한 렌더링(sterile rendering)에서 학습한 정책을 망가뜨립니다. 현실 간극(reality gap), 즉 시뮬레이션 분포(sim distribution)와 실제 분포(real distribution) 사이의 체계적 차이는 로봇공학(robotics)에 배포되는 강화학습(deployed RL)의 핵심 문제입니다.

필요한 것은 *시뮬레이션-현실 분포 변화(sim-to-real distribution shift)*에 대해 강건한(robust) 정책입니다. 역사적으로 세 가지 접근이 있습니다. 시뮬레이터를 무작위화하는 도메인 무작위화(domain randomization), 약간의 실제 데이터(real data)로 정책을 적응(adapt)시키는 도메인 적응(domain adaptation) 또는 미세조정(fine-tuning), 그리고 실제 시스템의 매개변수(parameter)를 식별해 시뮬레이션을 맞추는 시스템 식별(system identification)입니다. 2026년의 지배적인 레시피(recipe)는 세 가지를 모두 대규모 병렬 시뮬레이션(massive parallel simulation; Isaac Sim, Isaac Lab, GPU 위의 Mujoco MJX)과 결합합니다.

사전 테스트

2문제 · 이 강의를 시작하기 전에 얼마나 알고 있는지 확인해보세요

1.실제 로봇에서 RL 에이전트를 학습시키는 것은 느리고, 비싸고, 위험합니다. 시뮬레이션이 이 문제들을 해결하지만 새로운 문제를 도입합니다. 이 핵심 도전 과제의 이름은 무엇인가요?

2.도메인 무작위화(Domain Randomization; DR)는 여러 무작위화된 시뮬레이션 변형에서 정책을 학습합니다. 이것이 시뮬레이션-현실 전이(sim-to-real transfer)에 도움이 되는 직관은 무엇인가요?

0/2 답변 완료

개념

three ways to close the reality gap the reality gap sim physics approx = real physics + epsilon (friction, delay, lighting, noise, ...) domain randomization theta_sim ~ P(theta) train over many sims policy sees random gravity, mass, friction, motor gain zero real data needed OpenAI Dactyl (rubik's cube) over-rand. -> cautious under-rand. -> brittle system identification measure real: friction, delays, gains plug into sim train on matched sim low noise, precise but residual error invisible to the policy teacher / student teacher: privileged info terrain, ground truth student: only sensor obs distill teacher -> student ANYmal, Boston Dynamics robust across physical parameters + obs noise 2026 recipe: GPU-parallel sim + DR + teacher/student + safety shield on real hardware

도메인 무작위화(Domain Randomization; DR). Tobin et al. 2017, Peng et al. 2018에서 제안된 방법입니다. 학습 도중 실제 로봇과 달라질 수 있는 모든 시뮬레이션 매개변수를 무작위화합니다. 질량(mass), 마찰 계수(friction coefficients), 모터 PD 게인(motor PD gains), 센서 노이즈(sensor noise), 카메라 위치(camera position), 조명(lighting), 텍스처(textures), 접촉 모델(contact models) 등이 포함됩니다. 정책은 "오늘 어떤 시뮬레이션 안에 있는지"에 대한 조건부 분포(conditional distribution)를 학습하고 전체 범위에 걸쳐 일반화(generalize)합니다. 실제 로봇이 학습 범위(training envelope) 안에 들어 있으면 정책이 작동합니다.

  • 장점: 실제 데이터가 필요 없습니다. 하나의 레시피로 여러 로봇에 적용할 수 있습니다.
  • 단점: 과도하게 무작위화된 학습은 "범용"이지만 지나치게 조심스러운 정책을 만듭니다. 노이즈가 너무 많은 것은 정규화(regularization)가 너무 많은 것과 같습니다.

시스템 식별(System Identification; SI). 학습 전에 시뮬레이터의 매개변수를 실제 환경 데이터에 맞춥니다. 실제 로봇의 팔 관절 마찰(arm-joint friction)을 측정할 수 있다면 그 값을 시뮬레이션에 넣습니다. 그런 값을 전제로 동작하는 정책을 학습합니다. 실제 시스템에 대한 접근이 필요하지만 현실 간극을 직접 줄여줍니다.

  • 장점: 정확하고 노이즈가 낮은 학습 목표를 제공합니다.
  • 단점: 남은 모델 오차(model error)는 정책에 보이지 않습니다. 모터 데드밴드(motor deadband) 같은 작은 미식별 효과도 배포(deployment)를 깨뜨릴 수 있습니다.

도메인 적응(Domain Adaptation). 시뮬레이션에서 학습한 뒤 소량의 실제 데이터로 미세조정합니다. 두 가지 방식이 있습니다.

  • Real2Sim2Real: 실제 롤아웃(real rollout)으로 잔차 시뮬레이터(residual simulator) f(s, a, z) - f_sim(s, a)를 학습하고, 그 보정된 시뮬레이션에서 정책을 학습합니다. 많은 실제 데이터 없이 현실 간극을 좁힐 수 있습니다.
  • 관측 적응(Observation adaptation): 실제 관측(real obs)을 시뮬레이션과 유사한 관측(sim-like obs)으로 매핑하는 특징 추출기(feature extractor)를 학습합니다. 예를 들어 GAN 기반 픽셀-투-픽셀(pixel-to-pixel) 변환이 있습니다. 컨트롤러 자체는 시뮬레이션 안에 머무릅니다.

특권 학습 / 교사-학생(Privileged learning / teacher-student). Miki et al. 2022(ANYmal 사족 로봇)에서 제안된 방식입니다. 시뮬레이션에서 지면 진실(ground truth) 마찰, 지형 높이(terrain height), 관성 측정 장치(IMU) 드리프트 같은 특권 정보(privileged information)에 접근할 수 있는 *교사(teacher)*를 학습합니다. 그리고 실제 센서 관측(real-sensor observation)만 보는 *학생(student)*을 증류(distill)합니다. 학생은 관측 이력(history)으로부터 특권 특징을 추론하는 법을 배우고, 물리 매개변수 전반에 걸쳐 강건해집니다.

대규모 병렬 시뮬레이션(Massively parallel simulation). 2024-2026년의 흐름입니다. Isaac Lab, Mujoco MJX, Brax는 단일 GPU에서 수천 개의 병렬 로봇을 실행합니다. 4,096개의 병렬 휴머노이드(humanoid)를 사용하는 PPO는 몇 시간 안에 수년치 경험을 수집합니다. 각 4,096개의 환경(env)이 서로 다른 무작위화된 매개변수를 가지면 도메인 무작위화는 거의 공짜가 되며, 학습 분포가 넓어질수록 현실 간극은 줄어듭니다.

2026년 실제 레시피(사족 보행 예시):

  1. 중력(gravity), 마찰, 모터 게인, 적재 하중(payload)이 도메인 무작위화된 대규모 병렬 시뮬레이션.
  2. 지형 지도(terrain map), 본체 속도(body velocity) 등 특권 정보를 사용하는 교사 정책 학습.
  3. 다리 관절 엔코더(leg joint encoder) 등 고유 감각(proprioception)만 사용하는 학생 정책을 교사로부터 증류.
  4. 실제 관성 측정 장치(IMU) 위의 오토인코더(autoencoder)를 통한 선택적 관측 적응.
  5. 배포. 10개 이상의 환경에서 제로샷(zero-shot) 성공. 실패하면 안전 제약이 있는 PPO(safety-constrained PPO)로 몇 분간 실제 환경 미세조정.

직접 만들기

이 강의의 코드는 노이즈가 있는 전이(transition)를 가진 GridWorld에서 도메인 무작위화를 작게 보여주는 예시입니다. "sim"에서 무작위화된 미끄러짐 확률(slip probability)을 경험하는 정책을 학습한 뒤, 학습 도중 본 적 없는 미끄러짐 수준(slip level)을 가진 "real"에서 평가합니다. 이 구조는 MuJoCo에서 하드웨어로의 전이와 직접 대응됩니다.

Step 1: 매개변수화된 시뮬레이션

def step(state, action, slip):
    if rng.random() < slip:
        action = random_perpendicular(action)
    ...

slip은 시뮬레이터가 노출하는 매개변수입니다. 실제 로봇공학에서는 마찰, 질량, 모터 게인처럼 시뮬레이션과 실제 사이에서 달라지는 모든 것이 될 수 있습니다.

Step 2: 도메인 무작위화로 학습하기

각 에피소드 시작 시 slip ~ Uniform[0.0, 0.4]를 표본(sample)합니다. PPO, Q-러닝(Q-learning), 또는 어떤 알고리즘이든 사용해 학습합니다. 많은 에피소드 동안 반복합니다.

Step 3: "real" 미끄러짐에서 제로샷 평가하기

slip ∈ {0.0, 0.1, 0.2, 0.3, 0.5, 0.7}에서 평가합니다. 앞 네 값은 학습 지원 범위(training support) 안이고, 0.50.7은 바깥입니다. 도메인 무작위화로 학습한 정책은 지원 범위 안에서는 최적에 가까운 성능을 유지하고, 바깥에서는 점진적으로 성능이 낮아져야(degrade gracefully) 합니다. 고정 미끄러짐으로만 학습한 정책은 학습 시점의 미끄러짐 값 바깥에서 취약합니다.

Step 4: 좁은 학습과 비교하기

두 번째 정책은 slip = 0.0에서만 학습합니다. 같은 미끄러짐 스윕(slip sweep)에서 평가합니다. 실제 미끄러짐이 0보다 커지는 순간 치명적인 성능 하락(catastrophic drop)을 관찰할 수 있어야 합니다.

주의할 점

  • 너무 많은 무작위화. slip ∈ [0, 0.9]에서 학습하면 정책이 너무 위험 회피적(risk-averse)이 되어 최적 경로(optimal path)를 시도하지 않습니다. "어떤 일이든 일어날 수 있다"가 아니라 예상되는 실제 분포에 맞춰야 합니다.
  • 너무 적은 무작위화. 얇은 구간에서만 학습하면 정책이 전혀 일반화하지 못합니다. 정책이 개선될수록 분포를 넓혀가는 적응적 커리큘럼(adaptive curriculum; Automatic Domain Randomization)을 사용합니다.
  • 잘못 식별한 매개변수 공간. 실제 간극이 모터 지연인데 카메라 색상(camera hue)을 무작위화하면 도메인 무작위화는 도움이 되지 않습니다. 먼저 실제 로봇을 프로파일링(profile)합니다.
  • 특권 정보 누출(Privileged info leakage). 교사가 관측이 아니라 전역 상태(global state)를 행동에 사용하면, 학생이 따라잡을 수 없는 정책을 만들 수 있습니다. 교사 정책이 관측 이력으로부터 학생에게 실현 가능(realizable)해야 합니다.
  • 시뮬레이션-시뮬레이션 전이 실패(Sim-to-sim transfer failure). 더 어려운 시뮬레이션 변형(sim variant)에 강건하지 않은 정책은 실제 환경에서도 강건하지 않습니다. 배포 전에 항상 보류해 둔(held-out) 시뮬레이션 변형에서 테스트합니다.
  • 실세계 안전 범위(safety envelope)의 부재. 시뮬레이션에서도 동작하고 실제에서도 "동작"하는 정책이라도 저수준 안전 차단막(low-level safety shield)이 없으면 하드웨어를 파손할 수 있습니다. 학습되지 않은 컨트롤러 안에 속도 제한(rate limits), 토크 제한(torque limits), 관절 제한(joint limits)을 추가합니다.

사용해보기

2026년의 시뮬레이션-현실 전이 스택은 다음과 같습니다.

도메인스택
다리 보행(ANYmal, Spot, 휴머노이드)Isaac Lab + DR + 특권 교사/학생
매니퓰레이션(섬세한 손 조작, 픽 앤 플레이스)Isaac Lab + DR + 시각용 DR-GAN
자율주행CARLA / NVIDIA DRIVE Sim + DR + 실제 미세조정
드론 레이싱RotorS / Flightmare + DR + 온라인 적응
손가락/손 안 조작OpenAI Dactyl(전례 없는 규모의 DR)
산업용 로봇 팔MuJoCo-Warp + SI + 소규모 실제 미세조정

규모와 무관하게 제어(control)의 작업 흐름은 일관됩니다. 가능한 만큼 시뮬레이션을 맞추고(fit), 맞출 수 없는 것은 무작위화하고, 거대한 정책을 학습하고, 증류하고, 안전 차단막과 함께 배포합니다.

산출물 만들기

outputs/skill-sim2real-planner.md로 저장합니다.

---
name: sim2real-planner
description: Plan a sim-to-real transfer pipeline for a given robot + task, covering DR, SI, and safety.
version: 1.0.0
phase: 9
lesson: 11
tags: [rl, sim2real, robotics, domain-randomization]
---

Given a robot platform, a task, and access to real hardware time, output:

1. Reality gap inventory. Suspected sources ranked by expected impact (contact, sensing, actuation delay, vision).
2. DR parameters. Exact list, ranges, distribution. Justify each range against real measurements.
3. SI steps. Which parameters to measure; measurement method.
4. Teacher/student split. What privileged info the teacher uses; what obs the student uses.
5. Safety envelope. Low-level limits, emergency stops, backup controller.

Refuse to deploy without (a) a zero-shot sim-variant test, (b) a safety shield, (c) a rollback plan. Flag any DR range wider than 3× measured real variability as likely over-randomized.

연습문제

  1. 쉬움. 고정 미끄러짐 GridWorld(slip=0.0)에서 Q-러닝 에이전트를 학습합니다. slip ∈ {0.0, 0.1, 0.3, 0.5}에서 평가합니다. 미끄러짐 대비 누적 보상(return vs slip)을 시각화합니다.
  2. 중간. slip ~ Uniform[0, 0.3]를 표본하는 도메인 무작위화 Q-러닝 에이전트를 학습합니다. 같은 스윕에서 평가합니다. 학습 분포 바깥(out-of-distribution)인 slip=0.5에서 도메인 무작위화가 얼마나 이득을 주는지 측정합니다.
  3. 어려움. 커리큘럼을 구현합니다. slip=0.0에서 시작해 정책이 최적의 90%에 도달할 때마다 도메인 무작위화 범위를 넓힙니다. 고정 도메인 무작위화 기준선(baseline)과 비교해 slip=0.3 제로샷에 도달하기까지 필요한 총 환경 스텝(total environment step)을 측정합니다.

핵심 용어

용어흔한 설명실제 의미
현실 간극(Reality gap)"시뮬레이션과 실제의 차이"학습과 배포의 물리/감지 사이의 분포 변화이다.
도메인 무작위화(Domain randomization; DR)"여러 무작위 시뮬레이션에서 학습"학습 도중 시뮬레이션 매개변수를 무작위화해 정책이 일반화하도록 한다.
시스템 식별(System identification; SI)"실제를 측정해 시뮬레이션을 맞춤"실제 물리 매개변수를 추정해 시뮬레이션을 거기에 맞춘다.
도메인 적응(Domain adaptation)"실제 데이터로 미세조정"시뮬레이션 학습 후 작은 실제 데이터 미세조정이다. 관측 또는 동역학(dynamics)을 적응시킬 수 있다.
특권 정보(Privileged info)"교사용 지면 진실"시뮬레이션만 가진 정보다. 학생은 관측 이력에서 이를 추론해야 한다.
교사/학생(Teacher/student)"특권 정보를 관측으로 증류"교사는 지름길로 학습하고, 학생은 그것 없이 모방한다.
ADR"자동 도메인 무작위화(Automatic Domain Randomization)"정책이 개선될수록 도메인 무작위화 범위를 넓히는 커리큘럼이다.
Real2Sim"실제 데이터로 간극 좁히기"시뮬레이션이 실제 롤아웃을 흉내 내도록 잔차(residual)를 학습한다.

더 읽을거리

실습 코드

이 강의의 실습 코드 1개

main
Code

산출물

이 강의에서 생성된 프롬프트, 스킬, 코드 산출물 1개

sim2real-planner

Plan a sim-to-real transfer pipeline for a given robot + task, covering DR, SI, and safety.

Skill

확인 문제

3문제 · 모두 맞추면 완료 표시가 가능합니다

1.사족보행 보행 정책을 미끄러짐(slip) [0, 0.3] 범위의 DR로 학습했습니다. slip=0.5(학습 범위 밖)에서 로봇이 심하게 비틀거립니다. 동료가 DR을 [0, 0.9]으로 넓히자고 합니다. 이것이 왜 나쁜 생각일 수 있나요?

2.교사-학생(teacher-student, 특권 학습) 접근법은 시뮬레이션의 지면 진실(ground truth) 정보(지형 높이, 정확한 마찰 등)로 교사를 학습한 뒤, 실제 센서 관측만 사용하는 학생으로 증류(distill)합니다. 학생이 같은 특권 특징(privileged features)을 사용할 수 없는 이유는 무엇인가요?

3.slip=0.0에서 학습한 정책은 slip=0.0에서 최적이지만 slip=0.1에서 치명적으로 실패합니다. DR 학습 정책(slip [0, 0.3])은 [0, 0.3]의 모든 값에서 거의 최적이고 0.5에서 점진적으로 성능이 하락합니다. DR이 고정 매개변수 학습에 없는 어떤 속성을 제공하나요?

0/3 답변 완료

추가 문제 풀기

AI가 강의 내용을 바탕으로 새로운 문제를 생성합니다