티스토리 뷰

이번 포스트에는 https://up-one-coding.tistory.com/11에서 언급된 합성곱 신경망(Convolution Neural Network)의 구조와 원리, 관련 용어를 2개의 포스트로 나누어 알아보겠습니다. 이번 포스트에서는 CNN의 등장 이유와 합성곱 연산이 이뤄지는 합성곱 계층에 대해 포스트 하겠습니다.

 

합성곱 신경망(Convolution Neural Network, CNN)은 기존 DNN(Deep Neural Network)의 구조에 합성곱 계층(Convolution layer)과 풀링 계층(Pooling layer)을 더해 만들어진 이미지 데이터 분석에 고성능을 가진 신경망 구조입니다. 그 이유는 주어진 이미지의 특징을 CNN의 합성곱 연산으로 쉽게 추출할 수 있기 때문입니다.

 

cnn 전체 구조

 

이미지 데이터는 주로 3차원(가로크기 X세로크기 XRGB 값)으로 표현됩니다.  DNN(Deep Neural Network)의 구조로 이미지 데이터를 분석하기 위해서는 3차원의 데이터를 1차원으로 변환시켜 입력시켜야 하는데 이때 데이터의 특징이 소멸되는 문제점이 발생합니다. 이를 해결하기 위해서 기존 DNN(Deep Neural Network)의 구조에 합성곱 계층(Convolution layer)과 풀링 계층(Pooling layer)을 더하는 CNN을 사용하는 것입니다.

 

또한 이미지 데이터는 픽셀(Pixel) 값으로 표현되는데 인접한 공간의 픽셀 값은 유사한 패턴을 보입니다. CNN은 입력 데이터를 원본 이미지 그대로 받기 때문에 정보의 손실 없이 유사한 패턴을 그대로 사용할 수 있어 고성능을 산출할 수 있는 것입니다.

 

CNN은 합성곱 계층에서 합성곱 연산을 통해 원본 이미지 데이터의 특징을 압축해서 보여주는 Feature Map을 생성합니다. Feature Map은 이미지를 분류하는데 필요한 정보를 추출하는 역할을 합니다. 즉 CNN은 합성곱 연산을 반복하여 Input Image와 비슷한 Feature Map을 추출해 일정한 패턴을 학습하는 것입니다. 학습된 패턴으로 새로운 이미지 데이터를 분류할 수 있는 것입니다.

Feature Map의 값은 입력 데이터의 픽셀 값과 필터(Filter) 값(가중치)을 합성곱 하여 생성됩니다. 합성곱이란 픽셀 값과 가중치의 내적의 합을 구하는 연산 과정입니다.  필터(Filter)는 원본 이미지 데이터의 패턴을 찾아주는 역할을 하는 존재입니다. 예를 들어 3*3 원본 이미지와 2*2 필터가 있을 때 2*2의 Feature Map을 생성하는 것입니다.

Input data의 픽셀 값
Filter
Feature Map

 

 

Feature Map의 값은 Input Image와 Filter 각각의 위치에 맞게 합성곱 연산을 진행하면서 구해집니다. 예를 들어 (4*1+2*0+3*2+1*1)로 11을 구할 수 있습니다. 

 

CNN은 원본 이미지 데이터의 특징을 소실 없이 분석하여 고성능을 산출하는 신경망이라고 언급하였습니다. 그 이유는 Filter의 값, 즉 가중치가 역전파를 이용해 최적의 값으로 추정되기 때문입니다. 또한 성능에 큰 영향을 끼치는 것이 Stride라는 개념입니다.

 

Stride는 Filter을 Input Image에 적용하는 위치의 간격입니다. 위의 예에서는 Stride 값을 1로 설정한 것입니다. Stride 값을 크게 설정하면 Input Image의 특징을 Filter가 놓칠 가능성이 크기 때문에 성능에 악영향을 끼칠 수 있습니다.

 

 

'딥러닝' 카테고리의 다른 글

오차역전파법(Backpropagation)  (2) 2024.07.16
적대적 생성 신경망(GAN)  (0) 2024.07.11
RNN (Recurrent Neural Network)  (0) 2024.07.08
[3] LSTM(Long Short-Term Memory)  (0) 2024.06.27
[2] 합성곱 신경망 (CNN) PART2  (0) 2024.06.24
TAG more
글 보관함
최근에 올라온 글