Replies: 6 comments 1 reply
토큰은 무엇이며 LLM은 왜 텍스트를 토큰 단위로 처리하는가?토큰(Token)이란 무엇이며, LLM은 왜 텍스트를 단어 단위가 아니라 토큰 단위로 쪼개서 처리하나요?토큰이란?토큰은 LLM이 텍스트를 읽고 계산할 때 사용하는 기본 처리 단위이다. 왜 단어 단위가 아니라 토큰 단위로 처리하는가?제한된 크기의 어휘 사전으로 모든 언어와 새로운 표현을 처리하면서, 입력 스퀸스 길이도 적절하게 유지하기 위해서이다. 밥 먹고 다시 수정할 거임 |
1. 토큰(Token)이란 무엇이며, LLM은 왜 텍스트를 단어 단위가 아니라 토큰 단위로 쪼개서 처리하나요?토큰(token)은 LLM이 텍스트를 읽고 생성할 때 사용하는 기본 처리 단위입니다. 반드시 단어나 글자 하나로 분리되는 것은 아니며, 공백이나 문장부호도 포함됩니다. 실제 분리 결과는 토크나이저(tokenizer)에 따라 달라집니다. 이처럼 LLM이 단어가 아닌 토큰을 사용했을 때의 장점(이유)을 다음 5가지로 설명할 수 있습니다.
2. 토큰의 크기를 정하는 기준은 무엇인가요? 그리고 대표적인 토큰화 방식들을 소개해주세요.토큰 크기에 영향을 주는 주요 요소는 다음과 같습니다.
대표적인 토큰화 방식)
3. 토큰 수가 많아지면 실제로 어떤 문제가 발생하며, 특히 한국어는 왜 이 문제에서 더 불리한가요?토큰 사용량 많아지면 발생하는 문제)
만약 영어 중심으로 만들어진 토크나이저를 사용하는 경우 한국어 가 같은 의미를 전달하는 데 더 많은 토큰을 쓰기에 불리하다고 볼 수 있다.
BERT? 오소 제출하고 올게요 |
토큰(Token)이란 무엇이며, LLM은 왜 텍스트를 단어 단위가 아니라 토큰 단위로 쪼개서 처리하나요?
|
1. 토큰(Token)이란 무엇이며, LLM은 왜 텍스트를 단어 단위가 아니라 토큰 단위로 쪼개서 처리하나요?토큰은 llm 이 텍스트를 다룰 때 쓰는 최소 단위이다. 사람 기준으로는 단어가 최소 단위일 것 같은데, 실제로는 단어보다 작을 수도 있고 ( 모델은 결국 텍스트를 숫자로 바꿔서 처리해야 하는데, 그러려면 "어떤 문자열 조각에 어떤 id 를 줄 것인가" 를 미리 정해둔 사전이 있어야 한다. 이 사전을 vocabulary 라고 하고, 토큰은 그 사전의 항목이다. 그럼 왜 단어 단위로 안 쪼개는가. 단어 단위로 하면 문제가 두 가지 생긴다.
반대로 글자 단위로 쪼개면 사전은 작아지는데, 시퀀스가 너무 길어지고 토큰 하나가 담는 의미가 거의 없어서 학습이 잘 안 된다고 함. 그래서 그 중간인 subword 단위를 쓴다. 자주 나오는 건 한 토큰으로, 드문 건 조각으로 쪼개는 방식이다. 사전 크기도 적당하고 OOV 도 안 생긴다. 최악의 경우 글자 단위까지 내려가면 되니까. 2. 토큰의 크기를 정하는 기준은 무엇인가요? 그리고 대표적인 토큰화 방식들을 소개해주세요.토큰 하나의 크기를 직접 정하는 게 아니라, vocab size 를 먼저 정해두고 거기에 맞춰 알고리즘이 알아서 자른다는 게 핵심인 것 같다. 보통 3만 ~ 15만 정도를 쓴다고 함. vocab 을 키우면 → 문장당 토큰 수가 줄어서 컨텍스트를 아끼고 추론이 빨라지는데, 출력층이 커지고 희귀 토큰은 학습이 덜 된다. 이 트레이드오프 사이에서 적당한 지점을 잡는 것이고, 실제 자르는 기준은 학습 코퍼스에서의 등장 빈도이다. 자주 붙어 다니는 조각일수록 하나로 합쳐진다. 대표적인 방식들:
3. 토큰 수가 많아지면 실제로 어떤 문제가 발생하며, 특히 한국어는 왜 이 문제에서 더 불리한가요?토큰이 많아지면 생기는 문제
한국어가 불리한 이유
그래서 같은 의미의 문장이라도 한국어가 영어보다 토큰을 2~3배 먹는다. 같은 내용을 물어봐도 한국어로 쓰면 돈을 더 내는 셈. 한국어 특화 모델들이 자체 토크나이저를 따로 학습시키는 이유가 이거인 듯하다. 토큰화가 모델 성능 자체에 얼마나 영향을 주는지(숫자 계산 못하는 게 토크나이저 탓이라는 얘기 등)는 더 찾아봐야 할 것 같다. |
기본 질문1. 토큰(Token)이란 무엇이며, LLM은 왜 텍스트를 단어 단위가 아니라 토큰 단위로 쪼개서 처리하나요?토큰이란 LLM에서 자연어의 corpus에서 인코딩 후 얻은 바이트 시퀀스에서 반복되는 뭉치를 묶어 토큰 시퀀스로 만들었을 때의 하나의 뭉치를 토큰이라고 합니다. LLM이 텍스트를 토큰 단위로 쪼개서 처리하는 이유는 자연어를 컴퓨터가 이해할 수 있는 언어로 만들어 단어장을 만드는데 만약 단어 단위라고 한다면 단어장의 크기가 비효율적으로 비대해지기 때문에 자주 사용되고 반복되는 뭉치를 하나로 묶어 압축합니다. 또한 LLM은 처리할 수 있는 길이가 즉, 콘텍스트 윈도우가 한정적인데 단어 단위라면 처리 효율이 떨어지기 때문입니다. 2. 토큰의 크기를 정하는 기준은 무엇인가요? 그리고 대표적인 토큰화 방식들을 소개해주세요.토큰의 크기를 정하는 기준은 메모리 및 연산의 효율성, 압축률, 다국어 커버리지, 회귀 단어 및 OOV(Out of Vocabulary) 방지가 있습니다. 사전의 크기가 커지면 모델의 입출력 과정에서 파라미터가 비례해서 증가하는 문제가 있고, 반대로 작다면 하나의 문장이 너무 많은 토큰으로 쪼개져 문맥 길이 연산의 부담이 생깁니다. 그래서 연산의 효율성을 고려하고 또 최대한 자주 사용하는 조합으로 쪼개야 처리 속도가 올라가기에 압축률을 고려하기도 합니다. 대표적인 토큰화 방식은 가장 자주 등장하는 연속된 문자 쌍을 반복적으로 병합하는 BPE, 단순 반복 조합 병합이 아닌 병합했을 때, 전체 훈련 데이터의 우도를 가장 높이는 조합을 선택하는 WordPiece, 거대한 토큰 후보 집합에서 시작해서 손실을 가장 적게 일으키는 토큰부터 차례로 제거해 나가는 방식의 Unigram Language Model이 있습니다. 3. 토큰 수가 많아지면 실제로 어떤 문제가 발생하며, 특히 한국어는 왜 이 문제에서 더 불리한가요?토큰 수가 많아지면 API 사용 비용 상승, 응답 속도 지연, 컨텍스트 윈도우 한계 도달, 모델의 주의력 및 추론 정확도 하락의 문제가 발생합니다. 한국어는 이 문제에 더 불리한 이유는 한국어의 언어적 특성, 학습 데이터 비율 불균형, 바이트 표현의 비효율성을 들 수 있습니다. 대부분의 LLM 토큰 사전은 전체 학습 데이터가 8~90%가 영어입니다. 그에 반해 한국어는 학습 데이터가 부족해서 글자나 자음 모음 단위로 얇게 쪼개져 토큰을 이루고 있습니다. 또한 한국어는 어근 뒤 수많은 조사, 어미, 접두사/접미사가 묻어 형태가 다양하게 변하기 때문에 이런 변화를 모두 사전에 담을 수 없기에 결국 음절과 어절의 중간 단위로 쪼개서 토큰 효율이 불리합니다. 또한 영어는 하나의 알파벳당 1바이트를 가지지만 한국어는 한 음절에 3바이트를 가져서 같은 단어, 문장이라도 많은 바이트 수를 가지기 때문에 토큰 효율이 좋지 않습니다. |
1. 토큰(Token)이란 무엇이며, LLM은 왜 텍스트를 단어 단위가 아니라 토큰 단위로 쪼개서 처리하나요?토큰화는 입력텍스트를 언어 모델이 실제로 다루는 최소단위를 의미합니다. 2. 토큰의 크기를 정하는 기준은 무엇인가요? 그리고 대표적인 토큰화 방식들을 소개해주세요.토큰을 쪼개는 기준은 BPE(Byte Pair Encoding)이라는 방법으로 자주 나오는 단어들을 재활용하는 압축법입니다. 바이트 단위에서 사용되며 자주 함께 나타나는 문자 덩어리들을 하나의 새로운 토큰으로 합쳐나가는 방법입니다. 3. 토큰 수가 많아지면 실제로 어떤 문제가 발생하며, 특히 한국어는 왜 이 문제에서 더 불리한가요?토큰 수가 많아지면 AI도 이전에 주고받은 내용을 기억하고 대화를 이어나가는데 AI가 한번에 기억하고 처리할 수 있는 정보의 양의 한계가 있습니다
컨텍스트 윈도를 넘어가면 AI가 대화를 기억하지 못하고 잘라버리거나, 핵심 정보가 짤리거나, 답변이 모순되고 맥락이 유지되지 않을 수 있습니다 |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
📆 일자: 26년 8월 5일(수)
🤔 Questions
토큰(Token)이란 무엇이며, LLM은 왜 텍스트를 단어 단위가 아니라 토큰 단위로 쪼개서 처리하나요?
토큰의 크기를 정하는 기준은 무엇인가요? 그리고 대표적인 토큰화 방식들을 소개해주세요.
토큰 수가 많아지면 실제로 어떤 문제가 발생하며, 특히 한국어는 왜 이 문제에서 더 불리한가요?
All reactions