convolution layers는 Dense layer와 비슷하지만 연산이 조금은 다른 구성을 하고 있다. 보통 convolution layers는 이미지 데이터를 활용하는데 사용되고 있어 image tensors의 구성으로 공부를 해보았다. Dense Layer에서도 그랬듯이, data가 layer를 통과했을때, 연산을 통해 shape가 어떻게 변화하는지 확인해보자. correlation과 Dot Product 와 Convolution의 차이점을 확인해보자.
Correlation
correlation은 Convolutional Neurons Network 에서 사용하는 대부분의 연산이다.
[Classical Correlation]
우리가 다루게 되는 것은 convolution 이라 부르지만, 실제로는 correlation이다.
Correlation은 두 신호상이의 유사성을 측정해주는 도구다.
- 실수 값들로 구성된 X 행렬인 입력 데이터가 F(Filter)와 함께 correlation 연산이 된다.
[Correlation with Bias]
-Correlation 에 bias 를 더해주는 연산이다. 아래는 Hight가 3이고 weight가 3인 행렬의 예시다.
실제로 연산은 Correlation이지만, 주로 Convolution이라고 말을 하는 이유
- Convolution : Filter를 180도 돌려서 연산하는 것이다. 어떤 filter를 통과한 output을 계산해준다.
- Correlation : 두 신호 사이의 유사성을 측정해준다.
- 만약 Filter가 대칭행렬이면 convolution과 correlation이 같아서 옛날부터 같이 불러왔다고 한다.
[Correlation with Activation]
Dense Layer에서 배웠던 Affine Function을 correlation으로 대처해서 연산한 후, 출력된 Z값을 Activation Function에 입력값으로 넣어 a값을 출력시킨다.
[Correlation and Dot Product]
Dot Product는 Correlation의 Input과 Filter들의 행렬을 Flatten하여 연산하는 것이다.
Affine Function이라 생각할 수 있지만, Correlation은 데이터 일부를 가져와 연산하는 것이므로, Fully connected layer와 Dense Layer와는 차이점이 있음을 인지해야한다.
Conv Layer
[Window Extraction - Window Formularization]
-사이즈를 정하고, 한칸씩 이동하며 만들어가며 하나하나 window를 구성해간다.
자동차가 이동하면서 창문으로 보이는 변화되는 모습을 생각해보자. 여기서도 행렬속에서 사이즈에 맞게 한칸씩이동하면서 구성된 값들이 변화된다.
-이 window가 correlation연산에 넣어지게 되는 것이다.
[Computations of Conv Layer]
각 window와 kernal을 correlation해준 후, bias를 더해주면 Z값이 생성된다.
(affine Function이라 생각할 수 있지만, 변화되는 입력 데이터라는 점이 다르다.)
생성된 Z 값은 activation Function에 넣어 나온 출력값이 한 모듈을 통과한 값이다.
[n-Channel Input]
Data가 이미지라면, R G B의 각 window들이 형성되어야할 것이다. 만약 이미지 속 그림이 5X5크기라면, f = 5 nc = 5
-> window는 실수 5X5X3이 될것 이다.
위 세 window가 모여 하나의 window를 만든다.
[Conv Layers]
입력데이터 또는 전 layer의 출력값이 kernal를 통가하면 필터의 개수(ℓ1...)로 변한다.
nH 와 nW도 각 kernal에 의해 변하게 된다.
filter는 window크기와 동일 하기 때문에
nH 와 nW를 window로 묶어 나눠진 후에, filter와 correlation 연산이 진행된다는 점을 생각하면
- nH[2] = nH[1] - f[2] +1
- nW[2] = nW[1]- f[2] +1
의 shape로 변화된다.
[Minibatch in Conv Layer]
minibatch는 입력데이터를 작은 batch 사이즈로 나눠서 한 batch씩 넣어주는 과정이다.
그렇기에 위에 conv Layer에서 입력데이터의 shape이 N X 가 붙어서 진행된다.
kernal과 bias의 크기는 변함 없다는 점은 기억해야한다.
이번 글은 foward propagation이 어떻게 진행되는지 확인하는데, 중점을 둬서 공부했다.
다음 공부에서 back propagation은 어떤지 공부해보자.
'Data_study > Deep Learning' 카테고리의 다른 글
[Deep learning] Precision & Recall & IoU (0) | 2022.10.01 |
---|---|
[Deep learning] Object Detection 의 개념 (0) | 2022.08.27 |
[Deep_learning] Multiclass_Classifiers 구현 (0) | 2022.07.12 |
[Deep_learning] Binary Classifiers 구현 (0) | 2022.02.23 |
[Deep Learning] Sigmoid and Softmax 이론 (0) | 2022.02.18 |