5-1. 합성곱 신경망 (CNN) 기초: Convolution, Pooling
title: "date: 2026-01-06" category: '' tags: [] summary:
1. 합성곱 신경망(CNN)의 등장 배경
이미지, 비디오, 음성 등 다양한 형태의 데이터를 다루는 딥러닝 모델 중, 특히 이미지 인식 분야에서 괄목할 만한 성과를 거둔 모델이 바로 합성곱 신경망(Convolutional Neural Network, CNN)입니다. CNN은 기존의 완전 연결 신경망(Fully Connected Neural Network)이 가진 한계를 극복하고, 이미지의 특징을 효과적으로 추출하기 위한 독창적인 구조를 제시했습니다.
기존의 완전 연결 신경망은 이미지의 모든 픽셀을 입력으로 받아 처리합니다. 예를 들어, 28x28 픽셀의 흑백 이미지는 784개의 입력 노드를 가지게 됩니다. 이러한 구조는 이미지의 공간적 구조 정보를 무시하고, 각 픽셀 간의 관계를 학습하기 어렵다는 단점을 가지고 있었습니다.
-
문제점:
- 파라미터 폭증: 이미지 크기가 커질수록 필요한 파라미터의 수가 기하급수적으로 증가하여 과적합(Overfitting)의 위험이 높아집니다.
- 공간적 정보 손실: 픽셀 간의 위치 관계를 고려하지 않아 이미지 내 객체의 위치나 형태 정보를 효과적으로 학습하기 어렵습니다.
CNN은 이러한 문제점을 해결하기 위해 이미지의 지역적 특징(Local Feature)을 추출하고, 공간적 계층 구조(Spatial Hierarchy)를 학습하는 방식을 도입했습니다. 이를 통해 이미지 내 객체의 위치 변화나 형태 변형에 강인하며, 적은 파라미터로도 효율적인 학습이 가능하게 되었습니다.
2. 합성곱 연산(Convolution)의 이해
합성곱 신경망의 핵심 구성 요소 중 하나는 합성곱(Convolution) 연산입니다. 합성곱 연산은 입력 이미지에 필터(Filter) 또는 커널(Kernel)이라고 불리는 작은 크기의 행렬을 적용하여 이미지의 특징을 추출하는 과정입니다.
1) 합성곱 연산의 과정
합성곱 연산은 다음과 같은 단계로 진행됩니다.
- 필터 위치 선정: 필터는 입력 이미지의 왼쪽 상단에서 시작하여 오른쪽, 아래쪽으로 이동합니다.
- 원소별 곱셈: 필터와 필터가 겹치는 입력 이미지의 영역에 있는 각 픽셀 값을 곱합니다.
- 합: 곱해진 값들을 모두 더합니다.
- 출력: 더해진 값은
특징 맵(Feature Map)의 해당 위치에 저장됩니다. - 반복: 필터가 입력 이미지 전체를 스캔할 때까지 1~4단계를 반복합니다.

위 그림은 합성곱 연산의 과정을 시각적으로 보여줍니다. 필터가 입력 이미지 위를 이동하면서 각 위치에서 원소별 곱셈과 합 연산을 수행하여 특징 맵을 생성합니다.
2) 필터의 역할: 특징 추출
필터는 이미지의 특정 특징을 감지하도록 설계됩니다. 예를 들어, 수직선, 수평선, 대각선, 엣지 등과 같은 기본적인 패턴을 감지하는 필터가 존재합니다. 각 필터는 서로 다른 특징을 감지하도록 학습되며, 여러 개의 필터를 사용하면 다양한 특징을 추출할 수 있습니다.
3) 특징 맵(Feature Map)의 의미
합성곱 연산을 통해 생성된 특징 맵은 입력 이미지에서 감지된 특정 특징의 존재 여부와 강도를 나타냅니다. 특징 맵의 각 픽셀 값은 해당 위치에서 특정 특징이 얼마나 강하게 나타나는지를 의미합니다. 여러 개의 필터를 사용하면 여러 특징 맵을 얻을 수 있으며, 이는 이미지의 다양한 특징을 표현하는 데 기여합니다.
4) 수식 표현
합성곱 연산은 다음과 같은 수식으로 표현할 수 있습니다.
$$(I * K)(i, j) = \sum_{m=0}^{M-1} \sum_{n=0}^{N-1} I(i+m, j+n) \cdot K(m, n)$$
여기서:
- $I$는 입력 이미지,
- $K$는 필터,
- $(i, j)$는 특징 맵의 좌표,
- $M$과 $N$은 필터의 크기입니다.
5) 채널(Channel) 개념
컬러 이미지는 RGB(Red, Green, Blue) 세 개의 채널로 구성됩니다. 각 채널은 이미지의 색상 정보를 나타냅니다. 합성곱 연산에서는 입력 이미지의 채널 수에 맞춰 필터의 채널 수도 동일하게 설정됩니다. 예를 들어, RGB 이미지를 처리하는 경우, 필터도 RGB 채널을 가지게 됩니다. 각 채널별로 합성곱 연산을 수행한 후, 결과값을 모두 더하여 하나의 특징 맵을 생성합니다.
3. 풀링(Pooling) 연산의 이해
풀링 연산은 합성곱 연산을 통해 추출된 특징 맵의 크기를 줄이고, 불필요한 정보를 제거하여 모델의 일반화 성능을 향상시키는 역할을 합니다. 풀링은 특징 맵의 지역적인 정보를 요약하는 방식으로 작동하며, 주로 최대 풀링(Max Pooling)과 평균 풀링(Average Pooling)이 사용됩니다.
1) 풀링의 역할
- 차원 축소: 특징 맵의 크기를 줄여 계산량을 줄이고, 모델의 파라미터 수를 감소시킵니다.
- 불변성 확보: 이미지 내 객체의 위치 변화에 대한 불변성을 확보합니다. 즉, 객체의 위치가 조금 바뀌더라도 풀링 연산의 결과는 크게 변하지 않습니다.
- 과적합 방지: 과적합(Overfitting)의 위험을 줄여 모델의 일반화 성능을 향상시킵니다.
2) 최대 풀링(Max Pooling)
최대 풀링은 특정 영역 내에서 최댓값을 선택하는 방식입니다. 예를 들어, 2x2 풀링을 사용하는 경우, 특징 맵의 2x2 영역 내에서 가장 큰 값을 선택하여 풀링된 특징 맵에 저장합니다.

위 그림은 2x2 최대 풀링 연산의 예시를 보여줍니다. 각 2x2 영역에서 가장 큰 값(굵은 글씨)이 선택되어 풀링된 특징 맵을 구성합니다.
3) 평균 풀링(Average Pooling)
평균 풀링은 특정 영역 내에서 평균값을 계산하는 방식입니다. 2x2 평균 풀링의 경우, 특징 맵의 2x2 영역 내의 모든 픽셀 값의 평균을 계산하여 풀링된 특징 맵에 저장합니다.
4) 풀링 연산의 장점
- 계산량 감소: 특징 맵의 크기를 줄여 후속 레이어의 계산량을 줄입니다.
- 강력한 특징 추출: 중요한 특징을 강조하고, 노이즈를 제거하여 특징의 강건성을 높입니다.
- 위치 변화에 대한 불변성: 이미지 내 객체의 위치가 약간 바뀌더라도 주요 특징은 유지됩니다.
4. CNN의 구조와 작동 원리
CNN은 합성곱 층(Convolutional Layer), 풀링 층(Pooling Layer), 완전 연결 층(Fully Connected Layer)으로 구성됩니다.
1) 합성곱 층
합성곱 층은 여러 개의 필터를 사용하여 입력 이미지의 특징을 추출합니다. 각 필터는 이미지의 특정 특징을 감지하도록 학습되며, 여러 개의 필터를 사용하면 다양한 특징을 추출할 수 있습니다. 합성곱 층의 출력은 여러 개의 특징 맵으로 구성됩니다.
2) 활성화 함수(Activation Function)
합성곱 층과 풀링 층 사이에 활성화 함수를 적용하여 비선형성을 추가합니다. 활성화 함수는 신경망이 복잡한 패턴을 학습할 수 있도록 돕습니다.
- ReLU(Rectified Linear Unit): 가장 일반적으로 사용되는 활성화 함수로, 입력값이 0보다 작으면 0을, 0보다 크면 입력값을 그대로 출력합니다.
- Sigmoid: 입력값을 0과 1 사이의 값으로 변환합니다.
- Tanh: 입력값을 -1과 1 사이의 값으로 변환합니다.
3) 풀링 층
풀링 층은 특징 맵의 크기를 줄이고, 불필요한 정보를 제거하여 모델의 일반화 성능을 향상시킵니다. 최대 풀링 또는 평균 풀링을 사용하여 특징 맵의 지역적인 정보를 요약합니다.
4) 완전 연결 층
완전 연결 층은 합성곱 및 풀링 층을 통해 추출된 특징을 사용하여 최종적인 분류 또는 회귀 작업을 수행합니다. 완전 연결 층의 각 뉴런은 이전 층의 모든 뉴런과 연결되어 있으며, 가중치와 편향을 학습하여 입력 데이터를 기반으로 예측을 수행합니다.
5) CNN의 전체 구조
- 입력: 이미지 데이터를 입력합니다.
- 합성곱 & 활성화: 하나 이상의 합성곱 층과 활성화 함수를 적용하여 특징을 추출합니다.
- 풀링: 풀링 층을 통해 특징 맵의 크기를 줄이고, 불필요한 정보를 제거합니다.
- 반복: 2, 3단계를 여러 번 반복합니다.
- 완전 연결: 추출된 특징을 완전 연결 층에 입력하여 최종적인 예측을 수행합니다.
- 출력: 예측 결과를 출력합니다.

위 그림은 CNN의 일반적인 아키텍처를 보여줍니다. 입력 이미지에서 시작하여 여러 개의 합성곱 및 풀링 층을 거쳐 특징을 추출하고, 마지막으로 완전 연결 층을 통해 최종 예측을 수행합니다.
5. CNN의 응용 사례
CNN은 이미지 인식 분야에서 괄목할 만한 성과를 거두었으며, 다음과 같은 다양한 응용 분야에서 활용되고 있습니다.
- 이미지 분류(Image Classification): 이미지 내 객체의 종류를 분류합니다.
- 객체 탐지(Object Detection): 이미지 내 객체의 위치와 종류를 탐지합니다.
- 이미지 분할(Image Segmentation): 이미지의 각 픽셀을 특정 객체에 할당합니다.
- 얼굴 인식(Face Recognition): 얼굴 특징을 분석하여 개인을 식별합니다.
- 자율 주행: 주변 환경을 인식하고, 차량의 주행을 제어합니다.
- 의료 영상 분석: X-ray, MRI, CT 스캔 등의 의료 영상을 분석하여 질병을 진단합니다.
6. 주의사항과 트러블슈팅
1) 과적합(Overfitting)
CNN은 많은 수의 파라미터를 가지므로 과적합의 위험이 높습니다. 과적합을 방지하기 위해 다음과 같은 기법을 사용할 수 있습니다.
- 데이터 증강(Data Augmentation): 회전, 이동, 크기 조절 등 다양한 변형을 통해 훈련 데이터의 양을 늘립니다.
- 드롭아웃(Dropout): 훈련 과정에서 무작위로 일부 뉴런을 비활성화하여 모델의 복잡도를 줄입니다.
- L1/L2 정규화(Regularization): 가중치에 대한 패널티를 추가하여 가중치의 크기를 제한합니다.
2) 기울기 소실(Vanishing Gradient)
깊은 신경망에서는 기울기 소실 문제가 발생할 수 있습니다. 기울기 소실은 역전파 과정에서 기울기가 0에 가까워져 학습이 제대로 진행되지 않는 현상입니다. 이를 해결하기 위해 다음과 같은 기법을 사용할 수 있습니다.
- ReLU 활성화 함수 사용: ReLU는 기울기 소실 문제를 완화하는 데 효과적입니다.
- 배치 정규화(Batch Normalization): 각 층의 입력값을 정규화하여 학습 속도를 향상시키고, 기울기 소실 문제를 완화합니다.
- 잔차 연결(Residual Connection): 깊은 신경망의 학습을 돕고, 기울기 소실 문제를 완화합니다.
3) 하이퍼파라미터 튜닝
CNN의 성능은 하이퍼파라미터(필터 크기, 필터 개수, 풀링 크기, 학습률 등)에 따라 크게 달라집니다. 따라서, 최적의 성능을 얻기 위해서는 하이퍼파라미터 튜닝이 필수적입니다.
- 검증 데이터 사용: 훈련 데이터를 사용하여 모델을 학습하고, 검증 데이터를 사용하여 하이퍼파라미터를 조정합니다.
- 격자 탐색(Grid Search) 또는 무작위 탐색(Random Search): 하이퍼파라미터의 최적값을 탐색하기 위한 방법입니다.
7. 결론
본 포스트에서는 합성곱 신경망(CNN)의 핵심 구성 요소인 합성곱 연산과 풀링 연산의 개념, 작동 원리, 응용 사례, 주의사항 등을 살펴보았습니다. CNN은 이미지 인식 분야에서 혁신적인 발전을 이루었으며, 앞으로도 다양한 분야에서 널리 활용될 것으로 기대됩니다. CNN에 대한 이해는 딥러닝 기술을 활용하는 데 있어서 매우 중요한 기반이 될 것입니다.
비슷한 글 추천
3-7. 경사 하강법의 변형: Momentum, AdamW
경사 하강법의 단점을 보완하기 위한 모멘텀, AdamW 등 다양한 최적화 알고리즘에 대해 설명하고, 각 알고리즘의 특징과 사용 사례를 비교합니다.
1-5. 딥러닝 개발 환경 설정: GPU, CUDA, cuDNN
딥러닝 연구 및 실습을 위한 GPU, CUDA, cuDNN 설치 및 설정 방법, 환경 점검 방법을 다룹니다.
1-4. 딥러닝의 주요 응용 분야: 이미지, 음성, 자연어 처리
딥러닝이 활발하게 활용되는 주요 분야(이미지 인식, 음성 인식, 자연어 처리)의 대표적인 사례를 소개합니다.
4-4. MNIST 손글씨 숫자 인식: TensorFlow/Keras 실습
--- title: "date: 2026-01-06" category: '' tags: [] summary: --- 1. MNIST 손글씨 숫자 인식 문제 소개 MNIST(Modified National Institute of Standards and...
Comments (0)
No comments yet. Be the first to comment!
Please to write a comment.