Karpathy makemore MLP 실습: train/dev/test로 과적합 잡는 법 | DAKER 커뮤니티

Karpathy makemore MLP 실습: train/dev/test로 과적합 잡는 법

makemore MLP란 여러 문자 문맥을 임베딩해 다음 문자를 예측하는 작은 신경망입니다. 오늘은 bigram 다음 단계로 넘어가며 train/dev/test split과 learning rate 튜닝을 직접 확인합니다.

DAKER 학습 Karpathy makemore MLP 대표 카드

*이미지 설명: NotebookLM 슬라이드형 카드. bigram 확률표에서 문자 임베딩과 MLP 실험대로 넘어가는 Karpathy makemore MLP 학습 흐름을 보여 준다.*

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

한 줄 요약: bigram이 "현재 문자 1개"만 보았다면, MLP는 여러 문자 문맥을 벡터로 바꿔 다음 문자를 예측합니다.

Karpathy의 Zero to Hero 커리큘럼에서 makemore Part 2는 문자 단위 언어모델을 MLP로 확장합니다. 여기서 중요한 변화는 모델이 커졌다는 사실보다, 학습자가 처음으로 split, hyperparameter, underfitting, overfitting을 한 번에 기록하기 시작한다는 점입니다.

구분

bigram 실습

MLP 실습

입력 문맥

현재 문자 1개

여러 문자 context

표현 방식

count table

embedding vector

주요 확인

샘플과 negative log likelihood

train/dev/test loss 차이

실무 감각

언어모델 루프 이해

튜닝과 과적합 감시

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

첫 번째 핵심은 embedding입니다. 문자를 정수 id로만 두지 않고 작은 벡터로 바꾸면, 모델은 문자 사이의 관계를 학습할 공간을 얻습니다.

두 번째 핵심은 train/dev/test split입니다. train loss만 낮아지는 모델은 외운 것일 수 있습니다. dev loss가 함께 내려가는지 봐야 "새 이름에도 일반화되는지"를 확인할 수 있습니다.

세 번째 핵심은 learning rate입니다. 너무 작으면 loss가 천천히 내려가고, 너무 크면 튀거나 망가집니다. Karpathy식 실습에서는 숫자 하나를 정답처럼 외우기보다 후보를 비교하고 로그를 남기는 습관이 중요합니다.

DAKER 학습 Karpathy makemore MLP 워크플로

*이미지 설명: NotebookLM 슬라이드형 워크플로. 데이터 split, embedding, MLP forward, loss 계산, learning rate 튜닝, 샘플 확인 순서를 정리했다.*

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

아래 순서로 40분만 잡아도 MLP 실습의 핵심을 손에 익힐 수 있습니다.

  1. 이전 Karpathy makemore bigram 실습에서 쓴 작은 이름 목록을 유지합니다.

  2. 각 이름을 고정 길이 context와 다음 문자 label로 바꿉니다.

  3. 데이터를 train, dev, test로 나눕니다. 처음에는 80:10:10처럼 단순하게 시작합니다.

  4. 문자 id를 embedding vector로 바꾸고, flatten해서 MLP에 넣습니다.

  5. hidden size와 embedding dimension은 기본값 하나로 고정합니다.

  6. learning rate 후보 3개를 비교하고 train/dev loss를 표에 적습니다.

  7. 샘플 이름 10개를 뽑아 loss 숫자와 사람이 보는 품질을 함께 기록합니다.

짧은 실험 기록 예시는 이렇게 두면 됩니다.

실험

learning rate

train loss

dev loss

메모

A

낮음

천천히 감소

천천히 감소

안정적이지만 느림

B

중간

잘 감소

잘 감소

우선 후보

C

높음

너무 공격적

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

가장 흔한 실수는 hyperparameter를 여러 개 동시에 바꾸는 것입니다. hidden size, embedding dimension, context length, learning rate를 한 번에 바꾸면 무엇이 효과를 냈는지 알 수 없습니다.

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

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

이 글은 카파시식 AI 학습법: 작은 모델을 직접 만져라의 두 번째 실습 단계입니다. 작은 모델을 직접 만진다는 말은 이제 count table에서 embedding과 MLP로 이동한다는 뜻이 됩니다.

모델 품질을 숫자로 확인하는 태도는 카파시 신경망 레시피: AI 코딩 디버깅을 작게 검증하는 법과도 이어집니다. MLP 실험이 끝나면 다음 단계는 activation과 gradient 분포를 보는 BatchNorm 진단입니다.

공식 출처는 작성 전 2026년 6월 24일 기준으로 Andrej Karpathy의 Neural Networks: Zero to Hero 공식 페이지, karpathy/nn-zero-to-hero README, karpathy/makemore README를 확인했습니다. 이 글은 교육용 루틴이며, 실제 대규모 LLM 학습 성능을 보장하지 않습니다.

FAQ

makemore MLP는 왜 bigram 다음에 배우나요?

bigram은 다음 문자 예측 루프를 가장 작게 보여 줍니다. MLP는 같은 루프에 embedding, hidden layer, split, 튜닝을 더해 실제 머신러닝 실험 감각을 만듭니다.

train/dev/test split은 꼭 필요한가요?

필요합니다. train loss만 보면 모델이 데이터를 외웠는지 새 예시에 일반화하는지 구분하기 어렵습니다.

learning rate는 어떻게 고르나요?

정답값을 외우기보다 후보를 작게 비교하세요. loss가 안정적으로 내려가고 dev loss가 함께 좋아지는 값을 우선 후보로 둡니다.

한국어 이름 데이터로도 가능한가요?

가능합니다. 처음에는 완성형 글자 단위로 시작하면 구현이 단순합니다. 목표는 좋은 이름 생성기가 아니라 split과 loss 해석입니다.

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

MLP가 어느 정도 내려가면 activation과 gradient 분포를 확인해 보세요. 숫자가 내려가도 내부 분포가 망가지면 깊은 모델에서 다시 막힙니다.

Redirecting to Karpathy makemore MLP 실습: train/dev/test로 과적합 잡는 법 | DAKER 커뮤니티...