모방 학습
더 많은 작업
- Imitation learning; 모방 학습
- 보상 함수 대신 전문가의 시연을 보고 그 행동 방식을 따라 하는 정책을 배우는 방법
모방 학습(imitation learning)은 사람이나 다른 에이전트(전문가)가 과제를 수행한 시연(demonstration) 데이터로부터 정책을 학습하는 방법이다. 시연에서 배운다고 해서 시연 학습(learning from demonstration), 견습 학습(apprenticeship learning)이라고도 부른다. 강화 학습은 보상 함수가 있어야 하는데, 운전이나 물체 조작처럼 "잘했다"를 수식으로 쓰기는 어렵지만 사람이 직접 해 보이기는 쉬운 과제가 많다. 모방 학습은 이런 과제에서 보상 설계 없이 바로 정책을 얻는다.
크게 세 갈래다. 시연의 상태·행동 쌍을 지도 학습으로 맞추는 행동 복제(behavior cloning), 학습 중 전문가에게 추가 라벨을 묻는 DAgger 같은 대화형 방법, 시연에서 보상 함수를 추정하거나(역강화 학습) 시연과 구별되지 않는 행동을 직접 학습하는(GAIL) 방법이다. 마지막 갈래는 역강화 학습 문서에서 다룬다. 2020년대 들어 로봇 조작 학습에서 행동 복제가 다시 중심 방법이 되었고, 비전-언어-행동 모델도 대규모 시연 데이터의 행동 복제로 학습한다.
전문가 정책 가 만든 궤적들의 데이터셋 가 주어진다. 보상은 없다. 목표는 학습한 정책 가 환경에서 실제로 실행될 때 전문가만큼 잘 하는 것이다. 여기서 "실행될 때"가 핵심이다. 학습 데이터의 상태 분포는 전문가가 방문한 분포 이지만, 평가 때의 상태 분포는 학습자 자신이 만드는 다.
행동 복제는 모방 학습을 그대로 지도 학습으로 푼다.
이산 행동이면 분류(교차 엔트로피 손실), 연속 행동이면 회귀(평균 제곱 오차) 또는 가우시안 우도 최대화다. 환경과 상호작용할 필요가 없고 구현이 단순하며 학습이 안정적이다.
역사적으로 1989년 딘 포멀로의 ALVINN이 대표적인 초기 사례다. 카메라와 레이저 거리 측정기 입력을 받아 조향 방향을 출력하는 3층 신경망으로, 시뮬레이션한 도로 영상으로 학습해 카네기 멜런 대학의 자율주행 시험 차량에서 실제 도로를 따라 주행했다.[1]
행동 복제의 근본 문제는 공변량 이동(covariate shift)이다. 지도 학습은 학습과 테스트 데이터가 같은 분포라고 가정하지만, 학습자가 작은 실수를 하면 전문가가 한 번도 가 본 적 없는 상태에 들어간다. 그 상태에 대한 학습 데이터가 없으니 더 큰 실수를 하고, 오차가 눈덩이처럼 커진다. 전문가 운전 시연에는 차선 한가운데를 달리는 장면만 있고 "차선을 벗어났을 때 돌아오는 법"은 없는 것이 전형적인 예다.
로스와 배그넬은 이를 정량화했다. 전문가 상태 분포에서 매 단계 실수할 확률이 인 분류기라도, 길이 인 과제를 자기 정책으로 실행하면 기대 실수 횟수가 까지 커질 수 있다.[2][3] 상태 분포가 i.i.d.라면 오차가 에 비례()해야 하는데, 분포 이동 때문에 제곱으로 늘어나는 것이다.
실무에서 쓰는 완화책은 다음과 같다.
- 교정 데이터 수집: 옆으로 비켜 단 카메라 영상이나 기하 변형한 영상에 "중앙으로 돌아오는" 행동 라벨을 붙여, 벗어난 상황의 시연을 합성한다.
- 잡음 주입: 시연을 모을 때 전문가의 행동에 잡음을 섞어 전문가가 스스로 교정하는 상태를 데이터에 넣는다.
- 행동 묶음 예측: 한 단계 행동 대신 앞으로 몇 단계의 행동 열을 한꺼번에 예측해 결정 횟수 자체를 줄인다(아래 ACT).
- 대화형 수집: 아래의 DAgger.
같은 상황에서 전문가가 왼쪽으로도, 오른쪽으로도 장애물을 피해 갔다면 행동 분포가 봉우리 두 개다. 평균 제곱 오차로 회귀하면 두 행동의 평균, 즉 장애물 정면으로 가는 행동을 배운다. 그래서 최근 로봇 행동 복제는 가우시안 혼합, 이산화한 행동 토큰, 확산 모델, 변분 오토인코더처럼 여러 봉우리를 표현할 수 있는 생성 모델을 정책으로 쓴다.
DAgger(dataset aggregation)는 공변량 이동을 정면으로 해결한다. 학습자가 실제로 방문하는 상태에 대해 전문가에게 "이 상태라면 어떻게 하겠는가"를 물어 라벨을 받고, 그 데이터를 계속 누적해 다시 학습한다.[3]
- 1단계: 전문가 시연 로 첫 정책 을 학습한다.
- 2단계: 번째 반복에서 섞은 정책 로 궤적을 실행한다.
- 3단계: 방문한 상태들에 전문가 행동 를 라벨로 붙여 를 만든다.
- 4단계: 로 합치고, 합친 전체로 을 다시 학습한다.
논문은 DAgger를 무후회(no-regret) 온라인 학습으로 환원해, 학습자 자신이 유도하는 상태 분포에서 잘 동작하는 정책을 찾는다는 보장을 보였다. 오차가 에 대해 선형으로 자라도록 할 수 있다는 것이 행동 복제와의 차이다. , 이후 (첫 반복만 전문가가 운전)으로 두는 매개변수 없는 판이 실제로 가장 잘 동작하는 경우가 많다고 했다. 실험은 3D 경주 게임 슈퍼 턱스 카트의 조향과 슈퍼 마리오 브라더스 플레이, 손글씨 인식 시퀀스 라벨링이었다.[3]
다음은 CartPole에서 손으로 짠 제어기를 전문가 대신 써서 행동 복제와 DAgger를 비교하는 최소 예다. Gymnasium 1.x와 scikit-learn을 쓴다.
import numpy as np
import gymnasium as gym
from sklearn.neural_network import MLPClassifier
def expert(obs):
"""사람 시연 대신 쓰는 손으로 짠 제어기(막대 각도·각속도 기준)"""
x, x_dot, theta, theta_dot = obs
return int(theta + 0.5 * theta_dot + 0.01 * x + 0.1 * x_dot > 0)
def rollout(env, act_fn, n_episodes, seed):
states, returns = [], []
for ep in range(n_episodes):
obs, _ = env.reset(seed=seed + ep)
done, G = False, 0.0
while not done:
states.append(obs)
obs, r, terminated, truncated, _ = env.step(act_fn(obs))
done, G = terminated or truncated, G + r
returns.append(G)
return np.array(states), np.mean(returns)
def fit(S, A):
return MLPClassifier(hidden_layer_sizes=(32,), max_iter=2000, random_state=0).fit(S, A)
env = gym.make("CartPole-v1")
# 1) 행동 복제: 전문가가 방문한 상태와 그 행동으로 지도 학습
S, _ = rollout(env, expert, 2, 100)
S = S[:300] # 일부러 적은 시연
A = np.array([expert(s) for s in S])
clf = fit(S, A)
policy = lambda o: int(clf.predict(o[None])[0])
print("행동 복제:", rollout(env, policy, 10, 1000)[1])
# 2) DAgger: 학습자가 방문한 상태에 전문가 라벨을 붙여 누적
for it in range(5):
S_new, _ = rollout(env, policy, 3, 2000 + 10 * it) # beta_i = 0: 학습자가 운전
S = np.vstack([S, S_new])
A = np.concatenate([A, [expert(s) for s in S_new]]) # 전문가에게 라벨만 묻는다
clf = fit(S, A)
print(f"DAgger {it + 1}회:", rollout(env, policy, 10, 1000)[1])
로컬 실행에서 전문가는 평균 500점(최대), 시연 300개로 한 행동 복제는 141점, DAgger는 첫 반복부터 500점이었다. 수치는 시드와 시연 양에 따라 달라지지만, 학습자가 실제로 가는 상태에 라벨을 받는 것이 효과적이라는 경향은 같다.
DAgger의 약점은 전문가가 학습 내내 대기하며 임의의 상태에 라벨을 달아 줘야 한다는 점이다. 사람이 운전대를 잡지 않은 채 화면만 보고 "지금이라면 핸들을 얼마나 꺾겠다"고 답하기는 어렵다. 그래서 사람이 위험할 때만 개입하고 그 개입 구간을 데이터로 쓰는 HG-DAgger 같은 변형이 나왔다.[4]
| 방법 | 필요한 것 | 환경 상호작용 | 공변량 이동 대응 | 특징 |
|---|---|---|---|---|
| 행동 복제 | 시연만 | 불필요 | 약함 | 가장 단순, 데이터가 많으면 강력 |
| DAgger | 시연 + 질의 가능한 전문가 | 필요 | 강함 | 이론 보장, 전문가 비용 큼 |
| 역강화 학습 | 시연 + 환경(보상 없이) | 필요 | 강함 | 보상 함수를 복원해 다른 환경으로 옮길 수 있음 |
| GAIL | 시연 + 환경 | 필요 | 강함 | 판별기를 보상으로 쓰는 적대적 학습 |
| 오프라인 강화 학습 | 보상 붙은 데이터 | 불필요 | 보수적 가치 추정 | 시연보다 나은 정책을 노림. 오프라인 강화 학습 참고 |
행동 복제는 시연 데이터의 질을 넘을 수 없다. 시연에 실수가 섞여 있으면 그것도 따라 한다. 보상 정보가 있다면 오프라인 강화 학습이나, 행동 복제로 초기화한 뒤 강화 학습으로 미세조정하는 방식이 이를 넘을 수 있다. 알파고도 사람 기보로 정책 신경망을 지도 학습한 뒤 자기 대국 강화 학습으로 개선했다. 시연 데이터를 리플레이 버퍼에 함께 넣고 시연 행동의 Q가 다른 행동보다 일정 폭 이상 크도록 하는 마진 손실을 더해 DQN 학습을 가속한 DQfD(2017)처럼 시연과 강화 학습을 한 학습 과정에서 섞는 방법도 있다.[5]
로봇 조작에서는 원격 조종(텔레오퍼레이션)으로 사람이 로봇을 직접 움직여 시연을 모으고 행동 복제로 학습하는 방식으로 2020년대에 성과가 잇따랐다. 시뮬레이터 없이 실제 로봇 데이터로 바로 배울 수 있기 때문이다.
- ACT(Action Chunking with Transformers, 2023): 저가 양팔 로봇에서 앞으로 여러 단계의 행동 묶음(action chunk)을 한꺼번에 예측하는 트랜스포머 기반 생성 모델이다. 정책의 작은 오차가 누적되는 문제와 사람 시연의 편차를 다루려고 고안했으며, 약 10분 분량의 시연으로 케이블 타이 끼우기, 배터리 끼우기 같은 정밀 과제 6개를 80~90% 성공률로 학습했다고 보고했다.[6]
- 디퓨전 폴리시(Diffusion Policy, 2023): 정책을 조건부 잡음 제거 확산 과정으로 표현해 다봉 행동 분포와 고차원 행동 공간을 다룬다. 4개 로봇 조작 벤치마크의 12개 과제에서 기존 최고 방법보다 평균 46.9% 나은 성능을 보고했다.[7]
- 비전-언어-행동 모델: 사전 학습된 비전-언어 모델에 행동 출력을 붙여 여러 로봇의 대규모 시연 데이터로 행동 복제를 한다. 자세한 내용은 해당 문서와 임보디드 인공지능, 피지컬 AI 참고.
- imitation 라이브러리: Stable-Baselines3 기반으로 행동 복제, DAgger, GAIL, AIRL 구현을 제공한다.
- ↑ Dean A. Pomerleau, 〈ALVINN: An Autonomous Land Vehicle in a Neural Network〉, NIPS 1, 1988. 논문
- ↑ Stéphane Ross, Drew Bagnell, 〈Efficient Reductions for Imitation Learning〉, AISTATS 2010. PMLR 9:661~668
- ↑ 3.0 3.1 3.2 Stéphane Ross, Geoffrey J. Gordon, J. Andrew Bagnell, 〈A Reduction of Imitation Learning and Structured Prediction to No-Regret Online Learning〉, AISTATS 2011. arXiv:1011.0686
- ↑ Michael Kelly 외, 〈HG-DAgger: Interactive Imitation Learning with Human Experts〉, ICRA 2019. arXiv:1810.02890
- ↑ Todd Hester 외, 〈Deep Q-learning from Demonstrations〉, AAAI 2018. arXiv:1704.03732
- ↑ Tony Z. Zhao, Vikash Kumar, Sergey Levine, Chelsea Finn, 〈Learning Fine-Grained Bimanual Manipulation with Low-Cost Hardware〉, RSS 2023. arXiv:2304.13705
- ↑ Cheng Chi 외, 〈Diffusion Policy: Visuomotor Policy Learning via Action Diffusion〉, RSS 2023. arXiv:2303.04137