본문으로 건너뛰기

5.5 정규화와 통계

5.5.1 Z-score와 min-max

feature xx의 Z-score는 다음과 같다.

x~=x−μtrainmax⁡(σtrain,ϵ) \tilde{x} = \frac{x-\mu_{train}}{\max(\sigma_{train},\epsilon)}

[-1,1] min-max normalization은 다음과 같다.

x~=2x−xminmax⁡(xmax−xmin,ϵ)−1 \tilde{x}=2\frac{x-x_{min}}{\max(x_{max}-x_{min},\epsilon)}-1

통계는 train split에서만 계산하고 validation/test에 재사용한다. 전체 dataset 통계를 먼저 계산하면 evaluation distribution 정보가 training pipeline에 누출된다. code/normalization.py가 seed를 고정한 episode-level shuffle과 두 정규화를 구현한다. 실제 프로젝트에서는 task variation, 작업자, 날짜를 group으로 묶은 stratified split을 우선한다.

5.5.2 작은 분산과 outlier

거의 움직이지 않는 joint의 표준편차가 0에 가까우면 작은 noise가 큰 normalized value가 된다. epsilon, std floor 또는 해당 feature 고정 처리를 명시한다. min/max는 잘못된 encoder spike 하나에 민감하므로 percentile-based clipping을 검토하되, joint safety limit과 통계적 clipping을 혼동하지 않는다.

5.5.3 action representation

  • absolute joint target: 누적 drift가 적지만 embodiment와 calibration에 민감하다.
  • delta joint: 작은 변위로 표현할 수 있지만, 증분의 기준과 누적 여부에 따라 drift와 scale 해석이 달라진다.
  • end-effector delta: task geometry에 직관적이지만 IK와 singularity 처리가 필요하다.

relative/delta라는 이름만으로 기준을 정하지 않는다. LeRobot의 표현 계약은 relative를 예측 시점의 같은 current state에 대한 chunk 전체의 변위로, delta를 이전 action에서 다음 action으로의 순차 증분으로 구분한다. 예를 들어 기준 0.3 rad와 값 [0.1,0.2] rad는 고정 기준이면 목표 [0.4,0.5] rad, 누적 증분이면 [0.4,0.6] rad다. 기준 상태의 시각·프레임, 누적 방식, 그리퍼 등의 제외 채널과 변환/정규화 순서를 명시하고 학습·배포에서 맞춘다. 그리퍼까지 관절 각도처럼 무조건 빼거나 모든 정책의 전처리 순서가 같다고 가정하지 않는다.

학습과 배포에서 같은 representation과 inverse normalization을 사용한다. action 통계를 state 통계로 역정규화하는 실수는 shape가 같으면 조용히 지나갈 수 있다.

5.5.4 Dataset 전역 통계와 정책 학습 통계

LeRobotDataset v3의 meta/stats.json은 dataset repository 전체를 요약한다. 데이터 탐색과 무결성 점검에는 유용하지만 한 repository에서 일부 episode만 train으로 쓰는 경우, 이 전역 통계를 정책 정규화에 그대로 사용하면 validation/test 정보가 들어간다.

통계범위용도저장 위치 예
Dataset global statsrepository 전체탐색, 시각화, 데이터 감사meta/stats.json
Policy train statstrain episode만학습 및 배포 정규화checkpoint/run manifest

split을 먼저 고정하고 train episode에서 stats를 다시 계산해 policy artifact에 저장한다. 또는 split별 dataset revision/repository를 materialize한다. 어느 방법이든 dataset revision, episode ID, stats hash를 checkpoint와 묶는다. dataset.meta.stats를 출력했다는 사실만으로 train-only normalization이 보장되지는 않는다.

이 장의 예제 코드·설정 파일 (5)

이 장의 자가 점검·가상실습