사람은 문장을 볼 때 글자와 단어와 의미를 거의 동시에 느낍니다. “안녕하세요”라는 말을 보면 인사라는 느낌이 먼저 오고, “세포가 신호를 받았다”라는 문장을 읽으면 세포와 신호와 반응이라는 장면이 떠오릅니다. 하지만 컴퓨터는 처음부터 그런 방식으로 문장을 보지 않습니다. 컴퓨터 안에서 모든 것은 결국 숫자와 기호의 배열로 바뀌어야 합니다. LLM도 마찬가지입니다. 모델은 화면에 보이는 한글 문장이나 영어 문장을 그대로 보는 것이 아니라, 먼저 그 문장을 토큰이라는 조각들의 줄로 바꿔서 봅니다. 카파시는 텍스트가 신경망으로 들어가기 전에 먼저 “1차원의 기호열”이 되어야 한다고 설명합니다 (링크). 처음에는 긴 문장을 낱말 카드와 글자 조각 카드로 잘라 책상 위에 한 줄로 놓는 장면을 떠올리면 됩니다. 모델은 그 카드들을 차례로 보며 다음에 올 카드를 예측합니다.
생명과학 학생이라면 DNA 염기서열을 A, T, C, G의 문자열로 표현하는 일을 떠올릴 수도 있습니다. 그러나 이 비유는 조심해서 써야 합니다. DNA 염기는 정해진 네 종류의 생물학적 분자이고, 토큰은 모델이 텍스트를 계산하기 위해 만든 기호 단위입니다. 토큰의 종류는 훨씬 많고, 길이도 들쭉날쭉하며, 세 글자씩 끊는 코돈 같은 규칙을 따르지도 않습니다. 그러니 “토큰은 DNA 염기와 같다”고 외우면 오히려 위험합니다. 두 경우가 닮은 지점은 더 좁습니다. 복잡한 대상을 컴퓨터가 다룰 수 있는 긴 줄로 바꾸어야 한다는 점입니다. 처음 읽을 때는 여기까지만 붙잡고 넘어가도 됩니다. 모델은 우리가 문장을 읽듯이 의미를 바로 붙잡지 않고, 먼저 문장을 계산 가능한 조각들로 바꿉니다. 이 조각이 어떻게 나뉘느냐에 따라 모델이 잘하는 일과 실수하는 일이 달라집니다.
가장 단순하게 생각하면 글자를 하나씩 기호로 삼을 수도 있습니다. 더 아래로 내려가면 컴퓨터의 byte나 bit를 기호로 삼을 수도 있습니다. 그러나 그렇게 하면 토큰열이 너무 길어집니다. 신경망에서 문맥 길이는 귀한 자원입니다. 같은 의미를 너무 긴 기호열로 표현하면, 모델은 제한된 문맥 안에 더 적은 정보를 담게 됩니다. 그래서 현대 LLM은 보통 글자보다 크고 단어보다 작은 조각들을 사용합니다. 자주 함께 등장하는 문자 조합이나 단어 조각을 하나의 토큰으로 묶습니다. “hello world”가 두 개의 토큰이 될 수도 있고, 공백이 붙은 단어 조각이 하나의 토큰이 될 수도 있습니다. 예를 들어 영어에서 ing나 tion처럼 자주 반복되는 조각은 하나의 덩어리로 다루는 편이 효율적일 수 있습니다. 카파시는 byte-pair encoding 같은 알고리즘을 통해 자주 붙어 다니는 기호 쌍을 새 토큰으로 만들어 토큰열을 줄이는 과정을 보여줍니다 (링크). 알고리즘 이름을 지금 외울 필요는 없습니다. 중요한 것은 모델이 글을 사람이 보는 단어 그대로 읽지 않고, 자주 쓰이는 조각을 학습된 규칙에 따라 묶고 자른다는 점입니다.
토큰화(tokenization): 문장을 모델이 다룰 수 있는 작은 조각들로 나누는 과정입니다.
토큰화 도구(tokenizer): 문장을 어떤 토큰들로 나눌지 정하는 도구입니다.
byte / bit: 컴퓨터가 문자를 숫자로 다룰 때 쓰는 아주 작은 정보 단위입니다.
토큰열: 토큰들이 앞에서 뒤로 이어진 줄입니다.
토큰은 사람이 생각하는 단어와 정확히 일치하지 않습니다. 영어에서는 공백 때문에 단어 경계가 비교적 잘 보이지만, 그래도 토큰은 단어와 다르게 잘릴 수 있습니다. 한글이나 유전자 이름, 특수기호가 섞인 문장에서는 더 복잡합니다. 모델은 “BRCA1”을 사람이 보는 것처럼 하나의 유전자 이름으로만 보는 것이 아니라, 토큰화 도구가 정한 몇 개의 조각으로 볼 수 있습니다. 어떤 희귀한 유전자명은 여러 조각으로 갈라질 수 있고, 하이픈이나 숫자나 그리스 문자가 섞인 단백질 이름도 예상과 다르게 나뉠 수 있습니다. 그래서 LLM이 철자 세기, 특정 글자 찾기, 문자열 조작에 약한 경우가 생깁니다. 사람은 글자를 눈으로 보지만, 모델은 토큰을 봅니다. 우리가 “strawberry에 r이 몇 개 있나” 같은 질문을 쉽게 느끼는 이유는 글자를 직접 볼 수 있기 때문입니다. 모델에게는 그 단어가 몇 개의 토큰으로 보일 수 있고, 그 토큰 안의 글자 구조를 정확히 다루는 일은 생각보다 어려울 수 있습니다.
이 점은 의생명과학 데이터에서도 곧장 문제가 됩니다. 유전자 symbol, 변이 표기, 단백질 isoform, chemical ID는 문자 하나가 중요합니다. TP53과 TP63은 다르고, BRCA1과 BRCA2는 다르며, 변이 표기에서 숫자 하나가 바뀌면 전혀 다른 위치가 됩니다. LLM이 이런 문자열을 설명하는 데 도움을 줄 수는 있지만, 정확한 표기와 계산은 반드시 원문이나 데이터베이스나 코드로 확인해야 합니다. 모델에게 “이 유전자 목록에서 중복을 제거해줘”라고만 맡기면, 눈에 보이는 문자열을 사람이 하듯이 다루리라고 기대하기 쉽습니다. 그러나 안전한 방법은 다릅니다. 목록을 파일로 주고, 코드로 중복을 확인하게 하고, 실행 결과를 보게 해야 합니다. 토큰화의 한계를 이해하면 이런 사용 습관이 자연스럽게 생깁니다. 모델이 언어를 잘 다룬다고 해서 모든 문자열 작업을 정확히 한다는 뜻은 아니기 때문입니다.
토큰화가 끝나면 모델은 이제 다음 토큰을 예측하는 문제를 풀기 시작합니다. 어떤 문맥이 주어졌을 때, 가능한 모든 토큰에 대해 “다음에 올 확률”을 계산합니다. vocabulary가 10만 개라면 모델은 10만 개 후보 각각에 대한 점수를 내놓습니다. 그중 확률이 높은 토큰이 더 자주 선택되지만, 항상 가장 높은 것만 선택되는 것은 아닙니다. 샘플링 방식에 따라 조금 다른 토큰이 선택될 수 있고, 그 작은 차이가 뒤의 문장을 완전히 다른 방향으로 보낼 수 있습니다. 그래서 LLM은 deterministic한 계산기와 다르게 느껴집니다. 같은 질문에 비슷하지만 조금 다른 답을 주는 이유가 여기에 있습니다. 모델이 사람처럼 그때그때 기분이 바뀌는 것이 아니라, 확률분포에서 토큰을 뽑아 이어가는 생성 방식이 그런 변화를 만듭니다.
vocabulary: 모델이 고를 수 있는 전체 토큰 목록입니다.
샘플링: 확률이 매겨진 후보들 중 실제 다음 토큰 하나를 뽑는 과정입니다.
deterministic: 같은 입력이면 언제나 같은 결과가 나오는 성질입니다.
학생이 이 과정을 알아야 하는 이유는 수식 때문이 아닙니다. 토큰과 확률을 이해하면 LLM의 장점과 약점을 동시에 볼 수 있습니다. 모델은 긴 문맥 속에서 자연스러운 다음 문장을 이어가는 데 뛰어납니다. 논문 초록의 구조, 생물학 설명의 문체, 코드의 일반적인 패턴, 보고서 문장의 흐름을 잘 배웠기 때문입니다. 하지만 모델은 언제나 확률적으로 그럴듯한 다음 조각을 만들고 있습니다. 그럴듯함은 사실성과 다릅니다. 특히 의생명과학에서는 그럴듯한 설명이 가장 위험할 수 있습니다. 문장이 자연스럽게 이어진다는 사실과, 그 문장이 실제 유전자 기능이나 실험 결과를 정확히 반영한다는 사실은 따로 확인해야 합니다. 토큰화와 다음 토큰 예측은 LLM을 신비한 지능에서 내려오게 합니다. 그리고 바로 그 덕분에 우리는 이 도구를 더 차분하고 더 실용적으로 사용할 수 있습니다.
토큰이 모델 안으로 들어가면 곧바로 의미가 되는 것은 아닙니다. 먼저 각 토큰은 여러 숫자의 묶음으로 바뀝니다. 이것을 embedding이라고 부릅니다. 벡터라는 말이 어렵게 느껴지면, 당장은 “토큰마다 붙는 긴 점수표”라고 생각해도 됩니다. 우리가 책을 분류할 때 소설인지 시인지 한 가지 기준만 보지 않고, 문장 길이, 분위기, 주제, 독자층, 시대 배경 같은 여러 기준을 함께 보듯이, 모델도 토큰을 여러 숫자로 표현합니다. 이 숫자들은 사람이 미리 “생물학성 8점”, “동사성 2점”처럼 이름을 붙여 준 점수가 아닙니다. 다음 토큰을 더 잘 맞히도록 훈련되는 동안 모델 안에서 만들어진 표현입니다. 출발점은 간단합니다. 생물학 문장에서 cell, gene, protein은 자주 함께 등장하므로 서로 관련된 방식으로 표현되는 편이 다음 단어를 예측하는 데 도움이 됩니다. 반대로 cell이 엑셀 문서에서 칸을 뜻할 때와 생물학 논문에서 세포를 뜻할 때는 주변 문맥이 달라집니다. 실제 모델의 숫자 묶음은 우리가 눈으로 그릴 수 없을 만큼 길지만, 굳이 수백 개의 축을 머릿속에 그리려 애쓸 필요는 없습니다. 중요한 것은 모델이 토큰을 낱말 뜻 하나로 저장하지 않고, 여러 기준의 숫자 표현으로 바꾼 뒤 문맥 속에서 계속 조정한다는 점입니다. 그래서 같은 cell도 생물학 논문에서는 세포를 뜻하고, 엑셀 문서에서는 칸을 뜻하고, 감옥 이야기에서는 독방을 뜻할 수 있습니다. LLM이 문맥을 읽는다는 말은 바로 이런 변화를 계산한다는 뜻입니다.
embedding: 토큰을 여러 숫자의 묶음으로 바꾼 표현입니다.
벡터: 여러 숫자를 한 줄로 모아 둔 값입니다. 여기서는 토큰마다 붙는 긴 점수표처럼 생각해도 됩니다.
문맥: 모델이 지금 답을 만들 때 참고하는 앞뒤 문장과 자료입니다.
Transformer에서 attention이 중요한 이유도 여기에 있습니다. 문장 안의 어떤 토큰이 다른 토큰을 얼마나 참고해야 하는지 계산할 수 있기 때문입니다. “그 유전자는 종양 억제 기능을 가진다”라는 문장에서 “그”가 무엇을 가리키는지 이해하려면 앞 문장의 유전자 이름을 봐야 합니다. 조금 더 생물학적으로 써보면 이렇습니다. “BRCA1은 DNA 복구에 관여한다. 이 유전자는 변이가 생기면 유방암 위험과 관련될 수 있다.” 두 번째 문장의 “이 유전자”를 처리할 때, 모델은 첫 문장의 BRCA1 쪽을 강하게 참고해야 합니다. 사람은 자연스럽게 연결하지만, 모델 안에서는 attention이 이런 연결을 계산합니다. 논문 초록에서는 첫 문장에 질병 이름이 나오고, 뒤 문장에서는 “this disorder”라고만 말할 수 있습니다. 사람은 자연스럽게 연결하지만, 모델도 이런 연결을 수많은 예시 속에서 배웁니다. 카파시는 Transformer의 내부를 토큰들이 여러 층을 지나며 서로 정보를 주고받는 계산으로 설명합니다 (링크). 여기서 attention은 마치 사람이 중요한 단어에 밑줄을 긋는 것처럼 보일 수 있지만, 실제로는 더 복잡한 수치 계산입니다. 그래도 비유는 도움이 됩니다. 한 문장의 의미는 단어 하나하나에 고립되어 있지 않고, 서로의 관계 안에서 만들어집니다. LLM은 이 관계를 매우 큰 규모의 통계적 패턴으로 학습합니다.
attention: 문장 안에서 어떤 토큰을 더 참고할지 계산하는 장치입니다.
Transformer: attention을 여러 층으로 쌓아 문맥 관계를 계산하는 LLM의 대표 구조입니다.
확률이라는 말도 조금 더 천천히 생각할 필요가 있습니다. 모델이 다음 토큰의 확률을 계산한다는 것은, 모델이 “참인 문장”과 “거짓인 문장”을 직접 구분한다는 뜻이 아닙니다. 훈련 목표는 주어진 문맥에서 실제 데이터에 등장했던 다음 토큰에 높은 확률을 주는 것입니다 (링크). 이 목표는 놀라울 만큼 강력합니다. 왜냐하면 다음 토큰을 잘 맞히려면 문법, 상식, 코드 구조, 논리 흐름, 사실의 일부를 배워야 하기 때문입니다. 하지만 목표 자체는 여전히 예측입니다. 의학적으로 올바른 설명을 보상하는 규칙이 처음부터 들어 있는 것이 아닙니다. 잘못된 설명이 인터넷에 많이 있고, 특정 표현이 자주 반복되면, 모델은 그 패턴도 배울 수 있습니다. 그래서 확률이 높다는 것은 “많이 본 흐름에 잘 맞는다”에 가깝고, “실험적으로 검증되었다”와는 다릅니다. 학생은 이 차이를 붙잡아야 합니다. LLM이 생물학을 말할 때도, 그 말은 먼저 언어적 확률의 산물이고, 과학적 사실성은 그다음 단계에서 확인해야 합니다.
한글을 쓰는 우리에게 토큰화는 또 다른 문제를 남깁니다. 많은 LLM과 토큰화 도구는 영어 중심의 데이터와 사용 환경에서 발전했습니다. 물론 오늘날 모델은 한국어도 매우 잘 다루지만, 한국어의 조사, 어미, 띄어쓰기, 한자어, 영어 약어가 섞인 문장은 영어와 다른 방식으로 잘릴 수 있습니다. 먼저 아주 쉬운 예를 떠올려봅시다. 사람에게 “안녕하세요”는 하나의 인사말처럼 보이지만, 모델 안에서는 안녕, 하세요처럼 나뉠 수도 있고, 더 어색한 작은 조각으로 갈라질 수도 있습니다. 공백을 하나 넣거나 빼도 토큰열이 달라질 수 있습니다. 여기에 전문 용어가 들어오면 더 복잡해집니다. “세포분화가 억제되었다”와 “세포 분화가 억제되었다”는 사람에게 거의 같은 뜻으로 읽히지만 토큰열은 달라질 수 있고, “TP53 변이가 관찰되었다” 같은 문장에서는 한글, 숫자, 영어 대문자가 함께 들어갑니다. 생물학 글에서는 유전자 약어, 단백질 이름, 생물학 경로 이름, 그리스 문자, 숫자, 괄호가 계속 섞입니다. 이런 표기가 토큰 단위에서 어떻게 쪼개지는지는 모델의 작은 성능 차이를 만들 수 있습니다. 그래서 학생이 LLM으로 한글 과학 글을 쓸 때는, 중요한 고유명사를 원문 그대로 유지하고, 표기법을 일관되게 쓰고, 모델이 바꾼 용어를 반드시 확인해야 합니다. 부드러운 번역이 항상 좋은 번역은 아닙니다. 특히 유전자 약어나 질병명처럼 표기가 지식의 일부인 경우에는, 자연스러운 문장보다 정확한 표기가 먼저입니다.
이 모든 과정을 지나면 우리는 LLM을 조금 더 편안하게 다룰 수 있습니다. 토큰은 모델이 보는 기본 단위이고, embedding은 그 토큰을 계산 가능한 형태로 바꾼 표현이며, attention과 여러 층의 계산은 문맥 속 관계를 반영하고, 마지막에는 다음 토큰의 확률분포가 나옵니다. 복잡하지만 붙잡을 줄기는 분명합니다. 모델은 글을 사람처럼 눈으로 읽는 것이 아니라, 토큰의 줄을 수학적으로 처리합니다. 그러므로 모델이 잘하는 일은 이 구조와 잘 맞는 일입니다. 긴 설명을 이어가고, 문체를 바꾸고, 낯선 개념을 비슷한 표현으로 풀고, 코드의 일반 패턴을 제안하는 일은 매우 잘합니다. 반대로 문자 하나하나의 정확한 조작, 최신 사실 조회, 검증되지 않은 생물학적 결론, 임상적 판단은 별도의 장치가 필요합니다. LLM을 잘 쓰는 학생은 이 구분을 외우는 것이 아니라, 몸에 익힙니다. 질문을 던지기 전에 “이 일은 언어 패턴의 문제인가, 정확한 계산의 문제인가, 최신 근거 확인의 문제인가”를 잠시 생각합니다. 그 짧은 멈춤이 AI 사용의 질을 크게 바꿉니다.
토큰과 확률을 이해하는 일은 글쓰기에도 도움이 됩니다. 모델이 문장을 만들 때는 이전 문맥에 어울리는 다음 조각을 이어가므로, 사용자가 제공한 문체와 구조를 매우 민감하게 따라갑니다. 딱딱한 bullet과 짧은 명령만 주면 답변도 그 형식을 닮기 쉽고, 긴 설명문과 구체적인 독자를 알려주면 더 부드러운 글이 나올 가능성이 커집니다. 이것은 모델이 인간 작가처럼 취향을 이해한다는 뜻은 아닙니다. 문맥 안에 들어간 패턴을 보고 다음 토큰을 고르는 과정이 그런 효과를 만드는 것입니다. 그래서 한글로 교재를 쓸 때도 입력 자료가 중요합니다. “쉽게 써줘”라고만 하면 흔한 AI식 문단이 나오기 쉽지만, “대학교 1학년 의생명과학 학생에게, 수학을 겁내지 않도록, 실험실 비유를 섞어 긴 설명문으로 써줘”라고 말하면 훨씬 나은 출발점이 생깁니다. 그래도 마지막 윤문은 사람이 해야 합니다. 모델은 그럴듯한 흐름을 만들 수 있지만, 어떤 문장이 우리 학생들에게 실제로 와닿을지는 수업을 알고 독자를 아는 사람이 더 잘 판단할 수 있습니다. 토큰의 원리를 아는 일은 결국 더 나은 질문과 더 나은 글쓰기의 기초가 됩니다.
이 원리는 번역에서도 드러납니다. 영어 강의를 한국어로 옮길 때, 단어를 하나씩 대응시키는 것만으로는 좋은 설명이 되지 않습니다. “매개변수”, “문맥”, “attention”, “loss” 같은 단어는 이미 한국어 과학 글 안에서 영어와 번역어가 섞여 쓰입니다. 어떤 말은 그대로 두는 편이 낫고, 어떤 말은 먼저 쉬운 설명을 붙여야 합니다. LLM은 이런 혼합 문체를 잘 흉내 낼 수 있지만, 때로는 너무 자연스럽게 보이도록 전문 용어의 날카로움을 무디게 만들기도 합니다. 예를 들어 “loss”를 단순히 “손실”이라고만 옮기면, 학생은 무엇을 잃는다는 뜻인지 헷갈릴 수 있습니다. 실제로는 모델의 예측이 정답 토큰과 얼마나 다른지를 나타내는 훈련 신호라고 풀어주어야 합니다. 좋은 과학 번역은 매끄럽기만 해서는 안 됩니다. 낯선 개념이 어디서 낯선지 보여주고, 필요한 만큼 천천히 풀어주어야 합니다. LLM을 글쓰기 도구로 쓸 때도 이 기준을 잊지 않아야 합니다.
매개변수: 모델 안에 저장되어 학습 중 조금씩 바뀌는 수많은 숫자입니다.
loss: 모델의 예측이 정답에서 얼마나 빗나갔는지 나타내는 훈련 신호입니다.
학생이 직접 해볼 수 있는 작은 연습도 있습니다. 짧은 한글 문장, 영어 문장, 유전자 이름이 섞인 문장을 토큰화 도구에 넣어보고 어떻게 잘리는지 관찰해보는 것입니다. 처음에는 별것 아닌 장난처럼 보이지만, 곧 모델이 우리가 보는 글자와 다른 단위로 세상을 본다는 사실이 실감납니다. 한 단어처럼 보이는 것이 여러 토큰으로 갈라지고, 공백 하나가 토큰 구성을 바꾸고, 숫자와 기호가 예상보다 낯선 방식으로 처리될 수 있습니다. 이 경험은 LLM을 더 현실적인 도구로 보게 해줍니다. 모델이 어떤 일을 잘하고 어떤 일에서 실수할지, 추상적인 설명보다 훨씬 빨리 이해됩니다. 특히 의생명과학에서는 표기 하나가 의미를 바꾸기 때문에 이런 차이를 아는 일이 중요합니다. 유전자명과 변이 표기를 모델에게 맡길 때는, 문장의 자연스러움보다 토큰 이전의 원문 표기를 먼저 지켜야 합니다. 토큰화는 작아 보이지만, 정확성의 출발점입니다.
이 연습은 어려운 프로그램을 설치하지 않아도 시작할 수 있습니다. 온라인 토큰화 도구에 짧은 문장을 넣고, 공백을 하나 바꾸거나 영어 약어를 붙여보면 됩니다. 학생은 곧 자신이 보는 단어와 모델이 보는 조각이 다르다는 사실을 눈으로 확인하게 됩니다. 이 작은 경험은 나중에 모델의 실수를 만났을 때 큰 도움이 됩니다. “왜 이렇게 쉬운 글자 세기를 틀리지?”라고 화내기보다, 모델이 글자를 사람처럼 직접 보지 않는다는 사실을 떠올릴 수 있기 때문입니다. 원리를 조금 아는 일은 모델을 용서하자는 뜻이 아니라, 모델의 실수를 더 정확히 다루자는 뜻입니다.