한 번에 여러 행동을 예측한다
ACT(Action Chunking with Transformers)는 현재 관측을 조건으로 여러 미래 행동을 한 묶음, 즉 chunk로 예측하는 모방학습 방법이다. ALOHA/ACT 저자 프로젝트는 한 행동씩 예측하는 방식과 이 시퀀스 예측을 비교한다. 원 연구의 특정 장비/과업 성과를 다른 로봇의 성공 보장으로 쓰지 않는다. 여기서는 구조와 실행 계약을 작은 수치로 이해한다.
H를 출력 행동 수, Δt를 행동 적용 간격이라 하자. H=4/Δt=0.05 s이면 첫 목표부터 마지막 목표까지 시각 차이는(H−1)Δt=0.15 s다. 각 행동을 한 간격 유지한다고 정의하면 묶음의 총 적용 구간은 HΔt=0.20 s다. 첫 행동의 예정 적용 시각이 1.00 s면 목표 시각은 1.00/1.05/1.10/1.15 s이고 마지막 유지 구간은 1.20까지다. 끝점 간 차이와 유지 구간의 길이를 구분한다.
출력 H개를 모두 실행한 뒤 다음 관측으로 재계획할 수도 있고, 앞 E개만 실행하고 다시 예측할 수도 있다. E는 이번에 실행할 길이로 1≤E≤H다. E=2이면 위 계약의 재계획 간격은 0.10 s다. E가 작으면 새 관측을 더 자주 쓸 여지가 있지만 추론 비용/지연과 연결 동작이 필요하다. 매번 제때 새 chunk가 도착한다는 보장은 없으므로 관측 취득/예측 완료/예정 적용 시각과 fallback을 기록한다.
chunk가 시연의 여러 단계를 묶어 예측한다고 오류 누적이나 복구 문제가 자동 소멸하는 것은 아니다. 오래된 관측에서 만든 긴 개방 구간은 새 장애물/물체 미끄럼에 늦게 반응할 수 있다. 출력 길이·실행 길이·실제 제어 주기와 모델 질의 주기를 구분한다. 그리퍼와 관절의 단위/표현 및 제한은 M21.02 계약을 유지한다.
학습의 잠재 표현과 배포 입력을 나눈다
ACT는 조건부 VAE(CVAE)를 사용해 시연 행동 묶음의 변동을 잠재 변수 z로 표현한다. 잠재 변수는 관측에서 직접 측정한 관절값이 아니라 모델 내부의 수치 표현이다. 조건부라는 말은 행동 분포가 현재 영상/관절 관측 같은 조건에 의존한다는 뜻이다. VAE는 시연을 압축하는 encoder와 그 표현/조건에서 행동을 재구성하는 decoder를 함께 학습하는 모형이다.
그림 M21.03-1. 각 칸은 서로 다른 역할/근거다. 아래 방향은 자료/처리의 연결이며 실제 성공을 자동으로 보장하지 않는다. 직접 제작한 개념도이며 본문의 조건과 함께 읽는다.
저자 구조에서 학습용 CVAE encoder는 관절 관측과 정답 행동 시퀀스로 z의 분포를 만든다. 다른 Transformer 경로는 다중 시점이 아닌 여러 카메라의 영상·현재 관절과 z를 결합하고 decoder가 chunk를 출력한다. 관측 이력 길이와 카메라 수를 같은 축으로 섞지 않는다. Transformer는 이 입력 요소들의 관계를 결합하는 표현 장치이며 실제 충돌 검사기/제어기의 역할을 대신하지 않는다.
추론 때는 정답 미래 action이 없으므로 학습 encoder를 그대로 실행해 그 값을 요구하지 않는다. 원 ACT의 평가에서는 사전분포 평균인 z=0을 사용한다. 이것은 출력 action이 0이라는 뜻이 아니며 관측을 무시한다는 뜻도 아니다. 학습의 미래 행동은 정답/잠재 분포 학습에 쓰이고, 실제 배포 입력에 몰래 제공하는 것이 아니다. 변형 구현의 설정과 잠재 처리 방식은 해당 버전에서 확인한다.
재구성 손실과 분포 제약의 역할이 다르다
재구성 손실은 예측 action과 시연 action의 차이, KL 항은 학습 잠재 분포와 정한 사전분포의 차이를 벌점으로 주는 항이다. 사전분포는 원 ACT에서 표준정규분포를 사용한다. β는 두 항의 상대 크기를 정하는 무차원 계수이며 단순히 클수록 좋은 성공률이 된다는 뜻은 아니다. 정규화 행동에 대해 다음 형태를 생각한다.
원 ACT와 LeRobot ACT는 재구성에 L1, 즉 절대 오차를 사용한다. 다만 패딩을 평균하는 규약은 같다고 가정하지 않는다. original policy.py는 패딩 오차를 0으로 만든 뒤 전체 tensor 평균을 취한다. 이번에 확인한 LeRobot ACT 소스는 유효 mask의 원소 수와 행동 차원으로 나누는 평균을 쓴다. revision을 고정하고 실제 분모를 확인한다.
한 행동 성분의 절대 오차(1,2,0), mask(1,1,0) 예에서 original식 전체 평균은 1, 유효 평균은 1.5다. KL=0.25/β=2라고 주어지면 총 손실은 각각 1.5/2.0이다. 정규화 좌표의 손실이며 실제 rad 오차/작업 성공률이 아니다. 패딩 비율이 달라진 실험의 loss 숫자를 분모 확인 없이 비교하지 않는다. 유효 0 표본도 별도 제외/오류 정책으로 다루며 낮은 손실의 좋은 표본으로 채택하지 않는다.
같은 시각을 예측한 후보만 결합한다
Temporal Ensembling은 여러 예측 시점의 chunk가 같은 적용 시각에 제안한 행동을 결합하는 방법이다. t−2의 chunk 세 번째, t−1의 두 번째, t의 첫 번째처럼 후보를 시간 축에 맞춘다. 한 chunk 안의 서로 다른 미래 목표를 평균해 하나의 경로점으로 만드는 것과 다르다. 패딩/만료·틀린 action 표현의 후보를 섞지 않는다.
이제 E=2의 실행 예와 별도로 매 제어 단계에 재추론하는 합성 경우를 보자. 적용 시각 t의 후보를 생성 시점이 오래된 순서 i=0/1/2로 정하고 값 a_i=(0.2,0.4,0.8) rad라 하자. original ACT와 이번 LeRobot ACT에서 사용하는 방향의 계산은 아래와 같다. κ는 무차원 가중 계수이고 exp는 지수함수다.
κ=ln2이면 가중치는 1/0.5/0.25이고 정규화하면 4/7,2/7,1/7이다. 결과는(4×0.2+2×0.4+1×0.8)/7≈0.342857 rad다. 양의 κ와 oldest i=0의 조합은 오래된 후보에 더 큰 가중치를 준다. κ=0이면 단순 평균 약 0.466667 rad다. 계수만 보고 '항상 최신 예측 우선'이라고 읽지 않는다.
반대로 교육용 age 기반 최신 우선 규칙 exp(−κ×age)을 사용하면 오래된 후보의 age가 2/1/0이라 가중 방향이 뒤집힌다. 같은 값의 정규화 가중치는 1/7,2/7,4/7이고 결과 0.6 rad다. 기존 교재의 일부 temporal filter 예는 이런 최신 우선 계약이다. 두 규칙의 후보 순서/age 정의를 숨기고 같은 ACT 구현이라고 부르지 않는다. 계수의 부호나 후보 정렬을 바꾸면 의미도 바뀐다.
평균은 관측의 신선도나 안전 검사가 아니다
가중 평균이 급격한 명령 변화를 줄일 수 있어도 실제 물체가 계속 같은 상태라는 뜻은 아니다. 오래된 관측/목표가 어느 정도 남는지와 반응 지연을 검토한다. 좌우 회피처럼 모드가 다른 후보의 평균은 유효하지 않은 중간 목표가 될 수 있고, 회전/증분은 프레임·기준을 맞춘 합성 규칙이 필요하다. 관절 범위/속도·충돌/통신 최신성 검사는 출력 후에도 별도로 필요하다.
episode reset/사람 개입/클러치·공구/지시 변경이 생기면 과거 chunk/ensemble 상태를 재사용해도 되는지 정책을 정한다. 값 0도 합법 행동일 수 있으므로 '0이 아니면 유효'라는 임시 규칙에 의존하지 않고 유효 mask/타임스탬프와 이유를 기록하는 것이 명확하다. 어떤 후보가 몇 시각의 action인지와 실제 제한 후 전송 목표·관측을 남겨야 결합 효과를 검증할 수 있다.
기존 5.2 ACT 계보와 기존 5.9 추론/temporal ensemble을 연결해 읽자. 기본 활동은 합성 chunk/후보 계산이며 원 논문/코드의 모델 학습·로봇 평가를 실행하지 않는다.