본문 바로가기

머신러닝공부

CNN-Convolution Neural Network (합성곱 신경망)간단 정리

728x90
반응형

컨볼루션이라는 것은 두개의 함수 f, g가 있을 때 1. 적분변수에 대해서 2. 하나의 함수를 반전(reverse)하고 시간 t만큼 전이(shift)시킨 후에, 3. 다른 하나의 함수와 곱한 결과를 4. 전체 구간에서 적분하는 것을 의미함

데이터 관점에서 곱셈연산은 원본 데이터 또는 입력데이터에 변화를 주어 출력 데이터를 만들어내는 역할을 수행하고 덧셈 연산은 데이터의 평균을 구한다는 의미를 내포한다.

즉, 컨볼루션 수식은 원본 데이터 또는 입력 데이터에 변화를 주어서, 그 변화된 값들의 평균을 구한다는 의미를 나타낸다.

 

데이터 관점

시간에 따른 이동 -> 곱셈 -> 덧셈

해석1: 시간의 흐름에 따라 데이터 g(x)가 이동하면서, 입력 데이터 f(x)를 평균적으로 얼마나 변화 시키는지 나타내는 것을 convolution으로 정의할 수 있다.

해석2: 시간의 흐름에 따라 움직이는 데이터 g(x)에 의해서, 입력 데이터 f(x)가 평균적으로 얼마나 변하는지 나타내는 것을 컨볼루션으로 정의할 수 있다.

 

NN과 CNN의 아키텍처 비교

기존 NN과 CNNd의 차이점으로는 은닉층이 다르다는 점이다. NN의 은닉칭이 CNN에서는 더 세분화 되어 컨볼루션층 및 완전연결층의 조합으로 형성되어있다.

컨볼루션층 : Conv -> relu -> pooling

완전연결칭 : Flatten

Conv : 입력데이터와 가중치들의 집합체인 다양한 필터(Filter)와의 컨볼루션 연산을 통해 입력데이터의 특징을 추출하는 역할을 수행

pooling : 입력 정보를 최대값, 최소값, 평균값 등으로 압축하여 데이터 연산량을 줄여주는 역할 수행

 

 

패딩 Padding

컨볼루션 연산을 수행하기 전에 입력 데이터 주변을 특정 값으로 채우는 것(특히 0)을 말하며, 컨볼루션 연산에서 자주 사용된다. 즉, 컨볼루션 연산을 수행하면 데이터 크기(Shape)이 줄어드는 단점을 방지하기 위해 사용

 

TensorFlow 2.x API

# Conv Layer
Conv2D(input_shape=(28, 28, 1), kernel_size=(3, 3), filters=32, strides=(1, 1), activation = 'relu', use_bias=True, padding='valid')

CNN에서 1st Conv Layer를 나타내기 위해 (높이, 너비, 채널) 형태의 텐서로 주어지는 input_shape 사용하며, 필터 크기(kernel_size), 필터 개수(filters)는 반드시 기술되어야 함. 필터 크기는 (높이, 너비) 형태이며 숫자를 하나만 쓸 경우 노피와 너비가 동일 값이라는 것을 의미함

# Conv Layer
Conv2D(Kernel_size(3, 3), filters = 32, strides = (1, 1), activation = 'relu', use_bias = True, padding = 'valid')

2nd Conv Layer 부터 input_shape는 사용되지 않음, 필터 크기 (kernel_size)와 필터 개수(filters) 값을 지정하고 나머지 파라미터는 기본 값만을 이용하여도 컨볼루션 층 구현이 가능함

# Pool
MaxPool2D(pool_size = (2,2), padding = 'valid'))

한번에 Max Pooling 수해할 범위를 pool_size에 나타냄. pool_size=2, 2)라면 높이 2, 너비 2 사각형 안에서 최대 값만 남기는 연산을 수행함

# Flat
Flatten()

Feature Extractor 출력은 (높이, 너비, 채널)로 나타나는 3차원 텐서이므로, 완전 연결층(Dense)과의 연결을 위해서 3차원 Tensor를 1차원 vector로 만들어주는 역할을 수행함

# Dense
Dense(100, activation = 'relu')
Dense(100, activation = 'sigmoid')
Dense(10, activation = 'softmax')

Dense 함수는 신경망에서 은닉층과 출력층을 의미하는 완전연결층을 나타내며 1st 파라미터는 완전 연결층의 출력 노드 수이며, 활성화 함수는 activation = '...' 으로 나타냄

# Dropout
Dropout(rate=0.2)

학습과정중에 rate에 지정된 비율만큼 random하게 층(layer)과 층 사이의 연결을 끊어서 네트워크의 과적합(overfitting)을 막는 역할을 수행함

반응형