시뮬레이션 벤치마크에서 재현한 실제 로봇 행동 복제의 네 가지 미스터리와 그 원인 및 시사점.
최근 로보틱스 분야에서 일하기 시작하면서, 실제 로봇 데이터로 많은 행동 복제(BC)와 강화 학습(RL) 정책을 학습할 기회가 있었습니다. 지금까지의 제 인상은 이렇습니다. 실제 세계의 시연 데이터는 기존 시뮬레이션 RL 벤치마크(예: D4RL, OGBench 등)의 데이터와 매우 다릅니다. 특히 실제 로봇 데이터에서는 많은 수수께끼 같은 현상이 나타나며, 이들은 여러 표준 BC 및 RL 벤치마크에서는 쉽게 관찰되지 않는다는 점을 알게 되었습니다.
이 수수께끼들은 저를 정말 혼란스럽게 했고, 그래서 제대로 연구해 보기로 했습니다. 안타깝게도 로보틱스에서는 무엇도 완전히 재현 가능하지 않기 때문에 실제 세계에서 이를 조사하기는 정말 어렵습니다. 실제 세계에서는 조명 조건, 배경, 리셋 분포, 로봇 온도 등을 포함한 _모든 것_에 결과가 좌우됩니다. 이는 이상한 일이 일어나고 있다고 의심하더라도, 그것이 실제 현상인지 아니면 단순한 잡음인지 100% 확신할 수 없다는 뜻입니다.
제대로 된 과학을 하려면 통제된 벤치마크에서 이를 재현하는 것이 중요하다고 생각합니다. 그래서 인간 시연과 같은 _특성_을 모방하는 데이터를 생성하도록 시뮬레이션 조작 과제용 정책을 작성했습니다. 많은 반복 끝에, 이 벤치마크에서 연구하고 싶었던 수수께끼들 중 다수를 성공적으로 재현할 수 있었습니다.
이 블로그 글에서는 시뮬레이션 벤치마크에서 재현한 구체적인 증거를 바탕으로, 이 수수께끼들, 특히 BC 관련 수수께끼를 논의하겠습니다. 또한 이러한 현상의 잠재적 원인과 시사점을 논의하고, 이에 관한 제 관점도 공유하겠습니다.
이 연구를 위해 만든 과제 몇 가지를 소개합니다. 블록 쌓기, 하노이의 탑, 볼링과 같은 표준적인 로봇 조작 과제입니다.
그런 다음 인간과 유사한 데이터를 생성하는 정책을 작성했습니다. 물론 인간 시연을 완벽하게 모방하는 것은 불가능합니다(이는 로보틱스를 푸는 것과 같습니다...). 하지만 가능한 것은 인간 시연의 _특성_을 모방하는 일입니다. 이것만으로도 실제 로봇 데이터에서 일어나는 특이한 현상 다수를 재현하기에 충분한 것으로 드러났습니다.
인간 시연의 핵심 특성은 분포가 매우 좁고, 시간적으로 높은 상관관계를 가지며(비마르코프적), "매끄럽게" 무작위적이라는 점입니다.
먼저 과제와 행동 공간 설정을 실제 로봇 데이터에 맞췄습니다. 표준 행동 정규화 방식을 적용한 50Hz의 7-자유도 관절 속도 제어를 사용했습니다. 제어기의 속도는 인간 시연의 분포와 대략 일치하도록 조정했습니다.
작성한 정책에는 무작위 구간별 에르미트 스플라인을 근간으로 사용했습니다. 이는 생성되는 궤적이 매끄럽게 무작위적이고 시간적 상관관계를 갖도록 보장합니다. 그 위에 제어점, 파지 각도/방향, 접촉점, 동작 속도, 그리퍼 요/롤/피치 등을 비롯한 수많은 요소를 무작위화했습니다. 정책이 때때로 실수하고 이를 복구하도록 하기도 했습니다.
이 모든 설계 선택과 하이퍼파라미터를 조정하는 과정은 꽤 고통스러웠지만, 여러 번의 반복 끝에 인간과 유사한 특성을 지닌 충분히 다양한 시연 데이터를 얻을 수 있었습니다. 이것이 이 프로젝트에서 가장 어려운 부분이었습니다!
새 벤치마크가 이전 벤치마크인 OGBench와 어떻게 다른지 보여드리기 위해 아래에 영상 비교를 만들었습니다.
보시다시피 새 데이터는 속도와 동작 모두에서 더 자연스럽고 다양하며 실제 인간 시연과 더 유사합니다(완벽하지는 않지만요).
또한 새 벤치마크는 기본적으로 GPU 가속 MuJoCo인 MJWarp를 지원합니다. 이는 신선한 시연 데이터를 즉석에서 계속 생성하고, 해당 데이터를 정확히 한 번 사용해 에이전트를 학습한 뒤, 새 데이터를 다시 생성하는 방식으로 무한 데이터(!) 학습을 할 수 있음을 뜻합니다. 이를 통해 무한 데이터 조건에서 서로 다른 BC 및 RL 알고리즘의 "진정한 한계"(또는 "확장성")를 연구할 수 있습니다.
행동 복제에는 길이 25의 행동 청크 정책을 학습하기 위해 표준 플로 매칭을 사용했습니다: . 모든 것이 상태 기반이므로 정책은 단순히 다층 퍼셉트론으로 모델링됩니다(하지만 매우 큰 다층 퍼셉트론입니다. 아래를 보세요!). 다소 놀랍게도, VLA까지 가지 않아도 이 상태 기반 설정에서 많은 수수께끼를 재현할 수 있음을 발견했습니다. 이는 이 현상들이 모델 아키텍처보다는 _데이터_의 특성에서 비롯됨을 의미합니다.
이제 네 가지 행동 복제 수수께끼를 논의하겠습니다. 다시 강조하면, 아래 결과는 실제 세계 현상을 시뮬레이션에서 **"재현"**한 것이므로 이 특정 시뮬레이션 환경들에만 국한되지 않습니다.
면책 사항: 이 수수께끼들 중 어느 것이 새로운 것이라고 주장하지는 않습니다! 이들 중 다수는 아마 로보틱스 실무자들에게 이미 알려져 있을 것입니다. 이 블로그 글의 목표는 이러한 "구전으로 전해지는" 현상이 실제이고 재현 가능함을 보여주고, 그 시사점을 논의하는 것입니다.
첫 번째 수수께끼는 행동 복제에서 과적합이 흔히 _유익하다_는 것입니다. 이것이 제가 가장 직관에 반한다고 느낀 점입니다. 과적합은 나쁘므로 피해야 한다고 생각할 수 있습니다. 하지만 흔히 그 반대인 것으로 드러났습니다. 많은 경우 과적합은 반드시 해롭지 않으며, 때로는 심지어 도움이 됩니다.

더 과적합될수록 더 좋습니다(에피소드 10K의 블록-더블).
결과는 다음과 같습니다. 위 그래프는 에피소드 10K를 사용한 블록 집기 및 놓기 과제의 플로 BC 결과입니다. 검증 플로 손실이 계속 커지는데도 더 오래 학습할수록 성능이 단순히 좋아지다가 안정화되는 것을 볼 수 있습니다.

더 작은 데이터셋이 더 큰 데이터셋보다 나을 수 있습니다(에피소드 {10K, 50K}의 블록-싱글).
더 혼란스럽게도, 일부 경우에는 **더 큰 데이터셋을 사용하면 성능이 저하될 수 있음(!)**을 발견했습니다. 위 그래프는 동일한 과제에서 10K 데이터셋이 50K 데이터셋보다 더 낫다는 것을 보여줍니다. 이 데이터셋들은 동일한 분포에서 샘플링되었고, 결과는 각각 독립적으로 샘플링한 데이터셋 4개와 무작위 시드 4개에 대해 평균을 낸 것이므로, 단순한 우연이 아닙니다! 이는 어떤 이유에서 과적합이 때로는 오히려 바람직할 수 있음을 나타냅니다.
몇 가지 가능한 가설이 있다고 생각합니다. 이들은 모두 행동 복제의 근본적인 분포 이동 문제("DAgger" 문제)와 관련됩니다. 사실 이것이 이 블로그 글의 중심 주제입니다.
한 가설은 데이터셋 궤적에 과적합함으로써 에이전트가 테스트 시점에 데이터셋의 "최근접 이웃" 구간을 정확히 따를 수 있다는 것입니다. 이는 분포 이동을 최소화하고 궁극적으로 더 좋은 성능으로 이어질 수 있습니다.
이런 종류의 암기는, 이 "탐색"이 여전히 일반화될 수 있는 학습된 표현에 기반한다면 반드시 나쁜 것은 아닐 수 있습니다. 어떤 의미에서는 대규모 언어 모델도 흐릿한 최근접 이웃 탐색기라고 주장할 수도 있습니다.

행동 평균 제곱 오차가 플로 손실보다 성능을 더 잘 설명합니다(에피소드 10K의 블록-더블).
또 다른 가설은 이것이 정책의 실제 성능과 반드시 상관관계가 있지는 않은 플로 매칭 손실의 특이성이라는 것입니다. 실제로 생성된 행동과 목표 행동 사이의 평균 제곱 오차 같은 다른 지표를 사용하면 약간 다른 경향이 보입니다. 위 그래프는 검증 플로 손실이 계속 올라가도 검증 _행동 평균 제곱 오차_는 안정적임을 보여줍니다(이 논문도 참고하세요). 이 지표 역시 성능과 완벽히 상관관계가 있지는 않지만, 플로 손실이 살펴볼 최선의 지표가 아닐 수 있음을 시사합니다.
그런데 더 나은 지표는 데이터셋 상태 분포가 아니라 정책이 유도한 테스트 시점 상태 분포에서 생성된 행동과 목표 행동 사이의 평균 제곱 오차(또는 유사한 분포 지표)일 것입니다. 이 둘은 흔히 매우 다르며, 전자가 일반적으로 정책의 실제 성능과 (훨씬) 더 관련이 있습니다. 안타깝게도 테스트 시점 상태에는 목표 레이블이 없으므로 이 지표는 대체로 접근할 수 없습니다...
두 번째 수수께끼는 행동 복제에서 개방 루프 제어가 _필수적_이라는 것입니다. 용어에 익숙하지 않은 분들을 위해 정의를 소개하겠습니다.
물론 지연 시간 같은 실용적인 문제를 무시한다면, 폐쇄 루프 정책은 더 반응적이므로 개방 루프 정책보다 엄격하게 더 좋아야 합니다. 그렇죠?

폐쇄 루프 정책은 완전히 실패합니다("무한" 데이터의 블록-싱글).
그런데 순수한 폐쇄 루프 정책은 전혀 작동하지 않는 것으로 드러났습니다! 중요한 점은 이것이 무한 데이터 설정이라는 것입니다. 정책들은 새로 생성되는 데이터 흐름으로 학습됩니다. 따라서 폐쇄 루프 정책은 데이터 부족이나 과적합 문제로 실패하는 것이 아닙니다.
여기 영상들이 있습니다. 솔직히 이 매우 단순한 과제에서 무한 데이터가 있어도 폐쇄 루프 정책이 이렇게 나쁜 것에 놀랐고, 지금도 놀랍습니다. 큐브에 닿지도 못합니다! 그리고 네, 코드를 두 번 확인했습니다.
다시 말해 핵심 원인은 행동 복제의 분포 이동 문제라고 생각합니다. 폐쇄 루프 정책에는 두 가지 주요 문제가 있습니다.
첫째, 지평이 짧을수록 정책을 더 자주 질의해야 하므로 오류가 누적될 가능성이 높아집니다. 이는 확률적 플로 정책에서 특히 그렇습니다. 물론 행동 청크 길이가 길수록 정책을 학습하기 어려워지므로 상충 관계가 있습니다. 결과는 이 과제에서 최적점이 약 25단계 부근일 수 있음을 시사합니다.
두 번째 문제는 더 미묘하지만 잠재적으로 더 중요합니다. 환경이 완전히 마르코프적이더라도 데이터셋은 시간적 상관관계 때문에 그렇지 않습니다. 따라서 폐쇄 루프 정책과 데이터를 생성하는 정책 사이에는 표현력 불일치가 존재합니다. 그 결과 폐쇄 루프 정책은 "마르코프화된" 행동을 학습하며, 이는 테스트 시점에 잠재적으로 심각한 분포 이동으로 이어지고 결국 낮은 성능으로 이어집니다.
여기를 누를 줄 알았습니다! 개방 루프와 폐쇄 루프 정책의 표현력 차이 때문에, 더 나은 비교는 개방 루프 정책과 이력 조건부 폐쇄 루프 정책 사이의 비교일 것입니다. 이들은 같은 정도의 비마르코프성을 가집니다.

이력 조건화는 성능을 해칠 수 있습니다("무한" 데이터의 블록-싱글).
다음은 이력 조건부 개방 루프 및 폐쇄 루프 정책의 결과입니다.
그런데 이력 조건화는 도움이 되지 않습니다! 사실 이력 조건부 정책은 이력이 없는 대응 정책보다 오히려 더 나쁩니다. 이것이 "무한" 데이터 조건이라는 점을 다시 생각해 보세요. 따라서 과적합 때문이 아닙니다. 또한 이력 조건부 정책은 더 낮은 플로 손실과 평균 제곱 오차를 보여, 데이터셋에 더 잘 맞습니다. 하지만 이는 테스트 시점의 더 나은 성능으로 이어지지 않습니다.
이력 조건부 정책이 이력 비조건부 정책보다 나쁘다는 것은 로보틱스에서 꽤 잘 알려진 현상입니다. 두 가지 가능한 설명이 있습니다. 한 가설은 인과적 혼동 때문이라는 것입니다. 이력 조건부 정책은 이전 행동을 단순히 출력하는 방식으로 "속이는" 법을 배울 수 있는데, 이전 행동은 다음 행동과 흔히 매우 높은 상관관계가 있지만 그 상관관계는 허위적입니다. 또 다른 가설은 이력 조건부 정책이 단순히 입력 공간이 더 크기 때문에 테스트 시점 분포 이동에 더 취약하다는 것입니다. 아직 확정적인 답은 없지만, 이 문제가 무한 데이터가 있는 이 매우 단순한 과제에서도 발생한다는 점은 주목할 만합니다.
질문 하나입니다. 위 영상의 집기 및 놓기 행동을 학습하려면 정책이 얼마나 커야 한다고 생각하시나요? 모든 것이 상태 기반이라는 점을 기억하세요. 처음에는 크기가 [512, 512, 512]인 다층 퍼셉트론이면 충분하고도 남는다고 생각했습니다. 결국 과제는 단순하고 고정되어 있으며(목표 조건부가 아닙니다), 상태 공간은 37차원뿐입니다.
저는 완전히 틀렸습니다.

매우 큰 다층 퍼셉트론이 필요합니다("무한" 데이터의 블록-더블).
이 과제를 잘 학습하려면 적어도 [4096]*8 크기의(!) 잔차 다층 퍼셉트론이 필요하다는 것이 드러났습니다. 그리고 8192차원 다층 퍼셉트론은 성능을 더 향상합니다! 이는 거의 10억 규모(0.5B)의 모델입니다. 개인적으로 이전에 상태 기반 단일 과제 환경에서 이렇게 큰 다층 퍼셉트론이 사용되는 것을 본 적이 없습니다. 예를 들어 D4RL 및 OGBench 같은 이전 벤치마크에는 일반적으로 훨씬 작은 다층 퍼셉트론([1024]*4가 최대)이 필요합니다.
솔직히 이 수수께끼에 대한 좋은 답은 없습니다. 이 단순하고 고정된 상태 기반 과제에 이렇게 큰 모델이 필요하다는 사실은 여전히 조금 믿기 어렵습니다. 어쩌면 행동 복제는 그냥 정말 어려운 일일 수 있습니다. 그렇다면 완벽한 인식과 과제 이해가 있더라도 VLA에는 매우 큰 "행동 전문가"가 필요할 수 있음을 의미합니다. 또는 현재 플로 행동 복제를 수행하는 방식, 적어도 제가 구현한 방식이 비효율적일 수도 있습니다. 다만 자기회귀적 토큰화 행동 예측 같은 다른 접근법도 비슷하게 큰 모델을 요구한다는 것을 발견했습니다.
무한한 데이터와 연산량이 있다면, 모델이 데이터에서 올바른 특성을 자율적으로 학습할 것이므로 수작업 특성 공학에 신경 쓸 필요가 없다고 생각할 수 있습니다. 이는 쓴 교훈의 일부입니다.
행동 복제에서는 반드시 그렇지 않은 것으로 드러났습니다.

무한 데이터가 있어도 특성 공학은 중요합니다("무한" 데이터의 블록-더블).
위 그래프는 스케일링만 다른 두 입력 특성을 비교합니다.
둘은 정확히 동일한 정보를 담고 있습니다. 실제로 예상대로 플로 손실과 평균 제곱 오차가 거의 동일합니다. 하지만 실제 성능은 분명히 다릅니다. 이것이 충분히 큰 모델을 사용한 "무한" 데이터 설정이라는 점을 다시 기억하세요. 따라서 과적합이나 과소적합 때문이 아닙니다.
이 수수께끼에 대해서는 꽤 확신하는 답이 있다고 생각합니다. 주된 원인은 다시 분포 이동입니다.
두 정책이 동일한 학습 시점 지표를 갖더라도, 테스트 시점의 보지 못한 상태에는 _다르게 일반화_할 수 있습니다. 이 테스트 시점 일반화야말로 결국 행동 복제에서 중요한 것입니다. 예를 들어 조작 과제에서는 물체에 집중하는 정책이 내부 관절 각도에 집중하는 정책보다 더 잘 일반화됩니다.

물체 위치에 집중하면 성능이 향상됩니다("무한" 데이터의 블록-더블).
위 그래프는 이 점을 뒷받침합니다. 표준화 특성의 두 가지 변형도 추가로 비교했는데, 물체와 그리퍼의 좌표에 0.1 및 10의 추가 스케일링을 적용했습니다. 이전과 마찬가지로 네 가지 변형 모두 정확히 같은 학습 시점 지표를 가집니다! 하지만 물체 위치에 더 집중하는 정책은(스케일을 키워서) 훨씬 더 좋은 성능을 달성합니다. 이 실험에서는 테스트 시점 분포에서의 일반화 지표를 측정하지 않았지만, 이전에 관찰했듯이 그러한 지표가 차이를 분명히 드러낼 것이라고 확신합니다.
이 글에서는 시뮬레이션 환경에서 재현한 결과를 바탕으로 실제 세계 행동 복제의 네 가지 "수수께끼"를 논의했습니다. 이러한 현상에 관한 제 관점과, 이것이 VLA 및 대규모 로봇 제어에 무엇을 의미할지 몇 가지 공유하며 마무리하겠습니다.
제 과감한 견해는 이렇습니다. 이 테스트 시점 분포 이동은 사실 불가능한 문제라고 생각합니다. 즉, 유일한 해결책은 데이터를 확장하여 테스트 시점의 _모든 것_이 "분포 내"가 되게 함으로써 이 문제를 피하는 것입니다. 이는 대규모 언어 모델이 이 문제를 덜 겪는 이유를 설명합니다. 이들은 인터넷 규모의 데이터로 학습되어 매우 견고한 내부 표현을 구축하므로, 테스트 시점에 어떤 텍스트든 표현 공간에서 사실상 분포 내에 있게 됩니다. 또한 이것은 대규모 언어 모델에서 학습 손실을 성능의 좋은 대리 지표로 간단히 사용할 수 있는 이유도 설명합니다. 따라서 VLA에서 데이터와 모델을 대규모 언어 모델 수준까지 확장하면, 이 수수께끼들 중 다수는 결국 사라질 수 있습니다!
이 문제에는 두 가지 잠재적 해결책이 있는 듯합니다. 하나는 완전히 이력 조건부인 자기회귀 정책을 사용하는 것입니다. 다른 하나는 먼저 다중 양식을 제거하는 상세한 계획을 출력하여, 저수준 정책이 더 마르코프적일 수 있게 하는 계층적 정책을 사용하는 것입니다. 물론 이러한 해결책은 간단하지 않고 그 자체로 연구 주제이지만, 로보틱스를 더 확장하려면 결국 이 표현력 격차를 해소해야 한다고 생각합니다.
이 블로그 글에서는 행동 복제 수수께끼만 논의했습니다. 하지만 실제 로봇 데이터에서만 나타나는 강화 학습 관련의 흥미로운 현상도 더 많이 있습니다. 사실 강화 학습 연구자로서, 이 새로운 벤치마크를 만든 주된 동기는 이러한 _강화 학습 수수께끼_를 연구하는 것이었습니다. 이 강화 학습 수수께끼들은 별도의 블로그 글이나 논문으로 다룰 가치가 있다고 생각합니다. 앞으로 이를 작성해 공유할 수 있기를 바랍니다!
이 글에서 사용한 벤치마크와 데이터셋을 공유할 수 있나요?
이를 활발히 작업하고 있습니다! 현재 계획은 올해 10월까지 벤치마크의 공식 버전을 공개하는 것이니, 계속 지켜봐 주세요.
이 글에 관한 유익한 논의와 피드백을 제공해 준 Kyle Stachowicz, Sergey Levine, Srinath Mahankali, Kevin Black에게 감사드립니다.