실패한 시도와 잘못 기록한 자료는 다르다
작업 실패는 물체를 놓치거나 잘못 배치하는 등 과업 결과가 기준에 못 미친 경우다. 기록 결함은 시각·단위/관측 대응이 깨지거나 필요한 필드가 누락된 경우다. 실패한 과업을 정확히 기록한 자료와, 성공했다고 적혔지만 단위가 잘못된 자료는 서로 다르다. episode 결과 한 글자로 자료의 모든 용도를 결정하지 않는다.
Behavior Cloning(BC)은 관측에서 시연 행동을 예측하도록 배우는 방식이다. 관측/행동 쌍을 모방 목표로 쓰려면 그 행동이 해당 목적에 맞는지 근거가 필요하다. 실패한 시도의 모든 행동이 나쁜 것은 아니고, 모든 행동이 좋은 정답인 것도 아니다. 반대로 실패 판별/위험 징후 분석에는 실패 결과와 그 앞의 관측이 중요한 자료가 될 수 있다. 데이터의 품질 판정과 사용 목적/학습 라벨을 따로 기록한다.
합성 시도 e0는 정상 접근→그리퍼 헛잡기→사람 개입→물체 유지/배치의 순서다. 정상 접근 구간은 행동 의미/품질이 확인되면 해당 하위 과업의 시연 후보가 될 수 있다. 헛잡기 명령을 좋은 파지 정답으로 자동 채택하지는 않는다. 사람이 고친 구간은 개입 source/시각·새 목표와 이후 상태를 기록하고 원래 정책의 자율 성공과 구분한다. 마지막 배치가 성공했다고 전체 시도를 도움 없는 성공으로 바꾸지 않는다.
복구 자료에는 어떤 상태에서 무엇을 했는지가 필요하다
관측 분포는 로봇이 이전에 한 행동의 영향을 받는다. 정답 시연에서만 보던 상태와 정책이 실행 중 틀어져 도달한 상태는 다를 수 있다. Ross 등의 순차 모방학습 원논문은 이 분포 의존성을 다룬다. 실패 장면을 더 모았다는 이유만으로 이 문제가 해결된다고 말하지 않고, 그 상태에서 적절한 복구 행동/조건이 실제로 제공됐는지 확인한다.
복구 구간에 사용할 자료에는 개입 전 상태·지시문/대상, 누가 어떤 목표를 보냈는지, 안전 제한 후 실제 전송과 관측, 종료/유지/배치의 결과가 필요하다. 단순히 실패 action의 부호를 뒤집거나 성공 episode의 행동을 다른 상태에 복사하는 것은 올바른 복구 라벨을 얻었다는 근거가 아니다. 손상된 시각/단위는 먼저 격리/수정하고, 유효한 실패 기록도 목적에 맞춰 분리한다.
에피소드가 달라도 같은 원본 그룹일 수 있다
분할은 학습(train), 선택/조정(validation), 잠근 최종 시험(test)의 역할을 나누는 일이다. 인접 frame을 무작위로 나누면 거의 같은 상태가 양쪽에 들어간다. episode 단위 분할은 그 누수를 줄이지만 같은 물체/시도에서 만든 복구·증강본이 다른 episode ID를 가질 수도 있다. 평가하려는 일반화 단위에 맞춰 group을 정의한다.
그림 M20.06-1. 각 칸은 서로 다른 역할/근거다. 아래 방향은 자료/처리의 연결이며 실제 성공을 자동으로 보장하지 않는다. 직접 제작한 개념도이며 본문의 조건과 함께 읽는다.
다음 합성 자료에서 각 행은 한 episode다. A/B/C는 서로 다른 물리 물체이면서 별도 장면 그룹이라고 입력한다. e1은 e0와 같은 시도의 개입 복구이고 e3/e5는 각 원본에서 만든 영상 증강본이다.
| episode | group | 관계 | 제안 split |
|---|---|---|---|
| e0 | A | 원본 시도 | train |
| e1 | A | e0의 복구 구간 | validation |
| e2 | B | 원본 시도 | validation |
| e3 | B | e2의 증강본 | train |
| e4 | C | 원본 시도 | test |
| e5 | C | e4의 증강본 | train |
현재 제안은 세 그룹 모두 경계를 넘는다. 이번 시험 목적이 새 물체/장면 그룹에 대한 일반화라면 A의 e0/e1을 train, B의 e2/e3을 validation, C의 e4/e5를 test에 함께 두는 수정이 가능하다. ID가 다르다는 사실보다 공유 원본/조건이 중요하다. scikit-learn 공식 그룹 분할 설명도 그룹 중복을 분리하는 이유를 설명한다. 다만 그룹 3개는 구성 원리를 보는 작은 예일 뿐 신뢰할 만한 일반화 성능 추정에 충분하다는 뜻은 아니다.
정규화와 증강은 분할의 바깥으로 새지 않게 한다
정규화에 쓰는 평균/표준편차는 train 자료에서만 추정하고 validation/test에는 같은 변환을 적용한다. 합성 train feature가 2와 4, 각각 같은 단위의 두 관측이라고 하자. 평균 μ=(2+4)/2=3, 모집단 방식의 분산 σ²=((2−3)²+(4−3)²)/2=1, 표준편차 σ=1이다. validation 값 10의 z-score는(10−3)/1=7이다. 전체 자료를 넣어 통계를 다시 맞추면 시험 분포를 학습 단계에 사용하게 된다.
이 예는 분산의 분모를 n으로 정의했다. 불편분산의 n−1과 혼동하지 않으며 코드/metadata에 사용 규칙을 남긴다. σ가 0/매우 작거나 비유한 값이면 나누기 정책/원인 확인이 필요하다. train-only라고 적는 것만으로 구현이 지켜지는 것은 아니므로 통계 산출에 사용한 그룹/행 ID와 변환 버전을 보존한다. 실패/개입 자료의 포함 기준이 바뀌면 통계와 분할도 다시 검토한다.
원본을 분할한 뒤 train에서 증강하는 것이 기본이다. 미리 모든 frame을 증강해 무작위 분할하면 원본과 변형이 다른 split으로 갈 수 있다. validation/test의 증강·전처리도 사전에 고정한 평가 계약이어야 하며 결과를 보고 유리한 형태만 골라 보고하지 않는다. 시험 자료를 본 뒤 랜덤화 범위/임계값을 바꾸면 그 자료는 더 이상 손대지 않은 최종 시험의 근거가 아니다.
Domain Randomization은 아무것이나 바꾸는 뜻이 아니다
도메인 랜덤화는 시뮬레이션의 외형/물리 조건 등을 분포에서 뽑아 다양한 상황을 만드는 접근이다. Tobin 등의 원논문은 렌더링 변형을 통한 시각적 전이를 다룬다. 특정 논문의 성과를 모든 로봇/과업의 보장으로 옮기지 않는다. 이 단위의 분포는 원리 설명용이며 실제 전이 성능을 측정한 것이 아니다.
조명/배경을 바꿔도 목표 물체/행동 의미가 유지되는지 확인한다. 지시문이 '파란 블록'인데 대상만 빨갛게 바꾸고 지시문/라벨을 그대로 두면 의미가 깨진다. 물체 위치를 바꾸었다면 파지 목표·scene/행동의 대응도 새 상태에 맞춰 생성/검증해야 한다. 카메라 pose/내부값을 바꾸었다면 이미지와 geometry metadata도 일치해야 한다. 가려짐이 심해 관측만으로 대상을 구분할 수 없는 사례는 그 조건/미상을 남긴다.
질량/마찰·구동 지연 같은 물리 파라미터는 렌더 색상과 다른 모형을 바꾼다. 값을 metadata에만 적고 실제 물리 계산에는 적용하지 않았다면 물리 랜덤화를 수행한 것이 아니다. 형상/질량을 바꿀 때 관성·공구/하중·유효 접촉 조건도 일관되어야 한다. 불가능한 배치나 유효 범위 밖 설정을 다양성이라는 이름으로 무조건 정상 시연에 섞지 않는다.
분포·seed·시험 조건을 함께 기록한다
합성 물체의 기준 x=0.30 m에 병진 변화 δx를 Uniform[−0.01,+0.01] m에서 뽑는다고 하자. Uniform은 지정 구간에서 길이가 같은 부분구간의 확률이 같다는 뜻이다. 생성 x의 범위는 0.29~0.31 m다. δx=+0.008이면 x=0.308 m이고, 시험 위치 0.32 m는 이 학습 위치 범위 밖이다. 범위 밖에서 반드시 실패한다는 뜻도, 이 범위에서 학습했으므로 0.32도 잘 된다는 뜻도 아니다. 별도 조건으로 평가해야 한다.
분포 종류/단위·수치 범위, 어떤 조건을 함께 바꾸는지와 적용 단계, seed/생성기·시뮬레이터/모델 revision을 기록한다. seed가 다르다는 것만으로 원본 물체/장면 그룹이 독립이 되는 것은 아니다. 실제 시험을 통해 범위를 수정했다면 버전을 올리고 그 근거·새 시험 분리를 남긴다. 실패율뿐 아니라 어떤 범위/관측/단계에서 실패했는지와 도움 여부를 같이 보고한다.
기존 4.6 Domain Randomization과 기존 5.4 수집/품질은 구현/라벨 연결 자료다. 아래 활동에서는 데이터를 생성하거나 정책을 학습하지 않고 표와 가정을 검토한다.