1. 28×28 이미지를 어떻게 입력으로 넣을까?
MNIST 숫자 이미지는 가로 28칸, 세로 28칸입니다. 그래서 픽셀은 총 28 × 28 = 784개예요.
사람이 보는 방식
“아, 이건 7처럼 생겼네!” 하고 모양으로 봅니다.
MLP가 보는 방식
각 픽셀 밝기를 숫자로 받아요. 예: 검정 0, 흰색 1, 중간 회색 0.4.
MLP는 2차원 격자를 직접 보는 모델이 아니라, 보통 이미지를 한 줄로 펼친 784차원 벡터로 받습니다.
→ [x₁, x₂, x₃, ..., x₇₈₄]
→ x는 길이 784인 입력 벡터
2. 가장 간단한 MLP 구조
MLP는 Multi-Layer Perceptron의 줄임말입니다. 쉽게 말하면 “여러 층의 계산 블록을 이어 붙인 신경망”이에요.
784개
W₁x + b₁
음수는 0
W₂h + b₂
0~9 점수
수식으로 쓰면
은닉층 계산: z₁ = W₁x + b₁
활성화: h = ReLU(z₁)
출력층 계산: z₂ = W₂h + b₂
확률 변환: ŷ = Softmax(z₂)
R⁷⁸⁴는 “숫자 784개짜리 벡터 공간”이라는 뜻입니다. 어렵게 느껴지면 그냥 “784칸짜리 숫자 목록”으로 생각해도 충분해요.
3. Weight와 Bias는 무엇일까?
Weight, 가중치
어떤 입력을 얼마나 중요하게 볼지 정하는 숫자입니다.
예를 들어 어떤 픽셀이 밝을 때 숫자 7일 가능성이 올라간다면, 그 픽셀과 연결된 weight는 그 방향으로 조정됩니다.
Bias, 편향
입력이 모두 0이어도 뉴런이 기본적으로 가질 수 있는 기준값입니다.
비유하면 weight는 “재료별 중요도”, bias는 “기본 간” 또는 “기준선”에 가깝습니다.
4. 파라미터 수는 어떻게 구할까?
완전연결층, 즉 Linear/Dense layer에서는 앞 층의 모든 뉴런이 다음 층의 모든 뉴런과 연결됩니다.
왜냐하면:
weight 수 = 입력 개수 × 출력 뉴런 수
bias 수 = 출력 뉴런마다 1개
예시: 784 → 16 → 10 MLP
직접 바꿔보기
입력은 784개, 출력은 10개로 고정하고 은닉층 크기만 바꿔봅니다.
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”
한 장 요약
- MNIST 28×28 이미지는 784개의 픽셀 숫자로 펼칠 수 있습니다.
- MLP는 입력 → 은닉층 → 출력층 순서로 계산합니다.
- Weight는 입력의 중요도를 정하는 연결 강도입니다.
- Bias는 뉴런마다 더해지는 기본 기준값입니다.
- Dense layer의 파라미터 수는 입력 수 × 출력 수 + 출력 수입니다.
- 784 → 16 → 10 모델의 파라미터 수는 12,730개입니다.