(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 를 사용했을 때와 같다.
'Computer Science > Deep Learning' 카테고리의 다른 글
밑바닥부터 시작하는 딥러닝 ch.6 학습관련 기술들 (1) | 2023.12.28 |
---|---|
밑바닥부터 시작하는 딥러닝 ch.5 오차역전법 (0) | 2023.12.04 |
밑바닥부터 시작하는 딥러닝 ch.4 신경망 학습 (0) | 2023.11.27 |
밑바닥부터 시작하는 딥러닝 ch.3 신경망 (2) | 2023.11.21 |
밑바닥부터 시작하는 딥러닝 ch.2 퍼셉트론 (0) | 2023.11.21 |