MNIST · 28×28 이미지 · MLP 첫걸음

손글씨 숫자 0~9를 맞히는 가장 간단한 MLP

이미지 한 장을 784개의 숫자로 펴고, 작은 은닉층 하나를 지나, 10개의 점수 중 가장 큰 값을 고르는 구조를 천천히 이해해봐요.

예시 입력
7

MNIST 이미지는 실제로는 검은 배경 위 밝기 값으로 저장됩니다. 컴퓨터에게 이미지는 그림이 아니라 숫자 배열이에요.

이번 페이지의 예시 모델

입력층: 784개
은닉층: 16개 뉴런, ReLU
출력층: 10개 뉴런, Softmax

총 파라미터 수 = 12,730개

은닉층 뉴런 수 16개는 “이해하기 쉬운 작은 예시”입니다. 실제 성능을 높이고 싶으면 더 큰 모델이나 CNN을 씁니다.

1. 28×28 이미지를 어떻게 입력으로 넣을까?

MNIST 숫자 이미지는 가로 28칸, 세로 28칸입니다. 그래서 픽셀은 총 28 × 28 = 784개예요.

사람이 보는 방식

“아, 이건 7처럼 생겼네!” 하고 모양으로 봅니다.

MLP가 보는 방식

각 픽셀 밝기를 숫자로 받아요. 예: 검정 0, 흰색 1, 중간 회색 0.4.

MLP는 2차원 격자를 직접 보는 모델이 아니라, 보통 이미지를 한 줄로 펼친 784차원 벡터로 받습니다.

28 × 28 이미지
→ [x₁, x₂, x₃, ..., x₇₈₄]
→ x는 길이 784인 입력 벡터

2. 가장 간단한 MLP 구조

MLP는 Multi-Layer Perceptron의 줄임말입니다. 쉽게 말하면 “여러 층의 계산 블록을 이어 붙인 신경망”이에요.

입력
784개
선형 계산
W₁x + b₁
ReLU
음수는 0
선형 계산
W₂h + b₂
출력
0~9 점수

수식으로 쓰면

입력: x ∈ R⁷⁸⁴

은닉층 계산: z₁ = W₁x + b₁
활성화: h = ReLU(z₁)
출력층 계산: z₂ = W₂h + b₂
확률 변환: ŷ = Softmax(z₂)

R⁷⁸⁴는 “숫자 784개짜리 벡터 공간”이라는 뜻입니다. 어렵게 느껴지면 그냥 “784칸짜리 숫자 목록”으로 생각해도 충분해요.

3. Weight와 Bias는 무엇일까?

Weight, 가중치

어떤 입력을 얼마나 중요하게 볼지 정하는 숫자입니다.

점수 = x₁w₁ + x₂w₂ + ...

예를 들어 어떤 픽셀이 밝을 때 숫자 7일 가능성이 올라간다면, 그 픽셀과 연결된 weight는 그 방향으로 조정됩니다.

Bias, 편향

입력이 모두 0이어도 뉴런이 기본적으로 가질 수 있는 기준값입니다.

점수 = 입력들의 가중합 + b

비유하면 weight는 “재료별 중요도”, bias는 “기본 간” 또는 “기준선”에 가깝습니다.

정확한 표현: weight와 bias는 모델이 학습하면서 바꾸는 숫자이고, 이들을 합쳐서 파라미터(parameter)라고 부릅니다. 파라미터가 많다는 것은 모델 안에 조정 가능한 손잡이가 많다는 뜻이에요.

4. 파라미터 수는 어떻게 구할까?

완전연결층, 즉 Linear/Dense layer에서는 앞 층의 모든 뉴런다음 층의 모든 뉴런과 연결됩니다.

한 층의 파라미터 수 = 입력 개수 × 출력 뉴런 수 + 출력 뉴런 수

왜냐하면:
weight 수 = 입력 개수 × 출력 뉴런 수
bias 수 = 출력 뉴런마다 1개

예시: 784 → 16 → 10 MLP

Weight 수
Bias 수
합계
입력 → 은닉 784 → 16
784 × 16 = 12,544
16
12,560
은닉 → 출력 16 → 10
16 × 10 = 160
10
170
전체
12,544 + 160
16 + 10
12,730개

직접 바꿔보기

입력은 784개, 출력은 10개로 고정하고 은닉층 크기만 바꿔봅니다.

총 파라미터 수
12,730개

784×16 + 16 + 16×10 + 10

5. 그러면 숫자는 어떻게 맞히는 걸까?

① 예측

현재 weight와 bias로 이미지를 계산해서 0~9 각각의 점수를 냅니다.

② 오차 계산

정답이 7인데 모델이 1이라고 강하게 말하면 오차가 큽니다.

③ 조금 수정

오차가 줄어드는 방향으로 weight와 bias를 조금씩 바꿉니다.

출력층 10개의 의미

출력 뉴런 10개는 각각 숫자 0, 1, 2, ..., 9에 대응합니다. Softmax를 거치면 이 10개 점수를 합이 1인 확률처럼 볼 수 있어요.

예시 출력 확률:
0: 0.01, 1: 0.02, 2: 0.01, 3: 0.03, 4: 0.02,
5: 0.01, 6: 0.00, 7: 0.87, 8: 0.02, 9: 0.01

가장 큰 값은 7 → 모델의 예측은 “7”
중요: 이 페이지는 MLP의 구조를 이해하기 위한 설명입니다. 실제 이미지 인식에서는 픽셀의 위치 관계를 더 잘 쓰는 CNN이 MNIST에 더 적합한 경우가 많습니다. 하지만 MLP는 weight, bias, 파라미터 수, 학습 원리를 배우기에 아주 좋은 출발점이에요.

한 장 요약

  • MNIST 28×28 이미지는 784개의 픽셀 숫자로 펼칠 수 있습니다.
  • MLP는 입력 → 은닉층 → 출력층 순서로 계산합니다.
  • Weight는 입력의 중요도를 정하는 연결 강도입니다.
  • Bias는 뉴런마다 더해지는 기본 기준값입니다.
  • Dense layer의 파라미터 수는 입력 수 × 출력 수 + 출력 수입니다.
  • 784 → 16 → 10 모델의 파라미터 수는 12,730개입니다.