왜 MLP만으로는 부족한가
👋 이 챕터에서 배울 것
지난 챕터의 MLP는 어떤 함수든 근사 가능. 그런데 이미지나 바둑 보드 같은 구조가 있는 입력에는 매우 비효율적. CNN(Convolutional Neural Network)이 이를 풀어.
먼저 MLP의 한계를 정량적으로:
📊 19x19 바둑판을 MLP로 처리하면
- 입력: 19x19 = 361픽셀 (흑/백/빈자리 표시)
- 은닉층 1개 (256 뉴런) 가중치 수: 361 × 256 = 92,416개
- 은닉층 2개째: 256 × 256 = 65,536개
- 출력층 (361 자리에 대한 확률): 256 × 361 = 92,416개
- 합계: 약 25만 가중치
이걸 학습하려면 엄청난 데이터 + 시간 필요. 게다가 학습이 효율적이지도 않음.
⚠️ 더 큰 문제: 공간 구조 무시
MLP는 입력 픽셀들을 1차원 벡터로 flatten해서 처리. 그러면:
- "(3,3) 옆 (3,4)에 흑이 있다"는 정보를 잘 잡지 못함
- 같은 패턴이 다른 위치에 있으면 다른 가중치로 학습 (낭비)
- 위치 옮기면(translation) 처음부터 다시 학습
이미지/바둑판은 "같은 패턴이 어디든 등장"하는 특성. 사다리 모양은 보드 왼쪽이든 오른쪽이든 같은 의미. MLP는 이걸 못 활용.
CNN은 이 두 문제를 한 번에 풀어:
🎯 CNN의 두 핵심 아이디어
- 합성곱(Convolution) — 작은 필터를 이미지 위에서 슬라이딩하며 적용. 위치 무관 패턴 학습.
- 가중치 공유 — 같은 필터가 모든 위치에 적용 → 가중치 수 급감.
이 챕터:
- 합성곱이 뭔가 — 직관과 수식
- 필터(커널)의 역할 — 가장자리, 모서리, 패턴 감지
- 코드: 작은 합성곱 직접 구현
- 풀링(Pooling)과 전체 CNN 구조
- 왜 바둑판에 CNN이 자연스러운가