통계 실험실 차트
넘스탯 로고

넘스탯

DATA ANALYTICS & INSIGHTS

확률에서 LLM까지 – 데이터 사이언스 전문 교육 플랫폼

학습 메뉴
도움말

다층 퍼셉트론(MLP) 실습

층을 쌓고 뉴런을 늘리면 무엇이 달라지는가 — 구조가 결정하는 표현 용량
이 실습의 질문 — 신경망은 '얼마나 커야' 하는가? (구조가 결정하는 한계를 봅니다)

원하는 개념·랩·가이드를 검색해보세요

Ctrl K
딥러닝 실습실로기본 신경망 실습 (선수 학습)신경망 상세 이론

작은 망은 못 풀고 큰 망은 푸는 문제 — 그런데 큰 망이 항상 이길까?

기본 신경망 실습에서 신경망이 "어떻게" 배우는지 봤다면, 이번엔 "얼마나 큰 망이 필요한지"를 실험합니다. 은닉층 수와 뉴런 수는 모델의 용량 — 얼마나 복잡한 경계를 그릴 수 있는지 — 을 결정합니다. 나선처럼 꼬인 데이터는 작은 망으로는 아무리 오래 학습해도 못 풀지만, 용량을 키우면 풀립니다. 그런데 반전이 있습니다. 데이터에 노이즈가 섞여 있을 때 용량이 너무 크면 노이즈까지 통째로 외워버려 새 데이터에서는 오히려 성적이 떨어집니다. "얼마나 커야 하는가"는 지금도 모든 AI 개발자가 매일 마주하는 실전 질문입니다.
이 페이지에서 배우고 나면
  • 데이터의 복잡도(XOR·동심원·나선)에 따라 필요한 최소 구조를 실험으로 찾아낼 수 있습니다.
  • 결정 경계 히트맵을 보고 "이 모델의 용량이 부족한지, 과한지"를 판별할 수 있습니다.
  • 학습 정확도와 테스트 정확도가 벌어지는 과적합 순간을 재현하고, 두 수치 중 무엇을 믿어야 하는지 근거를 들어 말할 수 있습니다.
설계자의 자리 — 데이터와 구조 고르기
데이터 (생성 규칙 공개)
네 모서리(±1,±1) 주변 가우시안 점들 — 두 좌표의 부호가 같으면 클래스 0, 다르면 1 (논리 XOR)
은닉층 수
층당 뉴런 수
활성화

현재 구조: 2 → 4 → 2 · Adam(학습률 0.02) · 학습 70% / 테스트 30%

이 그림 읽는 법 (30초) — 가로·세로축은 두 입력값(x₁, x₂)입니다. 바탕색은 모델의 대답(파랑 = 클래스 0, 주황 = 클래스 1, 옅은 곳 = 확신 없음), 점은 실제 데이터(점 색 = 정답)입니다. 경계선의 모양 — 직선인지, 부드러운 곡선인지, 점 하나를 감싸려고 기괴하게 일그러졌는지 — 이 모델의 상태를 말해줍니다.
학습을 시작하면 결정 경계가 나타납니다
직접 해보기 — 실습 과제
  1. 직선에서 곡선으로 (XOR): XOR 데이터에서 은닉층 0으로 학습한 뒤, 은닉층 1(뉴런 4)로 바꿔 다시 학습하세요. 히트맵이 "직선 하나"에서 "꺾인 경계"로 변합니다. 은닉층은 그냥 계산을 더 하는 층이 아니라, 직선들을 조합해 굽은 경계를 만드는 재료입니다 — 기본 신경망 실습의 결론을 구조의 관점에서 재확인하는 실험입니다.
  2. 시간으로 못 메꾸는 것 (나선): 두 나선 데이터 + 은닉 1층 × 뉴런 4로 학습하세요. 정확도가 어느 선에서 멈춥니다. 몇 번을 다시 학습해도 마찬가지입니다 — 용량 부족은 학습 시간으로 해결되지 않습니다. "더 오래"가 아니라 "더 크게"가 답인 경우입니다.
  3. 용량의 사다리: 같은 나선에서 뉴런 8 → 16, 층 1 → 2로 키워 가며 테스트 정확도를 기록하세요(실험 기록 표 활용). 나선을 따라 감기는 경계가 나타나며 정확도가 오릅니다. 복잡한 패턴에는 그만한 용량이 필요합니다 — 문제와 모델 크기의 궁합입니다.
  4. 외운 것과 이해한 것 (과적합): 동심원 + 라벨 노이즈 15% + 은닉 3층 × 뉴런 16으로 학습하고 정확도 곡선을 보세요. 학습 정확도는 계속 오르는데 테스트 정확도는 그에 못 미치며 두 곡선이 벌어지는 경향이 나타나고, 히트맵에는 뒤집힌 라벨 점을 감싸는 얼룩이 생깁니다. 모델이 규칙 대신 "그 점"을 외운 것입니다. 격차의 크기는 실행마다 다르니 2~3회 반복해 경향을 확인하세요 — 학습 정확도 100%는 완벽의 증거가 아닙니다.
  5. 과하지 않게: 같은 노이즈 데이터에서 망을 한 단계씩 줄여 가며(3층 16 → 1층 8 → 1층 4) 테스트 정확도를 비교하세요. 가장 높은 지점은 최대 크기가 아닙니다. "층을 많이 쌓을수록 무조건 좋다"는 통념의 반례이며, 더 정교한 해법(정규화)은 다음 실습에서 다룹니다.
개념 정리
보편 근사 정리

은닉층이 1개라도 뉴런이 충분히 많으면, 임의의 연속 함수를 (콤팩트 영역에서) 원하는 정확도로 근사할 수 있습니다 (Cybenko 1989; Hornik, Stinchcombe & White 1989). 단, 이것은 "표현이 가능하다"는 존재 증명일 뿐입니다 — 필요한 뉴런 수가 매우 클 수 있고, 경사하강이 그 가중치를 실제로 찾아낸다는 보장도, 유한한 데이터에서 잘 일반화한다는 보장도 아닙니다. 나선 실험에서 봤듯 실제로는 깊이·폭·학습이 모두 맞아야 합니다.

두 나선 과제의 유래

두 나선 분류는 1980년대 말부터 신경망의 난제 벤치마크로 쓰인 고전 과제입니다 (Lang & Witbrock, 1988, "Learning to Tell Two Spirals Apart"). 원 논문의 3회전 나선은 원저자들조차 순수 MLP로는 풀지 못해 지름길(shortcut) 연결이 있는 특수한 망을 썼을 만큼 어렵습니다 — 이 실습의 나선은 학습이 가능하도록 회전 수를 줄인 단순화 버전입니다.

과적합 — 자연스러운 현상이지 실수가 아니다

과적합은 모델 용량과 데이터 양·품질의 관계에서 나오는 자연스러운 현상이며, 좋은 개발자의 실력은 이를 "안 겪는 것"이 아니라 감지하고 관리하는 것입니다. 감지 도구가 학습/테스트 정확도의 분리이고, 관리 도구(드롭아웃·가중치 감쇠·조기 종료)는 정규화 실습에서 다룹니다. 큰 모델이 작은 모델보다 항상 나은 것도 아닙니다 — 노이즈까지 학습해 일반화가 나빠질 수 있기 때문입니다.

다음: 과적합을 목격했으니, 이제 잡는 법

노이즈 실험에서 본 과적합을 어떻게 다스리는지 — 드롭아웃, 가중치 감쇠, 조기 종료를 정규화 실습에서 직접 실험해 보세요. 구조 감각이 생겼다면 하이퍼파라미터 튜닝과 모델 성능 비교 실습도 새롭게 보일 겁니다.

더 깊이 학습하기
  • Cybenko (1989), MCSS: "Approximation by Superpositions of a Sigmoidal Function" — 보편 근사 정리
  • Hornik, Stinchcombe & White (1989), Neural Networks: "Multilayer Feedforward Networks are Universal Approximators"
  • Lang & Witbrock (1988): "Learning to Tell Two Spirals Apart" — 두 나선 벤치마크의 원류
  • Goodfellow, Bengio & Courville (2016): "Deep Learning" (MIT Press) — 5장 용량·과적합, 6장 심층 순전파망