Stats & AI tech blog - '일단 시도함'

[ML/DL] CNN, Convolutional Neural Network (컨볼루션 신경망) 본문

Statistics & AI/Deep Learning

[ML/DL] CNN, Convolutional Neural Network (컨볼루션 신경망)

justdoit ok? 2024. 4. 5. 16:52

다층 퍼셉트론(MLP), 심층신경망(DNN)에 이어 이번 포스팅에서는 컨볼루션 신경망(CNN)에 대해 알아보고자 한다.

 

 

1. 컨볼루션 신경망 (Convolution Neural Network) 이란?

 

CNN은 영상 자료로부터 패턴인식을 하는데 이용되는 end-to-end 방식의 딥러닝 기법이다. 

 

end-to-end 방식이란 feature 추출부터 분류까지 전체적인 과정을 하나의 모델로 수행 가능한 알고리즘을 뜻하는데,

CNN 이전에 사용하던 영상 분류 알고리즘에는 사람이 직접 feature를 선택하는 hand-crafted feature 추출 과정이 포함되어 있었다. 이러한 방법은 얼마나 좋은 feature를 선택하냐에 따라 성능이 크게 좌우된다는 단점이 존재했고, hand-crafted feature 추출 과정 없이 좋은 성능을 가지는 CNN이 주목받기 시작하였다.

 

또 CNN은 영상 분류 뿐만 아니라, 검출과 분할 문제에도 응용될 수 있어 영상 자료를 다루는 연구에서 활발하게 사용되고 있다.

 

CNN은 고양이의 뇌를 모방하여 개발한 알고리즘이다. 고양이의 시선에 따라 다른 뇌 부위가 활성화 되는것을 보고, 이미지 전체를 작은 부분으로 나누어 처리하자는 아이디어가 탄생했다. CNN의 구조를 통해 어떻게 영상 자료를 처리하는지 자세히 알아보자.

 

 

2. CNN 구조

Convolutional Layer, Pooling Layer, Fully-connected Layer 3가지 층으로 이루어져 있다.

 

1.1 Convolutional Layer : Feature 추출

이 Layer의 목적은 영상의 특정 패턴을 인식하기 위한 feature들을 추출하는 것이다.

feature 추출 방법으로 Kernel이라는 영상 필터를 사용하게 된다.

https://jarikki.tistory.com/26

위 그림은 컨볼루션 레이어에서 4x4 사이즈의 Input 이미지에 2x2 사이즈의 Kernel 필터를 사용해서 특징을 추출하는 과정이다. 2x2 사이즈 영역들을 kernel이 두 칸씩 이동(Stride)하면서 합성곱을 진행하면 그 결과로 2x2 사이즈의 Feature Map을 얻을 수 있다.

 

CNN은 이런 컨볼루션 레이어를 여러번 중첩(Depth)해서 특징 추출을 진행하게 되는데, 그렇게 되면 입력 이미지에 비해 출력 이미지의 크기가 너무 줄어드는 현상이 발생하게 된다. 이런 문제를 방지하기 위해서 패딩(Padding)이라는 기법을 함께 사용한다.

https://ayeshmanthaperera.medium.com/what-is-padding-in-cnns-71b21fb0dd7

 

이번에도 Input 이미지의 크기는 4x4인데, 테두리가 0으로 된 회색 영역으로 padding을 주고 2x2 커널을 사용하여 합성곱을 진행하면 앞의 예시와는 다르게 입력 사이즈 그대로인 4x4 크기의 Feature Map을 얻을 수 있게 된다. padding을 하게 되면 사이즈를 보존하는 것 외에도 입력 이미지의 경계면 정보를 공평하게 Feature 추출 과정에 사용할 수 있다는 장점도 있다.

 

이렇게 convolution layer에서는 Kernel을 이용해 합성곱을 진행하면서 특징을 추출한다는 것을 알아보았다.

이 과정에서 나왔던 hyper-parameter들을 정리해보자면 아래와 같고, 적절한 값을 지정해주어야 한다.

  • Stride : kernel이 몇 칸씩 이동하는지 설정
  • Padding : padding을 몇 겹 쌓을 것인지 설정
  • Depth : convolution을 몇 번 중첩 수행할 것인지 설정

 

합성곱을 진행할 때 1x1 크기의 kernel을 사용할 수도 있는데, 이런 경우는 원본을 scaling 하는 것 외에도 장점이 존재한다. 첫 번째 장점은 모델의 비선형성이 증가한다는 것이고 두 번째 장점은 feature map의 개수를 조절할 수 있다는 것이다.

모델이 비선형함수에 의한 연산을 거칠수록 복잡한 패턴에 대한 인식이 가능해지고, 작은 수의 depth로 1x1 convolution을 수행하면 feature map의 개수가 줄어 계산의 부담을 줄여줄 수 있다.

 

 

1.2 Pooling Layer : Feature 차원 축소

일반적인 기계 학습에서 사용하는 차원 축소의 개념을 CNN에도 적용할 수 있다. CNN에서는 이런 과정을 Pooling이라고 하고 종류로는 max pooling, average pooling 등이 있다.

 

아래는 max pooling 예시인데, convolution layer에서 추출한 feature map에서 가장 강한 신호만을 남기는 방식으로 차원을 축소한다.

https://paperswithcode.com/method/max-pooling

 

 

1.3 Fully-connected Layer : 최종 분류

마지막 Layer에서는 여러 개의 convolution layer와 pooling layer를 거쳐 얻어진 Feature Map을 input으로 MLP를 구성하고 분류를 진행한다. CNN 등장 이전에는 이 Layer (FCL)만으로 영상 분류를 진행했고, CNN은 FCL에 Convolution, Pooling 과정이 추가된 구조이다.

 

  • CNN 최종 모델 도식화

https://fineproxy.org/ko/wiki/convolutional-neural-networks-cnn/

 

 

 

지금까지 CNN이 무엇인지와 각 구조에서 어떤 과정을 거치는지에 대해 알아보았다.

다음 포스팅에서는 시계열 자료에 대한 딥러닝 기법인 RNN에 대해 알아보도록 하겠다.

2024.05.07 - [Data Science/Deep Learning] - [ML/DL] RNN, Recurrent Neural Network (순환신경망)

 

[ML/DL] RNN, Recurrent Neural Network (순환신경망)

RNN, Recurrent Neural Network (순환신경망)    1. 시계열 자료 (Time Series Data) 데이터가 어느 한 시점에서 획득된 것이 아니라 시간 순서에 따라 획득되어진 자료로 심전도나 기상 관측 자료, 주가 차

meowstudylog.tistory.com

 

 

Reference

 - 인공지능, 보건 의료 전문가를 위한 길라잡이