1. 모델 발전 흐름
1) MLP(다층 퍼셉트론)의 한계
초기에는 이미지를 1차원 배열로 펼펴서(Flatten) 입력하는 MLP 방식을 사용했으나 문제가 발생함
문제 1) 파라미터 폭발

해상도↑ 파라미터 수↑
224×224 해상도의 RGB(3채널) 이미지를 1차원으로 펼치면(Flatten) 150,528 차원이 됨
이를 1,000개의 뉴런과 완전연결(Fully-Connected)하면 약 1억 5천만 개의 가중치가 생성됨
→ 계산량을 폭발 적으로 늘림
→ 학습 속도를 저하시킴
→ 심각한 과적합 유발
문제 2) 공간 정보 손실
2D 이미지를 1차원으로 펼치는 순간 픽셀 간의 상하좌우 근접성(지역성, 위치 관계)이 완전히 파괴
flatten → 이웃한 픽셀 관계 사라짐 → 1차원 벡터로 변환
=> 이미지의 핵심인 지역성(Locality), 패턴 반복성, 위치 관계가 완전히 무시됨
2) CNN의 등장
MLP의 공간 정보 파괴와 파라미터 폭발을 해결하기 위해,
인간 시각 인식의 수용장(Receptive Field) 개념을 적용한 모델이 필요해짐
→ 단순 패턴에서 시작해 물체 단위로 계층적 추상화를 거친다는 점에서 아이디어를 얻어 등장
- 수용장(Receptive Field)

- 하나의 뉴런이 전체 이미지를 보지 않고, 3×3 같은 작은 일부 영역만 보도록 설계
- 파라미터 수를 획기적으로 줄임
- 공간 구조를 유지
- 층이 깊어질수록 수용장이 겹치며 넓어짐
- 낮은 층에서는 선/경계 같은 단순 패턴 학습
- 높은 층에서는 물체 단위의 복잡한 개념을 학습
- 네오 코그니트론 (CNN의 원형)

- 초기 CNN의 원형
- 시각 계층 구조를 인공적으로 구현
- 구성
- 특징 추출: S-cell (현대의 Convolution)
- 위치 변화에 강건하게 만드는 C-cell(현대의 Pooling)
- 당시에는 데이터와 연산 자원, 학습 방법이 부족해 성능을 내지 못함
3) CNN의 한계
성능을 높이기 위해 망을 깊게 쌓으면서 새로운 문제 발생
- Degradation Problem
- 층을 일정 수준 이상 추가하면 오히려 성능이 저하되는 현상
- Gradient Vanishing / Exploding
- 역전파 과정에서 기울기가 0으로 사라지거나 비정상적으로 커져 깊은 층의 학습이 붕괴되는 현
- 기울기↓ → 앞쪽 레이어 학습 X
- 기울기↓ → 학습이 불안
- 역전파 과정에서 기울기가 0으로 사라지거나 비정상적으로 커져 깊은 층의 학습이 붕괴되는 현
- 연산량 증가와 비효율성
- 층과 채널이 늘어남에 따라 연산이 무거워져 모바일이나 실시간 환경 적용이 어려워짐
4) ResNet의 등장
깊은 네트워크를 안정적으로 학습할 수 없는 기존 CNN의 치명적 한계를 해결하여 현대 CNN의 백본(Backbone)이 됨.
○ Residual Learning(전자 학습) & Skip connection

전체 결과를 직접 학습하는 대신, 입력과 출력의 차이인 잔차 ($F(x)$)만 학습하도록 구조를 변경
→ $H(x) = x + F(x)$
입력값 x를 층을 건너뛰어 그대로 더해주는 Skip Connection을 통해,
정보와 기울기가 입력층까지 소실 없이 전달되게 만듦.
+ Bottleneck 구조

깊은 층의 연산량을 줄이기 위해
1×1 Conv(채널 축소) → 3×3 Conv(특징 추출) → 1×1 Conv(채널 복원)
로 구성된 병목 구조 도입
5) EfficientNet의 등장
단순히 층을 깊게 쌓는 것을 넘어, "모델을더 크게 만들 때 무엇을 어떻게 키우는 것이 효율적인가" 에 대한 구조적 해답을 제시
→ 깊이, 너비, 해상도를 균형 있게 확장하여 효율을 극대화한 모델

Convolution → MBConv 블록 반혹 → Feature Map 생성
○ Compounding Scaling

모델 성능을 결정하는 세 가지 요소인
너비(채널 수) : 커질수록 미세한 정보 포착
깊이(레이어 수) : 더 복잡한 패턴 학습 가능
해상(이미지 크기) : 상세한 정보 유지 가능
를 하나만 늘리지 않고, 세 요소를 수학적으로 계산된 일정한 비율로 균형 있게 동시에 확장
→ 적은 파라미터로 SOTA(최고 성능) 달성
○ MBConv 블록

ResNet의 Skip Connection을 계상하되
1) Expansion
2) Depthwise Conv : RGB 채널별로 따로 합성곱을 수행해 연산량 대폭 감소
3) SE Block : 어떤 채널이 중요한지 골라내는 Attention
4) 1×1 Projection
5) Skip Connection
세부 파이프라인을 구축해 효율성을 극대화
2. CNN 구조
CNN은 다차원 데이터의 형태를 유지한 채 국소적 패턴을 계층적으로 추출하는 수학적 파이프라

1) 특징 추출 단계 ( Feature Extracion)
1. 입력된 이미지에 Convolution(합성곱) 연산을 수행
설정된 커널이 이미지 전체를 슬라이딩하여 픽셀값과 가중치를 곱하고 더하는 MAC 연산을 통해 2D 형태의 Feature Map 생성

2. Pooling 연산 수행
생성된 Feature Map 내에서 최대값이나 평균값만을 추출하여 해상도의 크기를 줄임
→ 위치 변화에 강건해지고 파라미터가 감소함

3. 1,2 연산을 반복 수행
하위 층: 선, 모서리와 같은 단순한 픽셀 수준의 패턴 포착
상위 층: 수용장이 겹치며 넓어져 객체의 전체적인 구조와 같은 추상적인 고차원 특징 학습
2) 분류 단계 (Classification)
1. 공간 구조 정보가 담긴 최종 Feature Map을 1차원 벡터로 변환
2. 완전연결층 (FC Layer)에 통과시킴
3. Softmax 활성화 함수 적용
→ 해당 이미지가 특정 클래스에 속할 최종 확률값을 도출

3) Translation Equivariance & Spatial Inductive Bias
동일한 필터 가중치를 이미지 전체 영역에 공유하며 연산
→ 특징 패턴이 위치가 바뀌어도(Translation Equivariance) 동일하게 그 특징을 추출할 수 있음
=> "가까운 픽셀끼리 의미가 깊다"는 강한 공간적 전제(Spatial Inductive Bias)를 모델 구조 자체에 성공적으로 반영
+ Translation Equivariance vs Translation Invariance

Translation Equivariance
- 입력 데이터가 변환되면, 출력 데이터도 똑같은 방식으로 변환되는 성질
작은 고양이 이미지를 convolution 연산하면 작은 윤곽선(특징맴)이 나옴
만약 입력 이미지를 크게 키우면(Scaling), 출력되는 특징맵도 똑같이 크게 키워진 형태로 나타남
- 특징의 공간적 위치 변화를 그대로 추적
Translation Invariance
- 입력 데이터가 변환되어도, 최종 출력 결과는 전혀 변하지 않고 동일하게 유지되는 성질
고양이 이미지가 크든 작든 상관없이 cnn 모델을 통과한 최종 분류 결과는 형태가 변하지 않은 똑같은 고양이
- 객체의 위치 변화에 영향을 받지 않고 결과를 도출
3. Convolution 하이퍼파라미터
convolution layer의 구조를 결정하는 핵심 하이퍼파라미터
○ Kernel Size (커널 크기)

- 의미
- 연산을 위해 이미지 위를 슬라이딩하는 가중치 필터의 2D 공간 차원 ex) 3×3, 5×5
- 한 번에 포착하는 정보의 영역(수용장)의 크기를 결정함
- -값 변화
- 값이 커지면 넓은 영역을 한 번에 파악하지만 연산량이 기하급수적으로 폭발함
- 값이 작아지면 매우 세밀한 공간 특징을 추출
- 장단점 / 권장
- 큰 커널(5×5) 한 번보다 작은 커널(3×3)을 두 번 연속 적용하는 것
- 수용장은 유사하게 유지
- 파라미터 수는 더 적음 (5×5 = 25개 , (3×3)×2 = 18개)
- 비선형성(ReLU)을 추가로 적용할 수 있음
- → 모델의 표현력과 효율성 측면에서 유리함
- 큰 커널(5×5) 한 번보다 작은 커널(3×3)을 두 번 연속 적용하는 것
○ Stride
- 의미
- 커널이 입력 데이터 위를 이동할 때 한 번에 건너뛰는 픽셀의 간격
- 값 변화
- 값이 커지면 출력 Feature Map의 가로세로 차원이 작아짐 → 다운샘플링 효과 발생
- 값이 작으면 데이터의 원래 크기 정보가 촘촘하게 유지
- 장점
- 값을 키우면 후속 레이어의 계산량이 크게 줄어듦
- 단점
- 세밀한 공간적 디테일이 영구적으로 손실될 수 있음
- 주로 초기에는 1로 유지하다가 해상도를 줄여야 하는 시점에만 2이상의 값을 적용
○ Padding
- 의미
- 이미지의 가장자리를 어떻게 처리할 지 결정하는 것
- Zero-Padding
- convolution 연산에 의한 출력 데이터 크기 축소를 방지하기 위해 입력 이미지의 가장자리 둘레를 0 등의 임의의 값으로 덧붙여 채우는 기법

zero-padding
- convolution 연산에 의한 출력 데이터 크기 축소를 방지하기 위해 입력 이미지의 가장자리 둘레를 0 등의 임의의 값으로 덧붙여 채우는 기법
- 값 변화
- 패딩을 적용하지 않으면(Valid Padding) 층을 통과할 때마다 크기가 지속적으로 감소
- 패딩을 적용하면 입력과 출력의 차원을 동일하게 맞추는 것 → Same Padding
- 장점
- 패딩을 적용하면 깊은 층에서도 공간 해상도 유지
- 연산 횟수가 적어 소외되기 쉬운 이미지 최외곽 가장자리의 경계 픽셀 정보도 학습에 온전히 포함시킬 수 있음
○ Filter / Channels
- 의미
- 단일 convolution 레이어 내에서 서로 다른 가중치 배열을 가진 커널을 몇개 사용할 것인지 의미
- 이 개수는 생설될 Feature Map의 총 깊이(채널 수)가 됨
- 값 변화
- 필터 수가 커질수록
- 네트워크는 대각선, 수평선, 특정 색상 등 더욱 다양하고 구체적인 특징을 병렬로 동시에 출력
- 필터 수가 커질수록
- 장점
- 특징을 많이 뽑을수록 모델의 정보 표현력이 높아져 복잡한 문제 해결에 유리
- 단점
- 특징을 많이 뽑을수록 가중치 파라미터 개수와 연산 메모리가 폭발적으로 증가하여 병목 발생