콘텐츠로 이동
GitHub

policy 개요

Pinkrab 은 LeRobot 에 들어 있는 ACT 를 dataset으로 lerobot-train 에서 학습하고 실행합니다. ACT 는 시연을 그대로 따라 하도록 배우는 behavior cloning 이고, 관찰 o 에서 앞으로의 동작 chunk a 를 내는 조건부 분포 p(a | o) 를 학습합니다.

내용
입력 두 그리퍼 카메라의 영상, observation.state 11개(두 jaw 의 열림, 두 tool 의 상대 pose)
출력 앞으로의 동작 여러 step(chunk). step 하나는 손마다 tool frame 의 위치·회전 변화와 다음 jaw 열림, 모두 20개입니다

behavior cloning 으로 배운 policy 는 매 step 조금씩 틀립니다. 한 번 틀리면 팔은 시연에 없던 state 에 놓이고, 처음 보는 state 에서는 더 크게 틀리기 쉬워서 오차가 다음 오차를 부릅니다. step 마다의 오차가 ε 이면 길이 T 의 작업에서 쌓이는 오차가 T 가 아니라 T² 에 비례해 커질 수 있다는 것이 알려져 있습니다(Ross & Bagnell, 2010). 이것을 compounding error, 또는 학습과 실행의 state 분포가 달라진다는 뜻에서 distribution shift 라고 부릅니다.

action chunking 은 한 번의 추론으로 H step 의 동작을 내고 그 앞의 k step 을 실행한 뒤 다시 묻는 방식입니다. 결정 횟수가 k 분의 1 로 줄어 오차가 쌓일 기회가 줄고, chunk 안의 동작은 한꺼번에 만들어져 시간에 따라 매끄럽습니다. 사람의 시연에는 손이 잠시 멈추는 구간처럼 지금의 관찰만으로는 설명되지 않는 동작이 섞여 있는데, chunk 는 이런 동작도 앞뒤 맥락과 함께 하나의 궤적으로 배웁니다.

한 step 씩 추론시연 궤적policy 궤적step 마다의 오차 ε 가 시연에 없던 state 로밀어내, T step 뒤에는 O(T²ε) 까지 벌어짐chunk 를 내고 앞부분만 실행1234분홍 칸만 실행하고 다음 chunk 를 추론H = 8, k = 2 의 개념도 (ACT 는 50 fps 에서 100, 5)
한 step 씩 추론하면 결정마다 오차가 쌓이지만, chunk 를 내면 결정 횟수가 k 분의 1 로 줄고 chunk 안의 step 들은 한 번에 만들어져 매끄럽게 이어집니다.

k 를 키우면 chunk 를 끝까지 보지 않고 실행하는 open-loop 구간이 길어져, 물체가 예상과 다르게 움직였을 때 늦게 반응합니다. k 는 매끄러움과 반응성 사이의 선택이고, Pinkrab 은 이것을 시간으로 정해 0.1 초를 씁니다. 50 fps dataset 에서는 5 step 입니다.

같은 장면에서도 사람은 장애물을 왼쪽으로 돌아가기도 하고 오른쪽으로 돌아가기도 합니다. 둘 다 맞는 동작이라 p(a | o) 는 봉우리가 둘인 분포가 됩니다. 이 분포를 regression 으로 학습하면 policy 는 분포 전체가 아니라 숫자 하나를 내도록 배웁니다. L2 loss 로 배우는 평균은 늘 두 봉우리 사이에 떨어지고, L1 loss 로 배우는 중앙값은 두 방식이 비슷하게 섞여 있으면 사이에, 한쪽이 많으면 많은 쪽 봉우리에 떨어집니다.

위에서 본 장면장애물목표시연 A시연 B평균같은 장면의 동작 분포regression 의 답왼쪽으로 피함오른쪽으로 피함점: 생성 모델의 sample, 가로축: 옆으로 피하는 양
같은 관찰에 맞는 동작이 둘이면 정답의 분포는 봉우리가 두 개입니다. 두 방식의 시연이 반씩이면 L2 loss 의 최적해인 평균도, L1 loss 의 최적해인 중앙값도 두 봉우리 사이에 떨어지고, 그 동작은 시연 어디에도 없습니다.

봉우리 사이의 동작은 어느 시연에도 없고, 위 그림처럼 장애물에 그대로 부딪히기도 합니다. ACT 는 시연이 어느 방식이었는지를 latent 라는 숨은 변수로 따로 받아 이 문제를 다룹니다(latent 와 CVAE).

ACT 는 ResNet-18 이 읽은 영상과 state 를 transformer encoder·decoder 가 받아 chunk 를 forward 한 번에 냅니다. 학습 때만 쓰는 CVAE 가 시연의 방식을 latent 로 구분해 주고, 실행 때는 latent 를 0 으로 둡니다.

ACT
영상 ResNet-18
chunk 를 내는 방식 L1 regression + CVAE
multimodality 학습 때 latent 로 구분, 실행 때 z = 0
학습하는 parameter 약 52M (실행에는 약 34M)
학습 메모리(batch 8) 5.7 GB

학습 메모리는 780×570 그리퍼 카메라 두 대의 dataset 에서 batch 8 한 step 의 최대값이고, 8 GB GPU 에서 batch 8 로 학습합니다.

step 수는 기본인 50 fps dataset 기준입니다. 다른 fps 에서는 같은 시간이 되도록 step 수가 바뀝니다(dataset 의 fps).

policy chunk 한 번에 실행하는 step 추론
ACT 100 5 한 번의 forward
  • Ross, Bagnell. Efficient Reductions for Imitation Learning. AISTATS 2010.
  • Ross, Gordon, Bagnell. A Reduction of Imitation Learning and Structured Prediction to No-Regret Online Learning (DAgger). AISTATS 2011.
  • Zhao, Kumar, Levine, Finn. Learning Fine-Grained Bimanual Manipulation with Low-Cost Hardware (ACT). RSS 2023.