이번 인사이트의 재료는 아홉 편이에요. 지난 편이 다루지 못하고 지나간 여섯 편과, 오늘 새로 정리한 세 편이에요. 주제도 기관도 제각각인데 나란히 놓고 다시 읽으니 공통점이 하나 있었어요. 아홉 편 모두 “지금 방법으로는 잘 안 된다”에서 출발했는데, 정작 손댄 자리는 알고리즘이 아니었어요.
같은 알고리즘을 다른 모양으로 접었어요
가장 선명한 건 저랭크 섭동으로 배치 추론 처리량 91%를 낸 진화전략 EGGROLL이에요. 진화전략이 큰 모델에서 못 쓰이던 이유를 저자들은 탐색 성능에서 찾지 않아요. 산술강도를 지목해요. 개체마다 풀랭크 섭동 행렬을 만들면 배치 행렬곱의 산술강도가 낮아서, GPU가 계산 대신 데이터를 실어 나르는 데 시간을 써요. 그래서 손댄 건 탐색 규칙이 아니라 섭동의 대수적 구조였어요. 저랭크로 접어 하드웨어가 좋아하는 연산 모양으로 바꾸자 처리량이 순수 배치 추론의 91%까지 올라가요.
초기 가중치에 rank-1 섭동을 개체마다 얹어 적합도를 평가하고, 가중 평균해 최종 갱신을 만드는 구조(출처: Sarkar et al., Evolution Strategies at the Hyperscale)
알고리즘은 수십 년 전부터 있던 것 그대로예요. 바뀐 건 그것을 계산기에 올리는 방식이고요.
배울 것과 계산할 것의 경계를 다시 그었어요
닫힌 형태 연산은 계산으로 두고 0.58M만 학습한 시각 내비게이션는 같은 질문을 반대편에서 물어요. 시각 내비게이션 모델이 커지는 흐름 속에서, 이 논문은 파이프라인 안에 이미 정확한 수식이 있는 연산이 얼마나 많은지를 짚어요. 사영기하와 점유격자, 좌표변환은 닫힌 형태가 알려져 있으니 해석적으로 계산하고, 진짜 불확실한 부분만 학습에 맡겨요.
결과가 이 논지를 그대로 보여줘요. 전체 22.7M 중 학습 파라미터는 0.58M뿐이고, 44k 프레임으로 한 GPU-시간 안에 학습해요. 그런데도 6060개 포인트골 에피소드와 60개 환경에서 최신 모델에 근접해요. 성공률은 조금 내주는 대신 평가한 방법 중 충돌률이 가장 낮았으니, 성능을 다 따라잡았다기보다 무엇을 내주고 무엇을 얻을지 고른 쪽에 가까워요. 최신 모델들과 견주어 학습 파라미터가 233배 적다는 건 모델을 잘 압축했다는 뜻이 아니라, 애초에 배울 필요가 없던 것을 배우지 않았다는 뜻이에요.
순서를 바꾸는 것만으로 탐색이 넓어졌어요
값싼 기구학 검사를 앞세워 접촉 계획 탐색을 넓힌 FARO는 검사의 배치를 건드려요. 휴머노이드 접촉 계획에서 동역학 최적화(TO)는 과제 평균 64.70초가 걸리는데, 그 앞에 세운 기구학 단계(KSO)는 평균 0.60초예요. 비싼 검사를 모든 후보에 돌리는 대신 값싼 검사로 먼저 걸러내면 같은 시간에 훨씬 많은 후보를 볼 수 있어요.
그 글을 정리하며 제가 붙인 해석은 이랬어요. 필터의 값어치는 얼마나 잘 거르느냐보다 맞는 걸 얼마나 안 버리느냐에서 나온다는 거예요. 최적화 알고리즘 자체는 그대로 두고 무엇을 언제 부르느냐만 바꿨는데 탐색의 도달 범위가 달라졌어요.
신호의 표현과 출력의 형식도 같은 자리예요
촉각 신호를 3축 힘장으로 통일해 3만 시간을 묶은 N0 보고서는 촉각 센서마다 제각각인 신호를 3축 힘장이라는 공통 표현으로 옮겨요. 센서를 더 좋게 만들거나 정책을 더 크게 만드는 대신, 여러 출처를 한 데이터셋으로 묶을 수 있는 표현을 먼저 정한 거예요.
접촉점과 파지 각도를 미터 공간에 출력하는 RynnBrain 1.1는 출력 쪽에서 같은 일을 해요. 인식 정확도를 올리는 대신 모델이 내놓는 형식을 바꿔요. 물체를 가리키는 대신 짚을 접촉점과 파지 각도를 찍고, 픽셀 평면이 아니라 미터 단위 물리 공간에 언어를 붙여요. 로봇이 바로 쓸 수 있는 형식으로 답이 나오면 그 뒤에 붙던 변환 단계가 통째로 사라져요.
관측을 어텐션 대신 가중치 갱신으로 저장하는 RoboTTT의 빠른 가중치는 기억을 어디에 둘지를 옮겨요. 지난 관측을 어텐션으로 다시 들추는 대신, 토큰이 들어올 때마다 경사 한 걸음으로 가중치에 적어 넣어요. 무엇을 기억하느냐가 아니라 기억을 어느 저장소에 두느냐를 바꾼 셈이에요.
몬테카를로 국소 추정과 결정론적 전역 해를 결합한 경로 솔버 WoDS는 계산을 쪼개요. 도메인을 단순한 부분으로 나눈 뒤 무작위 걸음은 타일 안에서만 짧게 쓰고, 전역은 결정론적으로 한 번에 풀어요. 두 방식 중 하나를 고르는 대신 각자 잘하는 구간에 배치한 거예요.
문제의 정의와 수집의 문턱까지 갑니다
오늘 정리한 나머지 두 편은 손대는 자리가 더 바깥이에요.
브라우저 원격조작으로 로봇 시연을 모으는 데이터 엔진 AXIS는 로봇 데이터가 부족한 이유를 수집 인터페이스에서 찾아요. 특수 하드웨어에 의존하고, 조작자가 한곳에 몰려야 하고, 과제 목록이 고정돼 있다는 세 문턱을 브라우저 하나로 낮춰요. 시뮬레이터 설치도 GPU도 로봇도 없이 기여할 수 있게 만든 다음, 모인 궤적을 백엔드가 정제하고 증강해요. 정책 성능은 그 결과로 따라와서, LIBERO-Plus 전체 성공률이 83.9에서 88.8로 올라가요. 다만 이 값은 시뮬레이션 벤치마크에서 나온 것이라 실기 성능을 그대로 말해주지는 않아요.
AXIS 시스템 개요 — 과제 생성과 에셋 정규화, 브라우저 원격조작, 오프라인 데이터 처리, 시뮬레이션 증강, 정책 학습, 실세계 검증(출처: Zhao et al., AXIS)
언어를 걷어낸 시각 전용 UAV 항법 벤치마크 VoLN는 아예 과제의 정의를 건드려요. 항법 지시문에는 방향과 거리, 배치 같은 경로 수준의 사전정보가 함께 실려 있는데, 이것들은 GPS가 닿지 않는 곳에 배치된 기체가 온보드 센싱만으로는 얻을 수 없는 값이에요. 그러니 그 인터페이스에서 나온 점수는 시각 항법 능력과 지시문 활용 능력을 뒤섞어 반영해요. 그래서 언어 없이 목표 사진과 현장 표지만 주는 새 벤치마크를 세웠는데, 그 조건에서 나온 최고 성공률이 7.4%였어요. 다섯 방법 모두 언어 없는 같은 프로토콜에서 평가된 값이라 언어를 줬을 때와 직접 견준 대조군은 이 표에 없어요. 그래도 과제 정의를 바꿔 점수가 어디서 나오고 있었는지를 물을 수 있게 만든 것 자체가 이 논문이 손댄 자리예요.
왜 아홉 번 다 바깥이었을까요
알고리즘 자체는 이미 오래 다듬어져 왔고, 남아 있는 큰 손실은 그 알고리즘을 무엇 위에서, 어떤 순서로, 어떤 형식으로 돌리느냐에 몰려 있는 것 같아요. 아홉 편이 손댄 자리를 늘어놓으면 연산의 모양, 배울 것의 경계, 검사의 순서, 신호의 표현, 출력의 형식, 기억의 위치, 계산의 분해, 수집의 문턱, 과제의 정의예요. 하나도 겹치지 않는데 전부 알고리즘 바깥이에요.
반대로 읽으면 경고이기도 해요. 성능이 안 나올 때 알고리즘부터 의심하면, 아홉 번 중 아홉 번은 엉뚱한 곳을 파는 셈이 돼요.
제가 바꾼 순서
저도 최근에 같은 방향으로 작업 순서를 바꿔 왔어요. 세 가지가 실제로 그랬어요.
첫째로, 실패했을 때 원인을 찾는 순서를 문서로 고정했어요. 하드웨어·연결부터 좌표와 표현, 로직과 파라미터, 데이터와 분포, 마지막으로 측정까지 층을 나눠 위에서부터 배제해요. 종전 습관은 로직에서 멈췄는데, 그 아래 두 층을 명시적으로 넣은 게 달라진 부분이에요.
둘째로, 성공 판정을 로그 문자열이 아니라 시뮬레이터의 실제 좌표로 바꿨어요. 코드가 성공이라고 찍어주는 문자열과 물체가 실제로 들려 있는지는 다른 사실이더라고요. 알고리즘을 고치기 전에 측정을 먼저 믿을 수 있게 만드는 일이었어요.
셋째로, 새 실습 자료를 받았을 때 자료가 전제한 환경과 제 환경의 차이를 먼저 실측해 대조표를 만들었어요. 자료는 이전 배포판과 구 시뮬레이터 기준이었고 제 환경은 최신 조합이라, 명령을 그대로 따라 하면 막히는 줄이 있었어요. 설치된 패키지를 직접 조회해 대조하니 실제로 바뀌는 건 두 곳뿐이고 나머지는 그대로 통한다는 걸 미리 알 수 있었어요. 이것도 내용을 공부하기 전에 무대를 정리한 셈이에요.
다음 한 주에 적용할 것
저에게 적용할 형태는 하나예요. 앞으로 무언가 안 될 때 알고리즘을 고치기 전에 바깥 여섯 자리를 먼저 훑는 체크리스트를 쓰려고 해요. 입력 표현, 출력 형식, 검사 순서, 측정 방식, 수집 경로, 과제 정의. 아홉 편이 손댄 자리를 그대로 항목으로 옮긴 거예요.
이번 주에 실기체 작업이 예정돼 있는데, 마침 표준 스택처럼 한 번에 돌지 않는 기체예요. 안 돌아갈 때 코드부터 열지 말고 이 여섯 자리를 먼저 지나가 보려고 해요.