VLA 이전의 시간 — Transformer·ViT·CLIP·Decision Transformer

들어가며

VLA를 공부하다 보면 이런 의문이 듭니다.

"왜 갑자기 2023년에 비전·언어·로봇이 한 모델로 합쳐지기 시작한 거지?"

답은 그 전 5~6년 동안 조용히 쌓인 네 편의 논문에 있습니다. 이 네 편이 비전·언어·행동을 같은 형식으로 다룰 수 있는 기반을 차근차근 쌓아둔 덕에, VLA가 가능해진 거죠.

이 글에서 네 편을 일상 비유와 함께 천천히 풀어봅니다.

  • Transformer (2017) — 모든 것의 시작
  • ViT (2020) — 이미지를 단어처럼 다루다
  • CLIP (2021) — 사진과 글을 같은 지도 위에 올리다
  • Decision Transformer (2021) — 행동까지 단어처럼 다루다

수식 한두 개가 등장하지만 한 줄씩 풀어 갑니다. 코드도 없습니다. 잘 모르는 단어가 나오면 바로 옆에 정의가 따라옵니다. 천천히 읽으시면 됩니다.

이 글은 VLA 학습 로드맵 시리즈의 첫 번째 글입니다.


0. 이 네 편을 읽기 전에 알아두면 좋은 것

본문에 자주 나오는 단어 네 개만 미리 짚고 갑니다. 아래 단어가 어색해도 본문에서 다시 풀어드리니, 부담 없이 넘어가셔도 됩니다.

신경망 (neural network)

입력을 받아서 여러 층(layer)을 거쳐 출력을 만드는 거대한 함수입니다. 사진 한 장을 입력하면 "이건 강아지" 같은 답을 출력하는 식이죠. 안에서는 행렬 곱셈이 잔뜩 일어납니다. "신경망 = 큰 함수"라고만 기억하시면 됩니다.

시퀀스 (sequence)

순서가 있는 데이터의 나열입니다. 문장은 단어의 시퀀스, 영상은 프레임의 시퀀스, 로봇이 한 task를 수행하는 기록은 (상태, 행동) 쌍의 시퀀스입니다.

토큰 (token)

모델이 한 번에 처리하는 작은 조각 하나입니다. 문장을 처리할 땐 단어 하나가 토큰, 이미지를 처리할 땐 16×16 픽셀 한 조각이 토큰이 될 수 있습니다. "조각 단위"라고 보시면 됩니다.

임베딩 (embedding)

의미를 좌표(숫자 배열)로 바꿔놓은 것입니다. 예를 들어 "강아지"라는 단어를 768개 숫자로 표현하는 거죠. 비슷한 의미면 좌표가 가까운 위치에 모이도록 학습됩니다.

이 네 개만 머릿속에 두면 본문은 충분히 따라오실 수 있습니다.


1. Transformer — 모든 것의 시작

📄 Attention Is All You Need — Vaswani 외, Google Brain (2017)

그 시기 사람들이 답답해하던 것

2017년까지 문장을 처리하는 표준 도구는 RNN(Recurrent Neural Network) 과 그 사촌인 LSTM이었습니다. 이름이 어렵게 들리지만 발상 자체는 단순합니다 — 단어를 하나씩 순서대로 처리하면서, 앞에서 본 정보를 작은 메모에 적어 다음 단어로 넘겨주는 방식입니다.

문제는 두 가지였습니다.

첫째, 너무 느립니다. 100번째 단어를 처리하려면 1번부터 99번까지를 한 줄로 다 거쳐야 합니다. GPU는 본래 여러 일을 동시에 처리할 때 빠른데, 한 줄로 줄 세우면 그 강점을 살리지 못합니다.

둘째, 멀리 있는 단어끼리 연결이 흐릿합니다. 예를 들어 "그 영화는, 무려 두 시간 반 동안 별다른 사건도 없이 풍경만 비추다가, 결국 재미없었다" 같은 문장에서 "영화"와 "재미없었다"를 연결해야 하는데, 그 사이의 모든 단어를 작은 메모 한 장에 욱여넣어 옮기다 보니 정보가 희미해집니다.

트랜스포머의 한 줄짜리 발상

"각 단어가 다른 모든 단어를 동시에 직접 쳐다보면 안 될까?"

이 한 줄이 트랜스포머의 전부입니다.

100번째 단어가 1번째 단어를 참고하고 싶다면, 99단계를 거치지 않고 곧장 참고합니다. 모든 단어가 모든 단어를 동시에 쳐다보니 GPU의 병렬 처리도 자연스럽게 살아납니다.

이 "동시에 쳐다본다"를 수학적으로 구현한 게 self-attention입니다.

Self-attention을 도서관 비유로

self-attention은 각 토큰마다 세 가지 벡터를 만들어 사용합니다.

  • Query (Q) — 내가 지금 찾고 있는 것
  • Key (K) — 내가 가진 것을 광고하는 라벨
  • Value (V) — 내가 가진 실제 내용물

도서관에서 책을 찾는 상황을 떠올려 보세요.

  1. 머릿속에 검색어를 떠올립니다 — 이게 Query입니다.
  2. 책장 옆의 라벨(제목·저자·키워드)을 살펴봅니다 — 이게 Key입니다.
  3. Query와 닮은 라벨이 보이면 그 책의 본문을 가져옵니다 — 이게 Value입니다.

self-attention도 똑같이 작동합니다. 한 토큰의 Query가 다른 모든 토큰의 Key와 비교되어 "얼마나 관련 있는지" 점수를 매깁니다. 그 점수에 비례해 다른 토큰들의 Value를 합쳐 가져옵니다. 결과적으로 한 토큰은 시퀀스 전체에서 자기와 관련 깊은 정보만 골라 모은 새로운 표현으로 갱신됩니다.

핵심 수식 한 줄, 천천히 풀이

논문에서 가장 중요한 수식은 단 한 줄입니다. 어렵게 보여도 한 단계씩 풀어보면 단순합니다.

Attention(Q,K,V)=softmax(QKTdk)V\text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V

이걸 네 단계로 나눠 봅니다.

1단계 — Query와 Key의 닮음 점수: QK^T

두 벡터가 비슷한 방향을 가리키면 큰 값, 다른 방향이면 작은 값이 나오는 연산이 dot product입니다. 즉 "이 Query와 저 Key가 얼마나 닮았나"의 점수표를 만드는 것입니다.

2단계 — 점수 크기 조정: ÷ √d_k

벡터의 길이(d_k)가 길수록 dot product 값도 자연히 커집니다. 그러면 다음 단계의 softmax가 한쪽으로 쏠려 학습이 잘 되지 않으므로, 적당한 크기로 맞춰주는 작업입니다. "값이 너무 들쭉날쭉해지지 않게 다듬는다"고 보시면 됩니다.

3단계 — 비율로 변환: softmax(...)

점수들을 모두 양수로 만들고 합이 1이 되도록 변환합니다. 결과는 "전체 토큰 중 어느 토큰에 얼마만큼 주의를 기울일지"의 비율입니다. 예를 들어 0.7, 0.2, 0.1처럼.

4단계 — 비율로 Value 합치기: ... × V

위에서 만든 비율로 다른 토큰들의 Value를 가중평균합니다. 결과는 "관련 있는 토큰의 내용을 더 많이 섞은 새로운 표현"입니다.

이 한 줄이 GPT, ChatGPT, ViT, RT-2, OpenVLA, π₀ 모두의 심장입니다. 정말 같은 수식 한 줄이 모든 곳에서 똑같이 굴러갑니다.

왜 한 번이 아니라 여러 번 — Multi-head Attention

위 수식을 한 번만 적용하면 한 가지 관점으로만 정보를 모읍니다. 그런데 실제로는 한 단어가 여러 관점(문법적·의미적·위치적)에서 다른 단어와 관계를 맺습니다.

그래서 Q·K·V를 여러 벌(보통 8~16벌) 만들어 각자 따로 attention을 계산하고, 결과를 이어 붙입니다. 이게 multi-head attention입니다. 각 head가 서로 다른 종류의 관계를 학습한다고 보시면 됩니다.

순서를 잃지 않게 — Positional Encoding

"동시에 다 쳐다본다"는 발상에는 문제가 하나 있습니다. 그렇게 하면 "I love you"와 "you love I"가 같은 문장이 되어버립니다. 단어들의 순서가 사라진 거죠.

그래서 입력 단계에서 토큰 임베딩에 순서 정보를 살짝 더해줍니다. 각 위치마다 고유한 패턴을 가진 작은 신호를 더하는 식입니다. 이게 positional encoding입니다.

VLA가 여기서 받은 것

VLA에서 가장 흔한 구조는 "이미지 토큰 + 언어 토큰 + 행동 토큰을 한 시퀀스로 이어 붙여 트랜스포머에 넣는 것"입니다. 이게 가능한 이유가 바로 self-attention입니다. 어떤 종류의 토큰이든 자유롭게 서로를 참고할 수 있으니, 이미지 토큰이 언어 토큰을 참고하고 그 결과로 행동 토큰을 출력하는 흐름이 자연스럽게 풀립니다.

요점

트랜스포머는 "어떤 정보든 토큰으로 펼쳐 한 모델로 처리한다"는 그릇입니다. VLA는 그 그릇 위에 비전·언어·행동을 올려놓은 구조입니다.


2. ViT — 이미지를 단어처럼 다루다

📄 An Image is Worth 16x16 Words — Dosovitskiy 외, Google (2020)

그 시기 사람들이 답답해하던 것

2020년까지 비전 분야의 표준은 CNN(Convolutional Neural Network) 이었습니다. CNN은 이미지에 작은 윈도우를 슬라이딩하며 지역적 특징(가장자리, 무늬)을 뽑는 구조로, 오랫동안 이미지 처리의 정상이었습니다.

그런데 두 가지가 답답했습니다.

첫째, 비전과 언어가 따로 놀았습니다. 언어는 트랜스포머로 통일됐는데 비전은 여전히 CNN이었습니다. 두 분야를 한 모델로 합치고 싶어도 구조가 달라 매끄럽지 않았습니다.

둘째, CNN은 멀리 있는 픽셀끼리 연결이 약합니다. 작은 윈도우 안에서만 정보를 보니, 이미지 전체의 맥락을 파악하려면 층을 깊게 쌓아야 했습니다.

ViT의 한 줄짜리 발상

"이미지도 그냥 트랜스포머로 처리하면 되지 않나?"

너무 단순해서 처음 듣고는 "이게 정말 될까?" 싶은데, 실제로 됩니다.

이미지를 직소퍼즐처럼 자르기

먼저 이미지를 16×16 픽셀짜리 작은 조각으로 잘게 자릅니다. 224×224 이미지라면 14×14 = 196개의 조각이 나옵니다. 이게 패치(patch) 입니다.

각 조각을 평평하게 펴서 (16×16×3 = 768개 숫자) 단어처럼 다룹니다. 즉 "이미지 = 196개 패치 토큰의 시퀀스"가 됩니다. 여기에 순서 정보(positional encoding)까지 더하면, 완전히 트랜스포머가 처리할 수 있는 입력이 됩니다.

충분히 큰 데이터로 학습하면, 이 단순한 발상이 CNN을 압도한다는 것을 ViT가 실증해 보였습니다.

알아둘 용어 — Patch Embedding

각 16×16 패치를 768차원 벡터로 바꾸는 변환을 patch embedding이라 부릅니다. 사실 별 게 아니고, 한 번의 행렬 곱셈입니다. NLP에서 단어를 임베딩 벡터로 바꾸는 것과 정확히 대응되는 작업이죠.

알아둘 용어 — [CLS] 토큰

ViT는 196개 패치 토큰 앞에 [CLS] 라는 특별한 토큰을 하나 끼워 넣습니다. 트랜스포머를 통과한 뒤 [CLS] 위치에 쌓인 정보가 "이미지 전체를 한 줄로 요약한 표현"이 되어, 분류 같은 다운스트림 task의 입력으로 쓰입니다. (이 트릭은 BERT에서 가져왔습니다.)

VLA가 여기서 받은 것

ViT 이후 거의 모든 비전 모델이 패치 기반 트랜스포머로 통일됐습니다. RT-1·RT-2·OpenVLA·π₀의 비전 인코더는 모두 ViT 계열의 후손입니다.

더 중요한 것은 형식의 통일입니다. 이미지가 토큰 시퀀스로 표현되는 순간, "언어 토큰 + 이미지 토큰 + 행동 토큰"을 한 모델 안에서 자연스럽게 처리할 길이 열렸습니다. ViT가 없었다면 VLA는 이미지를 어떤 형식으로 다룰지부터 고민해야 했을 겁니다.

요점

ViT는 "이미지도 토큰이다"라는 발상으로 비전을 트랜스포머의 무대 위로 올렸습니다.


3. CLIP — 사진과 글을 같은 지도 위에 올리다

📄 Learning Transferable Visual Models From Natural Language Supervision — Radford 외, OpenAI (2021)

그 시기 사람들이 답답해하던 것

ViT 이전까지의 비전 모델은 정해진 클래스 목록으로 학습됐습니다. 예를 들어 ImageNet은 1,000개 클래스를 다룹니다. "강아지냐, 고양이냐, 비행기냐"는 답할 수 있어도, "햇빛 아래 잔디밭에서 뛰노는 골든리트리버" 같은 자유로운 묘사는 다룰 수 없었습니다.

답답했던 점은 분명합니다 — 사람이 이미지를 설명하는 방식은 자연어인데, 모델은 1,000개 카테고리에 갇혀 있다는 것이었죠.

CLIP의 한 줄짜리 발상

"라벨 대신 인터넷에 떠도는 (이미지, 캡션) 짝을 그대로 학습 데이터로 쓰면 어떨까?"

OpenAI는 인터넷에서 4억 쌍의 (이미지, 텍스트 캡션)을 모았습니다.

"비슷한 건 가깝게, 다른 건 멀게" — Contrastive Learning

CLIP의 학습 방식은 한 줄로 표현됩니다.

같은 짝의 (이미지, 텍스트)는 가깝게, 다른 짝은 멀게 배치한다.

이걸 contrastive learning(대조 학습)이라 부릅니다. 직관적으로는 큰 지도 위에 사진과 글을 한꺼번에 펼쳐놓고, 짝꿍끼리는 가까이 모이게, 서로 무관한 것들은 멀리 떨어지게 좌표를 조정하는 게임입니다.

학습이 끝나면 이미지 인코더와 텍스트 인코더가 같은 좌표계를 공유합니다. "강아지 사진"의 좌표와 "강아지"라는 텍스트의 좌표가 거의 같은 위치에 모이게 됩니다.

알아둘 용어 — Zero-shot

학습 데이터에 없던 task도 추가 학습 없이 바로 처리하는 능력을 zero-shot이라 부릅니다. CLIP의 가장 인상적인 특성입니다.

예를 들어 "이 사진이 사슴인가, 무스인가, 카리부인가?"를 물으려면 보통 그 데이터로 새로 분류기를 학습해야 합니다. CLIP은 그럴 필요가 없습니다.

  1. 각 클래스 이름("a photo of a deer" 등)을 텍스트 인코더로 좌표로 만들고
  2. 이미지를 이미지 인코더로 좌표로 만들고
  3. 가장 가까운 텍스트 좌표를 답으로 고릅니다.

학습 0번으로 새 분류기가 만들어진 셈이죠.

알아둘 용어 — InfoNCE Loss

CLIP이 사용하는 contrastive 손실 함수의 이름이 InfoNCE입니다. 한 배치 안에 (이미지, 텍스트) 짝이 N개 있을 때, 한 이미지에 대해 N개 텍스트 중 진짜 짝을 골라내는 분류 문제로 학습합니다. "맞는 짝 찾기 게임을 N개 짝 안에서 N번씩 푼다"고 보시면 됩니다.

VLA가 여기서 받은 것

VLA의 핵심 능력 중 하나는 "사람이 자연어로 명령하면, 그 명령에 맞는 행동을 한다"입니다. 그러려면 모델이 시각 장면과 언어를 같은 좌표계 안에서 이해해야 합니다. CLIP은 그게 정말로 가능하다는 걸 처음 대규모로 보여준 논문입니다.

이후 PaLI·PaliGemma·SigLIP 같은 vision-language 모델이 줄줄이 등장했고, 그게 다시 RT-2·OpenVLA·π₀의 백본이 됐습니다. CLIP은 VLA의 "자연어로 시각을 제어한다"는 능력의 직접적 출발점입니다.

요점

CLIP은 사진과 글을 같은 좌표계 위에 살게 한 논문입니다. VLA의 자연어 명령 처리 능력은 이 좌표계의 후예입니다.


4. Decision Transformer — 행동까지 단어처럼 다루다

📄 Decision Transformer: Reinforcement Learning via Sequence Modeling — Chen 외, UC Berkeley·Facebook (2021)

그 시기 사람들이 답답해하던 것

전통적인 강화학습(Reinforcement Learning, RL) 은 "보상을 최대로 받게 하는 행동 정책을 찾자"가 목표입니다. 이를 위해 가치 함수, Bellman equation 같은 복잡한 도구를 동원합니다. 들으면 머리가 아플 정도로 어렵죠.

강화학습

환경에서 행동을 시도해 보고 보상(reward)을 신호 삼아 학습하는 분야입니다. 행동(action), 상태(state), 보상(reward)이 핵심 단어입니다.

정책 (policy)

"지금 상태에서 어떤 행동을 할지"를 결정하는 함수입니다. 강화학습이 학습하려는 대상이죠.

문제는 두 가지였습니다.

첫째, 학습이 불안정합니다. 가치 함수를 추정하면서 정책을 갱신하는 과정이 자칫하면 발산합니다.

둘째, 사람이 시연한 좋은 데이터를 잘 살리지 못했습니다. 미리 모은 좋은 데이터가 있어도, 보상 기반 학습 틀에 끼워 넣기가 어색했습니다.

Decision Transformer의 한 줄짜리 발상

"GPT가 다음 단어를 예측하듯, 그냥 다음 행동을 예측하면 안 될까?"

너무 단순해서 처음 들으면 "그게 강화학습이라고?" 싶지만, 정말로 잘 작동했습니다.

Return-to-go라는 트릭

학습 데이터를 다음과 같은 시퀀스로 적습니다.

(R₁, s₁, a₁,  R₂, s₂, a₂,  R₃, s₃, a₃,  ... )
  • s = 상태(state)
  • a = 행동(action)
  • R = return-to-go, "지금부터 episode 끝까지 남은 보상의 총합"

이 시퀀스를 GPT처럼 입력해서 "다음 행동(a)"을 예측하도록 학습합니다.

추론할 때는 사용자가 원하는 목표 보상을 첫 R 자리에 넣어 줍니다. 그러면 모델이 "그 보상에 도달하려면 어떤 행동들이 와야 하는지"를 시퀀스 예측으로 출력합니다.

복잡한 가치 함수도, Bellman equation도 없습니다. 그냥 시퀀스 예측입니다. "강화학습 = 시퀀스 예측 문제"라는 발상의 전환이 진짜 핵심입니다.

알아둘 용어 — Offline RL

환경과 직접 상호작용하지 않고 이미 수집된 데이터로만 학습하는 방식을 offline RL이라 부릅니다. Decision Transformer는 offline RL을 매우 단순한 형태로 푼 모범 사례입니다.

로봇 분야에서 offline RL이 중요한 이유는 분명합니다. 실제 로봇으로 시도와 실패를 반복하는 게 매우 비싸고 위험하기 때문이죠. 사람이 미리 시연한 데이터로만 학습할 수 있다면 훨씬 실용적입니다.

알아둘 용어 — Trajectory

한 번의 episode(task 수행 한 회)에서 시간 순서대로 기록된 (상태, 행동, 보상)의 나열을 trajectory(궤적) 라고 부릅니다. 로봇 시연 데이터는 결국 trajectory의 모음이고, Decision Transformer는 그걸 그대로 토큰 시퀀스로 보고 학습한 셈입니다.

VLA가 여기서 받은 것

Decision Transformer의 진짜 유산은 "행동도 토큰처럼 다룬다" 는 인식의 전환입니다. 행동을 작은 단계로 양자화해 토큰으로 만든 뒤, 언어 토큰과 똑같이 시퀀스 예측 문제로 푼다는 발상이 이후 RT-1·RT-2의 행동 출력 방식의 직계 조상이 됩니다.

특히 RT-2가 "행동을 텍스트 토큰처럼 출력하도록 거대 VLM을 finetune한다"는 결정적 발상은, Decision Transformer가 깔아둔 "행동 = 토큰" 관점이 없었다면 나오기 어려웠을 겁니다.

요점

Decision Transformer는 "행동도 결국 토큰이다"라는 인식을 만든 논문입니다. 이 발상이 VLA가 한 모델 안에서 비전·언어·행동을 같은 형식으로 다룰 수 있게 한 마지막 퍼즐입니다.


정리 — 이 4편이 VLA에 남긴 것

네 편의 논문이 남긴 유산을 한 표로 정리하면 이렇습니다.

논문핵심 발상VLA에 남긴 것
Transformer (2017)모든 토큰이 모든 토큰을 동시에 참고어떤 정보든 한 모델로 처리할 수 있는 그릇
ViT (2020)이미지를 패치 토큰으로 다룬다비전을 시퀀스 형식으로 통일
CLIP (2021)사진과 글이 같은 좌표계자연어 명령으로 시각을 제어할 토대
Decision Transformer (2021)행동도 토큰, 강화학습도 시퀀스 예측행동 토큰화의 직계 조상

이 네 가지가 모두 한 자리에 모였을 때, 비로소 "비전 토큰 + 언어 토큰 + 행동 토큰을 한 트랜스포머가 처리한다"는 VLA의 그림이 가능해집니다.

한 줄 요약

VLA는 트랜스포머라는 그릇 위에, 비전·언어·행동이 모두 토큰이라는 같은 형식으로 올라갔을 때 비로소 가능해진 분야입니다.


다음 글 안내

다음 글은 로봇 정책이 신경망으로 옮겨가던 시기 이야기입니다. BC-Z, Gato, RT-1을 통해, 사람의 시연 데이터로 어떻게 로봇이 task를 배우는지를 살펴봅니다.