1. CNN이란 무엇인가?
CNN은 인간의 시각 시스템과 유사하게 동작하도록 설계된 인공신경망의 한 종류입니다. 일반적인 신경망(Fully Connected Layer, 완전 연결 계층)과는 달리, 이미지의 픽셀 정보를 직접 처리하지 않고 **특징(Feature)**을 추출하는 데 특화되어 있습니다.
핵심 아이디어
- 지역적 연결(Local Connectivity): 뉴런들이 입력 전체가 아닌 입력의 일부 영역에만 연결됩니다.
- 가중치 공유(Weight Sharing): 동일한 특징 추출기(필터/커널)를 입력 이미지의 여러 위치에 적용하여 학습해야 할 파라미터(가중치) 수를 획기적으로 줄입니다.
2. CNN의 주요 구성 요소
CNN은 크게 특징 추출(Feature Extraction) 부분과 분류(Classification) 부분으로 나뉩니다. 특징 추출 부분은 여러 개의 계층(Layer)으로 구성됩니다.

2.1. 합성곱 계층 (Convolutional Layer, Conv Layer)
CNN의 핵심입니다. 입력 이미지에 **필터(Filter) 또는 커널(Kernel)**을 적용하여 특징을 추출합니다.
- 필터 (Filter / Kernel): 학습 가능한 가중치 행렬입니다. 필터는 이미지 위를 일정 간격으로 이동(슬라이딩)하며 입력 이미지의 지역적 특징(가장자리, 선, 색상 등)을 감지합니다.
- 합성곱 연산 (Convolution): 필터가 이미지의 일정 영역과 겹쳐지는 동안 원소별 곱셈을 수행하고 그 결과를 모두 더하여 하나의 출력 값(뉴런)을 만듭니다.
- 특징 맵 (Feature Map): 합성곱 연산의 결과로 생성된 출력 행렬입니다. 입력 이미지에 필터가 적용되어 어떤 특징이 어디에 있는지 나타냅니다.
2.2. 활성화 함수 (Activation Function)
합성곱 계층의 출력(특징 맵)에 비선형성을 추가하는 함수입니다.
- ReLU (Rectified Linear Unit): $\text{max}(0, x)$ 함수를 사용하며, 딥러닝에서 가장 흔하게 사용됩니다. 이는 모델이 복잡한 비선형 관계를 학습할 수 있도록 합니다.
2.3. 풀링 계층 (Pooling Layer)
특징 맵의 크기를 줄이고, 노이즈에 강인하며, 특징의 위치 변화에 덜 민감하게 만드는 역할을 합니다.
- Max Pooling (최대 풀링): 특정 영역 내에서 가장 큰 값만 추출하여 특징 맵의 크기를 축소합니다. (가장 강한 특징만 남김)
- Average Pooling (평균 풀링): 특정 영역 내의 모든 값의 평균을 계산하여 크기를 축소합니다.
2.4. 완전 연결 계층 (Fully Connected Layer, FC Layer)
특징 추출 단계를 거쳐 추출된 특징들을 기반으로 최종적인 분류를 수행하는 부분입니다.
- 이전 계층에서 평탄화(Flatten)된 특징 벡터를 입력받아 일반적인 다층 퍼셉트론(MLP)처럼 작동합니다.
- 최종 출력은 분류하려는 클래스의 개수와 동일합니다. 예를 들어, 개/고양이/새를 분류한다면 출력 뉴런은 3개가 됩니다.
3. CNN의 학습 및 장점
3.1. 학습 원리
CNN은 다른 신경망과 마찬가지로 역전파(Backpropagation) 알고리즘을 사용하여 학습합니다. 예측 결과와 실제 정답 간의 오차(Loss)를 계산하고, 이 오차를 줄이는 방향으로 필터(커널)의 가중치와 FC 계층의 가중치를 업데이트합니다.
3.2. CNN의 주요 장점
- 파라미터 수 절감: 가중치 공유 덕분에 학습해야 할 파라미터 수가 매우 적습니다.
- 지역적 특징 추출: 합성곱 연산을 통해 이미지의 지역적 특징을 효과적으로 감지하고 계층적으로 추상화할 수 있습니다.
- 이동 불변성(Translation Invariance): 풀링 계층 덕분에 물체가 이미지의 어느 위치에 있든 동일한 특징으로 인식할 가능성이 높아집니다.
- 우수한 성능: 이미지 인식, 객체 탐지, 분할 등 시각 데이터가 필요한 거의 모든 분야에서 최고의 성능을 보이고 있습니다
합성곱 (Convolution)
합성곱은 CNN에서 이미지의 특징을 추출하는 핵심 연산입니다.
정의 및 원리
- 필터/커널 (Filter/Kernel): 학습 가능한 가중치 행렬(작은 행렬)입니다. 이 필터가 이미지의 지역적 특징 (예: 수직선, 수평선, 색상 변화)을 감지하는 역할을 합니다.
- 연산: 필터가 입력 이미지 위를 일정한 스트라이드(Stride) 간격으로 이동하면서, 필터가 겹치는 이미지 영역과 필터의 원소를 원소별로 곱한 후 모두 더하는 연산을 수행합니다.
- 출력: 이 연산의 결과로 **특징 맵(Feature Map, 또는 활성화 맵)**이라는 새로운 행렬이 생성됩니다. 특징 맵의 각 뉴런은 입력 이미지의 특정 영역에서 필터가 감지한 특징의 강도를 나타냅니다.

2. 패딩 (Padding)
패딩은 합성곱 연산 전에 입력 이미지의 주변에 픽셀을 추가하여 이미지 크기를 조절하는 기법입니다.
사용 목적
- 출력 크기 유지: 합성곱 연산을 반복하면 이미지의 크기가 점차 줄어들어 정보 손실이 발생합니다. 패딩을 통해 출력 특징 맵의 크기를 입력과 동일하게 유지할 수 있습니다 (이 경우 Same Padding이라고 함).
- 경계 정보 보존: 이미지의 모서리나 가장자리에 있는 픽셀은 필터와 접촉하는 횟수가 중앙 픽셀보다 적어 정보가 덜 추출될 수 있습니다. 패딩을 추가하면 경계 픽셀도 충분히 연산에 참여하게 되어 정보 손실을 줄일 수 있습니다.
종류
- Zero Padding: 가장 일반적인 방법으로, 이미지 주변에 0 값의 픽셀을 추가합니다.
3. 풀링 (Pooling)
풀링은 합성곱 계층과 활성화 함수를 통과한 특징 맵의 크기를 줄이는 연산입니다.
사용 목적
- 파라미터 및 연산량 감소: 특징 맵의 크기를 줄여 다음 계층으로 전달되는 데이터의 양을 감소시키고, 이에 따라 학습해야 할 파라미터 수를 줄여 모델의 효율성을 높입니다.
- 과적합 방지: 모델의 복잡도를 낮추어 과적합(Overfitting)을 방지하는 데 도움을 줍니다.
- 위치 불변성 확보: 특징의 미세한 위치 변화에 모델이 덜 민감하게 만듭니다. 풀링 영역 내에서 가장 중요한 특징(최댓값)만 남기므로, 특징이 조금 이동하더라도 결과 값에는 큰 변화가 없습니다.
종류
- Max Pooling (최대 풀링): 풀링 영역(윈도우) 내에서 가장 큰 값을 선택하여 출력합니다. 이 방법이 가장 널리 사용되며, 영역 내에서 특징이 가장 강한 값만 남깁니다.
- Average Pooling (평균 풀링): 풀링 영역 내의 평균값을 계산하여 출력합니다.
1. Flatten Layer (평탄화 계층)
Flatten Layer는 특징 추출부(합성곱 및 풀링 계층)의 출력을 **분류부(Fully Connected Layer)**가 이해할 수 있는 형태로 변환하는 역할을 합니다.
- 역할: CNN의 데이터를 Fully Connected Neural Network의 형태로 변환하는 계층입니다.
- 작업: 입력 데이터의 Shape(형태) 변경만 수행하며, 어떤 연산이나 학습 가능한 가중치(weight)를 포함하지 않습니다.
- 변환 예시:
- 입력 Shape이 (8, 8, 10) (높이 8, 너비 8, 채널 수 10의 특징 맵)이라면,
- Flatten이 적용된 출력 Shape은 이들을 일렬로 펼친 (640,1)이 됩니다.
2. Softmax Layer (소프트맥스 계층)
Softmax Layer는 Flatten Layer에서 나온 특징 벡터를 입력으로 사용하여 최종적인 분류 결과를 출력하는 계층입니다.
- 역할: Flatten Layer의 출력을 입력으로 사용하여, 분류하고자 하는 분류 클래스에 매칭시키는 계층입니다.
- 작업: 분류 작업을 실행하여 각 클래스에 속할 확률을 결과로 얻게 됩니다.
- 변환 예시:
- 입력 Shape이 $(640, 1)$ 이고, 분류 클래스가 10개인 경우,
- Softmax가 적용된 출력 Shape은 **$(10, 1)$**이 됩니다. (각 클래스에 대한 확률)
- 파라미터 수 계산:
- 입력 노드 수(Flatten 출력)는 640개, 출력 노드 수(클래스 개수)는 10개이므로,
- 이때 **가중치(Weight)**의 Shape은 $(10, 640)$이 되며,
- Softmax Layer의 총 파라미터(Parameter) 수는 10 * 640 = 6400개 (바이어스(Bias)를 제외한 수)가 됩니다.
Softmax 함수는 최종 출력 값을 0과 1 사이의 값으로 변환하고, 그 합이 1이 되도록 정규화하여 확률 분포 형태로 출력해 줍니다
'데이터 분석 > 머신러닝, 딥러닝' 카테고리의 다른 글
| Cosine 유사도 (0) | 2025.11.28 |
|---|---|
| RNN(Recurrent Neural Networks) (0) | 2025.11.27 |
| LDA (Latent Dirichlet Allocation) (0) | 2025.11.26 |
| LSA (Latent Semantic Analysis) (0) | 2025.11.26 |
| 나이브 베이즈 (MultinomialNB) (0) | 2025.11.20 |