합성곱 신경망 (convolutional neural network, CNN)

컴퓨터과학·AI
한 줄 정의: 작은 필터를 이미지 위에서 이동시키며 선, 모서리, 무늬 같은 지역적 특징을 단계적으로 뽑아내는 인공신경망 구조입니다.

쉽게 풀면

돋보기로 사진을 한 구석부터 조금씩 옮겨가며 살펴본다고 상상해보세요. 처음에는 돋보기 안에 "선"이나 "모서리" 같은 아주 단순한 무늬만 보이지만, 여러 번 훑고 나면 "눈", "코", "귀" 같은 부위가 보이고, 더 나아가면 "고양이 얼굴"처럼 큰 패턴이 보입니다. CNN은 바로 이렇게 작동합니다. "필터"라는 작은 창을 이미지 전체에 슬라이딩하면서 각 위치의 특징을 뽑아내고, 이 과정을 여러 층에 걸쳐 반복하면서 단순한 무늬에서 점점 복잡한 형태를 인식하는 능력을 갖추게 됩니다. 사진 전체를 한 번에 통째로 보는 것이 아니라, 국소적인 부분부터 차근차근 조합해서 이해하는 방식입니다.

왜 중요한가

CNN은 이미지 분류, 객체 검출, 의료 영상 분석 등 시각 정보를 다루는 연구 대부분의 기본 구성 요소로 자리 잡았습니다. 사람이 일일이 특징을 설계하지 않아도 데이터로부터 자동으로 유용한 시각 패턴을 학습할 수 있다는 점에서, 딥러닝이 컴퓨터 비전 분야를 주도하게 된 핵심 전환점으로 논문에서 자주 언급됩니다. 최근에는 트랜스포머 기반 구조와의 성능 비교나 결합 방식도 활발한 연구 주제입니다.

논문에서는 이렇게 쓰입니다

"입력 영상은 5개의 합성곱 층(convolutional layer)과 2개의 완전연결 층으로 구성된 CNN을 통과하여 최종적으로 10개의 클래스 중 하나로 분류되었다."

이 문장은 "이미지가 여러 단계의 특징 추출 과정을 거친 뒤, 마지막에 10가지 범주 중 어디에 속하는지 판단하는 데 사용되었다"는 뜻입니다.

"경량화를 위해 표준 합성곱을 깊이별 분리 합성곱(depthwise separable convolution)으로 대체하여 연산량을 크게 줄이면서도 정확도 저하를 최소화하였다."

모바일이나 임베디드 환경을 겨냥한 연구에서는 CNN의 연산량을 줄이는 경량화 기법이 중요한데, 필터 연산 방식을 바꾸어 계산 비용을 낮추는 시도를 설명하는 문장입니다.

"CNN 기반 인코더로 추출한 특징 맵을 종양 영역 분할(segmentation) 모델의 입력으로 사용하여 병변 경계를 픽셀 단위로 예측하였다."

의료 영상 분석 논문에서는 CNN이 단순 분류를 넘어, 이미지 내 특정 영역(장기, 병변 등)의 경계를 픽셀 단위로 구분해내는 데도 널리 쓰인다는 의미입니다.

조금 더 깊게 보면

CNN의 성능은 필터 크기, 스트라이드, 풀링(pooling) 방식, 층의 깊이 같은 구조적 선택에 크게 좌우되며, 각 층을 지날수록 수용 영역(receptive field)이 넓어지면서 더 넓은 범위의 맥락을 반영하게 됩니다. 층이 깊어질수록 학습이 어려워지는 문제를 해결하기 위해 잔차 연결(residual connection) 같은 구조가 널리 쓰이며, 배치 정규화(batch normalization) 등의 기법이 학습 안정성을 높이는 데 함께 사용됩니다. 최근 논문에서는 CNN의 지역적 특징 추출 능력과 트랜스포머의 전역적 관계 학습 능력을 결합한 하이브리드 구조도 자주 다루어집니다.

주의할 점

CNN은 이미지처럼 격자 구조를 가진 데이터(가까이 있는 픽셀끼리 관련이 깊은 데이터)에 특히 강점을 보이는 구조로, 순서가 중요한 문장 데이터에는 트랜스포머나 순환 구조가 더 널리 쓰이는 경우가 많습니다. 또한 필터 개수나 층의 깊이 같은 설정은 하이퍼파라미터 튜닝을 통해 정해야 하며, 데이터가 적으면 과적합되기 쉬워 데이터증강을 함께 활용하는 경우가 많습니다.

관련 용어