합성곱 신경망(Convolutional Neural Network, CNN)은 이미지 인식과 음성 인식 등 다양한 곳에서 사용된다.

전체 구조


지금까지 앞에서 본 신경망은 인접하는 계층의 모든 뉴런과 결합되어 있었는데, 이를 완전연결(Fully-Connected)이라 하며, 완전히 연결된 계층을 Affine 계층이라고 칭하였다.

image.png

위와 같이 완전연결 신경망은 Affine 계층 뒤에 활성화 함수를 갖는 ReLU 계층이 이어진다.

여기서 마지막 5층은 Affine 계층에 이어 Softmax 계층이 이어지고 이곳에서 최종 결과(확률)가 출력된다.

그렇다면 CNN 구조는 어떻게 다를까?

image.png

위와 같이 CNN 계층은 ‘합성곱 계층(Conv)-ReLU-(Pooling)’ 흐름으로 연결된다.

완전연결 계층이 Affine-ReLU 였다면, CNN 계층은 ‘Conv-ReLU-(Pooling)’으로 바뀌었다고 생각하면 쉽다.

CNN 계층에서도 출력에 가까운 층에서는 ‘Affine-ReLU’ 구성을 사용할 수 있으며, 최종 출력이 확률 형태여야 하기 때문에 마지막 출력 계층에서는 ‘Affine-Softmax’ 조합을 그대로 사용한다.

합성곱 계층


CNN의 각 계층 사이에는 3차원 데이터와 같이 입체적인 데이터가 흐른다는 점에서 1차원 데이터였던 완전연결 신경망과 다르다.

완전연결 계층의 문제점

가장 큰 문제점은 데이터 형상이 무시된다는 것이다.

입력 데이터가 이미지인 경우, 완전연결 계층에 입력하게 되면 3차원 데이터를 1차원 데이터로 평탄화해줘야 한다.

이미지는 3차원 형상으로 이 형상에는 공간적 정보가 담겨있다. 예를 들어, 이미지 상에서 거리가 가까운 픽셀끼리는 값이 비슷하거나, RGB 각 채널은 서로 밀접하게 연관되어 있거나, 거리가 먼 픽셀끼리는 별 연관성이 없는 등 이렇게 3차원 상에서 특정한 의미를 갖는 본질적인 패턴이 숨어 있을 것이다.

그러나, 완전연결 계층은 이러한 형상은 무시하고 모든 입력 데이터를 1차원으로 평탄화해 이러한 픽셀 간의 상관관계를 알 수가 없다.