합성곱 신경망(CNN)란?

작은 필터(커널)를 입력 위에서 옮겨 가며 곱의 합을 계산하는 합성곱 층을 중심으로, 풀링 층 등을 쌓은 신경망. 같은 필터를 입력 전체에서 재사용하므로 완전 연결층에 비해 파라미터가 적고, 이미지의 윤곽이나 무늬 같은 국소적인 특징을 위치에 관계없이 추출할 수 있다. 이미지 인식, 물체 검출, 음성 처리 등에 사용된다.

일본어 명칭: 畳み込みニューラルネットワーク(CNN)

합성곱 신경망(CNN)은(는) AI 하드웨어·소프트웨어 스택, 머신러닝의 기초 등 2개 분야의 연습 문제 2개에 나와요.

분야: 머신러닝의 기초

합성곱 층의 계산

합성곱 층에서는 예를 들어 3×3 필터를 이미지의 왼쪽 위부터 일정한 간격(스트라이드)으로 옮기면서, 겹친 화소와 필터 가중치의 곱의 합을 계산하여 특성 맵을 만듭니다. 출력의 크기는 입력의 크기 N, 필터의 크기 F, 패딩 P, 스트라이드 S를 사용하여 (N + 2P − F) ÷ S + 1입니다. 하나의 층에서는 여러 필터를 사용하며, 각각이 세로 윤곽, 가로 윤곽, 색의 변화 등 서로 다른 특징을 추출합니다. 깊은 층일수록 눈이나 바퀴 같은 크고 복잡한 특징에 반응하게 됩니다.

파라미터가 적은 이유

3채널 입력에 3×3 필터를 64개 사용하는 합성곱 층의 파라미터는 3 × 3 × 3 × 64 + 64 = 1792개로, 입력 이미지의 크기와 관계가 없습니다. 같은 32×32×3 이미지를 출력 64개의 완전 연결층에 연결하면 32 × 32 × 3 × 64 + 64 = 196672개의 파라미터가 필요합니다. 가까운 화소만 보는 것(국소 연결)과 같은 필터를 전체에서 재사용하는 것(가중치 공유)에 의해, 적은 파라미터로 효율적으로 학습할 수 있습니다.

풀링과 전체 구성

풀링 층은 2×2 등의 영역마다 최댓값(최대 풀링)이나 평균값을 취해 데이터를 작게 하여, 계산을 줄이는 동시에 위치의 작은 어긋남의 영향을 덜 받게 합니다. 전형적인 CNN은 합성곱 층과 활성화 함수(ReLU 등)와 풀링 층의 묶음을 몇 단 쌓고, 마지막에 완전 연결층과 소프트맥스 함수로 분류합니다. 층을 건너뛰어 신호를 전달하는 잔차 연결을 사용하면 100층을 넘는 깊은 네트워크도 학습할 수 있습니다.

도전해 보기: 합성곱 신경망(CNN) 관련 문제

합성곱 신경망에서 합성곱 계산을 im2col 등의 방법으로 행렬 곱으로 변환하여 계산하는 경우가 있는 이유로 올바른 것은 무엇인가?

  1. A변환하면 연산 횟수가 10분의 1이 되기 때문
  2. B고도로 최적화된 행렬 곱 라이브러리나 텐서 코어 같은 행렬 연산기를 사용할 수 있기 때문
  3. C변환하면 메모리 사용량이 반드시 줄기 때문
정답과 해설 보기

정답: B. 고도로 최적화된 행렬 곱 라이브러리나 텐서 코어 같은 행렬 연산기를 사용할 수 있기 때문

im2col은 합성곱의 각 윈도에 들어가는 입력 값을 한 열로 늘어놓은 큰 행렬을 만들고, 필터를 늘어놓은 행렬과의 곱으로 합성곱을 계산하는 방법입니다. 윈도가 겹치는 만큼 입력이 중복되어 메모리는 늘어나지만, 수십 년간 최적화되어 온 행렬 곱 라이브러리나 텐서 코어 같은 행렬 연산기를 그대로 사용할 수 있으므로 전체적으로 빨라지는 경우가 많습니다. 중복을 만들지 않고 같은 일을 하는 구현도 있습니다.

자주 묻는 질문

합성곱 층의 계산은 수학의 합성곱과 같은가요?

많은 프레임워크에서는 필터를 뒤집지 않고 곱의 합을 취하는, 상호 상관이라고 불리는 계산을 합성곱이라고 부르고 있습니다. 필터의 가중치는 학습으로 정해지므로, 뒤집는지 아닌지는 모델의 성능에 영향을 주지 않습니다.

CNN은 이미지 이외에도 사용할 수 있나요?

사용할 수 있습니다. 음성 파형이나 시계열 데이터에는 1차원 합성곱, 동영상이나 의료용 입체 영상에는 3차원 합성곱이 사용됩니다. 이웃한 데이터 사이에 관계가 있는, 격자 모양으로 늘어선 데이터에 적합합니다.

해설 속 합성곱 신경망(CNN)

합성곱 신경망(CNN)이(가) 나오는 문제 (2)

  1. 합성곱 신경망에서 합성곱 계산을 im2col 등의 방법으로 행렬 곱으로 변환하여 계산하는 경우가 있는 이유로 올바른 것은 무엇인가?
  2. 대량의 데이터로 학습을 마친 모델을 다른 과제에 적은 데이터로 활용하는 전이 학습에 대한 설명으로 적절한 것은?

관련 용어

합성곱(컨볼루션) 텐서 코어(Tensor Core) 전이 학습(Transfer Learning) 강화 학습(Reinforcement Learning) 경사 하강법(Gradient Descent) 과적합(Overfitting) 교차 검증(Cross-validation) 비지도 학습(Unsupervised Learning) 순환 신경망(RNN) 정밀도와 재현율(Precision and Recall)

용어집으로 돌아가기