Karpathy BatchNorm 진단 실습: activation·gradient로 깊은 MLP 안정화하기 | DAKER 커뮤니티
Karpathy BatchNorm 진단 실습: activation·gradient로 깊은 MLP 안정화하기
BatchNorm 진단이란 activation과 gradient 분포로 학습 불안정을 찾는 과정입니다. 오늘은 깊은 MLP가 왜 쉽게 망가지는지, 통계와 히스토그램으로 먼저 확인합니다.

*이미지 설명: NotebookLM 슬라이드형 카드. MLP 내부 계기판에서 activation과 gradient 경고등을 확인하는 Karpathy BatchNorm 진단 실습을 표현했다.*
오늘 배울 것은 무엇인가요?
한 줄 요약: loss 하나만 보지 말고, forward activation과 backward gradient가 어떤 분포로 흐르는지 확인합니다.
Karpathy의 makemore Part 3는 MLP를 더 깊게 만들 때 생기는 취약함을 다룹니다. 공식 강의 설명의 초점은 forward pass activation, backward pass gradient, 잘못된 scale, 진단 시각화, 그리고 Batch Normalization입니다.
확인 대상 | 볼 신호 | 위험한 모습 | 다음 액션 |
|---|---|---|---|
activation | 평균, 표준편차, saturation | tanh가 -1 또는 1에 몰림 | 초기화 scale 조정 |
gradient | 히스토그램, 크기 | 0에 붙거나 폭발 | layer별 분포 비교 |
train/dev loss | split별 추세 | train만 좋아짐 | 과적합 또는 튜닝 의심 |
BatchNorm | 적용 전후 비교 | 통계 누수 또는 추론 불안정 | mode와 batch 크기 확인 |
핵심 개념은 어떻게 잡아야 하나요?
첫 번째 핵심은 activation saturation입니다. tanh 같은 비선형 함수가 대부분 끝값에 붙으면 gradient가 잘 흐르지 않습니다. loss가 내려가지 않는 이유가 코드 오류가 아니라 분포 문제일 수 있습니다.
두 번째 핵심은 gradient flow입니다. 깊은 네트워크에서는 뒤로 전달되는 gradient가 너무 작아지거나 커질 수 있습니다. 이때 layer별 gradient 히스토그램을 보면 어느 지점에서 흐름이 망가지는지 감이 옵니다.
세 번째 핵심은 BatchNorm을 "마법 버튼"이 아니라 진단 후 적용하는 도구로 보는 것입니다. BatchNorm은 학습을 쉽게 만들 수 있지만, 작은 batch, train/eval mode, 통계 처리 실수를 함께 확인해야 합니다.

*이미지 설명: NotebookLM 슬라이드형 진단 카드. gradient 분포가 0에 붙는 경우, 정상적으로 흐르는 경우, 과하게 튀는 경우를 비교해 보여 준다.*
따라 해볼 실습은 어떻게 진행하나요?
이 실습은 Karpathy makemore MLP 실습 다음에 붙여야 효과가 큽니다. 아직 MLP loss 기록이 없다면 먼저 split별 loss 표를 만들어 두세요.
MLP의 각 layer activation 평균과 표준편차를 출력합니다.
tanh 출력이 -1 또는 1 근처에 과하게 몰리는지 봅니다.
backward 후 각 layer gradient의 평균과 표준편차를 기록합니다.
히스토그램을 보고 특정 layer에서 gradient가 사라지거나 튀는지 확인합니다.
weight 초기화 scale을 바꿔 activation과 gradient 변화를 비교합니다.
BatchNorm을 넣고 train/dev loss, 샘플 품질, 내부 분포를 다시 봅니다.
실험 표는 이렇게 단순하게 시작해도 충분합니다.
실험 | 변경점 | activation 상태 | gradient 상태 | dev loss 메모 |
|---|---|---|---|---|
A | 기본 초기화 | 끝값 몰림 | 약함 | 개선 여지 큼 |
B | scale 조정 | 분포 완화 | 안정 | 기준 후보 |
C | BatchNorm 추가 | 더 균형적 | 안정 | mode 확인 필요 |
자주 막히는 지점은 무엇인가요?
가장 흔한 실수는 BatchNorm을 넣고 loss가 내려가면 내부 진단을 멈추는 것입니다. 이 실습의 목표는 BatchNorm 사용법 암기가 아니라, 깊은 신경망이 왜 불안정해지는지 눈으로 보는 것입니다.
실수 방지 체크리스트입니다.
activation 통계를 보기 전에 layer를 더 깊게 만들지 않았나요?
tanh saturation을 loss 숫자 하나로만 판단하지 않았나요?
gradient 히스토그램을 layer별로 나눠 보았나요?
초기화 scale과 BatchNorm을 동시에 바꾸지 않았나요?
BatchNorm 적용 후 train/eval mode 차이를 확인했나요?
작은 batch에서 통계가 흔들릴 수 있다는 한계를 적었나요?
다음 학습 연결은 어디로 이어지나요?
BatchNorm 진단은 카파시 신경망 레시피의 "작게 확인하고 하나씩 바꾼다"는 태도와 바로 연결됩니다. 깊은 모델이 잘 안 될 때 큰 구조를 바꾸기 전에 내부 신호부터 봐야 합니다.
이전 단계가 필요하면 Karpathy makemore bigram 실습과 Karpathy makemore MLP 실습을 순서대로 따라오면 됩니다. 이후에는 manual backprop, WaveNet, GPT from scratch로 이어질 수 있습니다.
공식 출처는 작성 전 2026년 6월 24일 기준으로 Andrej Karpathy의 Neural Networks: Zero to Hero 공식 페이지와 karpathy/nn-zero-to-hero README를 확인했습니다. 이 글은 교육용 진단 루틴이며, BatchNorm이 모든 모델과 데이터에서 최선이라는 뜻은 아닙니다.
FAQ
BatchNorm은 왜 중요한가요?
깊은 신경망은 내부 분포가 쉽게 불안정해집니다. BatchNorm은 학습 중 activation scale을 다루는 대표적인 방법이라 진단 실습에 좋습니다.
activation과 gradient 중 무엇을 먼저 봐야 하나요?
forward activation을 먼저 보고, loss backward 후 gradient를 봅니다. 앞에서 이미 값이 끝에 몰리면 뒤 gradient도 건강하기 어렵습니다.
히스토그램을 꼭 그려야 하나요?
처음에는 평균과 표준편차만 봐도 됩니다. 다만 히스토그램을 보면 값이 한쪽에 몰리는지, 꼬리가 과하게 긴지 더 빨리 파악할 수 있습니다.
BatchNorm을 넣으면 항상 좋아지나요?
아닙니다. batch 크기, train/eval mode, 통계 추정 방식에 따라 문제가 생길 수 있습니다. 적용 전후를 같은 조건으로 비교해야 합니다.
다음 강의로 바로 넘어가도 되나요?
가능하지만 activation과 gradient 표를 한 번 만들어 두면 이후 manual backprop과 GPT 실습에서 디버깅 감각이 훨씬 좋아집니다.