6-1. 합성곱 신경망 (CNN) 기초

1. 합성곱 신경망 (CNN) 소개

합성곱 신경망(Convolutional Neural Network, CNN)은 딥러닝 분야에서 이미지, 비디오, 음성 등 다양한 형태의 데이터를 분석하는 데 널리 사용되는 딥러닝 모델입니다. 특히, 이미지 인식 분야에서 획기적인 발전을 이루었으며, 현재는 자연어 처리, 시계열 데이터 분석 등 다양한 분야로 그 활용 범위를 넓혀가고 있습니다. CNN은 기존의 완전 연결 신경망(Fully Connected Neural Network, FCN)과는 다른 구조를 가지며, 이미지의 특징을 효과적으로 추출하고 학습할 수 있도록 설계되었습니다. 이러한 차이점은 CNN이 이미지 처리에서 뛰어난 성능을 발휘하는 핵심 이유입니다.

1) 왜 CNN인가?

기존의 FCN은 이미지 데이터를 처리하는 데 몇 가지 단점을 가지고 있습니다.

  • 매개변수 폭증: 이미지의 각 픽셀을 입력으로 사용하면, 이미지 크기가 커질수록 필요한 가중치(매개변수)의 수가 기하급수적으로 증가합니다. 이는 모델의 복잡성을 증가시키고, 과적합(overfitting) 문제를 야기할 수 있습니다.
  • 공간적 정보 손실: FCN은 입력 이미지의 픽셀 간의 공간적 관계를 고려하지 않습니다. 즉, 이미지 내에서 인접한 픽셀들이 갖는 의미 있는 관계를 학습하지 못합니다. 예를 들어, 고양이의 얼굴을 인식하는 데 있어서 눈, 코, 입의 상대적인 위치 정보는 매우 중요하지만, FCN은 이러한 정보를 학습하지 못합니다.

CNN은 이러한 문제를 해결하기 위해 다음과 같은 특징을 가집니다.

  • 지역 연결 (Local Connectivity): 각 뉴런이 입력의 일부분(지역)에만 연결됩니다. 이를 통해 매개변수의 수를 줄이고, 계산 효율성을 높입니다.
  • 가중치 공유 (Weight Sharing): 동일한 필터(가중치)를 이미지 전체에 적용합니다. 이는 이미지 내에서 동일한 특징을 감지하는 데 사용되며, 매개변수 수를 더욱 줄여줍니다.
  • 풀링 (Pooling): 특징 맵의 크기를 줄이고, 불변성을 확보합니다. 즉, 이미지의 작은 변화(예: 위치, 회전)에 덜 민감하게 반응하도록 합니다.

이러한 특징들을 통해 CNN은 이미지의 특징을 효과적으로 추출하고, 더 적은 매개변수로도 높은 성능을 달성할 수 있습니다.

2. 합성곱 연산 (Convolution)

합성곱 연산은 CNN의 핵심 구성 요소입니다. 합성곱 연산은 입력 데이터와 필터(filter) 또는 커널(kernel)이라고 불리는 작은 크기의 가중치 행렬 간의 연산을 통해 특징 맵(feature map)을 생성합니다.

1) 합성곱 연산 과정

  1. 필터 정의: 필터는 이미지의 특징을 감지하는 역할을 합니다. 예를 들어, 가장자리(edge)를 감지하는 필터, 수평선(horizontal line)을 감지하는 필터 등을 만들 수 있습니다. 필터의 크기는 일반적으로 3x3, 5x5 등과 같이 작은 크기를 사용합니다.
  2. 슬라이딩 윈도우: 필터를 입력 이미지 위에서 이동(슬라이딩)시키면서 각 위치에서 합성곱 연산을 수행합니다.
  3. 원소별 곱셈 및 합: 필터와 해당 위치의 입력 픽셀 값을 원소별로 곱한 후, 모든 곱셈 결과를 더합니다. 이 값은 해당 위치의 특징 맵의 값으로 사용됩니다.
  4. 특징 맵 생성: 모든 위치에서 합성곱 연산을 수행하여 특징 맵을 생성합니다. 특징 맵은 입력 이미지에서 필터에 의해 감지된 특징의 활성화 정도를 나타냅니다.

합성곱 연산 과정 설명 뒤

2) 수식 표현

합성곱 연산은 다음과 같은 수식으로 표현할 수 있습니다.

$$ (I * K)(x, y) = \sum_{i=0}^{H_k-1} \sum_{j=0}^{W_k-1} I(x+i, y+j) \cdot K(i, j) $$

여기서,

  • $I$는 입력 이미지, $K$는 필터, $H_k$와 $W_k$는 필터의 높이와 너비, $(x, y)$는 특징 맵의 픽셀 위치를 나타냅니다.

3) 채널 (Channel)

컬러 이미지(RGB)는 3개의 채널(Red, Green, Blue)을 갖습니다. 각 채널은 이미지의 특정 색상 정보를 담고 있습니다. 합성곱 연산은 각 채널에 대해 개별적으로 수행된 후, 채널별 결과를 합산하여 최종 특징 맵을 생성합니다.

채널 설명 뒤

4) 스트라이드 (Stride)와 패딩 (Padding)

  • 스트라이드 (Stride): 필터가 입력 이미지 위를 이동하는 간격입니다. 스트라이드가 1이면 한 픽셀씩 이동하고, 스트라이드가 2이면 두 픽셀씩 이동합니다. 스트라이드가 클수록 특징 맵의 크기는 작아집니다.
  • 패딩 (Padding): 입력 이미지의 가장자리에 추가적인 픽셀을 덧붙이는 기법입니다. 주로 0으로 채워집니다. 패딩은 특징 맵의 크기를 조절하고, 가장자리 정보의 손실을 방지하는 데 사용됩니다.

3. 풀링 (Pooling)

풀링은 특징 맵의 크기를 줄이고, 모델의 불변성을 높이는 데 사용되는 연산입니다. 풀링은 일반적으로 합성곱 연산 후에 수행됩니다.

1) 풀링의 종류

  • 최대 풀링 (Max Pooling): 풀링 영역 내에서 가장 큰 값을 선택합니다. 특징의 존재 여부를 강조하는 데 효과적입니다.
  • 평균 풀링 (Average Pooling): 풀링 영역 내의 평균값을 계산합니다. 특징의 전반적인 정보를 유지하는 데 도움이 됩니다.

풀링 종류 설명 뒤

2) 풀링의 효과

  • 차원 축소: 풀링 연산은 특징 맵의 크기를 줄여, 모델의 계산량을 감소시킵니다.
  • 불변성 확보: 풀링은 이미지의 작은 변화(예: 위치, 회전)에 덜 민감하게 반응하도록 합니다. 즉, 모델이 특징의 존재 여부에 집중하고, 세부적인 위치 정보에 덜 의존하도록 합니다.
  • 과적합 방지: 모델의 매개변수 수를 줄여 과적합을 방지하는 데 기여합니다.

4. CNN 구조

일반적인 CNN 구조는 여러 개의 합성곱 계층(Convolutional Layer)과 풀링 계층(Pooling Layer)이 번갈아 가며 쌓여 있으며, 마지막에는 완전 연결 계층(Fully Connected Layer)이 위치합니다.

1) 합성곱 계층 (Convolutional Layer)

합성곱 계층은 합성곱 연산을 수행하는 계층입니다. 여러 개의 필터를 사용하여 입력 이미지를 처리하고, 특징 맵을 생성합니다. 합성곱 계층의 출력은 활성화 함수(예: ReLU)를 통과하여 비선형성을 추가합니다.

2) 풀링 계층 (Pooling Layer)

풀링 계층은 특징 맵의 크기를 줄이고, 모델의 불변성을 높이는 역할을 합니다. 최대 풀링 또는 평균 풀링을 사용합니다.

3) 완전 연결 계층 (Fully Connected Layer)

완전 연결 계층은 앞선 계층에서 추출된 특징을 사용하여 최종적인 분류 또는 회귀 작업을 수행합니다. 완전 연결 계층의 입력은 일반적으로 풀링 계층의 출력을 1차원 벡터로 변환한 것입니다.

CNN 구조 설명 뒤

4) CNN 학습 과정

  1. 순전파 (Forward Propagation): 입력 이미지를 CNN에 통과시켜 출력(예: 클래스 확률)을 계산합니다.
  2. 손실 계산 (Loss Calculation): 예측된 출력과 실제 정답 간의 손실(오차)을 계산합니다.
  3. 역전파 (Backward Propagation): 손실을 기반으로 각 계층의 가중치를 업데이트합니다. 경사 하강법(Gradient Descent)과 같은 최적화 알고리즘을 사용합니다.
  4. 반복: 위 과정을 반복하여 모델을 학습시킵니다.

5. CNN의 응용

CNN은 다양한 분야에서 괄목할 만한 성과를 거두고 있습니다.

  • 이미지 분류 (Image Classification): 이미지에 포함된 객체의 종류를 식별합니다.
  • 객체 탐지 (Object Detection): 이미지 내에서 객체의 위치와 종류를 동시에 식별합니다.
  • 이미지 분할 (Image Segmentation): 이미지의 각 픽셀을 특정 객체에 할당합니다.
  • 얼굴 인식 (Facial Recognition): 얼굴의 특징을 분석하여 개인을 식별합니다.
  • 자연어 처리 (Natural Language Processing): 텍스트 데이터를 분석하고 처리합니다 (예: 텍스트 분류, 감성 분석).
  • 의료 영상 분석 (Medical Image Analysis): 의료 영상(X-ray, MRI 등)을 분석하여 질병을 진단합니다.

6. 결론

본 포스트에서는 합성곱 신경망(CNN)의 기본적인 개념과 구조에 대해 살펴보았습니다. CNN은 이미지 처리 분야에서 혁신적인 발전을 이끌었으며, 그 중요성은 앞으로 더욱 커질 것입니다. 합성곱 연산, 풀링, 그리고 다양한 계층의 조합을 통해 CNN은 이미지의 특징을 효과적으로 학습하고, 다양한 응용 분야에서 뛰어난 성능을 발휘합니다. 다음 포스트에서는 LeNet, AlexNet과 같은 대표적인 CNN 모델들을 자세히 알아보도록 하겠습니다.

비슷한 글 추천

Comments (0)

No comments yet. Be the first to comment!