Behavioral Cloning
행동 복제는 지도 학습으로 정책이 전문가의 시연을 모방하도록 학습합니다. 작동 방식, 오류가 누적되는 이유, DAgger의 해결 방식을 다룹니다.
행동 복제(BC)는 가장 단순한 모방 학습 방식입니다. 에이전트는 일반적인 지도 학습으로 정책을 학습해, 기록된 시연의 각 상황에서 전문가가 취한 행동을 예측합니다. 학습 데이터는 관측-행동 쌍으로 구성됩니다. 예를 들어 카메라 프레임과 운전자의 조향각을 짝짓거나, 로봇의 관절 측정값과 원격 조작자의 명령을 짝지을 수 있습니다. 연속 행동에는 회귀 손실을, 이산 행동에는 분류 손실을 사용해 정책을 맞춥니다. 행동 복제는 보상 함수가 필요하지 않고 학습 중 환경과 상호작용하지 않으므로, 인간의 시연을 바탕으로 로봇, 차량 및 소프트웨어 AI 에이전트를 학습시키는 일반적인 출발점입니다.
기원 및 대표적인 초기 사례#
이 명칭은 인간의 제어 기술을 재구성하는 도널드 미치와 동료들의 1990년경 연구에서 비롯되었습니다. 가장 잘 알려진 초기 시연은 클로드 사뮈와 동료들이 1992년에 발표한 "Learning to Fly"입니다. 이들은 비행 시뮬레이터를 조종하는 사람들의 제어 행동을 기록하고, 기록에서 결정 트리 자동 조종 장치를 도출했습니다. 카네기 멜런의 딘 포머로가 개발한 ALVINN은 그보다 앞선 1989년에 소형 신경망이 카메라 이미지로 시험 차량을 조향할 수 있음을 보였습니다.
NVIDIA의 2016년 엔드투엔드 자율주행 시스템은 약 72시간 분량의 인간 운전 데이터를 사용해 합성곱 신경망을 학습시켜 전방 카메라의 원시 픽셀을 조향 명령으로 직접 변환했습니다. 뉴저지주 몬머스 카운티의 일반적인 주행에서 시스템은 약 98%의 시간 동안 자율적으로 조향했습니다. 행동이 이산적인 경우 행동 복제는 이미지 분류와 같습니다. 운전자가 취한 행동별로 폴더를 나누고 카메라 프레임을 정리해 학습한 Ultralytics YOLO26 분류 모델은 왼쪽, 직진, 오른쪽과 같은 복제 행동을 최상위 클래스(top-1)로 출력합니다.
누적 오류 문제#
학습 중 정책은 전문가가 방문한 상태만 봅니다. 배포 시에는 폐루프 방식으로 작동하므로 작은 실수 하나가 시연에 없던 상태로 이어지고, 그 상태에서는 다시 실수할 가능성이 커져 궤적을 따라 오류가 누적됩니다. 학습과 배포 상태 간의 이러한 불일치는 공변량 이동의 한 형태입니다. 스테판 로스와 드루 배그넬은 2010년에 단계별 오류가 작더라도 복제 정책의 기대 비용이 작업 길이의 제곱에 비례해 커질 수 있음을 보였습니다. 로스, 제프리 고든, 배그넬이 2011년에 제안한 DAgger(데이터셋 집계)는 이러한 증가를 선형으로 줄였습니다. 학습된 정책이 작동하고, 전문가가 정책이 방문한 상태에 올바른 행동을 라벨링하며, 정책은 지금까지 수집한 모든 라벨을 사용해 재학습됩니다.
이 예제에서는 Gymnasium CartPole 작업을 위해 직접 조정한 제어기를 복제합니다. 이 작업에서는 움직이는 카트 위의 막대가 최대 500단계 동안 균형을 유지해야 하며, 이후 DAgger를 두 차례 적용합니다.
import gymnasium as gym
import numpy as np
from sklearn.tree import DecisionTreeClassifier
env = gym.make("CartPole-v1")
expert = lambda obs: int(obs[2] + 0.5 * obs[3] > 0) # push toward the side the pole leans and falls
def rollout(policy, seed):
"""Run one episode with a policy and return the states it visited."""
obs, _ = env.reset(seed=seed)
states, done = [], False
while not done:
states.append(obs)
obs, _, terminated, truncated, _ = env.step(policy(obs))
done = terminated or truncated
return states
states = rollout(expert, seed=0) # one expert demonstration
for i in range(3):
# Behavioral cloning: fit a classifier from states to the expert's actions
clone = DecisionTreeClassifier(max_depth=5, random_state=0).fit(states, [expert(s) for s in states])
policy = lambda obs: int(clone.predict(obs[None])[0])
steps = np.mean([len(rollout(policy, seed)) for seed in range(100, 110)])
print(f"Round {i}: {len(states)} labeled states, clone balances for {steps:.0f} steps")
states += rollout(policy, seed=i + 1) # DAgger: the expert labels the states the clone visits0라운드는 기본 행동 복제입니다. 막대의 균형을 500단계 내내 유지하는 전문가의 시연 한 번(500단계)을 사용해 학습한 복제 정책은 새 에피소드에서 평균 30단계 동안 막대를 세워 둡니다. 1라운드에서는 0라운드 복제 정책이 추가 에피소드 한 번에서 방문한 23개 상태에 전문가가 라벨을 붙여 추가하고, 평균 유지 단계가 135로 늘어납니다. 2라운드에서 이와 같은 상태를 70개 더 추가하면 복제 정책이 500단계 내내 균형을 유지합니다.
다른 개선 방법은 시연 데이터 자체를 변형합니다. NVIDIA의 자율주행 시스템은 좌우 카메라의 이미지와 카메라 시점의 합성 이동 및 회전을 추가했습니다. 각 이미지에는 2초 이내에 차량을 차선 중앙으로 되돌리는 조향값을 라벨링했습니다. 이는 복구 동작을 학습시키는 데이터 증강의 한 형태입니다. DART는 시연자의 행동에 노이즈를 주입하면서 기록하므로, 데이터에는 전문가가 작은 편차를 수정하는 사례가 포함됩니다. 행동 청킹은 여러 미래 행동을 한 번에 예측해 오류가 누적되는 유효 구간을 줄입니다. ACT 정책은 배터리를 슬롯에 끼우는 것과 같은 정밀한 양손 작업을 10분 분량의 시연으로 학습해 80~90%의 성공률을 달성했습니다.
멀티모달 시연과 최신 정책#
시연자들이 장애물의 왼쪽이나 오른쪽으로 통과하는 것처럼 같은 상황을 서로 다른 방식으로 해결하면, 회귀 정책은 이러한 행동의 평균을 예측하며, 그 평균은 아무도 실제로 취하지 않은 행동일 수 있습니다. Google의 RT-1은 행동 복제를 통해 130,000건의 로봇 시연으로 학습한 트랜스포머로, 각 행동 차원을 256개 구간으로 이산화하고 구간 값을 토큰으로 예측하므로 여러 모드를 표현할 수 있습니다. 확산 정책은 무작위 노이즈를 제거해 행동의 전체 분포를 모델링하며, 체화형 AI 기반 조작 작업에서 널리 사용되는 선택지가 되었습니다.
언어 모델도 같은 방식으로 학습됩니다. 인간이 작성한 답변으로 대규모 언어 모델(LLM)을 지도 미세 조정하는 것은 지시 튜닝의 핵심으로, 텍스트에 대한 행동 복제입니다. OpenAI의 WebGPT 논문은 인간 피드백 기반 강화 학습(RLHF) 이전 단계를 정확히 이 명칭으로 불렀습니다.
행동 복제와 관련 용어 비교#
- 강화 학습: 시행착오를 통해 보상 신호로부터 학습하며 시연자의 성능을 능가할 수 있습니다. 행동 복제는 이를 달성할 수 없습니다. TD3+BC와 같은 오프라인 RL 방법은 학습된 정책이 기록 데이터에서 크게 벗어나지 않도록 행동 복제 항을 추가합니다.
- 역강화 학습: 시연을 설명하는 보상 함수를 추론한 다음 이를 최적화합니다. 생성적 적대 모방 학습(GAIL)은 판별기가 정책의 행동과 전문가의 행동을 구분할 수 없을 때까지 정책을 학습합니다.
- 지식 증류: 작은 학생 모델이 더 큰 교사 모델의 출력을 모방하도록 학습시킵니다. 인간이 아닌 학습된 정책을 행동 복제하는 것을 정책 증류라고 합니다.










