ChatGPT를 사용하다 보면, "정말로 문장을 이해하고 있는 것이 아닐까?"라는 생각이 들 때가 있습니다.
하지만 실제로 LLM (Large Language Model)은 인간처럼 일본어를 읽고 있는 것이 아닙니다.
우리가 보고 있는 "글자"는 내부에서 다음과 같은 흐름으로 처리됩니다.
문장
↓
Token화 (Tokenization)
...
이번에는 생성형 AI를 이해하는 데 있어 필수적인 "Token"과 "Embedding"에 대해 개발자 관점에서 정리해 보겠습니다.
Token이란 무엇인가?
예를 들어, 다음 문장을 살펴보겠습니다.
우리는 이것을 하나의 문장으로 인식합니다.
하지만 LLM은 문장을 그대로 다루고 있는 것이 아닙니다.
모델에 따라 다소 차이가 있지만, 내부에서는 다음과 같이 분할됩니다.
혹은 더 세밀하게 분할되는 경우도 있습니다.
여기서 중요한 점은, "Token = 단어"가 아니라는 것입니다.
예를 들어,
영어
일본어
일본어 (다른 예시)
ありがとうございます (감사합니다)
↓
ありがとう (감사)
...
이와 같이, LLM은 문장을 "Token의 집합"으로 취급하고 있습니다.
Token은 숫자가 된다
Token으로 분할된 후, 각각의 Token에는 ID가 할당됩니다.
예를 들어, 다음과 같은 이미지입니다.
안녕하세요 → 39172
오늘은 → 8241
날씨 → 512
...
그러면 입력은 다음과 같은 숫자의 나열이 됩니다.
여기서 중요한 것은, 이 시점에서 LLM은 이미 글자를 보고 있지 않다는 점입니다.
인간이 보기에는,
이지만, AI가 보기에는,
[39172, 13, 8241, 122, 512, 915, 205]
와 같은 숫자의 배열일 뿐입니다.
하지만 숫자만으로는 의미를 알 수 없다
여기서 한 가지 의문이 생깁니다.
고양이 → 100
강아지 → 101
자동차 → 102
이 숫자만 보면,
- 고양이와 강아지는 의미가 가까운가?
- 강아지와 자동차 사이에는 어떤 관계가 있는가?
와 같은 점을 알 수 없습니다.
예를 들어,
라고 해서,
고양이 + 1 = 강아지
라는 의미가 되지는 않습니다.
Token ID는 어디까지나 Token을 식별하기 위한 번호에 불과하기 때문입니다.
그래서 등장하는 것이 Embedding입니다.
Embedding이란 무엇인가?
Embedding이란 Token을 "의미를 가진 수치의 집합"으로 변환하는 메커니즘입니다.
예를 들어,
고양이
↓
[0.23, -0.18, 1.24, ...]
강아지
↓
[0.27, -0.15, 1.18, ...]
자동차
↓
[-1.85, 2.71, 0.42, ...]
실제로는 수백~수천 차원의 벡터 (Vector)로 변환됩니다.
그러면 의미가 가까운 단어끼리는 벡터 공간상에서도 가깝게 배치됩니다.
즉, AI는 "고양이와 강아지는 비슷하다", "고양이와 자동차는 별로 관계가 없다"와 같은 것을 글자가 아닌 수치 간의 위치 관계로 표현하고 있는 것입니다.
ChatGPT는 문장을 어떻게 보고 있는가?
예를 들어,
라는 문장이 입력된 경우, 내부에서는 다음과 같은 처리가 이루어집니다.
오늘은 비가 오니까 우산을 가져갑니다.
↓
Token화 (Tokenization)
...
여기서 중요한 것은,
ChatGPT는 문장을 "이해"한다기보다, "다음에 올 가능성이 높은 Token"을 예측하고 있다.
라는 점입니다.
그럼에도 불구하고, 인간이 보기에는 마치 생각하면서 대화하는 것처럼 느껴집니다.
이것이 LLM의 흥미로운 점입니다.
왜 Token을 아는 것이 중요한가?
Token의 구조를 알게 되면, 생성형 AI에 관한 다양한 의문들이 연결됩니다.
- 왜 긴 대화를 나누면 과거의 내용을 잊어버리는가?
- 왜 Token 수에 제한이 있는가?
- 왜 영어 쪽이 더 효율적인 경우가 있는가?
- 왜 프롬프트(Prompt)를 조금만 바꿔도 결과가 달라지는가?
이 모든 질문은 "문장은 Token으로 취급되고 있다"라는 전제 위에 성립합니다.
마치며
ChatGPT는 글자를 그대로 읽고 있는 것이 아닙니다.
생성형 AI (Generative AI)를 이해하는 첫걸음은,
"AI는 글자가 아니라 숫자를 보고 있다"
라는 사실을 아는 것일지도 모릅니다.
다음에는 "Transformer란 무엇인가? Attention의 구조 정리"를 주제로 정리해 보겠습니다.
Discussion