

CNN이란 Convolutional Neural Network로 합성곱 신경망이라는 의미이다. 합성곱을 이용한다는게 말 그대로 주요 개념이다. 공간적 구조를 고려하면서 효율적으로 특징을 추출할 수 있다. 여기서 말하는 구조적 특징이란, 각 픽셀을 단순히 독립적인 값이 아니라 인접 픽셀과의 관계를 반영한다는 것이다.
CNN의 주요 특징으로는 아래와 같다.
이를 위한 주요 요소는 합성곱 층과 풀링 층이라고 할 수 있다.

합성곱 층은 입력 데이터에서 주요 특징을 추충한다. 이때 필터(커널, Kernel)을 이용하게 된다. 이는 작은 행렬로 입력 데이터를 스캔하면서 합성곱을 연산한다. 그렇다면 이 필터는 무엇으로 구성될까?

필터 크기: 필터의 크기
스트라이드: 필터가 이동하는 거리
패딩: 입력 크기의 유지를 위해 가장자리 부분을 임의의 값으로 채움(주로 zero-padding)

위의 세 가지 요소는 결론적으로 합성곱 층을 통과하였을 때의 결과물, Feature Map을 결정하게 된다. 이를 통해 공간적 구조를 유지하면서 패턴을 학습하게 된다. 그리고 이 필터의 행렬 값은 가중치(W)로, 학습을 통해 갱신된다.
필터의 수는 각 합성곱 층이 학습하는 특징의 개수를 의미한다.
풀링 층은 합성곱 층의 결과 물로 생성되는 Feature Map의 크기를 줄이는 역할을 한다. 계산량을 줄이는 것이 주목표이며, 어떤 풀링을 사용하냐에 따라 불변성에 대한 처리가 가능하다.

다음과 같은 풀링 방식이 존재한다.
이 중에는 최대 풀링이 가장 많이 사용된다. 참고로 어떤 풀링 방식인지와 무관하게, 단순하게 함수를 통과하여 최대, 최소 값을 남기는 역할을 진행하기 때문에, 가중치가 존재하지 않으며, 학습의 대상이 아니다.
풀링에 따라서 불변성이 달라진다는 점에 주목할 만하다.

최대 풀링은 강한 불변성을 만들어낸다. 강한 특징을 보존하며 크기 축소 효과가 크다. 하지만 동시에 세부적인 정보의 손실이 일어날 수 있다.
평균 풀링은 약한 불변성을 만들어낸다. 최대 풀링보다는 약한 강건성을 보인다는 뜻이다. 하지만 최대 풀링보다 특징을 약하게 보존한다는 단점이 있다.
최소 풀링은 최대 풀링과 반대로 특징을 거의 잡아내지 못해 약한 신호를 유지하는 역할을 한다. 또한 불변성이 거의 없어서 작은 변화에도 민감하게 반응한다. 따라서 등변성이 목표일 때 사용할 수 있지만, 거의 사용되지 않는다.
공부를 하다가 채널(Channel)과 특징 맵에 대해 혼동이 있었다.

채널은 입력 데이터의 차원 정보를 의미한다. 예를 들어 일반적인 컬러 사진의 RGB값을 3개의 채널을 가진 이미지로 볼 수 있다. RGB 값을 가진 이미지가 합성곱 층을 통과하면 3차원 필터가 각각의 채널을 통과한다. 그리고 만들어진 세 개의 결과는 bias를 고려하여 하나의 Feature Map으로 생성된다.
만약에 이런 필터가 16개라면, 결과적으로 16개의 Feature Map이 생성될 것이다. 만약 그 다음에 합성곱 층을 또 통과한다면, 다음 필터는 nn16의 3차원 필터일 것이다.
정리하자면 입력 채널의 수가 이전 층의 Feature Map 개수인 것이다. 이런 식으로 CNN의 깊이가 깊어진다면, Feature Map의 수가 늘어나 더 고차원의 특징을 학습할 것이다.
이건 앞공부인가요 뒷공부인가요?