공간 질문에 '쓰는' 대신 '고르는' 모델 — MJev-Spatial 심층 분석

공간 질문의 답을 문장으로 만들지 않고, 미리 정해 둔 후보에 점수를 매겨 고르는 비전-언어 모델. 열두 개 공간 벤치마크 중 일곱 개에서 1위를 기록했다.
English  ·  日本語  ·  한국어
← 목록으로
온
온틀 리서치
2026년 10월 17일 읽기 18분 조회 0

로봇 팔이 테이블 위 컵을 집으려 한다. 집기 전에 판단할 게 있다. 컵이 접시 왼쪽인가 오른쪽인가, 손끝에서 몇 센티미터인가, 어디에 내려놓아야 하는가. 사람에겐 눈 깜짝할 순간이지만, 지금의 비전-언어 모델(VLM, 이미지와 글을 함께 다루는 모델)은 이 판단을 문장으로 쓴다. "왼쪽입니다", "약 2.4미터입니다", "(0.37, 0.52) 지점입니다." 여기서 좌표 (0.37, 0.52)는 화면에서의 위치를 가로·세로 비율로 나타낸 값이다.

그런데 답은 이미 아주 좁은 선택지 안에 있다. 왼쪽 아니면 오른쪽, 몇 가지 거리 구간 중 하나, 화면 위의 한 점. 그런데도 모델은 그 답을 한 글자씩 자기회귀(autoregressive, 앞 토큰을 보고 다음 토큰을 뽑는 방식)로 써 내려가고, 우리는 그 문장을 다시 읽어 숫자를 뽑아낸다. MJev-Spatial은 이 동작을 바꾼다. 답을 문장으로 만드는 대신, 미리 정해 둔 후보마다 점수를 매겨 그중 하나를 고른다.

왜 '쓰기'가 손해인가

객관식 시험을 떠올리면 왜 손해인지 분명해진다. 답이 ①~④ 중 하나인데, OMR 카드에 체크하는 대신 "정답은 3번이고 그 이유는…"이라고 긴 문장을 쓰게 하는 셈이다. 쓰는 데 시간이 걸리고(생성 비용), 채점자는 그 문장을 다시 읽어 번호를 골라내야 한다(파싱 비용).

비용만의 문제가 아니다. 모델은 공간 답만 배우지 않는다. 그 답을 감싼 문장의 말투와 상투어구까지 함께 배운다. 공간 판단과 상관없는 글쓰기가 학습 신호에 섞여 든다.

속도 제약도 있다. 로봇이 물건을 집거나 에이전트가 장면 속을 돌아다닐 때, 판단이 느리면 그 자리에 멈춰 선다. 저자들은 이 대목에서 상호작용 속도(interaction rate, 로봇·에이전트가 멈추지 않으려면 맞춰야 하는 판단 주기)를 끌어온다. 필요한 건 느리게 따져 내놓는 답이 아니라 빠르고 자동적인 판단, 심리학에서 말하는 System 1(의식적으로 따지지 않고 즉각 나오는 사고)에 가까운 반응이다.

쓰지 말고 고르기

공간 과제의 출력은 크게 세 가지다. 보기 중 하나 고르기, 숫자 하나(거리·각도·개수), 화면 위의 2차원 점 하나. 셋 다 유한한 후보 목록으로 적을 수 있다. 보기는 원래 유한하다. 숫자와 좌표는 범위와 해상도를 정해 구간으로 나누면 — 이것을 이산화(연속된 값을 몇 개의 구간으로 묶어 '칸'으로 다루는 것)라고 한다 — 역시 유한해진다. 그래서 세 과제가 "후보 중 하나 고르기"라는 한 규칙으로 묶인다.

고르려면 후보마다 점수를 매겨야 한다. 보통은 이를 위해 분류용 출력층(분류 헤드)을 새로 붙인다. MJev-Spatial은 붙이지 않는다. 질문과 이미지, 그리고 각 후보를 저마다 숫자 묶음으로 바꾼 뒤, 질문·이미지에 각 후보가 얼마나 들어맞는지를 관련도 점수로 계산한다. 이 계산은 백본(기반이 되는 사전학습 모델)이 원래부터 쓰던 비교 기능을 그대로 빌려 쓴다. 그래서 새로 더하는 파라미터가 하나도 없다. 성능을 끌어올린 별도 부품이 있어서가 아니라, 답을 생성하느라 놀려 두던 기존 능력을 공간 판단 쪽으로 돌려 쓴 결과다.

심화 — 점수는 어디서 나오나 트랜스포머의 어텐션은 각 토큰을 query(무엇을 찾는지)와 key(무엇을 내놓는지) 두 벡터로 바꾼 다음, 둘을 맞대 관련도를 잰다. 앞 문단에서 "숫자 묶음으로 바꿔 점수를 낸다"고 한 과정이 바로 이것이다. 답을 정하는 자리의 상태가 query가 되고, 각 후보의 상태가 key가 된다. 둘을 맞댄 값이 그 후보의 점수이고, 지금 유효한 후보들끼리 비교해 확률로 바꾼다(softmax). MJev-Spatial은 이 query·key 변환을 아예 새로 만들지는 않는다. 사전학습된 투영을 초기값으로 가져오되 그대로 두지 않고, 공간 과제에 맞춰 미세조정한다. 동결하는 것은 비전 인코더와 merger뿐이고, 가져온 언어 쪽 파라미터는 함께 학습된다(점수를 읽는 readout 층에는 별도 학습률을 준다). 즉 새 분류 부품을 더하지 않을 뿐, 기존 파라미터를 학습하지 않는다는 뜻은 아니다.

기술 주석 — 왜 마지막 층이 아니라 어텐션의 투영인가 후보를 맞댈 때 트랜스포머의 마지막 MLP 층 대신 어텐션의 query·key 투영을 쓴다. 마지막 MLP 층은 표현을 '다음 단어 예측' 쪽으로 밀어붙여 의미끼리 맞춰 보는 능력을 떨어뜨리는 경향이 있기 때문이다(저자들은 FreeRet의 관찰을 근거로 든다). 그래서 그 변환이 일어나기 전, 비교에 특화된 투영 단계에서 후보를 견준다.

단계적으로 좁히기

거리나 좌표는 후보가 너무 많다. 1센티미터부터 수십 미터까지, 또는 이미지의 모든 점을 한꺼번에 늘어놓으면 목록을 감당할 수 없다. 그래서 넓은 구간에서 좁은 구간으로 범위를 좁혀 가는 거친-정밀(coarse-to-fine) 방식으로, 두세 번에 나눠 고른다.

앞의 컵으로 돌아가 보자. 컵이 화면 어디에 있는지 좌표로 찍어야 한다. 먼저 화면을 3×3, 즉 아홉 칸으로 나눈다. 모델은 컵이 든 칸 하나를 고른다. 고른 칸만 원본에서 다시 잘라 와 또 아홉 칸으로 나누고, 다시 한 칸을 고른다. 이렇게 세 번 고르면 사실상 27×27 격자에서 한 칸을 찍는 셈이고, 마지막 칸의 중심이 좌표가 된다. 매번 직전 조각이 아니라 원본에서 다시 잘라 오는 건, 자르고 줄일 때 생기는 오차가 단계마다 쌓이지 않게 하려는 것이다.

거리도 같은 식이다. 두 물체가 몇 미터 떨어졌는지 물으면, 1단계에서 넓은 거리대 하나를 고르거나 "정확히 0" 또는 "범위를 벗어남"을 고른다. 2단계에서 그 구간을 더 잘게 나눈 칸 하나를 고르고, 그 칸의 중간값을 답으로 낸다. 넓게 한 번, 좁게 한 번. 두 번의 선택으로 연속적인 거리값에 닿는다.

무엇이 달라졌나

기존 공간 모델들과 MJev-Spatial이 갈라지는 지점은 세 군데다.

구분 기존 방식 MJev-Spatial
출력 공간 답을 더 잘 '생성'하려 함 보기·숫자·좌표를 모두 '후보 고르기' 하나로 묶음
점수 계산 후보 점수용 출력층을 따로 학습 백본의 사전학습된 비교 기능을 그대로 빌림(추가 파라미터 0)
정밀화 좌표를 텍스트로 생성 영역 선택을 분류로 지도, 고른 칸을 원본에서 다시 잘라 다음 근거로 사용

결과

종합 점수 65.64%로 비교한 여덟 개 모델 가운데 가장 높았고, 열두 개 벤치마크 중 일곱 개에서 1위였다. 손대지 않은 자기회귀 원본(같은 백본 Qwen3.5-4B)과 견주면 열두 개 전부에서 더 나았다.

종합 점수는 평균이다. 그래서 "평균적으로 가장 낫다"까지는 말할 수 있어도, 어느 과제에서 크게 이기고 어느 과제에서 밀렸는지, 1위를 놓친 다섯 벤치마크에서 얼마나 뒤졌는지는 이 숫자 하나로는 알 수 없다.

속도는 열두 벤치마크 전반에서, 가장 빠른 자기회귀 경쟁 모델보다 2.5배, 같은 백본의 원본보다 5.6배 빨랐다. 두 배수는 기준이 다르다. 2.5배는 가장 빠른 경쟁자와의 비교라 더 보수적인 값이고, 5.6배는 자기 원본과의 비교다. 둘 다 답 토큰을 한 글자도 생성하지 않고, 결정마다 계산을 한 번(forward pass 한 번)만 돌려 끝낸다는 설계에서 나온다.

왜 좋아졌나, 그리고 한계

결과만 보면 "자기회귀 생성이라는 형식 자체가 공간 과제에서 짐이었다"고 읽고 싶어진다. 하지만 이 모델은 형식만 바꾼 게 아니다. 분류라는 새 목표로 다시 학습했고, 거친-정밀 구조와 크롭(잘라낸 조각) 재인코딩도 함께 들어갔다. 형식을 걷어낸 자리에 공간 과제에 맞춘 학습과 구조가 더해진 결과로 보는 편이 맞다.

그 증거 하나가 분해 실험(ablation, 한 부분만 바꿔 효과를 보는 실험)에서 나온다. 길이를 더 거칠게 이산화했더니 — 즉 칸을 더 크게 잡았더니 — 해상도는 낮아졌는데도 예측 오차가 줄어드는 구간이 있었다. 왜 그럴까. 칸을 잘게 나누면 각 칸이 대표하는 값의 오차는 줄지만, 모델이 구분해야 할 후보가 늘어 '고르기'가 어려워진다. 두 힘이 맞서다 어느 지점을 넘으면 '후보가 많아 못 고르는' 쪽이 커진다. 해상도를 높인다고 정확도가 따라오는 게 아니라는 뜻이다.

여기서 설계 문제가 하나 생긴다. 후보 간격, 단계 수, 한 번 판단에 쓸 수 있는 시간, 그리고 과제가 허용하는 오차 — 이 넷은 따로 정할 수 없고 함께 맞춰야 한다. 더 잘게 쪼갠다고 좋아지지 않으니, 최적값은 도메인마다 실측으로 찾아야 한다.

'추가 파라미터 0'도 조심해서 읽어야 한다. 파라미터를 더하지 않은 것과 계산을 더하지 않은 것은 다르다. 후보가 많아지면 점수를 매길 대상이 늘고, 좌표처럼 단계가 많은 과제는 매 단계 크롭을 다시 인코딩한다. 그러니 "부품은 안 늘었다"는 맞아도, 전체 계산까지 가벼운지는 과제마다 다시 따져 볼 일이다.

저자들이 직접 밝힌 한계도 여기 맞닿아 있다. 거친 단계에서 틀리면 정답이 든 영역 자체가 후보에서 빠진다. 점 예측의 기하학적 오차 한계는 '올바른 칸을 골랐을 때'의 보장일 뿐이고, 앞 단계가 틀리면 소용이 없다. 숫자의 양자화 오차 한계도 코드북(후보 목록)에 대한 보장이지 모델이 실제로 맞히는가에 대한 보장은 아니다. 거친-정밀 구조의 고질적 약점, 즉 위 단계의 오류가 아래로 번지는 문제를 숨기지 않은 셈이다.

같은 조건에서 맞대 본 실험에서도 저자들은 이 방식이 전용 분류 헤드보다 '항상' 낫다고 하지 않는다. "경쟁력 있고 학습 비용이 낮되, 과제에 따라 득실이 갈린다"는 쪽이다. 적용 범위도 분명하다. 이 방법은 출력이 유한한 후보로 표현될 때에만 깔끔하게 돌아간다. 질문이 열려 있어 자유 서술이 필요하거나 후보를 미리 추려 둘 수 없으면 이 틀을 그대로 쓸 수 없다. 숫자 코드북(길이·각도·개수)의 범위와 간격도 특정 과제 분포에 맞춘 선택이라, 다른 도메인으로 옮기면 다시 설계하고 검증해야 한다.

더 깊이: 코드북·다중 점·학습

숫자를 담는 코드북

숫자를 고를 때 쓰는 후보 목록을 코드북이라고 한다. 값마다 이렇게 짜여 있다.

값 후보 구성
길이·거리 1단계: log1p 간격 양수 구간 30개 + 정확히 0 + 범위 초과 → 2단계: 고른 구간을 선형 4칸 또는 8칸으로. 고른 칸의 중간값이 답
각도 30도 양수 구간 + 0 + 범위 초과, 구간당 32칸
개수 거친 그룹 32개 × 그룹당 정수 32개로 0~1023을 정확히 복원

짧은 치수와 먼 거리를 하나의 미터 기반 코드북에서 함께 다루려고, 거리의 1단계 구간은 로그 간격(log1p)으로 벌려 둔다. 이 코드북은 체크포인트에 함께 저장돼, 학습 라벨·구간 텍스트·추론 값이 서로 어긋나지 않는다.

여러 점을 한꺼번에 찾기

같은 물체가 여러 개라 모두 짚어야 할 때는, 가능성이 높은 칸들을 묶어 물체 하나의 위치로 삼는다. 재학습 없이 3단계 분류기를 트리로 펼치는 방식이다. 1단계에서 왼쪽 위에도 오른쪽 아래에도 물체가 있을 법하면 경로가 둘로 갈라져 각각 더 깊이 내려간다. 최종 칸마다 거기까지 고른 확률을 곱한 값이 붙어 일종의 공간 확률 지도가 되고, 봉우리에 비해 일정 수준 이상 높은 칸들을 묶어 물체마다 대표점 하나씩을 돌려준다. 몇 개를 낼지는 묶인 그룹 수가 정하므로, "이제 그만"을 따로 학습시킬 필요가 없다.

실험 설계와 분해 실험

평가는 열두 개 공간 벤치마크에서 여덟 개 모델을 비교했다. 지표는 종합 점수(정확도 계열의 평균)와 추론 지연(한 번 답하는 데 걸리는 시간)이다. 백본은 Qwen3.5-4B, 학습 데이터는 기존 공간 데이터셋 다섯 개(RefSpatial, SAT, SenseNova-SI, VSI-590K-image, VST-P)를 분류 형식으로 바꾼 1230만 개 질문-답 쌍이다. 과제별로는 객관식 공간 QA 710만, 점 지역화 350만, 길이 추정 160만, 각도 추정 12만, 개수 세기 3.8만이다. 이 숫자는 단계로 펼치기 전의 원래 QA 기준이다. 점·숫자 과제는 두세 단계로 펼쳐지므로, 모델이 실제로 지도받는 '결정'의 수는 이보다 많다.

분해 실험에서 한 가지 더. 숫자를 디코딩할 때, 고른 거친 구간 안의 정밀 칸들에 기대값(조건부 평균)을 취하는 방법은 72K 규모 실험에서 오차가 오히려 커져 채택하지 않았고, 대신 argmax로 고른 칸의 중간값을 쓴다.

기술 주석 — 학습을 어떻게 돌렸나 이질적인 공간 데이터는 문장 길이도, 이미지 크롭 수도 제각각이라 배치에 빈자리(패딩)가 생기고 GPU마다 작업량이 들쭉날쭉해진다. 저자들은 길이를 고려한 전역 배칭과 GPU 간 부하 분산으로, 옵티마이저의 배치 구성은 그대로 두면서 이 낭비를 줄여 학습 처리량을 30.8% 끌어올렸다. 이 30.8%는 정확도가 아니라 학습 속도 이득이다. 또 모든 거친-정밀 단계를 teacher forcing(정답을 미리 넣고 각 단계를 함께 학습시키는 방식)으로 한 번의 forward pass에서 지도하되, 과제마다 단계별 손실을 평균 내 3단계짜리 점 문제가 1단계짜리 객관식보다 큰 가중치를 갖지 않게 맞췄다.

온틀 관점: 출력 후보가 정해진 업무라면

공간 판단 밖에서도, 나올 수 있는 답이 미리 정해진 몇 개로 묶이는 일이라면 같은 질문을 던질 수 있다. "굳이 문장으로 쓰게 하고 다시 읽어 뽑아낼 일인가?"

온틀의 요청 라우팅이 그런 장면이다. 예를 들어 슬랙에 "다음 주 월요일까지 상세페이지 배너 시안 두 개만 급하게 부탁해요"라는 요청이 들어온다. AI PM은 이걸 읽고 디자인 과제로 분류해, 담당 페르소나와 디자인 큐로 넘겨야 한다. 보낼 곳은 정해진 카테고리 몇 개로 이미 유한한데, 지금은 보통 LLM이 분류 결과를 문장으로 쓰고 우리가 거기서 카테고리를 뽑아 라우팅한다. MJev-Spatial이 공간 과제에서 지적한 그 비효율과 모양이 똑같다.

다만 여기까지는 적용 결과가 아니라 가설이다. 시험하려면 조건이 하나 있다. 카테고리 후보 위에서 점수를 안정적으로 읽도록 모델을 맞춰야 한다 — 논문처럼 분류 목표로 학습하든, 후보 확률을 일관되게 뽑는 다른 방법이든. 그리고 논문이 인정한 함정도 그대로 넘어온다. 1차 분류에서 "디자인"을 "데이터 수정"으로 잘못 보내는 순간 그 뒤의 세분류는 전부 무의미하다. 위 단계의 오류가 아래로 번지는 문제가 라우팅에도 똑같이 생기므로, 상위 분류의 확신이 낮을 땐 사람에게 넘기는 안전장치를 함께 둬야 한다.

그래서 검토한다면, 긴급도까지 다단계로 쪼개는 확장을 그리기 전에 요청 라우팅 한 가지부터 비교하는 게 맞다. 같은 요청 묶음을 지금의 생성·파싱 방식과 후보 점수 방식으로 각각 처리하고, (1) 결정당 지연, (2) 엉뚱한 큐로 간 오분류 비율, (3) 사람이 다시 봐야 했던 비율을 잰다. 효과는 나눠서 봐야 한다. 답 문장을 만들지 않으면 지연이 줄고, 파싱 단계가 사라지니 포맷이 깨져 엉뚱한 큐로 가는 오류는 준다. 하지만 카테고리 자체를 잘못 고르는 분류 정확도 문제는 그대로 남는다. 여기에 더해, 점수가 낮았던 요청과 실제로 큐를 잘못 탄 요청이 얼마나 겹치는지를 봐야 한다. 그 겹침을 알아야 "확신 몇 점 밑이면 사람에게"라는 검토 기준을 숫자로 정할 수 있다.

자주 묻는 질문

꼭 Qwen3.5-4B여야 하나요?

이 구현은 Qwen3.5-4B를 백본으로 씁니다. 이전 프로토타입은 Molmo2-ER 기반에 LoRA와 별도 결정 헤드를 얹었지만, 현재 모델은 Qwen3.5-4B로 바꾸고 언어 파라미터 전체를 학습했습니다. 핵심 아이디어(사전학습된 query·key 투영 재활용)는 특정 모델에 묶이지 않지만, 다른 백본에서의 성능은 이 논문이 보고한 범위 밖입니다.

여러 점을 찾을 때 만드는 '공간 확률 지도'가 거친 단계의 실수를 되돌려 주나요?

아닙니다. 여러 경로를 펼쳐 지도를 만드는 건 한 번에 여러 점을 뽑기 위한 장치지, 1단계에서 틀린 걸 복구하는 장치가 아닙니다. 단일 경로 추론에는 되돌림이 없어, 거친 단계가 틀리면 정답 영역이 후보에서 빠지고 이후 단계의 보장은 의미를 잃습니다.

답을 고르기만 하면, 왜 그 답을 골랐는지는 알 수 없나요?

서술형 근거는 나오지 않습니다. 출력은 고른 후보 하나와, 유효한 후보들끼리 비교해 얻은 확률뿐입니다. 즉 '왜'에 대한 설명 대신 '얼마나 확신하는가'라는 숫자가 남습니다. 이 확률을 운영에서 어떻게 쓰는지는 본문 '온틀 관점'에서 다룹니다.

참고자료

  • 논문: MJev-Spatial: System One Spatial Intelligence via Native Attention Matching
  • 저자: Luozheng Qin, Yuhan Zhu, Changhai Zhou, Qian Qiao, Jun Gao, Yuhua Zhou, Harry Zhang, Xiangyu Zeng 외
  • arXiv: https://arxiv.org/abs/2610.22276
  • HuggingFace: https://huggingface.co/papers/2610.22276
  • 관련 계보: 출력 방식에서는 선언된 답 공간 위에서 예측하는 틀을 세운 Jev와 이를 멀티모달 입력으로 넓힌 Jev-Omni, 점수 방식에서는 언어모델의 기존 출력층에서 후보 토큰 확률을 읽은 Visual Jev와 연속값을 로그 간격 순서형 회귀로 푼 DORN, 정밀화에서는 전용 그라운딩 토큰을 쓴 MolmoPoint와 좌표를 텍스트로 낸 Molmo·RoboPoint·RoboRefer, 그리고 같은 발상을 시간 그라운딩에 적용한 VideoJev.