검색
← 모듈 로드맵

로봇 손으로 물체 돌리기 학습 (OpenAI Dactyl)

논문 · 준전문가 · OpenAI 외 · 2018 · arXiv

원제 · Learning Dexterous In-Hand Manipulation

물리·겉모습을 무작위화한 시뮬레이션 강화 학습만으로 실제 로봇 손이 정육면체를 연속으로 돌리게 한 연구

먼저 알아야 할 것

강화 학습 기초(정책·보상·가치 함수)PPOLSTM(순환 신경망)도메인 무작위화합성곱 신경망

다루는 내용

OpenAI는 자유도 24개의 Shadow 로봇 손이 손바닥 위 물체를 목표 방향으로 돌리는 정책을 시뮬레이션에서만 PPO로 학습했습니다. 마찰·질량·지연·유격·관측 잡음·겉모습을 대거 무작위화하고, LSTM 정책이 실행 중 환경에 적응하게 했으며, 카메라 3대로 물체 자세를 추정하는 CNN도 합성 이미지로만 학습했습니다. 실제 로봇에서 정육면체를 중앙값 13번 연속 돌렸고, 무작위화를 빼면 0으로 무너졌으며, 사람과 비슷한 잡기 방식이 저절로 나타났습니다.

초록

저자가 쓴 초록을 옮긴 것입니다.

우리는 강화 학습(RL)으로 손 안의 정교한 조작 정책을 학습해, 실제 Shadow Dexterous Hand에서 시각 기반으로 물체의 방향을 바꾸게 합니다. 학습은 마찰 계수나 물체의 겉모습처럼 시스템의 여러 물리적 성질을 무작위화한 시뮬레이션 환경에서 이뤄집니다. 정책은 오직 시뮬레이션에서만 학습했는데도 실제 로봇으로 옮겨 갑니다. 우리 방법은 사람의 시연에 전혀 의존하지 않지만, 손가락을 번갈아 옮겨 짚기(finger gaiting), 여러 손가락의 협응, 중력의 통제된 활용 등 사람의 조작에서 볼 수 있는 많은 행동이 자연스럽게 나타납니다. 우리의 결과는 OpenAI Five를 학습할 때 쓴 것과 같은 분산 RL 시스템으로 얻었습니다. 결과 영상도 함께 제공합니다: https://youtu.be/jwSbzNHGflM

해설

로봇 손으로 물체 돌리기 학습 (OpenAI Dactyl)

손가락 다섯 개짜리 로봇 손이 손바닥 위 정육면체를 원하는 방향으로 연달아 돌리는 기술을, 실제 로봇은 한 번도 쓰지 않고 시뮬레이션 속 강화 학습만으로 익혔습니다. 마찰 · 질량 · 지연 · 겉모습을 대거 무작위화하고, 기억(LSTM)을 가진 정책을 대규모 분산 학습으로 훈련한 덕분에 실제 손에서도 통했고, 사람이 쓰는 잡기 방식들이 저절로 나타났습니다.

항목내용
원제Learning Dexterous In-Hand Manipulation
저자OpenAI · Marcin Andrychowicz · Bowen Baker · Maciek Chociej · Rafal Józefowicz · Bob McGrew · Jakub Pachocki · Arthur Petron · Matthias Plappert · Glenn Powell · Alex Ray · Jonas Schneider · Szymon Sidor · Josh Tobin · Peter Welinder · Lilian Weng · Wojciech Zaremba
발표2018 · arXiv 1808.00177 (최종 v5, 2019)
트랙 · 수준피지컬 AI · 중급
먼저 알면 좋은 것강화 학습 기초(정책 · 보상 · 가치 함수), PPO, LSTM, 도메인 무작위화, 합성곱 신경망

들어가기 전에

이 해설은 아래 내용을 안다고 보고 씁니다. 처음이라면 먼저 읽고 오면 수식과 손계산을 훨씬 쉽게 따라올 수 있습니다.

한눈에 보기

  • 사람 손처럼 생긴 로봇 손(관절 자유도 24개)으로 손 안에서 물체 방향 바꾸기(in-hand reorientation) 를 배우는 과제가 왜 어려운지 압니다.
  • 물리 파라미터 · 관측 잡음 · 모델에 없는 효과 · 겉모습을 무작위화하는 도메인 무작위화 를 제어 정책에 어떻게 썼는지 압니다.
  • 기억을 가진 정책(LSTM)이 "지금 이 세계의 물리"를 스스로 알아내 적응한다는 생각과, 그 증거를 압니다.
  • 보상 설계, 11칸으로 나눈 이산 행동, 비대칭 액터-크리틱, 카메라 3대로 물체 자세를 추정하는 시각 모델의 구조를 압니다.
  • 실제 로봇에서 연속 몇 번을 돌렸는지, 무작위화를 빼면 얼마나 무너지는지 숫자로 압니다.

초록 (번역)

우리는 강화 학습(RL)으로 손 안의 정교한 조작 정책을 학습해, 실제 Shadow Dexterous Hand에서 시각 기반으로 물체의 방향을 바꾸게 합니다. 학습은 마찰 계수나 물체의 겉모습처럼 시스템의 여러 물리적 성질을 무작위화한 시뮬레이션 환경에서 이뤄집니다. 정책은 오직 시뮬레이션에서만 학습했는데도 실제 로봇으로 옮겨 갑니다. 우리 방법은 사람의 시연에 전혀 의존하지 않지만, 손가락을 번갈아 옮겨 짚기(finger gaiting), 여러 손가락의 협응, 중력의 통제된 활용 등 사람의 조작에서 볼 수 있는 많은 행동이 자연스럽게 나타납니다. 우리의 결과는 OpenAI Five를 학습할 때 쓴 것과 같은 분산 RL 시스템으로 얻었습니다. 결과 영상도 함께 제공합니다: youtu.be/jwSbzNHGflM

무엇을 풀었나

사람에게는 손 안에서 물건을 이리저리 돌리는 일이 일상이지만, 로봇에게는 매우 어렵습니다. 이 논문이 쓴 Shadow Dexterous Hand는 손가락 다섯 개에 자유도(degree of freedom, 독립적으로 움직일 수 있는 방향의 수) 24개를 가진 손으로, 2005년부터 팔렸지만 제어가 너무 어려워 널리 쓰이지 못했습니다.

이전 연구는 둘로 갈렸습니다.

  • 시뮬레이션에서만 성공: 손 안 조작을 시뮬레이션에서 보였지만 실제 로봇으로 옮기지 않았습니다.
  • 실제 로봇에서 직접 학습: 모델링 문제는 없지만, 실제 시도는 느리고 비싸서 몇 번 못 해 보고 아주 단순한 정책만 배웠습니다.

심층 강화 학습은 수백만 개의 샘플이 필요해 실제 로봇으로는 감당이 안 됩니다. 그런데 시뮬레이션만으로 학습하면 현실 격차(reality gap) 때문에 잘 옮겨 가지 않습니다. 이 논문의 시뮬레이터도 힘줄(tendon) 대신 관절에 직접 토크를 주고, 변형되는 접촉 대신 단단한 물체 접촉만 계산하는 거친 근사입니다.

이 논문의 답은 세 가지입니다. ① 시뮬레이터를 보정한 뒤 넓게 무작위화하고 모델에 없는 효과를 일부러 넣기, ② 기억을 가진 정책으로 실행 중에 환경을 알아내고 적응하기, ③ 대규모 분산 강화 학습입니다.

과제: 손바닥 위에 물체(정육면체 또는 팔각기둥)를 올려놓고 목표 방향으로 돌립니다. 목표에 (대략) 도달하면 새 목표가 주어지고, 물체를 떨어뜨릴 때까지 계속합니다.

핵심 아이디어

1. 보상 — "목표에 얼마나 더 가까워졌나"를 매 순간 주기

한 문장 직관: 길 찾기 앱이 "목적지까지 남은 거리가 줄어든 만큼" 점수를 주고, 도착하면 보너스, 길에서 사고가 나면 큰 벌점을 주는 것과 같습니다(해설용 비유).

단계별 설명 (논문 기준)

  1. 매 시점 현재 물체 방향과 목표 방향 사이의 회전 각도 dtd_t를 잽니다.
  2. 한 걸음 행동한 뒤 각도 dt+1d_{t+1}을 다시 잽니다.
  3. 보상은 그 차이, 즉 각도가 줄어든 양입니다.
  4. 목표를 0.4 라디안 허용 오차 안에서 이루면 보너스 5를 더 줍니다.
  5. 물체를 떨어뜨리면 −20의 벌점을 줍니다.
  6. 사람의 시연이나 "이렇게 잡아라" 같은 사전 지식은 보상에 넣지 않았습니다.

수식 (논문 4.2절 · 부록 C.1)

rt=dt−dt+1  (+5 if dt+1<0.4 rad)  (−20 if dropped)r_t = d_t - d_{t+1}\ \ (+5\ \text{if}\ d_{t+1} < 0.4\ \text{rad})\ \ (-20\ \text{if dropped})

기호 풀이

기호뜻
rtr_t시점 tt의 보상
dtd_t행동 전, 현재 방향과 목표 방향 사이의 회전 각도
dt+1d_{t+1}행동 후의 같은 각도
0.4 rad목표 달성으로 치는 허용 오차

숫자로 해 보기 (해설용 예 — 논문 수치 아님)

목표까지 1.0 rad 남은 상태에서 한 걸음에 0.7 rad가 됐다면 r=1.0−0.7=0.3r = 1.0 - 0.7 = 0.3입니다. 다음 걸음에 0.35 rad가 되면 r=0.7−0.35=0.35r = 0.7 - 0.35 = 0.35에, 0.4 rad 안에 들어왔으니 보너스 5가 더해져 5.35입니다. 반대로 엉뚱하게 돌려 0.7에서 0.9가 되면 r=−0.2r = -0.2로 손해입니다.

왜 이렇게 했나

(해설 — 논문이 직접 밝힌 이유는 아닙니다) "목표 달성 시에만 보상"이면 처음에는 거의 아무 신호가 없어 학습이 막힙니다. 각도 감소량을 매 순간 주면 조금씩 나아지는 행동도 바로 칭찬받습니다. 떨어뜨림 벌점은 큰 값으로 두어, 빨리 돌리려다 놓치는 위험한 행동을 억제합니다.

2. 물리까지 흔드는 도메인 무작위화

한 문장 직관: 공 던지기를 무거운 공 · 가벼운 공 · 미끄러운 공 · 바람 부는 날로 다 연습해 두면, 처음 보는 공도 금방 감을 잡습니다(해설용 비유).

단계별 설명 (논문 3.2절 · 부록 C.2)

무작위화는 네 묶음입니다.

  1. 관측 잡음: 정책 입력에 가우스 잡음을 더합니다. 에피소드마다 한 번 뽑아 고정하는 상관 잡음(correlated noise)과, 매 시점 새로 뽑는 비상관 잡음 두 종류입니다. 동작 추적 마커를 살짝 잘못 붙인 것처럼 계산하는 구조적 잡음도 넣습니다.
  2. 물리 무작위화: 마찰 같은 물리 파라미터를 에피소드 시작 때 뽑아 끝까지 고정합니다. 많은 값이 보정으로 찾은 값을 중심으로 합니다.
  3. 모델에 없는 효과: 모터 유격(backlash) 모델, 행동 지연, 행동 잡음, 마커 추적이 잠깐 끊기거나 가려지는 현상, 물체에 가하는 작은 무작위 힘을 넣습니다.
  4. 겉모습 무작위화: 카메라 위치 · 내부 파라미터, 조명, 손과 물체 자세, 모든 물체의 재질과 질감을 바꿉니다(시각 모델용).

물리 파라미터 범위 (논문 표 1)

파라미터배율 범위더하는 값 범위
물체 크기uniform([0.95, 1.05])
물체 · 로봇 링크 질량uniform([0.5, 1.5])
표면 마찰 계수uniform([0.7, 1.3])
로봇 관절 감쇠 계수loguniform([0.3, 3.0])
구동기 힘 이득(P 항)loguniform([0.75, 1.5])
관절 한계N(0,0.15)\mathcal{N}(0, 0.15) rad
중력 벡터(좌표마다)N(0,0.4)\mathcal{N}(0, 0.4) m/s²

그 밖에 논문이 밝힌 값입니다. 행동 지연은 에피소드마다 구동기별로 확률 0.5로 정해 한 환경 단계(약 80ms) 늦춥니다. 손끝 마커는 초당 0.2의 확률로 1초 동안 가립니다. 무작위 힘이 가해질 확률 pp는 에피소드마다 0.1%~10% 사이 로그 균등 분포에서 뽑습니다.

수식 (배율 무작위화를 식으로 쓴 해설용 표현)

ϕ=ϕ0⋅u,u∼Uniform[a,b]  또는  log⁡u∼Uniform[log⁡a,log⁡b]\phi = \phi_0 \cdot u,\qquad u \sim \text{Uniform}[a, b]\ \ \text{또는}\ \ \log u \sim \text{Uniform}[\log a, \log b]

기호 풀이

  • ϕ0\phi_0: 보정으로 찾은 기준값(예: 마찰 계수)
  • uu: 에피소드마다 뽑는 배율
  • uniform: 범위 안에서 고르게 뽑기
  • loguniform: 로그 눈금에서 고르게 뽑기. 0.3배와 3배처럼 "몇 배 차이"를 대칭으로 다룰 때 씁니다.

숫자로 해 보기 (해설용 계산)

  • 기준 마찰 계수가 1.0이면 uniform([0.7, 1.3])에서 뽑은 마찰은 0.7~1.3 사이, 평균 1.0입니다.
  • 감쇠 계수 loguniform([0.3, 3.0])의 가운데값(중앙값)은 0.3×3.0=0.9≈0.95\sqrt{0.3 \times 3.0} = \sqrt{0.9} \approx 0.95배입니다. 기준의 약 1/3배부터 3배까지를 "줄이는 쪽"과 "늘리는 쪽"에 비슷한 확률로 고루 뽑는다는 뜻입니다.
  • 만약 같은 범위를 그냥 uniform으로 뽑으면 평균이 (0.3+3.0)/2=1.65(0.3 + 3.0)/2 = 1.65배가 되어 "늘리는 쪽"으로 크게 치우칩니다. 로그 균등 분포를 쓰는 이유가 이것입니다.

왜 이렇게 했나

  • 보정 + 무작위화: 분포의 가운데가 실제 물리값에 가까워야 한다는 것을 논문은 중요하게 봅니다. 그래서 실제 로봇의 궤적을 기록해 관절 · 구동기 파라미터 264개를 먼저 보정하고, 그 값을 중심으로 흔들었습니다.
  • 손에 내장된 촉각 · 관절 센서를 정책에 주지 않음: 손끝 촉각 센서는 대기압 · 온도 · 접촉 모양에도 반응하고, 관절 각 센서는 잡음이 크고 보정이 어려워 시뮬레이터에서 흉내 내기 힘들었습니다. 그래서 정책 입력은 시뮬레이터로 잘 모델링되는 손끝 위치와 물체 자세로 제한했습니다. "무엇을 관측으로 쓸지"도 전이를 위한 설계 선택입니다.

3. 기억을 가진 정책 — 실행하면서 세계를 알아내기

한 문장 직관: 처음 잡아 보는 컵이 생각보다 무거우면 사람은 두세 번 만에 힘을 조절합니다. 앞의 몇 동작이 "이번 컵은 무겁다"는 정보를 주기 때문입니다(해설용 비유).

단계별 설명

  1. 물리 무작위화 값은 에피소드 동안 고정되어 있습니다.
  2. 따라서 처음 몇 번의 상호작용만으로 물체 무게나 손가락이 얼마나 빨리 움직이는지가 드러납니다.
  3. 정책을 순환 신경망 LSTM(장단기 기억, Long Short-Term Memory)으로 만들면, 지난 관측을 은닉 상태에 쌓아 "이번 세계"에 맞춰 행동을 바꿀 수 있습니다.
  4. 논문은 이를 실행 중의 암묵적 시스템 식별(implicit system identification)이라고 부릅니다.
  5. 구조는 입력 정규화 → ReLU 완전 연결층 하나(1024) → LSTM(512)입니다.

수식 (일반적인 순환 정책 표기 — 해설용)

ht=LSTM(ht−1, ot),at∼πθ(a∣ht)\mathbf{h}_t = \mathrm{LSTM}(\mathbf{h}_{t-1},\ \mathbf{o}_t),\qquad a_t \sim \pi_\theta(a \mid \mathbf{h}_t)

기호 풀이

  • ot\mathbf{o}_t: 시점 tt의 관측(손끝 위치, 물체 위치, 상대 목표 방향 등)
  • ht\mathbf{h}_t: 지금까지의 관측을 요약한 은닉 상태(기억)
  • πθ\pi_\theta: 은닉 상태를 받아 행동 확률을 내는 정책
  • 기억이 없는 피드포워드(FF) 정책은 πθ(a∣ot)\pi_\theta(a \mid \mathbf{o}_t), 즉 지금 관측만 봅니다.

숫자로 해 보기 (해설용 예 — 논문 수치 아님)

같은 힘을 주었는데 물체가 첫 단계에 0.10 rad, 둘째 단계에 0.09 rad 돌았다고 합시다. 기준 질량이라면 0.15 rad씩 돌았어야 한다면, 기억을 가진 정책은 "이번 물체는 무겁거나 마찰이 크다"고 추정하고 힘을 키울 수 있습니다. 지금 관측 한 장만 보는 정책은 이 비교를 할 수 없습니다.

논문이 보인 증거

  • 블록과 5초 동안 상호작용한 뒤의 LSTM 은닉 상태로, 블록이 평균보다 큰지 작은지를 80%의 경우 맞힐 수 있었습니다.
  • 무작위화가 없는 환경에서는 FF 정책과 LSTM 정책이 같은 시간에 같은 성능에 도달했습니다. FF 정책도 용량은 충분하지만, 무작위화된 환경에는 적응하지 못한다는 해석입니다.

4. PPO와 비대칭 액터-크리틱, 이산 행동

한 문장 직관: 선수(정책)는 경기장에서 보이는 것만 보고 뛰지만, 코치(가치 함수)는 훈련 중에 경기 녹화 · 센서 기록까지 다 보고 평가해 줍니다(해설용 비유).

단계별 설명 (논문 4절 · 부록)

  1. 학습 알고리즘은 PPO(근접 정책 최적화, Proximal Policy Optimization)입니다. 정책 망과 가치 망(앞으로 받을 할인 보상 합을 예측)을 함께 학습합니다.
  2. 두 망은 구조는 같지만 가중치는 따로입니다.
  3. 비대칭 액터-크리틱(Asymmetric Actor-Critic): 가치 망은 학습 때만 쓰므로, 실제 로봇에서는 얻을 수 없는 정보(잡음 없는 관측, 관절 각 · 속도, 물체 속도 등)를 받습니다. 정책 망은 실제로 얻을 수 있는 손끝 위치(15차원), 물체 위치(3차원), 상대 목표 방향(사원수 4차원)만 받습니다.
  4. 행동은 20차원으로, 현재 관절 각에 대한 상대적 목표 각입니다. 실제 손에서 절대 관절 각을 정확히 재기 어렵기 때문입니다.
  5. 각 행동 좌표를 11칸으로 나눈 이산 행동을 씁니다. 연속(가우스) 행동보다 훨씬 잘 됐다고 합니다.

수식 (PPO 목적 함수, 논문 부록 A.3)

LPPO=E[min⁡(ρtA^t, clip(ρt, 1−ϵ, 1+ϵ) A^t)],ρt=πθ(at∣st)πold(at∣st)L^{\text{PPO}} = \mathbb{E}\Big[\min\big(\rho_t \hat{A}_t,\ \mathrm{clip}(\rho_t,\ 1-\epsilon,\ 1+\epsilon)\,\hat{A}_t\big)\Big],\qquad \rho_t = \frac{\pi_\theta(a_t \mid s_t)}{\pi_{\text{old}}(a_t \mid s_t)}

기호 풀이

기호뜻
ρt\rho_t새 정책과 데이터를 모은 옛 정책이 같은 행동을 고를 확률의 비율
A^t\hat{A}_t이 행동이 평균보다 얼마나 나았나(이득, advantage). GAE로 추정
ϵ\epsilon정책이 한 번에 바뀌는 폭을 제한하는 값(이 논문 0.2)
clip\mathrm{clip}값을 [1−ϵ,1+ϵ][1-\epsilon, 1+\epsilon] 안으로 자르기

숫자로 해 보기 (해설용 계산)

ϵ=0.2\epsilon = 0.2, 이득 A^=2\hat{A} = 2, 새 정책이 그 행동 확률을 1.3배로 올렸다면

  • 자르지 않은 값: 1.3×2=2.61.3 \times 2 = 2.6
  • 자른 값: clip(1.3,0.8,1.2)×2=1.2×2=2.4\mathrm{clip}(1.3, 0.8, 1.2) \times 2 = 1.2 \times 2 = 2.4
  • 둘 중 작은 값 2.4를 씁니다. 1.2배를 넘게 올려도 더 얻는 게 없으니, 한 번에 과하게 바뀌지 않습니다.

PPO 하이퍼파라미터 (논문 표 10)

항목값
하드웨어NVIDIA V100 GPU 8개 + CPU 코어 6144개
행동 분포행동 좌표마다 11칸 범주형 분포
할인율 γ\gamma0.998
GAE λ\lambda0.95
엔트로피 정규화 계수0.01
PPO 자르기 ϵ\epsilon0.2
최적화 · 학습률Adam · 3e-4
배치 크기(GPU당)80k 묶음 × 10 전이 = 800k 전이
미니배치 크기(GPU당)25.6k 전이
단계당 미니배치 수60
은닉 완전 연결층 · LSTM 크기1024 · 512

왜 이렇게 했나

  • 이산 행동: 논문은 이산 확률 분포가 다변량 가우스보다 표현력이 크거나, 이산화가 좋은 이득 함수를 배우기 쉽게 만들기 때문일 수 있다고 추측합니다.
  • 비대칭 정보: 가치 망이 더 많이 알면 추론할 것이 줄어 좋은 가치 추정을 배우기 쉬워집니다. 실제 배포 때는 정책 망만 쓰므로 문제가 없습니다.

5. 시각으로 물체 자세 추정하기

한 문장 직관: 마커 없이 카메라 세 대로 물체를 보고 "어디에, 어느 방향으로" 있는지 알아내는 눈을 따로 훈련합니다(해설용 비유).

단계별 설명 (논문 5절 · 부록 D.2)

  1. 위 정책은 물체 자세를 동작 추적 장치(PhaseSpace 마커)로 받습니다. 실험실 밖에서는 물체에 마커를 붙일 수 없으니, 시각만으로 자세를 추정하는 모델을 만듭니다.
  2. 학습된 정책을 시뮬레이터에서 돌려 상태 100만 개를 모읍니다.
  3. 미니배치마다 Unity로 겉모습을 무작위화해 렌더링하고, 물체 자세도 증강합니다(20%는 그대로, 40%는 주축으로 90도 회전, 40%는 위치 · 회전에 가우스 흔들기).
  4. 카메라 3대의 이미지를 가중치를 공유하는 합성곱 탑(합성곱 2층, 최대 풀링, ResNet 블록, 공간 소프트맥스)에 넣고, 결과를 이어 붙여 완전 연결층으로 위치 3개 + 회전 4개(사원수)를 출력합니다.
  5. 정규화한 예측과 정답 사이의 평균 제곱 오차를 줄이도록 학습합니다. Adam, 학습률 0.0005(20,000배치마다 절반), 미니배치 64 × 3 = 192장, 이미지 200×200, 가중치 감쇠 0.001, 40만 배치입니다.
  6. 실제 로봇에서는 실제 카메라 3대의 영상을 이 모델에 넣어 자세를 얻고, 정책에 넘깁니다.

왜 이렇게 했나

카메라 한 대로는 정육면체처럼 대칭인 물체의 방향이 모호해질 수 있습니다. 서로 다른 시점의 카메라 3대가 이 모호함을 풀고 강건성을 높입니다. 시각 모델을 정책과 따로 학습하므로, 정책 학습에 비싼 렌더링이 끼지 않습니다(해설).

6. 대규모 분산 학습

  • OpenAI Five를 학습한 분산 PPO 구현(Rapid)을 수정 없이 썼습니다.
  • CPU 코어 16개짜리 작업자 기계 384대가 무작위화된 시뮬레이션에서 경험을 만들고, GPU 8개 최적화 기계 한 대가 학습합니다(해설용 확인: 384×16=6,144384 \times 16 = 6{,}144코어).
  • 한 시간에 시뮬레이션 경험 약 2년치를 만듭니다.
  • 무작위화 없이 물체 돌리기를 배우는 데 시뮬레이션 경험 약 3년(벽시계 약 1.5시간), 전부 무작위화한 환경에서 같은 성능에는 약 100년(약 50시간)이 들었습니다. 학습 시간 대부분이 다양한 물리에 강건해지는 데 쓰인 셈입니다.

7. 처리 흐름

mermaid
flowchart LR
    A["보정한 MuJoCo 손 모델"] --> B["무작위화된 시뮬레이션 다수<br/>물리 · 잡음 · 지연 · 겉모습"]
    B --> C["LSTM 정책 + 가치 망<br/>분산 PPO 학습"]
    B --> D["Unity 렌더링 이미지<br/>카메라 3대"]
    D --> E["CNN 자세 추정기 학습"]
    F["실제 카메라 3대"] --> E2["학습된 CNN<br/>물체 위치 · 방향"]
    G["PhaseSpace<br/>손끝 위치"] --> H["학습된 LSTM 정책"]
    E2 --> H
    C --> H
    E --> E2
    H --> I["상대 관절 목표<br/>약 12Hz"]
    I --> J["저수준 PD 제어기<br/>Shadow 손"]

결과

아래 수치는 모두 논문이 보고한 값입니다. 성능 지표는 연속 성공 회전 수로, 물체를 떨어뜨리거나 80초 안에 목표를 못 이루거나 50번에 도달하면 시도가 끝납니다. 시뮬레이션은 100번, 실제 로봇은 정책마다 10번 시도했습니다.

시뮬레이션 vs 실제 (논문 표 3, 평균 ± 표준편차 / 중앙값)

과제시뮬레이션실제 로봇
정육면체 (상태)43.4 ± 13.8 / 5018.8 ± 17.1 / 13
정육면체 (상태, 손목 고정)44.2 ± 13.4 / 5026.4 ± 13.4 / 28.5
정육면체 (시각)30.0 ± 10.3 / 3315.2 ± 14.3 / 11.5
팔각기둥 (상태)29.0 ± 19.7 / 307.8 ± 7.8 / 5
  • 무작위화와 보정으로 격차를 좁혔지만, 실제 성능은 여전히 시뮬레이션보다 낮습니다(정육면체 중앙값 50 → 13).
  • 시각을 쓰면 조금 나빠지지만 차이가 의외로 작습니다. 시뮬레이션에서도 Unity로 학습하고 MuJoCo 렌더링으로 평가하므로 시뮬레이션→시뮬레이션 전이가 끼어 있습니다.
  • 손목 굽힘 관절을 내릴 때 떨어뜨리는 일이 가장 흔해서, 손목을 고정한 정책도 학습했고 실제로 더 잘 옮겨 갔습니다(처음부터 학습은 어려워 기존 정책을 미세 조정).
  • 팔각기둥은 정육면체 정책을 미세 조정해 옮겼지만 성능 차이가 남았습니다. 구는 몇 번 연속 이상 돌리지 못했습니다.

무작위화를 빼면 (실제 로봇, 상태 기반, 논문 표 4, 평균 ± 표준편차 / 중앙값)

학습 환경결과
전체 무작위화18.8 ± 17.1 / 13
무작위화 없음1.1 ± 1.9 / 0
관측 잡음 없음15.1 ± 14.5 / 8.5
물리 무작위화 없음3.5 ± 2.5 / 2
모델에 없는 효과 없음3.5 ± 4.8 / 2
전체 무작위화 (시각)15.2 ± 14.3 / 11.5
관측 잡음 없음 (시각)5.9 ± 6.6 / 3.5
  • 무작위화 없이 학습하면 실제에서는 사실상 한 번도 못 돌립니다(중앙값 0).
  • 관측 잡음은 동작 추적 장치의 잡음이 작아 상태 기반에선 차이가 덜 뚜렷했지만, 잡음이 큰 시각 추정과 합칠 때는 중앙값이 11.5에서 3.5로 떨어졌습니다.

기억의 효과 (실제 로봇, 논문 표 5, 평균 ± 표준편차 / 중앙값)

정책 / 가치 망결과
LSTM / LSTM18.8 ± 17.1 / 13
FF / LSTM4.7 ± 4.1 / 3.5
FF / FF4.6 ± 4.3 / 3

정책 자체에 기억이 있어야 했습니다. FF 정책은 자주 막혀서 시간이 다 됐다고 합니다.

규모의 효과 (논문 그림 10 설명): 기본 설정은 GPU 1개 · 코어 768개보다 연속 20회 달성에 약 5.5배 빨랐고, GPU 16개는 기본보다 연속 40회 달성에 약 1.8배 빨랐습니다.

시각 자세 추정 정확도 (논문 표 6)

시험 세트회전 오차위치 오차
Unity 렌더링2.71° ± 1.623.12mm ± 1.52
MuJoCo 렌더링3.23° ± 2.913.71mm ± 4.07
실제 이미지(992개 샘플)5.01° ± 2.479.27mm ± 4.02

실제 이미지의 정답은 PhaseSpace로 잰 것이라 그 자체에도 오차가 있습니다. 예측 오차가 정책 학습 때 넣은 관측 잡음보다 컸는데도, 시각 기반 정책은 실제 로봇에서 잘 작동했습니다.

저절로 나타난 행동

손끝 집기(tip pinch), 세 손가락 집기, 쥐기(power grasp) 등 사람의 잡기 방식과 손가락 축 돌리기 · 번갈아 짚기 · 중력 활용이 나타났습니다. 정밀 집기에는 새끼손가락을 즐겨 썼는데, 이 손의 새끼손가락에 자유도가 하나 더 있기 때문일 수 있다고 논문은 봅니다.

왜 중요한가 · 이후 영향

  • "심층 강화 학습은 실제 복잡한 로봇에 못 쓴다"는 통념을 깼습니다. 기존 비학습 방법이 닿지 못한 수준의 손 조작을, 시뮬레이션 학습만으로 실제 다섯 손가락 손에서 보였습니다.
  • 도메인 무작위화를 시각에서 동역학으로 넓혔습니다. 107번 항목(도메인 무작위화)이 이미지 겉모습을 흔들었다면, 이 논문은 마찰 · 질량 · 지연 · 유격까지 흔들어 제어 정책을 옮겼습니다.
  • "기억 = 적응"이라는 관점을 실험으로 뒷받침했습니다. 무작위화된 환경에서 학습한 순환 정책이 실행 중 환경을 추정한다는 증거(블록 크기 예측 80%)를 보였습니다. 이후 사족 보행처럼 과거 관측 이력으로 환경에 적응하는 제어기 연구와 맥이 닿습니다(109번 항목).
  • 규모의 힘을 보여 줬습니다. 같은 분산 PPO 시스템이 게임(OpenAI Five)과 로봇 손 모두에 통했습니다.

한계 · 주의할 점

  • 현실 격차는 여전히 큽니다. 정육면체 중앙값이 시뮬레이션 50 대 실제 13입니다.
  • 계산 비용이 매우 큽니다. 완전 무작위화 환경에서 시뮬레이션 경험 약 100년, GPU 8개와 CPU 코어 6144개가 필요했습니다.
  • 실험실 장치에 기댑니다. 시각 모델을 써도 손끝 위치는 PhaseSpace 동작 추적 장치(카메라 16대)로 잽니다. 시각 추정에도 흰 배경과 시도 사이 물체 닦기가 도움이 됐다고 합니다.
  • 물체가 한정적입니다. 정육면체와 팔각기둥만 성공했고 구는 실패했습니다. 여러 물체를 다루는 통합 정책은 향후 과제입니다.
  • 하드웨어 고장과 수작업 설계. 고장 · 수리로 결과를 서로 다른 시점에 측정했고, 정육면체에 맞춰 손으로 정한 무작위화 범위는 다른 물체에 추가 조정이 필요했습니다.

이어서 읽을 것

  • 앞: 도메인 무작위화 — 이 논문이 따르는 무작위화의 출발점(같은 OpenAI 저자 일부)
  • 앞: PPO — 이 논문의 학습 알고리즘
  • 뒤: 험한 지형의 사족 보행 학습 — 시뮬레이션 강화 학습 + 고유 감각 이력으로 실제 자연환경에 영 샷 전이
  • 뒤: Eureka — 손 조작 같은 시뮬레이션 과제의 보상 함수를 언어 모델로 설계

용어 정리

용어쉬운 뜻
손 안 조작(in-hand manipulation)물체를 쥔 채 손가락으로 위치 · 방향을 바꾸는 조작
자유도(DoF)로봇이 독립적으로 움직일 수 있는 방향(관절)의 수
도메인 무작위화시뮬레이터 설정을 무작위로 바꿔 실제 세계에 통하게 하는 기법
현실 격차(reality gap)시뮬레이션과 실제의 차이로 생기는 성능 저하
로그 균등 분포(loguniform)로그 눈금에서 고르게 뽑는 분포. 배율 범위에 적합
유격(backlash)기어 · 힘줄의 헐거움 때문에 방향을 바꿀 때 생기는 빈 움직임
LSTM과거 정보를 은닉 상태에 기억하는 순환 신경망
피드포워드(FF) 정책지금 관측만 보고 행동을 정하는 기억 없는 정책
PPO정책이 한 번에 너무 크게 바뀌지 않게 자르는 정책 경사 알고리즘
비대칭 액터-크리틱가치 망(크리틱)에만 학습용 추가 정보를 주는 방식
이득(advantage)어떤 행동이 그 상태의 평균 행동보다 얼마나 나은지
GAE여러 단계 수익을 섞어 이득을 추정하는 방법
사원수(quaternion)3차원 회전을 숫자 4개로 나타내는 방법

스스로 점검

1. 이 논문은 왜 로봇 손의 촉각 센서를 정책 입력으로 쓰지 않았나요? 답: 손끝 촉각 센서는 힘뿐 아니라 대기압 · 온도 · 접촉 모양에도 반응해서, 시뮬레이터에서 그 값의 분포를 흉내 내기 어려웠습니다. 시뮬레이션에서 학습한 정책이 실제에서도 같은 의미의 입력을 받으려면, 시뮬레이터가 잘 모델링할 수 있는 관측(손끝 위치, 물체 자세)만 써야 했습니다.

2. 기억(LSTM)이 있는 정책이 실제 로봇에서 더 잘 된 이유는 무엇인가요? 답: 물리 파라미터는 에피소드 동안 고정되므로, 처음 몇 동작의 결과로 "이번 세계"의 무게 · 마찰 등을 알아낼 수 있습니다. LSTM은 이 정보를 은닉 상태에 쌓아 행동을 조정합니다. 실제 로봇은 시뮬레이션 분포 속 한 세계이므로, 이런 적응이 전이를 돕습니다. 실제로 FF 정책은 중앙값 3~3.5, LSTM 정책은 13이었습니다.

3. 무작위화를 넣으면 시뮬레이션 학습은 느려지는데도 왜 넣었나요? 답: 무작위화 없이 학습한 정책은 실제 로봇에서 중앙값 0으로 사실상 실패했습니다. 시뮬레이션 학습이 느려지는 비용(약 3년치 → 약 100년치 경험)을 치러야 실제 세계에서 통하는 강건한 정책을 얻을 수 있었습니다.

다음에 볼 것

이 글을 이해했다면 이어서 보면 좋은 항목입니다.

출처

AI 원리부터 이해하기 · 피지컬 AI 모듈

피지컬 AI 모듈 학습

이 글은 피지컬 AI 모듈의 학습 자료입니다. 전체 26개 자료 중 7번째입니다.

AI 기초 과정은 현재 진도 저장을 지원하지 않습니다.

출처·원문

원문 보기

요약만

arXiv (논문별 상이)

arXiv 1808.00177