Action Chunking
액션 청킹이 로봇 정밀도와 모방 학습을 향상하는 방법을 알아보세요. Ultralytics YOLO26을 사용해 AI 에이전트의 누적 오류를 줄이는 방법을 살펴보세요.
액션 청킹은 로보틱스와 모방 학습에서 널리 활용되는 고급 딥러닝 기법으로, 모델이 각 타임스텝에서 단일 액션을 예측하는 대신 미래 액션의 시퀀스(또는 "청크")를 예측합니다. 다단계 궤적을 예측함으로써 액션 청킹은 AI 에이전트가 복잡하고 장기적인 작업을 더욱 부드럽고 안정적으로 수행할 수 있도록 합니다. 이 접근 방식은 시간적 예측과 고차원 컴퓨터 비전 입력을 결합한 모델 아키텍처인 Transformers를 활용한 액션 청킹(ACT)이 소개된 이후 크게 주목받았습니다.
누적 오류 완화#
기존 행동 클로닝에서는 모델이 현재 상태를 기반으로 바로 다음 단계를 예측합니다. 그러나 실시간 추론 중에는 아주 작은 예측 부정확성도 시스템을 관측되지 않은 상태로 이동시킵니다. 이러한 실수는 빠르게 누적되어 작업 실패로 이어지며, 이를 누적 오류라고 합니다.
액션 청킹은 이러한 한계를 직접 해결합니다. 여러 액션을 동시에 예측하면(예: 1초 동안의 움직임을 포괄하는 50개의 관절 움직임) 실질적인 제어 시간 범위가 줄어듭니다. 시스템은 신뢰할 수 있는 단일 시각 관측을 기반으로 일관된 단기 계획을 실행하므로 반응적 오류의 빈도가 크게 감소합니다. 공간 인식과 바운딩 박스 위치 파악을 위해 Ultralytics YOLO26과 같은 비전 백본을 통합하면, 결과 예측은 프로세스 노이즈에 대해 매우 안정적이 됩니다.
실제 적용 사례#
액션 청킹은 물리적 자동화 분야에서 새로운 기능을 가능하게 했으며, 특히 Intel 엣지와 같은 프레임워크로 최적화된 엣지 AI 하드웨어에 배포할 때 효과적입니다:
- 세밀한 로봇 조작: 산업 자동화에서 로봇은 케이블 연결, 배터리 삽입 또는 패키지 세그멘테이션 데이터셋으로 추적되는 물품 처리처럼 높은 정밀도가 필요한 접촉 중심 작업을 수행하기 위해 청크 단위 예측을 사용합니다. 일관된 액션 시퀀스를 생성하면 단일 단계 모방 학습에서 흔히 발생하는 끊기고 불안정한 움직임을 방지할 수 있습니다.
- 자율 내비게이션: 자율 주행과 드론 비행에서는 제어 명령 블록(조향 및 가속 등)을 예측하여 궤적을 더욱 부드럽게 계획할 수 있으며, 이는 최근 IEEE 로보틱스 논문에서 활발히 연구된 개념입니다. 연속적인 객체 추적 및 깊이 추정과 결합하면 차량이 복잡하고 동적인 환경을 안전하게 주행할 수 있습니다.
관련 개념 구분하기#
이 기법이 더 넓은 인공지능 생태계에 어떻게 적용되는지 이해하려면, 유사한 용어와 구분해 보는 것이 도움이 됩니다:
- 액션 청킹과 액션 인식 비교: 액션 청킹은 기계가 실행할 미래 명령의 시퀀스를 생성하는 반면, 액션 인식은 비디오 피드에서 발생하는 활동을 식별하는 분석 프로세스입니다.
- 액션 청킹과 시퀀스-투-시퀀스 모델 비교: 시퀀스-투-시퀀스 아키텍처는 입력 시퀀스를 출력 시퀀스에 매핑하며 기계 번역에서 널리 사용됩니다. 액션 청킹은 이러한 아키텍처, 특히 Transformers를 많이 활용하지만, 출력은 텍스트가 아니라 저수준 모터 제어 및 운동학으로만 제한됩니다.
- 액션 청킹과 강화 학습 비교: 강화 학습은 보상 신호를 사용하여 시행착오를 통해 에이전트를 학습시킵니다. 반면 액션 청킹은 주로 지도 방식의 행동 클로닝에 배포되며, 이 경우 모델은 명시적인 보상 최대화 없이 인간의 시연으로부터 직접 학습합니다.
액션 청킹 구현#
실제로 비전 시스템은 환경을 평가하고 시퀀스 디코더는 청크 단위 궤적을 생성합니다. 다음 Python 스니펫은 환경 상태를 입력받아 미래 액션 시퀀스를 출력하는 개념적 PyTorch 모듈(TensorFlow의 대안)을 보여줍니다. 이 환경 상태는 객체 탐지 패스에서 도출된 것일 수 있습니다.
import torch
import torch.nn as nn
class ActionChunker(nn.Module):
def __init__(self, state_dim, action_dim, chunk_size):
super().__init__()
# Maps the current state to a sequence of future actions
self.decoder = nn.Linear(state_dim, chunk_size * action_dim)
self.chunk_size = chunk_size
self.action_dim = action_dim
def forward(self, state):
# Predict the entire action chunk at once
chunk = self.decoder(state)
return chunk.view(-1, self.chunk_size, self.action_dim)
# Example: 128-dim state, 6 degrees of freedom, 50-step chunk
model = ActionChunker(state_dim=128, action_dim=6, chunk_size=50)
# Generate a 50-step action trajectory from a single observation
current_state = torch.randn(1, 128)
action_trajectory = model(current_state)
print(f"Action Chunk Shape: {action_trajectory.shape}")이러한 로봇 정책을 학습하는 데 필요한 방대한 데이터셋을 관리하는 일은 리소스 집약적입니다. OpenAI와 Anthropic 같은 업계 선도 기업은 대규모 모델을 개척하고 있지만, 일반 개발자는 접근성이 높은 도구를 사용합니다. Ultralytics Platform은 시각 입력을 위한 데이터 라이프사이클을 간소화하여 자동화된 데이터 어노테이션과 원활한 모델 학습 기능을 제공합니다. 모델이 통합 비전-언어-액션(VLA) 아키텍처로 발전함에 따라, 효율적인 비전 시스템과 강력한 액션 청킹을 결합하는 방식은 차세대 지능형 자동화를 계속해서 정의할 것입니다.









