활연개랑

[Transformer] BERT와 ViT에서 CLS 토큰이 문장(또는 이미지)을 대표하는 이유 본문

딥러닝/알아두면 좋을 지식

[Transformer] BERT와 ViT에서 CLS 토큰이 문장(또는 이미지)을 대표하는 이유

승해tmdhey 2025. 4. 7. 18:38
반응형

Transformer 기반 모델에서는 하나의 시퀀스를 하나의 벡터로 요약해야 하는 경우가 많음.
예를 들어:

  • 문장 분류: 한 문장을 하나의 벡터로 표현
  • 이미지 분류: 한 장의 이미지를 하나의 벡터로 표현

이럴 때 가장 자주 사용되는 방식이 바로 CLS(Classification) 토큰 활용임.


CLS 토큰이란?

  • BERT나 ViT 입력 시퀀스의 **맨 앞(0번째)**에 삽입되는 특수 토큰
  • 사전 정의된 의미가 없는 "빈칸" 같은 토큰
  • 모델이 학습을 통해 이 토큰에 의미를 부여하게 됨

왜 CLS 토큰이 시퀀스를 대표하게 될까?

1. 항상 같은 위치에 존재

  • 입력 시 맨 앞에 삽입됨
  • 위치 임베딩이 항상 고정
  • 모델이 예측 대상을 일관되게 학습할 수 있음

2. 의미 없는 토큰 (초기 상태)

  • 실제 단어나 이미지 정보가 없음
  • → 자기 스스로 의미를 갖지 않음
  • → 대신 다른 토큰들로부터 정보를 받는 데 최적화됨

3. Transformer의 Self-Attention 구조

  • 모든 토큰이 서로 정보를 주고받음
  • 특히 CLS는 모든 토큰과 attention을 수행
  • → 문장 전체, 이미지 전체 정보를 종합할 수 있음

BERT에서의 CLS token 

  • 문장의 첫 토큰으로 입력됨 ([CLS] token)
  • 문장 내 모든 단어와 상호작용
  • 학습을 통해 자연스럽게 문장의 핵심 정보를 요약하는 벡터로 사용됨

"문장 분류"나 "Next Sentence Prediction" 같은 태스크에서는
바로 이 CLS 벡터를 가지고 예측 수행


ViT에서의 CLS token

  • 이미지 패치를 시퀀스로 변환한 뒤, 맨 앞에 CLS 삽입
  • 다른 패치들은 구체적인 시각 정보를 담고 있음
  • 반면, CLS는 아무 정보도 없음 → 다른 패치들의 정보만 받아들임
  • 결국 전체 이미지에 대한 요약 벡터 역할 수행

Summary 

CLS 토큰 = "항상 고정된 위치 + 의미 없는 상태 + 전체 정보 수용"
→ 학습 과정에서 자연스럽게 시퀀스(문장/이미지)의 대표 벡터가 됨

특성설명
위치 항상 맨 앞, 고정된 위치
초기 의미 없음 (‘빈칸’)
역할 Attention으로 전체 정보를 수용
결과 시퀀스를 대표하는 벡터로 학습됨