Overfitting은 모델이 학습 데이터에 너무 과도하게 적합되어 새로운 데이터에 대한 일반화 능력이 떨어지는 현상을 말한다.
인공신경망에 융통성을 주기 위해서 학습 시킬 때, 일부러 정보를 누락시켜 일부에 집착하지 않고 중요한 요소가 무엇인지 파악한다.
CNN은 Overfitting의 문제점을 해결하고 유연성을 확득한 인공신경망이다.
일반적인 인공 신경망은 입력 데이터를 일차원으로 평면화하여 처리한다. 하지만 데이터를 평면화 시키는 과정에서 공간 정보가 손실될 수밖에 없다. 결과적으로 이미지 공간 정보 유실로 인한 정보 부족으로 인공 신경망이 특징을 추출 및 학습이 비효율적이고 정확도를 높이는데 한계가 있다.
이미지의 공간 정보를 유지한 상태로 학습이 가능한 모델이 바로 CNN(Convolutional Neural Network)이다.
컨볼루션 레이어는 입력 이미지를 특정 Filter(Kernel)를 이용하여 탐색하면서 이미지의 특징들을 추출하고, 추출한 특징들을 Feature Map으로 생성한다.
CNN은 신경망에서 학습을 통해 자동으로 적합한 필터를 생성해 준다.
필터는 입력 데이터를 지정한 간격으로 순회하면서 합성곱을 계산하며 여기서 지정된 간격으로 필터를 순회하는 간격을 Stride라고 한다.
Convolution Layer의 입력 데이터를 필터가 순회하며 합성곱을 통해서 만든 출력을 Feature Map 또는 Activation Map이라고 한다. 즉 Convolution 레이어의 최종 출력 결과가 Activation Map이다.
CNN은 이런 컨볼루션 레이어를 여러 번 중첩해서 사용하는데, 이 경우 필터로 인하여 입력 이미지의 결과가 너무 작아지는 문제가 발생한다. 이를 방지하기 위해 Padding이라는 기법을 사용한다.
패딩은 입력 데이터의 외각에 지정된 픽셀만큼 특정 값으로 채워 넣는 것을 의미합니다. 보통 패딩 값으로 0으로 채워 넣는다.
이렇게 padding을 하게 되면 convolution을 해도 크기가 작아지지 않는다.
컨볼루션 레이어가 필터를 이용하여 입력 이미지로 부터 특정 범위의 값을 압축(연산)하여 특징을 추출하는 방법이라면, 풀링 레이어는 컨볼류션 레이어의 출력 데이터를 입력으로 받아서 출력 데이터(Activation Map)의 크기를 줄이거나 특정 데이터를 강조하는 용도로 사용됩니다.
플링 레이어를 처리하는 방법으로는 Max Pooling과 Average Pooning, Min Pooling이 있으며 정사각 행렬의 특정 영역 안에 값의 최댓값을 모으거나 특정 영역의 평균을 구하는 방식으로 동작한다.
Pooling 레이어는 Convolution 레이어와 비교하여 다음과 같은 특징이 있다.
CNN에서는 주로 Max Pooling을 사용한다.
CNN은 Convolution Layer와 Max Pooling 레이어를 반복적으로 stack을 쌓는 특징 추출(Feature Extraction) 부분과 Fully Connected Layer를 구성하고 마지막 출력층에 Softmax를 적용한 분류 부분으로 나뉜다.
CNN을 구성하면서 Filter, Stride, Padding을 조절하여 특징 추출(Feature Extraction) 부분의 입력과 출력 크기를 계산하고 맞추는 작업이 중요하다.
Convolution Layer : 필터를 이용하여 입력 이미지로 부터 특정 범위의 값을 압축(연산)하여 특징을 추출
Pooling Layer : 출력 데이터(Activation Map)의 크기를 줄이거나 특정 데이터를 강조
CNN(Convolutional Neural Network)은 이미지의 공간 정보를 유지하면서 인접 이미지와의 특징을 효과적으로 인식하고 강조하는 방식으로 이미지의 특징을 추출하는 부분과 이미지를 분류하는 부분으로 구성된다. 이를 위해 필터를 사용하여 공유 파라미터 수를 최소화하고, Convolution 레이어와 Pooling 레이어를 이용하여 특징 추출과 특징 강화를 수행한다.
CNN은 Filter의 크기, Stride, Padding, 그리고 Pooling 크기를 조절하여 출력 데이터의 크기를 조절하고, 필터의 개수로 출력 데이터의 채널을 결정한다.
비교적 동일한 레이어 크기를 가진 Fully Connected Neural Network와 비교했을 때, CNN은 학습 파라미터의 양이 약 20%로 적으며 더 깊은 은닉층을 가질수록 학습 파라미터의 차이는 더 크게 벌어진다.
이로 인해 CNN은 더 적은 학습 파라미터로도 높은 인식률을 제공할 수 있다.