

CNN의 시작점: 1989년 이전에도 개념은 있었지만, 실질적인 시초는 LeNet
LeNet은 Yann LeCun이 만든 모델로 (위 그림이 LeNet),
크기의 필터 48개로 합성곱(convolution) 연산을 수행,
크기의 feature map 생성,
Max Pooling으로 차원 축소 후, Flatten → Dense Layer → Softmax 구조를 사용
기존 Fully Connected Neural Network(FCNN)은 입력 이미지를 1차원 벡터로 Flatten해야 하므로
CNN은 이미지의 2차원 구조를 그대로 유지한 채 학습하며, 합성곱(Convolution)과 풀링(Pooling)을 통해 계산량을 줄이고 더 강력한 특징 추출을 가능하게 한다.
CNN은 층을 거치면서 단순한 특징 → 복잡한 패턴 → 고차원적 의미로 학습이 확장된다.
이를 계층적 학습(Hierarchical learning)이라 한다.
LeNet-5 구조
Input (32×32)
→ Conv1 (6@28×28)
→ Pool1 (6@14×14)
→ Conv2 (16@10×10)
→ Pool2 (16@5×5)
→ Flatten (400차원)
→ Dense1 (120)
→ Dense2 (84)
→ Dense3 (10, Softmax)


Padding: 테두리에 픽셀(주로 0)을 추가해 출력 크기 유지.
예시) 입력 이미지: 숫자 “7” (28×28 픽셀, 흑백 → 채널=1)

Max Pooling (2×2 필터, Stride=2):
[1 3 2 4
5 6 7 8
2 4 6 8
1 1 0 0]
→ 2×2 영역마다 최대값만 남김. 결과:
[6 8
4 8]예: 숫자 “7” →
Convolution/Pooling으로 얻은 Feature map을 Flatten(1차원 벡터) 후 분류 수행.
CNN에서 추출된 고차원 feature를 최종적으로 활용.
x = [0.3, 0.7, 0.1, ..., 0.5]z = [2.1, -1.5, 0.3, -0.7, 1.0, -0.5, 0.2, 3.5, 0.8, -2.0]z = [2.1, -1.5, 0.3, -0.7, 1.0, -0.5, 0.2, 3.5, 0.8, -2.0]softmax(z) = [0.15, 0.01, 0.03, 0.02, 0.07, 0.02, 0.03, 0.60, 0.06, 0.01]