
엔드게임도 나온지 벌써 7년이 지났네요.
제 마음 속 마블은 이 때를 기점으로 막을 내렸습니다.
어느 순간부터 마블 영화를 보며 느껴왔던 저의 동심은 더 이상 느껴지지 않았어요.
제가 어른이 된 걸까요? 잘 모르겠습니다.
컴퓨터 공부를 하면서 또 다른 설레는 이름을 들어버리고 말았습니다.
https://neverthe1ess.tistory.com/305
아 그 변신 로봇?
본 게시글은 학부 강의 'AI 데이터 표현과 모델링'을 기반으로 이해하고 학습한 내용을 정리하였습니다. 2007년에 영화관에서 첫 옵티머스 프라임을 마주한 날이 떠오른군요. 지금 봐도 이질감없
neverthe1ess.tistory.com
트랜스포머를 듣고 한 번 설렜고,
오늘 이야기 할 이 녀석을 보고 극락을 가버렸습니다.
Vision Transformer
ViT

Transformer를 공부해봤다면 모두 알듯이 쉽지 않은 개념입니다.
그렇기 때문에 큰 흐름부터 염두해두고 이야기 해볼께요.
Transformer가 나와서 바꾼 흐름은 아래와 같습니다.

Transformer / Attention은 밑단에서 입력이 숫자입니다. 텍스트가 직접 들어가는게 아니에요.
텍스트를 숫자로 바꿔주는 embedding engine만 끼우면 동작합니다.
그래서 그 당시 연구원들을 생각했습니다.
그럼 비전이나 음성에도 써볼 수 있겠는데?
이 생각이 ViT, 비전 트랜스포머를 만들었습니다.
처리 흐름은 BERT와 거의 동일합니다.
이미지 → 패치로 쪼갬 → 펼쳐서 붙임 → 임베딩 → 순서 정보 추가 → Transformer Encoder → CLS 벡터 추출 → MLP head → 분류
ViT는 사실상 Image BERT입니다. 심지어 논문에도 자기들을 ViT를 Image BERT라고 얘기하죠. 단, 아키텍쳐는 GPT-2 스타일. Attention/MLP가 Layer Normalization 이후에 옵니다.

An Image to Patched Sub Images

패치 개수 계산
이미지: 224 * 224 * 3 (C), Patch size: P = 16
$$N = {H * W} / {P * P} = {224 * 224} / {16 * 16} = 196$$
196개의 패치가 생성됩니다. 이는 Transformer에 들어가는 effective input sequence length.
그러니까 나눠 떨어지게끔 patch size가 정리돼 있어야 합니다.
차원 정리
- 원본 이미지: $H * W * C$
- 패치 텐서: $N * (P^2 * C) - 각 패치를 1D로 flatten
- 임베딩 후: $N * D$ - D는 transformer의 hidden dim
Patch Embedding



NLP Transformer와의 대응
- NLP: vocabulary ID (scalar) → dense vector(embedding)
- ViT: 이미지 패치 픽셀들 → projection으로 dense vector화
Embedding은 결국 dense vector를 얻는 것

$$z_0 = [x_{\text{class}}; x_{p1}E; x_{p2}E; \dots; x_{pN}E] + E_{\text{pos}}$$
각 변수의 의미는 아래와 같아요.
- $x_p^k$: k번째 패치($[1, P^2 *C]$)
- $E$: embedding matrix($[P^2*C, D]$)
- $x_p^k * E$: $[1, D]$ 한 패치가 D 차원으로 임베딩됨
여기서 $C$는 채널(RGB). 패치 개수는 $N$입니다.
한 픽셀의 컬러값을 임베딩시키고, 그것을 N개 패치 모두에 대해 진행합니다.
[CLS] Token & Position Embedding

BERT와 비교해봅시다.
BERT 입력 = Token Embedding + Segment Embedding + Position Embedding
ViT에서의 차이

- Position Embedding: 그대로 사용. 단, standard leanable 1D position embedding
- Segment Embedding: ViT에서는 무시해도 됨(한 이미지만 다루므로 segment가 1개뿐)
- [CLS] Token: 그대로 사용 - 이미지 전체를 관통하는 요약 벡터를 얻기 위함
[CLS] Token의 동작 원리

- 모든 이미지에 대해 동일한 예약된 임베딩 값이 들어갑니다. 실제 이미지가 아니에요.
- 차원만 맞춰서 패치들 앞에 붙입니다.
더미 토큰이 다른 패치들과 query-key-value 방식으로 다 조회되고, 전체가 임베딩되어 위로 올라간다. 그래서 CLS 위에 달려있는 hidden state를 뜯어내면 이미지 전체를 요약하는 벡터가 된다.

패치가 $N$개여도 CLS 자리 때문에 $N+1$개의 position embedding이 필요합니다.
여기서 $E_{pos}$ 부분을 보면 행렬의 차원은 $(N + 1) * D$이고 정보량은 real value 임을 notation으로 보여주고 있습니다.
Notation 표기법은 잘 알아두도록 합시다. 앞으로 저는 논문을 읽으며 살아가야 하기에.....
왜 Position이 중요할까?
이미지에서도 고양이가 왼쪽 위에 있는 거랑 오른쪽 아래에 있는건 다릅니다. 우리는 사물을 2차원적으로 바라보기 때문에 2차원 위치 정보도 중요하죠.
Concat?
보통 뉴럴 네트워크에서 Concat이라는 단어를 많이 보게 됩니다. 그냥 옆으로 붙여준다는 뜻이에요.
ViT Architecture


정확히 BERT랑 똑같습니다. BERT의 architecture를 그대로 갖다 썼어요. Google이 BERT 덕을 많이 봤을꺼에요.
Inductive Bias
Inductive Bias란?
- Inductive: 귀납적. 수많은 데이터를 봤을 때 그쪽 방향으로 편향된다는 뜻.
- Inductive Bias: 모델 구조 자체가 가지는 가정 / 편향
'CS & AI > Welcome to AI' 카테고리의 다른 글
| 오토인코더 깊게 파헤치기 / AutoEncoder & VAE (0) | 2026.05.21 |
|---|---|
| 두 AI가 옥상에서.avi / GAN(Generative Adversarial Network) (0) | 2026.05.11 |
| 저 4차원을 넘어 / Matrix & Tensor (0) | 2026.05.05 |
| BERT와 GPT (0) | 2026.04.26 |
| 아 그 변신 로봇? / Transformer (0) | 2026.04.25 |
나의 성장 드라마
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!