Transformer 기반 NLP 모델(BERT, GPT 등)을 공부하다 보면 반드시 마주치는 [CLS], [SEP], Question:, Answer: 같은 Delimiter Token(구분자 토큰).
이 글에서 개념부터 실전 예시까지 한 번에 정리해드립니다!
Delimiter Token은 문장, 문단, 역할(Role)을 구분하기 위해 입력 텍스트에 인위적으로 추가하는 특수 토큰입니다.
Transformer 모델은 긴 텍스트를 한 덩어리로 처리하기 때문에, 모델이 문장 경계나 역할을 스스로 구분할 수 있도록 구분자(delimiter)가 꼭 필요합니다.
| 목적 | 설명 |
|---|---|
| 문장 경계 구분 | 두 문장을 한 번에 입력할 때, 문장이 어디서 시작하고 끝나는지 알려줌 |
| 역할 정보 제공 | 질문과 답변처럼 서로 다른 역할을 가지는 문장을 명시적으로 구분 |
| 모델 학습 효율 향상 | 구조를 명확히 알 수 있어 모델이 더 적은 데이터로 더 빠르게 학습 가능 |
[CLS]어디에 쓰이나요?
BERT 기반 모델에서 문장 전체를 대표하는 벡터로 사용됩니다. (긍정 / 부정 으로 출력)
위치: 항상 입력 맨 앞.
예시:
[CLS] I love this movie. [SEP]
[SEP]어디에 쓰이나요?
두 문장 이상의 입력에서 문장 사이 경계를 구분할 때 사용됩니다.
위치: 문장과 문장 사이, 그리고 마지막에도 붙음.
예시:
[CLS] What is the capital of France? [SEP] Paris is the capital of France. [SEP]
Question:, Answer:어디에 쓰이나요?
GPT 계열에서는 [SEP] 같은 특수 토큰 대신 일반 단어로 역할을 명시하기도 합니다.
예시:
Question: What is 2 + 2?
Answer: 4
GPT는 "Question:" 다음은 질문, "Answer:" 다음은 답변이라는 패턴을 스스로 학습합니다.
| 구분 | Delimiter Token | 일반 Token |
|---|---|---|
| 의미 | 구조 정보 전달 | 실제 의미 정보 전달 |
| 예시 | [CLS], [SEP] | dog, apple, city |
| 목적 | 문장 경계/역할 구분 | 텍스트 의미 표현 |
| Token | 역할 | 위치 | 사용 예 |
|---|---|---|---|
[CLS] | 문장 전체 대표 벡터 | 맨 앞 | 분류 태스크 |
[SEP] | 문장 경계 표시 | 문장 사이 | 문장쌍 입력 |
Question: Answer: | 역할 명시 | 문장 앞 | GPT QA |
Delimiter Token은 Transformer의 문장 이해를 위한 힌트!
문장 구조와 역할을 분리해서 학습할 수 있도록 꼭 넣어주세요.