합성곱 신경망(Convolutional Neural Network, CNN)은 딥러닝의 대표적인 인공신경망 모델 중 하나입니다. CNN은 이미지, 음성, 텍스트 등과 같은 다양한 데이터를 처리하며, 특히 이미지 처리 분야에서 높은 성능을 발휘합니다.
CNN은 학습을 통해 필터의 가중치를 최적화하여 입력 이미지의 특징을 잘 추출할 수 있는 모델을 학습합니다. 이를 통해 이미지 분류, 객체 검출, 이미지 분할 등 다양한 컴퓨터 비전 문제를 해결할 수 있습니다.
CNN은 특히 이미지 분류, 객체 탐지, 세그멘테이션 등의 분야에서 뛰어난 성능을 보여줍니다. 예를 들어, ImageNet 데이터셋에서는 2012년에는 오류율이 25% 이상이었던 분류 문제를 2014년에는 6.7%까지 낮출 수 있었으며, 이는 CNN 모델의 발전과 밀접한 관련이 있습니다.
원리
CNN은 컨볼루션(Convolution) 레이어, 풀링(Pooling) 레이어, 완전 연결 레이어(Fully Connected Layer)로 구성됩니다.
컨볼루션 레이어 (Convolution Layer)
컨볼루션 레이어는 입력 이미지의 특징을 추출하기 위해 커널(kernel)을 사용하여 이미지를 필터링하는 역할을 합니다. CNN에서 가장 중요한 계층입니다. 여기서 합성곱이 일어나죠.
컨볼루션 레이어는 필터(커널)을 사용하여 입력 이미지를 슬라이딩하면서 연산을 수행합니다. 필터는 작은 크기의 행렬로, 이미지와 같은 2D 데이터에서 특정한 패턴을 찾아냅니다. 슬라이딩하면서 필터와 겹치는 부분의 값을 곱하고 합산하여 새로운 특징 맵(Feature Map)을 생성합니다. 이 과정을 통해 입력 이미지의 특징을 추출할 수 있습니다.
이 과정이 다른 신경망모델과 CNN을 다르게 만들어줍니다. CNN은 이미지를 작은 단위인 픽셀이나 특정 영역으로 나누어 각각의 영역에서 특징을 추출하는데 이때 각 영역에서 추출한 특징들은 뒤이어 다른 계층에서 결합되어 전체 이미지의 특징을 나타내는 벡터를 만듭니다.
기존의 모델들은 각 픽셀의 값을 전부 1차원으로 펼쳐서 데이터의 공간적 모습을 무시하고 지역적 특징을 못 잡아내는데, CNN은 겹치는 부분의 값을 합성곱 연산함으로써 지역적인 특징을 잡아낼 수 있습니다.
풀링 레이어 (Pooling Layer)
풀링 레이어는 특징 맵을 다운샘플링하여 이미지의 크기를 줄이고, 중요한 정보를 강조하는 등의 역할을 합니다.
Max Pooling은 입력 영역에서 가장 큰 값을 선택하고, Average Pooling은 입력 영역의 평균 값을 선택합니다. 이를 통해 특징 맵의 크기를 줄이고 불필요한 정보를 제거하여 계산량을 감소시킵니다.
Fully Connected Layer
완전 연결 레이어는 컨볼루션 레이어와 풀링 레이어에서 추출된 특징을 기반으로 최종적인 분류를 수행하는 레이어입니다.
Flatten된 특징 맵을 입력으로 받아들이고, 이를 기반으로 분류를 수행합니다. Flatten은 특징 맵을 1D 벡터 형태로 펼치는 연산입니다.