Karpathy makemore bigram 실습: 문자 단위 언어모델을 손으로 이해하기 | DAKER 커뮤니티

Karpathy makemore bigram 실습: 문자 단위 언어모델을 손으로 이해하기

makemore bigram 실습은 한 글자가 다음 글자를 예측하는 가장 작은 언어모델 훈련입니다. Karpathy의 Zero to Hero 2강을 볼 때 핵심은 Transformer를 바로 이해하려 하기보다, 입력 텍스트가 확률표와 loss로 바뀌는 첫 루프를 손으로 따라가는 것입니다.

DAKER 학습 Karpathy makemore bigram 대표 이미지

*이미지 설명: NotebookLM 카드형 이미지. names.txt 입력, bigram 빈도표, 확률 샘플링, negative log likelihood 평가로 이어지는 문자 단위 언어모델 실습을 정리했다.*

오늘 배울 것은 무엇인가요?

한 줄 요약: 이름 목록 같은 작은 텍스트에서 "앞 글자 다음에 어떤 글자가 올까"를 세고, 그 확률로 새 문자열을 샘플링합니다.

Karpathy의 makemore는 한 줄에 하나의 학습 항목이 있는 텍스트 파일을 입력으로 받아 비슷한 항목을 더 만들어 보는 교육용 언어모델입니다. 2강의 출발점은 bigram입니다. bigram은 현재 문자 하나로 다음 문자 하나를 예측하는 단순한 모델이지만, training, sampling, loss 평가라는 언어모델의 큰 골격을 모두 담고 있습니다.

질문

bigram에서 보는 답

나중에 확장되는 곳

입력은 무엇인가요?

한 줄짜리 문자열 목록

대규모 텍스트 corpus

모델은 무엇을 하나요?

다음 문자 확률 예측

다음 token 확률 예측

평가는 어떻게 하나요?

negative log likelihood

cross entropy loss

핵심 개념은 어떻게 잡아야 하나요?

첫 번째 개념은 문자 vocabulary입니다. 입력 데이터에 등장하는 글자를 모으고, 시작과 끝을 표시하는 특별 토큰을 둡니다. 그래야 "단어가 어떻게 시작되는가"와 "언제 끝나는가"도 모델이 배울 수 있습니다.

두 번째 개념은 count table입니다. 예를 들어 e 다음에 m이 몇 번 왔는지, a 다음에 끝 토큰이 몇 번 왔는지 세면 bigram 빈도표가 됩니다. 이 표를 행별로 정규화하면 다음 문자 확률표가 됩니다.

세 번째 개념은 loss입니다. 모델이 실제 다음 문자에 높은 확률을 주면 loss가 낮고, 낮은 확률을 주면 loss가 높습니다. Karpathy 강의는 이 흐름을 통해 language modeling framework, sampling, negative log likelihood를 함께 보여 줍니다.

DAKER 학습 Karpathy makemore bigram 워크플로

*이미지 설명: NotebookLM 슬라이드형 워크플로. 입력 텍스트 준비, vocabulary와 시작/끝 토큰, bigram count table, 확률 정규화와 샘플링, loss 계산, MLP와 GPT 연결 단계를 보여 준다.*

따라 해볼 실습은 어떻게 진행하나요?

아래 25분 실습으로 시작하세요. 처음부터 전체 names.txt를 쓰지 말고, 직접 만든 작은 목록으로 손계산을 먼저 해보는 편이 좋습니다.

  1. 민준, 서연, 지우, 하준, 도윤처럼 짧은 이름 10~20개를 준비합니다.

  2. 시작 토큰 .과 끝 토큰 .을 붙여 문자 쌍을 만듭니다.

  3. (현재 글자, 다음 글자)가 몇 번 나왔는지 표로 셉니다.

  4. 각 행을 합으로 나누어 다음 문자 확률로 바꿉니다.

  5. 시작 토큰에서 출발해 확률에 따라 다음 글자를 뽑고, 끝 토큰이 나오면 멈춥니다.

  6. 실제 다음 글자에 부여한 확률로 negative log likelihood를 계산해 봅니다.

AI에게 검산을 맡길 때는 이렇게 요청하세요.

아래 이름 목록으로 문자 단위 bigram count table을 손계산해 주세요.
시작/끝 토큰은 "."으로 두고, 각 행을 확률로 정규화한 뒤
새 이름을 3개 샘플링하는 과정을 설명해 주세요.
마지막에는 negative log likelihood가 왜 필요한지도 짧게 설명해 주세요.

자주 막히는 지점은 무엇인가요?

가장 흔한 실수는 생성된 샘플이 그럴듯해 보이면 모델을 이해했다고 착각하는 것입니다. bigram은 문맥을 한 글자만 보기 때문에 긴 구조를 잘 기억하지 못합니다. 그래서 샘플과 loss를 함께 봐야 합니다.

실수 방지 체크리스트입니다.

다음 학습 연결은 어디로 이어지나요?

makemore bigram은 카파시식 AI 학습법: 작은 모델을 직접 만져라의 구체적인 실습판입니다. "작은 모델을 만진다"는 말이 막연했다면, bigram 표 하나를 직접 세는 것부터 시작하면 됩니다.

이후에는 nanochat 실습: $100 ChatGPT로 LLM 전체 파이프라인 익히기와 연결됩니다. bigram은 문자 하나의 다음 확률을 보지만, nanochat은 토크나이저, pretraining, finetuning, evaluation, inference, chat UI까지 LLM 학습 단계를 한 번에 묶습니다. 모델을 목적함수 관점으로 바라보는 태도는 Software 2.0: 코드를 쓰는 대신 목적함수를 설계하는 시대와도 이어집니다.

공식 출처:

한계도 있습니다. 이 글은 2026년 6월 24일 기준 공개된 Karpathy 강의 페이지와 GitHub README를 바탕으로 한 학습 루틴입니다. bigram은 교육용 출발점이므로 실제 LLM의 긴 문맥, 토큰화 이슈, 대규모 학습 안정성까지 설명하지는 않습니다.

FAQ

makemore bigram은 너무 단순하지 않나요?

단순해서 좋습니다. 언어모델의 입력, 확률, 샘플링, loss를 가장 작은 형태로 보기 때문에 나중에 Transformer를 볼 때 구조가 덜 낯설어집니다.

한국어 이름으로도 실습할 수 있나요?

가능합니다. 다만 문자 단위로 쪼갤 때 자모가 아니라 완성형 글자 단위로 시작하면 더 쉽습니다. 목표는 좋은 이름 생성기가 아니라 언어모델 루프 이해입니다.

negative log likelihood는 왜 필요한가요?

생성 샘플만 보면 운 좋게 좋아 보일 수 있습니다. negative log likelihood는 실제 다음 문자에 모델이 얼마나 높은 확률을 줬는지 평균적으로 보는 기준입니다.

바로 GPT 강의로 넘어가도 되나요?

가능하지만 makemore를 거치면 GPT의 다음 토큰 예측, loss, sampling을 더 쉽게 이해합니다. Karpathy도 GPT 강의 전에 makemore 흐름에 익숙해지는 것을 권합니다.

다음에는 무엇을 하면 좋나요?

오늘 만든 bigram 표에서 샘플 10개와 loss를 같이 기록해 보세요. 그 다음 MLP makemore로 넘어가면 "왜 더 깊은 모델이 필요한가"를 더 선명하게 볼 수 있습니다.

Redirecting to Karpathy makemore bigram 실습: 문자 단위 언어모델을 손으로 이해하기 | DAKER 커뮤니티...