합성곱 신경망은 이미지 처리에 특화된 딥러닝 알고리즘이다. 이미지의 특징을 추출하는 합성곱(Convolution과 풀링(Pooling) 영역, 분류를 수행하는 완전연결신경망 영역으로 구성된다. CNN 알고리즘에는 AlexNet, VGGNet, GoogLeNet, ResNet, DenseNet 등이 있다.
이미지 처리를 할 때 다층 퍼셉트론을 사용할 수도 있지만 다층 퍼셉트론은 몇 가지 픽셀만 값이 달라져도 민감하게 반응해서 예측에 영향을 받는다.
예를 들어 위 두 그림은 사람이 볼 때는 둘 다 Y로 판단이 가능하지만 다층퍼셉트론은 두 그림의 휘어짐 정도, 방향, 위치 등이 다르기 때문에 다르게 볼 수 있다는 것이다.
1. 합성곱
합성곱은 이미지 데이터에서 특징을 추출하는 과정이다. 필터를 이용해 유사한 이미지 영역을 강조하는 특성 맵을 출력한다. 특성 맵은 합성곱을 거치면서 사이즈가 점점 작아진다. 3차원의 이미지를 입력층에 그대로 입력받고 출력 데이터도 3차원으로 출력해서 다음 계층으로 전달한다.
합성곱층의 뉴런은 입력 이미지의 모든 픽셀에 연결되는 것이 아니라 수용영역(receptive field)안에 있는 픽셀에만 연결된다. 그래서 앞의 합성곱층에서는 저수준 특성에 집중, 뒤로 갈수록 고수준 특성에 집중하게 된다.
필터 또는 커널은 합성곱층에서의 가중치 파라미터(W)로, 특성 맵을 출력해 다음 층으로 전달하는 역할을 한다.
합성곱 연산은 커널 또는 필터라는 n x m 크기의 행렬로 높이 x 너비 크기의 이미지를 처음부터 끝까지 겹치면서 훑어 n x m 행렬과 겹치는 부분의 각 이미지와 커널의 원소 값을 곱해 모두 더한 값을 출력한다. 이미지의 가장 왼쪽 위부터 가장 오른쪽까지 순차적으로 훑는다.
2. 패딩
패딩은 이미지 주변에 계산과 무관한 테두리를 추가해서 특성 맵의 사이즈를 조정하는 방식이다. 앞서 합성곱으로 연산을 수행하면 특성 맵이 입력보다 크기가 작아졌다. 만약 합성곱 층을 여러 개 쌓으면 특성맵이 초기 입력보다 매우 작아지기 때문에 초기 입력 값의 크기와 동일하게 유지시키고 싶다면 패딩을 사용한다.
3. 풀링
합성곱층(합성곱 연산 + 활성화 함수) 다음에는 풀링 층을 추가하는 것이 일반적이다. 풀링은 합성곱 과정을 거친 데이터를 요약하며 추출한 특징을 유지하면서 데이터 사이즈를 줄일 수 있다. 학습 대상 파라미터 수를 줄이고 과적합을 방지하는 효과도 있다. 특성 맵의 크기가 줄어들기 때문에 특성 맵의 가중치 개수를 줄여준다.
최대 풀링은 최댓값을 대푯 값으로 산출하는 방식, 평균 풀링은 평균값을 추출하는 연산이다.