잘 따라 하는 로봇이 왜 갑자기 무너질까
Behavior Cloning은 매력적이다. 사람이 좋은 시연을 보여 주면 로봇은 그 행동을 지도학습처럼 배운다. 복잡한 보상 함수를 설계하지 않아도 되고, 처음부터 물리 법칙을 모두 모델링하지 않아도 된다. 컵을 집는 장면을 많이 보여 주면 로봇은 컵을 향해 움직이고, 그리퍼를 닫고, 들어 올리는 동작을 흉내 낸다.
그런데 실제로 실행해 보면 이상한 일이 벌어진다. 검증 손실은 낮았고, 기록된 데이터에서는 사람 행동을 꽤 잘 맞혔는데, 로봇이 직접 움직이기 시작하면 점점 엉뚱한 곳으로 간다. 컵의 중심을 향해 가야 하는데 살짝 옆으로 빗나가고, 그 작은 차이 때문에 다음 장면은 학습 데이터와 조금 달라진다. 모델은 낯선 장면에서 다시 조금 이상한 행동을 내고, 결국 그리퍼는 컵 옆 공기를 움켜쥔다.
이것이 모방학습의 핵심적인 어려움이다. 모방학습은 강력하지만, 그대로 현실 로봇에 적용하면 작은 실수가 빠르게 큰 실패로 커질 수 있다. 사람의 시연을 잘 따라 하는 것과, 자신이 만든 실수를 복구하며 끝까지 작업을 완수하는 것은 전혀 다른 문제다.
이번 장에서는 Behavior Cloning이 왜 흔들리는지 차근차근 살펴본다. 어려운 수식보다 실제 로봇 작업에서 어떤 일이 일어나는지에 집중하자. 이 한계를 이해해야 다음 장에서 다룰 더 나은 모방학습 방법이 왜 필요한지 자연스럽게 보인다.

학습 데이터 안에서는 똑똑한 정책
BC 모델은 학습 데이터 안에서 매우 그럴듯하게 보일 수 있다. 예를 들어 사람이 텔레오퍼레이션으로 100번의 Pick and Place 시연을 수집했다고 하자. 모든 시연은 비교적 깔끔하다. 사람은 컵을 향해 부드럽게 접근했고, 그리퍼를 적절한 순간에 닫았고, 컵을 들어 올린 뒤 목표 위치에 놓았다.
이 데이터로 모델을 학습하면 다음과 같은 관계를 배운다.
현재 이미지 + 로봇 상태 → 사람이 했던 다음 행동검증 데이터에서도 같은 방식으로 평가한다. 기록된 어떤 상태를 모델에 넣고, 그때 사람이 실제로 했던 행동과 모델의 예측을 비교한다. 이 값이 작으면 모델은 "사람처럼 행동을 잘 맞히는 것처럼" 보인다.
하지만 여기에는 중요한 함정이 있다. 검증 데이터의 상태들은 모두 사람이 만든 상태다. 사람은 대체로 올바른 방향으로 로봇을 움직였기 때문에 데이터 안에는 작업 경로 주변의 깔끔한 상태가 많다. 컵을 한참 지나친 상태, 그리퍼가 비스듬히 걸린 상태, 물체를 살짝 밀어 버린 상태, 테이블 가장자리에서 불안정하게 멈춘 상태는 적을 수 있다.
즉, 모델은 전문가가 지나간 길 위에서는 잘한다. 문제는 로봇이 직접 운전대를 잡는 순간, 그 길에서 조금씩 벗어나기 시작한다는 것이다.
분포 이탈: 익숙한 길 밖으로 나가는 순간
분포 이탈은 모방학습에서 가장 중요한 개념 중 하나다. 분포라는 말이 어렵게 들릴 수 있지만, 여기서는 "모델이 학습 중에 자주 본 상태들의 범위"라고 이해하면 된다. 컵이 화면 중앙 근처에 있고, 그리퍼가 컵을 향해 적당히 정렬되어 있으며, 조명과 배경이 학습 때와 비슷한 상황이 바로 익숙한 분포다.
분포 이탈은 로봇이 이 익숙한 범위 밖으로 나가는 현상이다. 영어로는 distribution shift 또는 out-of-distribution 상태라고 부른다. 낯선 상태에 들어가면 모델은 자신 있게 행동을 출력하지만, 그 행동이 맞는지는 보장할 수 없다. 신경망은 "모르겠다"라고 말하는 대신, 학습한 패턴을 억지로 끼워 맞춰 숫자를 내놓는 경우가 많다.
예를 들어 컵을 집는 정책을 생각해 보자. 학습 데이터에서는 항상 그리퍼가 컵의 위쪽에서 천천히 접근했다. 그런데 실제 실행 중 첫 행동이 살짝 빗나가 그리퍼가 컵의 옆면 아래쪽으로 내려갔다. 이 상태는 데이터에 거의 없었다. 모델은 이 장면을 보고도 어떤 행동을 출력해야 한다. 하지만 배운 적 없는 자세이므로 컵을 더 밀어 버리거나, 그리퍼를 너무 일찍 닫거나, 갑자기 위로 움직일 수 있다.
이때 로봇의 실패는 모델이 "완전히 틀린 것을 배웠기 때문"만은 아니다. 오히려 학습 데이터에서는 꽤 잘 배웠을 수 있다. 문제는 학습 데이터가 로봇이 실제 실행 중 만날 수 있는 모든 상태를 충분히 포함하지 못했다는 데 있다.
분포 이탈은 특히 다음과 같은 상황에서 자주 나타난다.
로봇의 시작 자세가 시연 때와 조금 다를 때
물체 위치나 방향이 학습 데이터보다 더 크게 달라졌을 때
카메라 이미지가 흔들리거나 조명이 바뀌었을 때
첫 몇 번의 행동 오차로 로봇이 시연 경로 밖으로 벗어났을 때
물체가 미끄러지거나 굴러가서 예상과 다른 상태가 되었을 때
사람에게는 이런 변화가 사소해 보인다. 컵이 3cm 옆에 있으면 그냥 손을 조금 더 뻗으면 된다. 하지만 BC 정책에게는 그 3cm가 학습 세계와 현실 세계를 가르는 선이 될 수 있다.
오차는 혼자 오지 않는다
로봇 제어에서 작은 오차는 다음 상태를 바꾼다. 이것이 누적 오차의 시작이다. 한 번의 예측이 조금 틀렸을 뿐인데, 그 결과로 다음 입력 자체가 바뀐다. 그러면 모델은 더 낯선 상태에서 다음 행동을 예측하게 되고, 다시 오차가 커질 수 있다.
이 과정을 짧은 Pick 동작으로 상상해 보자.
1단계: 그리퍼가 컵을 향해 이동한다.
2단계: 예측 행동이 5mm 오른쪽으로 빗나간다.
3단계: 다음 관측에서 그리퍼는 컵 중심선에서 벗어나 있다.
4단계: 모델은 이 벗어난 상태를 학습 중에 거의 보지 못했다.
5단계: 다시 조금 어긋난 행동을 출력한다.
6단계: 그리퍼가 컵 옆면을 밀고, 컵 위치가 바뀐다.
7단계: 이제 장면 전체가 시연 데이터와 달라진다.처음에는 5mm였다. 하지만 그 작은 오차가 로봇의 위치를 바꾸고, 물체의 위치를 바꾸고, 카메라 이미지를 바꾼다. 결국 모델은 자신이 만든 낯선 세계 안에서 행동해야 한다.
이 점이 이미지 분류와 로봇 정책의 큰 차이다. 이미지 분류 모델이 고양이를 개로 잘못 분류해도 사진은 바뀌지 않는다. 틀린 예측이 다음 입력을 물리적으로 흔들지는 않는다. 하지만 로봇은 다르다. 로봇의 예측은 모터를 움직이고, 모터는 환경을 바꾸며, 바뀐 환경은 다시 모델의 입력이 된다.
그래서 로봇에서의 오차는 정적인 숫자가 아니라 동적인 사건이다. 작은 행동 오차가 곧 다음 장면의 원인이 된다. BC가 기록된 데이터에서는 잘 맞아도 닫힌 루프 실행에서 실패하는 이유가 바로 여기에 있다.
열린 루프 평가는 충분하지 않다
이전 장에서 검증 손실만 믿으면 안 된다고 말했다. 이제 그 이유를 더 분명히 볼 수 있다. 기록된 데이터에서 모델을 평가하는 방식은 열린 루프 평가에 가깝다. 모델이 어떤 행동을 예측하더라도 그 행동은 실제 환경에 적용되지 않는다. 다음 입력은 여전히 사람이 만든 데이터에서 온다.
기록된 state_1 → 모델 예측 → 사람의 기록된 state_2 사용
기록된 state_2 → 모델 예측 → 사람의 기록된 state_3 사용이 구조에서는 모델의 실수가 다음 상태를 망치지 않는다. 모델이 state_1에서 조금 틀린 행동을 예측해도, state_2는 사람이 올바르게 조작해서 만든 상태다. 평가가 깨끗하게 유지된다.
반면 실제 로봇 실행은 닫힌 루프다.
현재 state_1 → 모델 예측 → 로봇 실행 → 실제 state_2
실제 state_2 → 모델 예측 → 로봇 실행 → 실제 state_3여기서는 모델의 행동이 다음 입력을 만든다. 따라서 한 번의 실수가 다음 실험 조건 자체를 바꾼다. BC 정책을 평가할 때는 반드시 닫힌 루프 테스트를 해야 한다. 시뮬레이션에서 여러 초기 조건으로 실행해 보고, 가능하면 실제 로봇에서는 속도와 작업 공간을 제한한 상태로 천천히 검증해야 한다.
오프라인 검증 손실은 여전히 필요하다. 데이터가 제대로 정렬되었는지, 모델이 기본 패턴을 학습했는지 확인하는 데 유용하다. 하지만 그것은 출발선이다. 로봇 정책의 진짜 실력은 자신이 만든 다음 상태를 견디는 능력에서 드러난다.
데이터가 치우치면 로봇도 치우친다
모방학습 모델은 데이터에서 배운다. 이 말은 멋있게 들리지만, 동시에 냉정한 뜻을 가진다. 데이터에 없는 것은 배우기 어렵고, 데이터에 한쪽으로 치우쳐 있는 것은 그쪽으로만 잘한다.
예를 들어 모든 시연에서 빨간 컵만 사용했다고 하자. 로봇은 정말 "컵을 집는 방법"을 배웠을까? 아니면 "빨간색 원통형 물체가 특정 조명 아래 특정 테이블 위에 있을 때 접근하는 패턴"을 배웠을까? 검은색 머그컵, 투명 컵, 손잡이가 있는 컵, 반쯤 가려진 컵이 등장하면 답이 달라질 수 있다.
데이터 편향은 여러 모습으로 나타난다.
물체 편향: 특정 색, 크기, 모양의 물체만 등장한다.
위치 편향: 물체가 항상 테이블 중앙이나 같은 좌표 근처에 놓인다.
조명 편향: 밝기, 그림자, 반사 조건이 거의 변하지 않는다.
배경 편향: 항상 같은 테이블, 같은 카메라 각도, 같은 주변 물체만 보인다.
시연자 편향: 한 사람이 특정한 속도와 방식으로만 조작한다.
이런 데이터로 학습한 정책은 실험실 안에서는 똑똑해 보이지만, 환경을 조금만 바꾸면 약해질 수 있다. 테이블 색이 바뀌거나 카메라가 몇 도 기울어지거나, 컵이 화면 구석에 놓이는 것만으로도 행동이 흔들릴 수 있다.
특히 이미지 기반 정책은 눈에 보이는 모든 패턴을 사용할 수 있다. 우리가 의도한 것은 컵과 그리퍼의 관계였지만, 모델은 배경의 테이프 자국, 특정 그림자, 테이블 모서리 같은 우연한 단서를 함께 배웠을 수 있다. 학습 데이터에서는 그 단서가 항상 성공 행동과 함께 나타났기 때문에 모델 입장에서는 유용해 보인다. 하지만 환경이 바뀌면 그 단서는 사라지고 정책은 길을 잃는다.
일반화는 마법이 아니라 경험의 폭이다
일반화란 모델이 학습 때 보지 못한 새로운 상황에서도 적절히 행동하는 능력이다. 많은 사람이 딥러닝 모델이 알아서 일반화해 주기를 기대하지만, 로봇에서는 그렇게 단순하지 않다. 로봇의 세계는 물리적으로 복잡하고, 작은 차이가 결과를 크게 바꾼다.
컵을 집는 작업만 해도 변수가 많다. 컵의 위치, 방향, 재질, 무게, 마찰, 그리퍼의 접근 각도, 카메라 노이즈, 깊이 센서 오차, 테이블 표면 상태가 모두 영향을 준다. 이 중 몇 가지만 바뀌어도 성공 경로는 달라질 수 있다.
좋은 일반화는 대부분 넓은 경험에서 나온다. 다양한 물체, 다양한 배치, 다양한 시작 자세, 다양한 실패 직전 상황이 데이터에 들어 있어야 한다. 모델은 그런 차이를 보며 "무엇이 본질적인 단서이고 무엇이 우연한 배경인지" 구분할 기회를 얻는다.
예를 들어 항상 같은 위치의 컵만 집는 데이터를 학습하면 모델은 컵을 보지 않고도 그 위치로 팔을 뻗는 습관을 배울 수 있다. 반대로 컵 위치를 매번 바꾸고, 로봇 시작 자세도 바꾸고, 조명도 조금씩 다르게 만들면 모델은 단순 암기로는 손실을 줄이기 어렵다. 컵의 실제 위치와 로봇의 현재 자세를 사용해야만 행동을 맞힐 수 있다.
데이터 다양성은 모델에게 던지는 질문을 바꾸는 일이다. 편향된 데이터는 "항상 같은 상황에서 무엇을 했는가?"라고 묻는다. 다양한 데이터는 "상황이 달라져도 목표를 이루려면 무엇을 해야 하는가?"라고 묻는다.
성공 데이터만으로는 회복을 배울 수 없다
초기 모방학습 데이터셋은 보통 성공 시연으로 채운다. 당연한 선택처럼 보인다. 우리는 로봇이 잘하는 행동을 배우기를 원하므로, 사람이 잘 수행한 장면을 보여 주고 싶다. 실패한 장면은 지저분하고, 위험하고, 학습에 방해될 것처럼 느껴진다.
하지만 현실 로봇은 반드시 실수한다. 물체를 살짝 밀 수 있고, 그리퍼가 빗나갈 수 있고, 들어 올리는 중에 물체를 떨어뜨릴 수 있다. 이때 정책이 성공 데이터만 보고 배웠다면 어떻게 해야 할지 모른다. 성공 시연에는 "컵을 놓친 뒤 다시 접근하기", "물체가 밀렸을 때 새 위치를 확인하기", "그리퍼가 빈손일 때 멈추고 재시도하기" 같은 행동이 거의 없기 때문이다.
사람은 실패를 보면 자연스럽게 복구한다. 컵이 손끝에서 밀리면 시선을 다시 맞추고, 손 위치를 조정하고, 다시 잡는다. 로봇도 이런 행동을 하려면 실패 이후의 상태와 그때의 회복 행동을 데이터에서 봐야 한다.
성공 데이터만 있는 BC 정책은 마치 한 번도 넘어져 본 적 없는 운전 연습생과 같다. 직선 도로에서는 잘 달리지만, 바퀴가 자갈길에 빠지는 순간 당황한다. 반대로 실패 직전과 실패 이후의 회복 데이터를 포함하면 정책은 "정상 경로로 돌아오는 방법"을 조금씩 배울 수 있다.
실패 복구를 위해 데이터에 포함하면 좋은 장면은 다음과 같다.
그리퍼가 물체 중심에서 벗어났을 때 다시 정렬하는 장면
물체를 밀어 버린 뒤 새 위치를 확인하고 다시 접근하는 장면
그리퍼를 닫았지만 물체를 잡지 못해 다시 여는 장면
들어 올리는 중 물체가 미끄러질 때 멈추거나 다시 잡는 장면
충돌 위험이 감지되었을 때 후퇴하고 다른 경로를 선택하는 장면
이런 데이터는 성공 시연보다 수집하기 번거롭다. 그러나 실제 로봇에서는 매우 값지다. 로봇이 한 번의 실수로 끝나는 것이 아니라, 실수를 알아차리고 다시 시도할 수 있기 때문이다.
실패를 데이터에서 지우지 말자
로봇 실험을 하다 보면 실패 로그를 지우고 싶어진다. 데모 영상에는 성공 장면만 넣고 싶고, 데이터셋도 깔끔한 성공 에피소드만 남기고 싶다. 하지만 학습 관점에서 실패는 쓰레기가 아니라 단서다.
물론 모든 실패 데이터를 그대로 넣으면 안 된다. 사람이 완전히 잘못 조작한 장면, 위험한 충돌을 일으킨 장면, 센서가 고장 난 장면은 조심해서 다뤄야 한다. 그러나 실패 주변의 상태는 매우 중요한 정보를 담고 있다. 어떤 상태에서 실패가 시작되는지, 실패를 감지하려면 어떤 신호를 봐야 하는지, 실패 후에는 어떤 행동으로 돌아와야 하는지를 알려 준다.
예를 들어 그리퍼가 컵을 닫았지만 실제로는 잡지 못한 에피소드가 있다고 하자. 이 데이터를 단순히 "나쁜 시연"이라고 삭제하면 모델은 빈손 상태를 거의 배우지 못한다. 반대로 해당 장면에 grasp_failed 같은 라벨을 붙이고, 사람이 다시 컵을 향해 접근하는 회복 행동을 기록하면 훨씬 유용한 데이터가 된다.
중요한 것은 실패 행동 자체를 무조건 따라 하게 만드는 것이 아니라, 실패 상태에서 올바른 복구 행동을 배우게 하는 것이다. 실패를 수집할 때는 "무엇이 잘못되었는가"와 "그다음 어떻게 회복했는가"를 함께 남기는 편이 좋다.
episode_id: ep_0142
status: recovery_demo
failure_type: empty_grasp
state: 그리퍼는 닫혔지만 물체가 없음
action: 그리퍼 열기 → 물체 재검출 → 위에서 다시 접근이런 기록은 나중에 LLM 로봇 에이전트와 연결할 때도 도움이 된다. 상위 에이전트는 empty_grasp라는 실패 이유를 보고 "다시 검출한 뒤 다른 집기 후보로 재시도하라"는 계획을 세울 수 있다. 하위 정책은 실제 움직임을 담당하고, 실패 라벨은 재계획의 언어가 된다.
평균 행동의 함정
BC는 보통 사람의 행동을 정답으로 두고 평균적인 오차를 줄인다. 이 방식은 단순하고 안정적이지만, 때로는 애매한 행동을 만들 수 있다. 특히 한 상태에서 가능한 좋은 행동이 여러 개일 때 문제가 된다.
예를 들어 물체를 피해서 왼쪽으로 돌아가도 되고 오른쪽으로 돌아가도 되는 상황을 생각해 보자. 시연 데이터의 절반은 왼쪽으로 돌았고, 절반은 오른쪽으로 돌았다. MSE 손실을 사용하는 모델은 두 행동의 중간을 예측하려 할 수 있다. 그런데 왼쪽과 오른쪽의 중간은 장애물 정면일 수 있다.
로봇 조작에서도 비슷한 일이 생긴다. 컵을 잡을 때 왼쪽 손가락을 먼저 맞추는 접근과 오른쪽 손가락을 먼저 맞추는 접근이 모두 가능할 수 있다. 여러 시연자가 서로 다른 스타일로 조작하면 모델은 그 평균을 내다가 어정쩡한 궤적을 만들 수 있다.
이 문제는 데이터가 나쁘다는 뜻이 아니다. 실제 행동에는 여러 정답이 있을 수 있다는 뜻이다. 단일한 평균 행동만 출력하는 단순 BC 모델은 이런 다중 가능성을 잘 표현하지 못한다. 나중에는 확률적 정책, 여러 후보 행동 출력, 시퀀스 모델 같은 방법으로 이 문제를 완화할 수 있다. 하지만 지금 단계에서 기억할 핵심은 분명하다. 검증 손실이 낮아도 실제 행동이 흐릿하고 결단력 없어 보일 수 있다.
로봇은 데이터의 빈틈을 몸으로 드러낸다
소프트웨어 버그는 로그에 조용히 남을 수 있다. 하지만 로봇 정책의 빈틈은 몸으로 드러난다. 팔이 엉뚱한 방향으로 움직이고, 물체를 밀고, 그리퍼가 허공에서 닫히고, 테이블 근처에서 불안하게 떤다. 그래서 모방학습의 한계를 이해하려면 실패 장면을 자세히 관찰해야 한다.
실패를 분석할 때는 단순히 "성공" 또는 "실패"로만 기록하지 말고, 어느 단계에서 어떤 이유로 실패했는지 나누는 것이 좋다. 16장에서 다룬 실패 감지 흐름과 연결하면 훨씬 실용적이다.
Pick 작업이라면 다음처럼 나눌 수 있다.
접근 실패: 물체 근처까지 가지 못했거나 방향이 크게 어긋났다.
정렬 실패: 물체 근처까지 갔지만 그리퍼 방향이 맞지 않았다.
집기 실패: 그리퍼를 닫았지만 물체가 잡히지 않았다.
들어 올리기 실패: 잡은 것처럼 보였지만 들어 올리는 중 떨어졌다.
놓기 실패: 목표 위치까지 이동했지만 물체를 정확히 놓지 못했다.
이렇게 나누면 다음 행동이 보인다. 접근 실패가 많다면 물체 위치와 로봇 상태 표현을 확인해야 한다. 정렬 실패가 많다면 자세 정보나 그리퍼 접근 방향이 부족할 수 있다. 집기 실패가 많다면 그리퍼 닫는 타이밍과 접촉 상태 데이터를 더 봐야 한다. 들어 올리기 실패가 많다면 힘, 마찰, 물체 안정성 같은 정보가 필요할 수 있다.
실패 분류는 단순한 평가가 아니라 다음 데이터 수집 계획을 만드는 지도다.
모방학습 정책을 안전하게 다루는 방법
모방학습의 한계를 안다고 해서 BC를 버려야 하는 것은 아니다. 오히려 BC는 여전히 매우 좋은 출발점이다. 다만 현실 로봇에서는 BC 정책을 혼자 두면 안 된다. 안전한 실행 구조 안에 넣고, 실패를 감지하고, 필요하면 멈추거나 재계획해야 한다.
실험 단계에서 사용할 수 있는 기본 안전 장치는 다음과 같다.
행동 크기 제한: 한 스텝에서 움직일 수 있는 최대 거리와 속도를 제한한다.
작업 공간 제한: 로봇팔이 허용된 영역 밖으로 나가지 못하게 한다.
높이 제한: 엔드 이펙터가 테이블 아래나 위험 구역으로 내려가지 못하게 한다.
충돌 검사: MoveIt2 같은 경로 계획기나 거리 검사를 통해 위험한 이동을 거부한다.
비상 정지: 사람이 언제든 정책 실행을 멈출 수 있게 한다.
이런 장치는 모델의 성능을 높여 주지는 않는다. 대신 실패가 큰 사고로 커지는 것을 막아 준다. 로봇 학습에서는 "잘 배우는 것"만큼 "안전하게 실패하는 것"이 중요하다. 안전하게 실패해야 로그를 남길 수 있고, 로그를 남겨야 다음 정책을 더 좋게 만들 수 있다.
특히 BC 정책이 직접 저수준 모터 명령을 내리는 경우에는 더 조심해야 한다. 가능하다면 정책이 작은 목표 자세나 이동량을 제안하고, 실제 실행은 제어기와 경로 계획기가 검증하도록 구성하자. AI 모델은 제안자이고, 로봇 제어 계층은 안전한 실행자라는 원칙을 유지해야 한다.
한계를 줄이기 위한 데이터 관점
BC의 많은 문제는 결국 데이터로 돌아온다. 모델이 낯선 상태에서 흔들린다면 그 상태를 데이터에 넣어야 한다. 특정 물체에서만 잘한다면 물체 종류를 늘려야 한다. 실패 후 회복을 못 한다면 회복 시연을 수집해야 한다.
데이터를 개선할 때는 무작정 많이 모으는 것보다 어떤 빈틈을 채울지 정하는 편이 좋다. 실패 로그를 보고 가장 자주 무너지는 지점을 찾은 뒤, 그 주변 상태를 집중적으로 수집한다. 예를 들어 컵의 오른쪽에서 접근할 때만 실패한다면 오른쪽 접근 시연을 늘린다. 조명이 어두울 때 검출이 흔들린다면 조명 조건을 바꿔 데이터를 추가한다.
데이터 다양성을 늘리는 방법은 여러 가지다.
물체의 위치, 방향, 크기, 색을 바꿔 시연한다.
로봇의 시작 자세를 여러 방식으로 바꾼다.
카메라 각도와 조명 조건을 조금씩 다르게 만든다.
성공 시연뿐 아니라 실패 직전 상태와 회복 행동을 기록한다.
여러 사람이 시연해 서로 다른 조작 스타일을 포함한다.
이때 모든 변수를 한꺼번에 크게 바꾸면 원인을 분석하기 어렵다. 처음에는 하나씩 넓혀 가는 편이 좋다. 물체 위치를 넓히고, 그다음 물체 종류를 늘리고, 그다음 조명을 바꾸는 식이다. 로봇 데이터 수집은 무작위 노동이 아니라 실험 설계에 가깝다.
한계를 줄이기 위한 평가 관점
평가 방식도 바뀌어야 한다. 학습 손실과 검증 손실만으로는 충분하지 않다. 실제 작업에서 어떤 조건에서 성공하고 어떤 조건에서 실패하는지 봐야 한다.
좋은 평가 세트는 학습 데이터와 조금 달라야 한다. 너무 똑같으면 일반화를 볼 수 없고, 너무 다르면 현재 모델의 개선 방향을 잡기 어렵다. "학습 때 본 것과 비슷하지만 완전히 같지는 않은 조건"이 중요하다.
예를 들어 Pick 정책을 평가한다면 다음처럼 조건을 나눌 수 있다.
평가 A: 학습 범위 안의 물체 위치
평가 B: 학습 범위보다 조금 넓은 물체 위치
평가 C: 새로운 색의 물체
평가 D: 조명을 바꾼 환경
평가 E: 일부러 그리퍼를 조금 어긋난 상태에서 시작이런 평가를 하면 정책의 약점이 훨씬 선명해진다. 평가 A는 높은데 평가 B가 낮다면 위치 일반화가 부족하다. 평가 C에서 실패한다면 시각 특징이 특정 색에 치우쳤을 수 있다. 평가 E에서 무너지면 회복 행동 데이터가 부족하다는 신호다.
실패는 성능표의 낮은 숫자가 아니라 다음 실험을 알려 주는 메시지다.
모방학습의 한계가 다음 단계로 이어진다
이번 장에서 본 한계는 모방학습이 쓸모없다는 뜻이 아니다. 오히려 반대다. BC는 로봇에게 기본 행동을 가르치는 훌륭한 방법이다. 사람이 보여 준 동작을 빠르게 정책으로 만들 수 있고, 강화학습처럼 처음부터 수많은 시행착오를 겪지 않아도 된다.
다만 BC는 "좋은 시연을 따라 하는 능력"에 강하고, "낯선 상태에서 스스로 회복하는 능력"에는 약하다. 학습 데이터의 분포를 벗어나면 정책은 불안정해질 수 있고, 작은 행동 오차는 다음 상태를 바꿔 더 큰 오차로 이어질 수 있다. 데이터가 특정 물체와 환경에 치우치면 새로운 조건에서 일반화가 어렵고, 성공 데이터만 있으면 실패 복구 행동을 배우기 힘들다.
이 한계를 줄이기 위해서는 더 똑똑한 데이터 수집과 학습 전략이 필요하다. 로봇이 실행 중 만나는 상태를 다시 데이터에 넣고, 실패와 회복을 함께 기록하고, 여러 작업과 언어 조건을 연결하는 방식으로 확장해야 한다. 다음 장에서는 바로 이 방향을 다룬다. DAgger, 데이터 증강, 멀티태스크 데이터, 언어 조건 행동 학습은 모두 같은 질문에서 출발한다.
"로봇이 시연을 따라 하는 데서 멈추지 않고, 낯선 상황에서도 다시 길을 찾게 하려면 어떻게 해야 할까?"
이 질문이 모방학습을 단순한 흉내에서 실제 로봇 지능으로 밀어 올리는 출발점이다.
이 노트는 보도·비평·교육·연구 목적으로 작성되었습니다. 저작권 문의가 있으시면 에서 알려주세요.