AI VIDEO BRIEFING
비전 트랜스포머(ViT) 작동 원리: 16×16 패치 임베딩과 위치 임베딩, CLS 토큰 분류까지
이미지를 16×16 패치로 잘라 트랜스포머에 넣는 비전 트랜스포머의 작동 순서를, 고양이 눈에 해당하는 패치 하나를 끝까지 추적하며 단계별로 풀어본다. 위치 임베딩과 CLS 토큰, CNN과의 차이까지 함께 짚는다.

핵심 메시지
쉽게 이해하기
비전 트랜스포머(ViT)는 언어 모델에서 쓰던 트랜스포머를 이미지에 그대로 옮겨온 모델이다. 문장은 이미 단어 단위로 쪼개져 있지만 이미지는 그렇지 않기 때문에, 먼저 사진을 일정한 크기의 사각형 조각으로 자르는 일부터 시작한다. 영상에서는 16×16 픽셀 패치를 쓰고, 한 장의 사진이 14×14 격자로 배열된 196개 패치가 된다. 여기서 고양이 눈에 해당하는 87번 패치 하나를 골라 끝까지 따라간다.
패치 하나에는 가로세로 16픽셀에 빨강·초록·파랑 세 채널이 곱해진 768개의 숫자가 들어 있다. 이 숫자들을 한 줄로 펼친 뒤 학습된 행렬을 곱해 768차원 임베딩 공간으로 옮긴다. 언어 모델이 단어를 벡터로 바꾸는 것과 같은 절차지만, 여기서 학습되는 것은 단어의 의미가 아니라 이미지에서 무엇이 중요한 시각적 특징인지다.
문제는 위치 정보다. 글은 원래 한 줄로 흐르지만 이미지는 2차원이다. 대부분의 구현은 패치들을 1차원 순서로 펼친 뒤 순서 번호마다 학습된 위치 벡터를 하나씩 두는 방식을 쓴다. 2차원 구조는 각 순서 번호가 격자의 어느 칸에 해당하는지를 통해 간접적으로 담기며, 반드시 2차원 사인·코사인 인코딩을 써야 하는 것은 아니다. 여기에 분류를 위한 CLS 토큰이 앞에 하나 더 붙어 전체 토큰은 197개가 된다.
본격적인 계산은 셀프 어텐션에서 일어난다. 문장을 생성하는 언어 모델은 뒤에 올 단어를 미리 보지 못하도록 가리지만, 이미지에는 그런 제약이 필요 없어 모든 패치가 서로를 자유롭게 참조한다. 각 패치 임베딩에 세 개의 학습된 행렬을 곱해 쿼리·키·값 벡터를 만들고, 고양이 눈 패치의 쿼리를 197개 토큰의 키와 모두 견줘 어디에 주목할지 정한다. 실제로는 헤드마다 서로 다른 패턴을 학습하며, 흔히 보는 어텐션 히트맵은 그 일부를 단순화해 보여준 그림이다.
한 블록은 층 정규화 → 어텐션 → 잔차 연결 → 층 정규화 → MLP → 잔차 연결로 구성된다. MLP는 768차원을 네 배인 3072차원으로 늘렸다가 GELU 비선형을 거쳐 다시 줄이며, 이 단계에서는 패치끼리 정보를 주고받지 않고 각자의 표현만 다듬는다. 이 블록을 보통 12개 쌓으면 초기 층은 모서리·색·질감 같은 저수준 특징을, 중간 층은 사물의 부분과 패턴을, 후반 층은 '고양이 얼굴의 눈'처럼 의미가 담긴 개념을 담게 된다. 마지막으로 CLS 토큰의 표현을 선형 분류기에 통과시켜 이미지넷 기준 1000개 클래스 점수를 내고, 소프트맥스로 확률을 만든다.
주요 인사이트
- 이미지를 패치로 자르는 순간 시각 문제는 곧바로 언어 모델과 같은 문제로 바뀐다. '토큰의 나열'로 만들 수만 있으면 같은 구조를 재사용할 수 있다는 것이 비전 트랜스포머의 핵심 아이디어다.
- CLS 토큰은 특별한 장치가 아니라 어텐션 계산에 참여하는 평범한 토큰 하나일 뿐이다. 다만 어떤 패치와도 대응하지 않기 때문에, 12개 층을 지나는 동안 이미지 전체를 요약하는 역할을 자연스럽게 떠맡게 된다.
- CNN은 좁은 수용 영역에서 출발해 층을 쌓으며 시야를 넓히지만, 비전 트랜스포머는 첫 번째 층부터 이미지 전체를 볼 수 있다. 대신 모든 패치 쌍을 비교하므로 계산량이 패치 수의 제곱으로 늘어난다.
- 그 계산량 문제를 푼 후속 연구가 스윈 트랜스포머다. 어텐션을 국소 윈도 안으로 제한해 계산량을 제곱에서 선형으로 낮췄다.
- 초기 ViT는 수억 장 규모의 데이터가 있어야 제대로 학습됐지만, DeiT가 증류를 비롯한 학습 기법을 정리하면서 훨씬 적은 데이터로도 학습이 가능해졌다.
자주 묻는 질문
이미지 패치 하나가 왜 768개의 숫자가 되나요?
패치가 가로 16픽셀, 세로 16픽셀이고 색상 채널이 빨강·초록·파랑 세 개이기 때문입니다. 16×16×3을 하면 768이 되고, 이 값들을 한 줄로 펼친 뒤 학습된 선형 투영을 거쳐 768차원 임베딩으로 바꿉니다.
CLS 토큰은 무엇이고 왜 필요한가요?
이미지의 어떤 패치와도 대응하지 않는, 학습으로 얻어진 임베딩 하나입니다. 패치 앞에 붙여 함께 어텐션을 거치면서 이미지 곳곳의 정보를 끌어모으고, 마지막 층에서 이 토큰의 표현을 분류기에 넣어 최종 예측을 만듭니다.
언어 모델의 어텐션과 다른 점은 무엇인가요?
텍스트 생성 모델은 뒤에 나올 토큰을 보지 못하도록 가리는 인과 마스킹을 쓰지만, 비전 트랜스포머는 양방향 어텐션을 씁니다. 모든 패치가 순서에 상관없이 다른 모든 패치를 참조할 수 있습니다.
CNN과 비교하면 어떤 차이가 있나요?
CNN은 초기 층이 아주 좁은 영역만 보고 층이 깊어질수록 그 영역을 합쳐 넓혀갑니다. 비전 트랜스포머는 이 점진적인 과정을 건너뛰고 1번 층부터 이미지 전체에 걸쳐 어텐션을 계산합니다.
원문과 출처
이 글은 원본 영상의 자막을 바탕으로 한국어 독자를 위해 요약했습니다. 전체 맥락과 최신 정보는 원문에서 확인하세요.
YouTube 원본 영상 보기 ↗