[DL] Convolutional Neural Network

·2023년 6월 27일
0

인공신경망의 Overfitting

Overfitting은 모델이 학습 데이터에 너무 과도하게 적합되어 새로운 데이터에 대한 일반화 능력이 떨어지는 현상을 말한다.

DropOut

인공신경망에 융통성을 주기 위해서 학습 시킬 때, 일부러 정보를 누락시켜 일부에 집착하지 않고 중요한 요소가 무엇인지 파악한다.

Convolutional Neural Network

CNN은 Overfitting의 문제점을 해결하고 유연성을 확득한 인공신경망이다.

일반적인 인공 신경망은 입력 데이터를 일차원으로 평면화하여 처리한다. 하지만 데이터를 평면화 시키는 과정에서 공간 정보가 손실될 수밖에 없다. 결과적으로 이미지 공간 정보 유실로 인한 정보 부족으로 인공 신경망이 특징을 추출 및 학습이 비효율적이고 정확도를 높이는데 한계가 있다.

이미지의 공간 정보를 유지한 상태로 학습이 가능한 모델이 바로 CNN(Convolutional Neural Network)이다.

Convolution layer

컨볼루션 레이어는 입력 이미지를 특정 Filter(Kernel)를 이용하여 탐색하면서 이미지의 특징들을 추출하고, 추출한 특징들을 Feature Map으로 생성한다.

CNN은 신경망에서 학습을 통해 자동으로 적합한 필터를 생성해 준다.

필터는 입력 데이터를 지정한 간격으로 순회하면서 합성곱을 계산하며 여기서 지정된 간격으로 필터를 순회하는 간격을 Stride라고 한다.

Convolution Layer의 입력 데이터를 필터가 순회하며 합성곱을 통해서 만든 출력을 Feature Map 또는 Activation Map이라고 한다. 즉 Convolution 레이어의 최종 출력 결과가 Activation Map이다.

CNN은 이런 컨볼루션 레이어를 여러 번 중첩해서 사용하는데, 이 경우 필터로 인하여 입력 이미지의 결과가 너무 작아지는 문제가 발생한다. 이를 방지하기 위해 Padding이라는 기법을 사용한다.
패딩은 입력 데이터의 외각에 지정된 픽셀만큼 특정 값으로 채워 넣는 것을 의미합니다. 보통 패딩 값으로 0으로 채워 넣는다.

이렇게 padding을 하게 되면 convolution을 해도 크기가 작아지지 않는다.

Pooling layer

컨볼루션 레이어가 필터를 이용하여 입력 이미지로 부터 특정 범위의 값을 압축(연산)하여 특징을 추출하는 방법이라면, 풀링 레이어는 컨볼류션 레이어의 출력 데이터를 입력으로 받아서 출력 데이터(Activation Map)의 크기를 줄이거나 특정 데이터를 강조하는 용도로 사용됩니다.

플링 레이어를 처리하는 방법으로는 Max Pooling과 Average Pooning, Min Pooling이 있으며 정사각 행렬의 특정 영역 안에 값의 최댓값을 모으거나 특정 영역의 평균을 구하는 방식으로 동작한다.

Pooling 레이어는 Convolution 레이어와 비교하여 다음과 같은 특징이 있다.

  • 학습대상 파라미터가 없음
  • Pooling 레이어를 통과하면 행렬의 크기 감소
  • Pooling 레이어를 통해서 채널 수 변경 없음

CNN에서는 주로 Max Pooling을 사용한다.


CNN 구조

CNN은 Convolution Layer와 Max Pooling 레이어를 반복적으로 stack을 쌓는 특징 추출(Feature Extraction) 부분과 Fully Connected Layer를 구성하고 마지막 출력층에 Softmax를 적용한 분류 부분으로 나뉜다.

CNN을 구성하면서 Filter, Stride, Padding을 조절하여 특징 추출(Feature Extraction) 부분의 입력과 출력 크기를 계산하고 맞추는 작업이 중요하다.

특징 추출 단계(Feature Extraction)

  • Convolution Layer : 필터를 이용하여 입력 이미지로 부터 특정 범위의 값을 압축(연산)하여 특징을 추출

  • Pooling Layer : 출력 데이터(Activation Map)의 크기를 줄이거나 특정 데이터를 강조

이미지 분류 단계(Classification)

  • Flatten Layer : 추출된 주요 특징을 전결합층에 전달하기 위해 1차원 자료로 바꿔주는 layer
  • Softmax Layer : Classification
  • Output : 인식결과

📌요약

CNN(Convolutional Neural Network)은 이미지의 공간 정보를 유지하면서 인접 이미지와의 특징을 효과적으로 인식하고 강조하는 방식으로 이미지의 특징을 추출하는 부분과 이미지를 분류하는 부분으로 구성된다. 이를 위해 필터를 사용하여 공유 파라미터 수를 최소화하고, Convolution 레이어와 Pooling 레이어를 이용하여 특징 추출과 특징 강화를 수행한다.

CNN은 Filter의 크기, Stride, Padding, 그리고 Pooling 크기를 조절하여 출력 데이터의 크기를 조절하고, 필터의 개수로 출력 데이터의 채널을 결정한다.

비교적 동일한 레이어 크기를 가진 Fully Connected Neural Network와 비교했을 때, CNN은 학습 파라미터의 양이 약 20%로 적으며 더 깊은 은닉층을 가질수록 학습 파라미터의 차이는 더 크게 벌어진다.

이로 인해 CNN은 더 적은 학습 파라미터로도 높은 인식률을 제공할 수 있다.



📝 참고

자습해도 모르겠던 딥러닝, 머리속에 인스톨 시켜드립니다.하용호 @카카오
CNN, Convolutional Neural Network 요약 TAEWAN.KIM 블로그
호다닥 공부해보는 CNN(Convolutional Neural Networks) 호롤리한 하루
[알고리즘] 컨볼루션 신경망(CNN, Convolution Neural Network) 겨울나기 바캉스
CNN, Convolutional Neural Network 요약 TAEWAN.KIM 블로그

🖼️이미지 참조

convolutional layer Intuitively Understanding Convolutions for Deep Learning
convolutional layer Convolutional Neural Networks: 1998-2023 Overview
The Convolution Operation (Input * Kernel) Understanding Convolutional Neural Networks
Zero-padding Zero-Padding in Convolutional Neural Networks
Max Pooling and Average Pooling being performed Convolutional Neural Networks Explained
profile
개발하고싶은사람

0개의 댓글