
합성곱 신경망(Convolutioin Neural Network, CNN)은 이미지와 같은 격자 구조 데이터(Grid-structured data)를 처리하기 위해 설계된 신경망 구조이다. 전통적인 MLP와 달리, CNN은 합성곱(Convolution) 연산과 풀링(Pooling) 연산을 통해 공간적 구조(spatial structure)를 보존하면서 특징(feature)을 추출한다.
CNN의 핵심은 특징 추출과 분류를 하나의 모델에서 통합적으로 학습한다는 점이다. 이는 사람이 직접 설계한 SIFT, HOG 같은 hand-crafted feature를 대체하며, 데이터로부터 end-to-end 학습이 가능하도록 한다.
기존의 Fully Connected Layer는 한계가 존재한다. 이미지를 직접 FC Layer에 넣으면, 각 픽셀이 모든 뉴런과 연결된다. 이 방식은 고차원 입력(예: 224x224x3 RGB 이미지)에 대해 연결 수가 기하급수적으로 증가하여 비효율적이다. 또한 공간 구조(Spatial Structure)가 무시되어, 이미지 특유의 지역적 패턴을 잘 활용하지 못한다.

CNN은 이러한 문제를 해결하기 위해 합성곱 연산(Convolution Operation)을 사용한다.
국소 수용 영역(Local receptive field) : 한 뉴런이 이미지 전체가 아니라 작은 영역(예: 3x3, 5x5)만 본다.

가중치 공유(Weight sharing) : 동일한 필터(커널)가 이미지 전역에 걸쳐 동일하게 적용된다. 파라미터 수가 크게 줄어듦

출력(Feature Map) : 필터가 이미지 위를 슬라이딩하면서 패턴(에지, 모서리, 질감 등)을 탐지한 결과가 저장된다.
다중 필터와 다중 채널 : 한 장의 이미지는 R,G,B 세 채널을 가지므로, 합성곱 연산도 다채널 입력에 대해 수행된다. 또한 여러 개의 필터를 적용하면 여러 장의 특징 맵(feature maps)이 생성된다. 이 과정에서 CNN은 저수준 특징(Edge) 중간 수준 특징(모양) 고수준 특징(객체의 일부분)을 점차 학습한다.

Activation Function : 합성곱 레이어는 입력 이미지와 필터를 연산하여 Feature Map을 생성한다. 하지만 합성곱만 거치면 여전히 선형 연산(linear operation)일 뿐이므로, 복잡한 패턴(비선형적 데이터 분포)을 학습하는 데 한계가 있다.
이를 해결하기 위해 Activation Func을 적용해(예: ReLU) 비선형성을 부여해준다.
이렇게 위 과정을 여러 번 반복하면서, CNN은 점점 더 복잡하고 추상적인 특징을 학습하게 된다.

위 그림의 초록색 작은 사각형은 필터(filter, Kernel)이며, 특정 방향 패턴(예: 대각선)을 감지하도록 학습된 상태이다.
필터가 이미지 전체를 슬라이딩하면서 합성곱 연산을 수행한다. 그 결과는 Feature Map으로 표현되며, 원본 이미지 속 특정 패턴(예: 수직선, 대각선, 건물 모서리 등)에 강하게 반응한다.
그림에서 보듯, 건물의 윤곽선, 창문 패턴 같은 구조적 정보가 강조되어 나타난다.
특징 추출의 의미
합성곱은 단순히 픽셀을 줄이는 것이 아니라, 원본 이미지에서 중요한 구조적 특징만 추출하는 과정이다.
여러 개의 필터를 적용하면, 각 필터가 서로 다른 패턴(수평선, 곡선, 질감 등)에 반응하여 다양한 Feature Map을 만든다.
CNN은 이렇게 만들어진 Feature Map들을 계층적으로 쌓아, 저수준 특징(에지)에서 고수준 특징(객체 형태)까지 자동으로 학습한다.
정리하면, Convolution은 이미지에서 불필요한 정보를 줄이고 의미 있는 패턴을 추출하는 역할을 한다. 이 덕분에 CNN은 사람이 직접 특징을 설계하지 않아도, 데이터로부터 자동으로 최적의 Feature Extractor를 학습할 수 있다.

입력 이미지에 여러 개의 필터(커널)를 적용하여 Feature Map을 생성한다.
각 필터는 특정 패턴(에지, 곡선, 질감 등)에 반응하며, 이를 통해 이미지의 중요한 특징을 추출한다.
이 과정에서 가중치 공유(weight sharing)와 국소 수용영역(local receptive field) 개념이 적용되어, 효율적이고 의미있는 특징 학습이 가능하다.

합성곱 연산은 기본적으로 선형이므로, 복잡한 패턴 학습을 위해 비선형 활성화 함수를 적용한다.
가장 많이 쓰이는 함수는 ReLU(Rectified Linear Unit)
ReLU는 계산이 간단하고, 기울기 소실(vanishing gradient) 문제를 완화하며, 학습 속도를 빠르게 한다.

Pooling Layer는 Feature Map의 공간 크기를 줄이고, 불필요한 세부정보를 줄여준다.
가장 대표적인 방식은 Max Pooling : 작은 영역(예: 2x2)에서 가장 큰 값을 선택

Pooling 연산은 Translation invariance(위치 변화 불변성)을 제공해 객체가 약간 이동해도 인식 가능하며, 연산량이 감소해 학습 속도와 메모리 효율이 향상된다.
과거에는 사람이 직접 특징을 설계(hand-crafted feature)해야 했다.
대표적인 방법:
SIFT Descriptor (Lowe, 2004)
Spatial Pyramid Matching (Lazebnik et al., 2006)
한계:

CNN은 합성곱 필터(Convolutional Filters)를 데이터 학습 과정에서 스스로 학습한다.
학습 과정:
결과적으로:
정리하면, 전통적인 방법은 사람이 특징을 설계했지만, CNN은 데이터를 통해 특징을 스스로 학습한다. 이 덕분에 CNN은 복잡하고 대규모의 이미지 데이터에서 훨씬 더 강력한 성능을 발휘할 수 있다.