
참조 링크 : https://platform.openai.com/tokenizer
왜 필요한가요?
컴퓨터(AI 모델)는 한글이나 영어 같은 텍스트 자체를 이해하지 못하고 오직 '숫자'만 이해할 수 있습니다. 문장을 인공지능에게 가르치려면 먼저 텍스트를 일정한 기준에 따라 잘게 나눈 뒤, 각각의 조각을 숫자로 변환(인코딩)해 주어야 하는데, 이 '잘게 나누는 작업'을 토크나이저가 담당합니다.
어떻게 쪼개나요? (토큰의 단위)
토크나이저의 종류에 따라 문장을 쪼개는 방식이 다릅니다.
단어 단위: 띄어쓰기 기준으로 나눕니다. (예: ["나는", "학교에", "간다"])
글자 단위: 알파벳이나 글자 하나하나로 나눕니다. (예: ["나", "는", " ", "학", "교"...])
서브워드(Subword) 단위: 최근 AI에서 가장 많이 쓰는 방식으로, 자주 쓰이는 단어는 그대로 두고 자주 안 쓰이는 단어는 더 의미 있는 작은 단위로 쪼갭니다.
"트랜스포머의 이해"를 예로 든다면?
문서에 적으신 "트랜스포머의 이해"라는 문장이 토크나이저를 거치면 대략 다음과 같이 쪼개질 수 있습니다.
["트랜스포머", "의", "이해"] (형태소 기준)
또는 ["트랜", "##스포", "##머", "의", "이해"] (더 잘게 쪼개는 서브워드 방식)
결론적으로, 토크나이저는 인간의 긴 문장을 인공지능이 소화하기 좋게 한 입 크기로 썰어주는 '가위'나 '칼' 같은 역할을 한다고 보시면 됩니다. 트랜스포머 모델은 이렇게 잘린 토큰들의 위치와 관계를 파악하여 문장의 의미를 이해하게 됩니다.
트랜스포머 기반 언어 모델은 입력된 텍스트를 바탕으로 다음에 올 가장 유력한 토큰(단어 조각)을 예측하는 확률적 방식으로 문장을 이어갑니다.
로짓(Logits) 계산에서 확률분포 생성까지
마지막 임베딩 벡터 추출: 트랜스포머 블록(Self-Attention 및 MLP)을 모두 거친 마지막 토큰의 벡터에는 전체 문맥 정보가 압축되어 있습니다.
로짓(Logits) 변환: 이 벡터를 모델 어휘집 크기(예: GPT-2 기준 50,257개)의 선형 레이어(Linear Layer)에 통과시켜 각 단어 후보별 점수인 '로짓'을 출력합니다.
소프트맥스(Softmax): 실수 점수인 로짓을 확률(합이 1이 되는 0~1 사이의 값) 분포로 변환합니다.
분포를 조절하는 핵심 변수: 온도 (Temperature)
소프트맥스 계산 전 로짓을 특정 상수로 나누어 확률분포의 형태를 조절합니다:
Temperature < 1 (낮은 온도): 상위 단어의 확률이 극대화되고 나머지 단어의 확률은 급격히 낮아집니다. 일관되고 사실 중심적인 예측에 유리합니다.
Temperature = 1: 모델이 원래 학습한 분포 그대로 소프트맥스를 계산합니다.
Temperature > 1 (높은 온도): 후보 간 확률 격차가 평평해져(smoothing) 덜 유력한 단어의 선택 확률이 높아집니다. 창의적이거나 다양한 표현이 나올 가능성이 커지고 일관성이 낮아집니다.
다음 단어를 선택하는 대표적인 생성 전략
탐욕 탐색 (Greedy Search):
확률이 가장 높은 단어 딱 1개만 무조건 선택합니다.
계산이 단순하지만 특정 문장이나 단어가 무한 반복되는 루프에 빠지기 쉽습니다.
Top-k 샘플링 (Top-k Sampling):
확률 상위 개의 토큰만 남기고 나머지 후보를 모두 제거한 뒤, 남은 후보군 안에서 확률에 따라 무작위로 추출합니다.
엉뚱한 단어(확률 분포의 긴 꼬리 부분)가 선택되는 것을 방지합니다.
Top-p (Nucleus) 샘플링:
누적 확률이 임계값 (예: 0.9)에 도달할 때까지 확률이 높은 순서대로 후보 단어들을 묶고, 그 안에서 샘플링합니다.
고정된 개수를 자르는 Top-k와 달리, 모델의 확신도(분포의 평평함 정도)에 따라 선택 후보군의 개수가 유동적으로 조절되는 장점이 있습니다.
빔 서치 (Beam Search):
실시간으로 단어 1개만 보고 확정 짓는 것이 아니라, 상위 개(빔 크기)의 유력한 시퀀스 경로를 유지하며 전체 누적 확률이 가장 높은 최적의 문장을 찾아냅니다. 번역 과제나 요약처럼 정답의 일관성이 중요한 작업에 주로 사용됩니다.
[트랜스포머 & LLM 핵심 요약 노트]
1. 텍스트의 분해: 토큰화 (Tokenization)
원리: 사람은 문장을 볼 때 단어나 의미 단위로 파악하듯이, 모델 역시 텍스트를 자신만의 처리 단위인 토큰(Token)으로 쪼갭니다.
언어별 차이와 비용 영향:
영어는 띄어쓰기 기준 단어 단위와 토큰 단위가 대체로 일치하지만, 한국어는 조사와 어미가 붙는 교착어 특성상 하나의 단어가 2~3개 이상의 조각(형태소/음절 단위)으로 잘게 쪼개집니다.
핵심 영향: LLM은 '글자 수'가 아니라 '토큰 수'로 연산량과 API 비용을 청구하며, 모델의 기억 용량(컨텍스트 창)도 토큰 단위로 제한됩니다. 따라서 동일한 문장을 입력해도 한국어가 영어에 비해 더 많은 토큰을 소모하여 연산 및 비용 측면에서 불리할 수 있습니다.
💡 용어 사전: 토큰(Token)
모델이 텍스트를 읽고 쓸 때 다루는 기본 데이터 조각(최소 연산 단위)입니다. 단어 전체, 단어의 일부(서브워드), 혹은 단일 문자나 구두점 단위가 될 수 있습니다.
2. 의미의 수치화: 임베딩과 벡터 공간 (Embedding & Vector Space)
원리: 컴퓨터는 문자 자체를 직접 이해하지 못하므로, 단어를 다차원 좌표계(숫자 묶음, 벡터) 상의 특정 위치로 변환합니다.
GPS 비유: 경도와 위도로 실제 세상의 위치를 찍듯, 임베딩은 '의미 공간'에서 단어의 개념적 위치를 좌표로 찍습니다.
의미가 가까운 단어끼리는 좌표 공간 상의 각도/거리(코사인 유사도 등)가 가깝게 형성됩니다.
초보자를 위한 보완 (small vs large 모델 차이):
강의 노트의 수치(예: 사과 vs 배)처럼 모델에 따라 유사도 값이 달라지는 이유는, small(1536차원)과 large(3072차원) 모델이 사용하는 좌표축의 개수와 공간의 해상도가 다르기 때문입니다.
모델 규모가 클수록 단순한 상위 범주(과일)뿐 아니라 단어의 세부적인 뉘앙스, 사용 맥락, 동음이의어(먹는 '사과' vs 용서를 구하는 '사과')의 차이까지 더 정밀하게 분리해 냅니다.
💡 용어 사전: 임베딩(Embedding) & 문맥 의존적 표현(Contextual Representation)
임베딩(Embedding): 단어나 문장을 일정한 길이의 실수 벡터(숫자 배열)로 변환하는 기술입니다.
문맥 의존적 표현: 정적인 사전식 단어가 아니라, 앞뒤 문맥에 따라 단어의 의미가 달라짐을 반영하여 매번 동적으로 계산되는 임베딩 표현입니다.
Q, K, V의 직관적 이해 (도서관 비유):
Q (Query): 검색창에 입력하는 검색어 (현재 단어가 찾고자 하는 문맥 정보).
K (Key): 책의 제목/색인 (각 단어가 보유하고 있는 고유 정보의 라벨).
V (Value): 책의 본문 내용 (Q와 K의 일치도가 높을 때 실제로 가져와 조합할 구체적 내용).
Query와 Key가 잘 맞을수록 해당 단어의 Value 가중치가 커집니다.
멀티 헤드 어텐션 (Multi-Head Attention):
한 문장을 볼 때 여러 명의 전문가(헤드)가 동시에 서로 다른 관점(문법적 수식 관계, 의미적 대조, 위치적 전후 관계 등)으로 분석한 뒤 이를 종합합니다.
💡 용어 사전: 어텐션(Attention)
입력 시퀀스 내에서 '어느 부분에 집중(Attention)해야 하는가'를 수치화하여 동적으로 가중합을 구하는 계산 방식입니다.
Top-p (누적 확률 컷오프, Nucleus):
상위 단어부터 확률을 더해가며 누적 합이 (예: 0.9)가 되는 지점에서 잘라내고, 긴 꼬리(엉뚱하거나 어색한 단어)를 선택지에서 완전히 배제합니다.
요약: Temperature는 분포의 모양(성향)을 바꾸고, Top-p는 비정상적인 후보를 차단(필터링)합니다.
💡 용어 사전: 소프트맥스(Softmax) & 로짓(Logits)
로짓(Logits): 모델 레이어를 통과해 나온 각 단어별 가공되지 않은 점수(실수값)입니다.
소프트맥스(Softmax): 이 실수 점수들을 모두 더하면 1이 되는 확률(0~1)로 변환해 주는 함수입니다.
5. LLM의 기술적 한계와 실무 과제
할루시네이션 (Hallucination, 환각 현상):
모델은 사실관계를 검증하여 말하는 것이 아니라, "통계적으로 가장 자연스러운 다음 토큰"을 이어 붙일 뿐입니다. 존재하지 않는 논문이나 사실에 대해 모른다고 답하기보다 그럴듯한 거짓말을 만들어내는 근본적인 이유입니다.
지식의 단절 (Knowledge Cutoff):
모델의 지식은 사전 학습 데이터가 수집된 시점에 멈춰 있으므로 최신 환율, 날씨 등 실시간 정보를 알지 못합니다.
해결책: 외부 검색이나 계산기 API를 연동하는 도구 사용(Tool Use / Function Calling) 기술이 필요합니다.
컨텍스트 윈도우(Context Window) 한계:
모델이 한 번에 기억하고 처리할 수 있는 최대 토큰 용량이 정해져 있습니다. 책장이 꽉 차면 더 이상 책을 꽂을 수 없듯이, 대화가 길어지면 앞선 내용이 잘려 나가 기억을 잃어버립니다.
💡 용어 사전: 컨텍스트 윈도우 (Context Window)
모델이 한 번의 추론 과정에서 동시에 입력받고 참조할 수 있는 최대 토큰 한도(입력 + 출력 토큰 합계)입니다.
멀티턴(Multi-turn) 대화의 본질:
LLM은 자체 상태를 유지하지 않는 무상태(Stateless) 구조입니다. 즉, 모델 스스로 이전 대화를 기억하고 있는 것이 아닙니다.
대화의 연속성을 유지하려면 사용자가 매번 질문할 때마다 [이전 대화 내역 전체 + 새로운 질문]을 묶어서 API로 다시 전송해야 합니다.
따라서 대화가 길어질수록 전송 토큰 수가 급증하여 컨텍스트 윈도우 한계에 빠르게 도달하므로, 과거 대화를 적절히 요약하거나 압축해 주는 시스템 설계가 실무의 핵심 과제가 됩니다.