HeYStRanGeR
article thumbnail

(23.12.28)

 

 

Fully connected layer (Affine layer)

이전까지의 신경망 layer 는 모두 fully connected layer 였다. (== Affine layer)

fully connected layer 에서는 인접하는 layer 의 모든 뉴런이 연결되고, 출력 노드(뉴런)의 개수를 임의로 정할 수 있었다.

-> but, 이미지 (w, h, c) 3차원 데이터가 flatten 1차원 데이터가 되어버리는 문제점이 존재한다.

-> 예를 들어 MNIST 데이터는 28x28x1  이미지인데, 신경망에 넣을때, 784개의 1차원 데이터로 입력한다.

-> fully connected layer (Affine layer) 는 데이터의 형상이 무시된다. 

--> 이미지의 RGB 각 채널은 서로 관련되어 있으며, 인접한 pixel 끼리도 서로 관련이 있기 때문에 데이터의 형상을 유지하는 것은 매우 중요하다. 

 

 

Convolutional Neual Network

- CNN 은 데이터의 형상을 유지한다. 

- w, h, c 의 3차원 데이터를 입력받아서 3차원 데이터로 전달한다. 

- 입출력 데이터를 feature map 이라고 한다.

- Conv layer 는 Pooling layer 와 함께 사용하기도 한다. 

 

딥러닝은 층이 깊어지면서 더 복잡하고 추상화된 정보가 추출된다.

층이 깊어질수록 단순한 edge에 반응 -> texture 에 반응 -> 복잡한 사물의 일부에 반응

층이 깊어지면서 뉴런이 반응하는 대상이 단순한 모양에서 고급정보로 변화한다.

 

 

convolution filter 를 통한 연산은 아래와 같다. 

filter 의  window 를 일정 간격으로 이동시키면서 대응하는 각 원소끼리 곱하여 더한다.

 

일반적으로 cnn filter 를 통한 연산이 진행된 이후 bias 를 더해주어 최종적인 출력 데이터가 나온다. 

 

 

 

Padding 을 적용해서 출력데이터의 크기를 맞춰준다. 일반적으로 0을 넣는다.

 

Stride 는 filter 를 적용하는 위치의 간격을 말한다.

 

 

Convolution filter 를 적용할 때, input image 의 크기와 filter 의 크기, padding size, stride size 에 따른 output image 의 크기를 계산하는 식은 아래와 같다.

 

 

 

3차원 데이터에 convolution filter 연산을 하기 위해서는 입력 데이터의 채널 수에 맞게 filter의 채널 수를 맞춰주어야한다. 

각 채널별로 conv filter 의 합성곱 연산을 적용하고, 해당 값들이 서로 대응되는 위치에서 합해주어 최종적으로 2차원의 데이터가 출력되게 된다.  블록으로 생각하면 오른쪽 그림과 같다.

 

 

즉, 출력 데이터를 3차원 데이터로 만들고 싶다면, conv filter 를 4차원 데이터로 만들면 된다.

conv filter 의 채널 수는 입력 데이터의 채널 수와 맞춰주고, conv filter 의 개수가 출력 데이터의 채널 수가 된다.

 

 

3차원 데이터에 대한 conv filter 의 적용과 bias 를 추가한 최종적인 연산 과정을 아래와 같다.

 

 

 

Conv filter 를 적용한 후에는 pooling layer 를 거치는데, 주로 max pooling 을 사용한다.

 

 

Deep Learning

: 딥러닝은 층을 깊게 한 심층 신경망이다.

 

층을 깊게 하는 이유

- 작은 filter 를 겹쳐서 신경망을 깊게 할 경우, parameter 의 수를 줄여 넓은 receptive field 를 소화할 수 있다.

- ReLU 와 같은 활성화 함수를 적용하여 비선형성을 늘려 더 복잡한 것도 표현할 수 있다.

 

-> 5x5 conv filter 를 1번 사용할 때의 parameter 개수 : 5x5 = 25 개

-> 3x3 conv filter 를 2번 사용할 때의 parameter 개수 : (3x3) + (3x3) = 18 개

즉, 3x3 conv 를 두번 사용하였을 때의 parameter 개수가 적지만, receptive field 는 5x5 conv filter 를 사용했을 때와 같다.

 

 

728x90
profile

HeYStRanGeR

@HeYStRanGeR

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!