강의 동영상 Lecture 7: Convolutional Networks
s슬라이드 및 이미지 참고 slides
이전까지 보았던 linear classifier와 neural network model은 pixel값들을 flat하게 펄쳐 연산하였기 때문에 이미지의 공간적 정보를 살릴 수는 없었다. 공간적 정보란 예를 들면, 가까운 픽셀은 값이 비슷하거나, RGB의 각 채널은 서로 밀접하게 관련되어 있거나, 거리가 먼 픽셀끼리는 별 연관이 없는 등 3차원 속에서 의미를 갖는 본질적인 패턴을 말한다.
이전 강의에서 보았던 matrix valued backprop도 matrix form으로 연산을 하지만 결국 flat한 것과 다를바 없어 공간적정보를 커버하지 못한다. 이러한 문제를 해결하기 위해 합성곱을 사용하여 형상을 유지한다.
이전에 Fully-Connected Network는 Fully-Connected Layers와 Activation Function으로 구성되어 있었다. Convolutional Network에서는 계산그래프에서 사용되는 Convolution Layers, Pooling Layers, Normalization으로 구성되어 있다. 이러한 몇가지 operation은 Fully-Connected Network를 Convolutional Network형태로 변환시켜준다.
이때의 activation map들을 concatenate시켜 하나의 (depth dimension이 3인) 3-dimensional tensor로 나타낼 수 있으며 그림의 예시같은 경우 6x28x28형태를 갖게된다.
각 conv layer에있는 filter 수만큼 output이 나오게 되며 이는 다음 layer의 inout으로 들어가게 되는 형태이다. 이때 각 layer의 input과 output이 되는 activation map 들은 fully-connected network에서와 같이 hidden layer라고 말한다.
하지만 이런 형태의 convolution network는 각각의 convolution operator가 fully-connected network에서의 각 layer와 같이 linear operator에 지나지 않는다. 그렇기에 우리는 아래의 그림처럼 conv operator 직후에 (non-linear인) activation function을 취해준다.
In general:
input의 edge(corner) position을 커널이 커버하지 못하여 매 convolution operation을 거치면서 점점 spatial dimension이 줄면서 pixel의 손실이 일어난다. 이러한 문제를 해결하기위해 이미지에 패딩을 적용해준다.
input 이미지가 커질수록 그만큼 많은 conv layer가 필요하게 된다.
1D conv는 일반적으로 sequence형태의 textural data와 audio data에 많이 사용된다.
3D conv는 일반적으로 point cloud data 혹은 3d data에 사용된다.
pooling layer는 conv layer에서 stride의 역할과 비슷한 또다른 downsample방법이다.
위의 이미지에서는 2x2커널사이즈와 strade가 2인 2x2 Max pooling을 하는 내용이다. 각 영역에서 가장 큰 원소 하나를 꺼내는 것이다.
참고로 풀링의 윈도우크기와 스트라이드 값은 같은 값으로 설정하는 것이 보통이다. 예를 들어 윈도우가 3x3이면 스트라이드는 3, 윈도우가 4x4이면 스트라이드를 4로 설정한다.
폴링은 max 풀링외에도 평균폴링 등이 있다. 이미지 인식 분야에서는 주로 max 풀링을 사용한다.
Classical architecture는 매우 커지고 매우 deep해져 매우 큰 data를 학습시키 매우 힘들다는 문제가 있다. 이를 해결하기 위해 normalization 개념이 도입된다.
직전에 보았듯이 batch전체를 averaging시켜 normalize하는것은 testing 과정에서 허용되지 않는다. 그래서 Conv net에서는 Instance Normalization을 해 준다.
Instance Normalization은 batch와 partial dimension에 averaging해주지 않고 spatial dimension에만 averaging 시켜 normalizing 해 주고. 추가로 exponentially weighted average를 적용시킨다(test시에).
이러한 다른 type별 normalization을 그림으로 나타내면 위와 같다.
참고사이트
https://excelsior-cjh.tistory.com/180
https://aideepml.tistory.com/11
https://velog.io/@kangtae/EECS-498-007-598-005-72.-Normalization
https://warm-uk.tistory.com/47