

확률부터 LLM까지, 원리부터 제대로 배우는 자기주도 학습 플랫폼
원하는 개념·랩·가이드를 검색해보세요
Ctrl K정답을 몰라도 괜찮습니다 — 먼저 예측을 정해야 시뮬레이션 결과가 기억에 남습니다. 예측을 고른 뒤 아래 시뮬레이션으로 직접 확인하고, 그다음 결과를 열어 보세요.
문장을 넣으면 토큰화 → 임베딩 → 어텐션 → FFN → 로짓 → 확률의 9단계가 모든 중간 숫자와 함께 다시 계산됩니다.
문장을 어휘집에 있는 조각으로 나눕니다. 어휘집은 사람이 고른 단어 목록이 아니라, 말뭉치에서 BPE로 학습해 만든 것입니다. 자주 쓰인 말은 통째로 한 토큰이 되고 드문 말은 여러 조각으로 쪼개집니다.
미리 정해 둔 단어 목록이 아닙니다. 아래 동화 한 편을 읽고 BPE(Byte Pair Encoding)로 학습한 결과입니다. 실제 LLM이 어휘집을 만드는 절차와 같습니다.
말뭉치를 읽는다
흥부와 놀부 · 482자 · 186단어(고유 116개)옛날 어느 마을에 흥부와 놀부 형제가 살았다. 형 놀부는 욕심이 많았고 동생 흥부는 마음이 착했다. 부모가 남긴 재산을 놀부가 모두 차지하자 흥부는 집을 떠났다. 흥부는 작은 집을 짓고 가난하게 살았지만 늘 웃음을 잃지 않았다. 어느 봄날 흥부는 다리가 부러진 제비 한 마리를 보았다. 흥부는 제비의 다리를 정성껏 묶어 주고 날마다 돌보았다. 제비는 다시 날게 되어 강남으로 떠났다. 이듬해 봄 제비가 돌아와 흥부에게 박씨 하나를 물어다 주었다. 흥부는 박씨를 마당에 심고 정성껏 길렀다. 가을이 되자 지붕 위에 커다란 박이 주렁주렁 열렸다. 흥부가 톱으로 박을 켜자 쌀과 금은보화가 쏟아져 나왔다. 흥부는 하루아침에 큰 부자가 되었다. 소문을 들은 놀부는 흥부를 찾아가 자초지종을 물었다. 놀부는 제비를 잡아 일부러 다리를 부러뜨리고 다시 묶어 주었다. 이듬해 제비는 놀부에게도 박씨 하나를 물어다 주었다. 놀부는 박씨를 마당에 심고 날마다 커다란 박을 기다렸다. 가을이 되자 놀부의 지붕 위에도 박이 주렁주렁 열렸다. 놀부가 톱으로 박을 켜자 도깨비가 쏟아져 나왔다. 도깨비는 놀부의 재산을 모두 가져갔다. 가난해진 놀부는 그제야 자기 잘못을 뉘우쳤다. 흥부는 형을 용서하고 재산을 나누어 함께 살았다. 두 형제는 그 뒤로 오래도록 사이좋게 살았다.한국 전래동화 · 저작자 미상(공유 저작물)을 학습용으로 짧게 간추린 판본
가장 작은 단위에서 출발한다
말뭉치에 등장한 낱글자 134개가 최초의 어휘집입니다. 이 상태에서는 "흥부는"이 흥·부·는 세 조각입니다.
가장 자주 붙어 나온 쌍을 합친다
이웃한 두 조각의 등장 횟수를 세어 1위 쌍을 하나로 합치고 어휘집에 추가합니다. 이 과정을 60번 반복했습니다.
부+는→부는13회▁+흥→▁흥12회▁+놀→▁놀11회▁+박→▁박9회▁흥+부는→▁흥부는8회▁놀+부→▁놀부6회았+다→았다6회▁+제→▁제6회▁제+비→▁제비6회▁+주→▁주6회▁+마→▁마5회▁놀+부는→▁놀부는5회195개
<unk> 1 + 낱글자 134 + 병합 602.27조각
학습 전에는 단어당 2.59조각완성된 어휘집 195개
ID 0 – 194 · 이 랩이 실제로 쓰는 어휘집 전체입니다특수 토큰
1개ID 0어휘집에 없는 글자가 떨어지는 자리낱글자
134개ID 1–134말뭉치에 나온 글자를 모은 출발점병합으로 생긴 토큰
60개ID 135–194병합 순서대로 붙은 ID학습된 것은 어휘집뿐입니다. 이 랩의 어텐션·FFN 가중치는 여전히 결정론적 수식으로 만든 고정값이라, 예측된 다음 토큰이 이야기 내용과 맞아떨어지지는 않습니다. 실제 모델은 같은 말뭉치로 가중치까지 학습합니다.
문장을 넣으면 토큰화 → 임베딩 → 위치 결합 → [마스킹 멀티헤드 어텐션 → Add&Norm → FFN → Add&Norm]×2 → 로짓 → softmax 의 9단계가 모든 중간 행렬과 함께 다시 계산되는 실험입니다. 소형 결정론 디코더(d=4·헤드 2·블록 2·FFN 8·어휘 195, 파라미터 1,255개)라 모든 값을 표로 펼칠 수 있고, 단계 탭·블록/헤드 선택으로 원하는 위치의 실제 숫자를 봅니다. 어휘는 『흥부와 놀부』 482자 말뭉치에서 BPE 병합 60회로 만든 것이라 토큰화 표에서 어휘가 "만들어진" 과정까지 보입니다. 정직성 규약 — 계산은 실제 디코더 수식 그대로지만 가중치는 학습된 것이 아니라 고정 시드값(화면에 명시), 그래서 예측이 자연스러울 이유가 없으며 랩은 "계산의 흐름"만 보여줍니다.
바로잡는 오개념: "트랜스포머는 그림으로 이해했으니 됐다"는 생각 — 그림은 화살표를 보여주지만 화살표를 따라 실제로 무슨 숫자가 흐르는지는 숨긴다. 이 랩에서 표를 직접 보면 세 가지가 분명해진다: ① 어텐션 표의 각 행은 확률(합 1)이고 마스크는 −∞로 "없는 값"이 아니라 "0 확률"을 만든다 ② Add&Norm은 매 토큰 벡터를 평균 0·분산 1로 재조정하는 산술이지 마법이 아니다 ③ 로짓은 위치마다 나오지만 추론은 마지막 행만 쓴다 — 구조가 아니라 "무엇을 꺼내 쓰느냐"의 차이다.
— 정답 대신 힌트로 유도합니다. 지금 화면의 실험 상태를 알고 답해요.
예: “방금 결과가 이론과 다른데 왜죠?”, “이 값을 올렸는데 왜 반대로 변하죠?”