main Paper
I. INTRODUCTION
Convolutional Neural Network는 이미지 처리에서 음성 인식에 이르기까지 패턴 인식과 관련된 다양한 분야에서 획기적인 결과를 얻었다. CNN의 가장 유익한 점은 ANN에서 매개 변수의 수를 줄이는 것이다. 이러한 성과로 인해 ANN에서는 불가능했던 복잡한 작업을 해결하기 위해 더 큰 모델에 접근하게 되었다. 유일한 관심사는 주어진 영상에서 위치에 관계없이 해당 영상을 감지하는 것이다. CNN의 또 다른 중요한 측면은 입력이 더 깊은 층으로 전파될 때 추상적인 특징을 얻는 것이다. 예를 들어, 이미지 분류에서 가장자리는 첫 번째 계층에서, 그 다음에는 두 번째 계층에서 더 단순한 형태에서, 다음 계층의 면과 같은 더 높은 수준의 특징을 감지할 수 있다.
II. CONVOLUTIONAL NEURAL NETWORK ELEMENTS
A. Convolution
assume that the input of our neural network has the presented shape in Fig 2
: 이러한 input은 image, video일 수 있으며, NN으로 처리하기에는 data scale이 심각하게 크다.
(RGB image example: 32×32*3 = width pixel * height pixel * depth of RGB channel)
(gray scale video example: width pixel * height piel * depth of frame)
assume that the network receives raw pixels as input
: input layer을 simple neuron에 연결하려면 datasets에 대해 32x32x3 가중치 연결이 있어야 한다. hidden layer에 하나의 neuron을 더 추가한다면, 32*32*3의 연결이 다시 필요할 것이고 이는 총 32*32*3*2개의 가중치 매개변수가 필요하다는 뜻과 같다. 즉, input을 단 두개의 layer에만 연결하는데 6000개 이상의 가중치 매개변수가 사용된다. data classification을 위해 여러개의 layer를 사용할 경우에 NN 구성에만 너무 많은 변수가 사용된다.
for efficient method, look for local regions in the picture instead of in the whole image
: 효율적인 방법으로, whole image를 네트워크에 연결하는 대신 local image를 찾는 방식을 사용한다. 다시 말해 다음 layer의 hidden neurons는 이전 layer의 특정 부분으로부터만 입력을 받는다. 우리가 다음 layer에서 32*32 neuron을 얻고 싶다면, 우리는 5*5*3 filter로 32*32 연결을 만들어낼 수 있다.
the size of connection drastically dropped
: 연결 크기 자체는 급격하게 감소하였지만, 매개 변수에 대한 문제들이 남아있다. 다음 layer에 local image 가중치를 일정하게 넘겨주어야 한다. 이전 layer의 local image에 대해 정확히 동일한 가중치를 다음 layer로 넘겨줘야 한다는 뜻이다. 이러한 방식을 통해 많은 추가적인 매개변수를 줄여나갈 수 있다.
benefits to these simple assumptions
- 연결의 수는 제시된 예에서 약 300만 개에서 75개 연결로 감소한다.
- local image 가중치 고정이 input neuron에서 5*5*3 filter로 생성된 출력을 해당 위치에 매핑하는 것과 유사하다.
: 따라서 이미지에서 위치에 관계없이 feature를 감지하고 인식할 수 있게 된다. 이러한 이유로 convolution라고 불린다.
astounding effect of the convolution matrix
: Fig 4는 3*3 window에서 weight를 수동으로 선택할 경우에 결과를 convolution matrix로 확인할 수 있다.
위 그림에서 볼 수 있듯이, matrix는 image의 가장자리에 맞게 설정할 수 있다. 이러한 matrix는 filter라고 부른다. 그러나 CNN의 filter는 고정되어있지 않아 맨 처음에 초기화되고 training procedure shape filter에 따른다. 궁극적으로 우리의 학습의 대상은 filter 파라미터이다. filter가 Conv layer의 가중치에 해당한다.
it is possible to add more layers after the input layer
: 이 방법을 보다 유익하게 만들기 위해 input layer 뒤에 여러개의 filter layer를 더 추가할 수 있다. 각 layer의 channel은 서로 다른 filter와 연결할 수 있다. 따라서, 우리는 주어진 channel마다의 이미지에서 다른 특징을 추출할 수 있다.
in multi channel CNN case, relation between filter and channel
- input data channel 수와 filter channel 수는 같아야 한다. (RGB image가 3-channel이라면 filter는 최소 3-channel 이상이어야한다. )
- input data의 channel 수와 관계없이 output data는 filter의 개수만큼 나온다.
how can we use that filter?
Fig 5는 다른 layer에 어떻게 연결되어 있는지를 보여준다. 각 layer마다 자체 filter를 가지고 있으므로 input으로부터 다른 feature를 추출한다. Fig 5에 표시된 neuron은 다른 filter를 사용하지만 input image의 동일한 부분을 본다. filter 마다 각기 다른 가중치가 존재하기에 값들이 모두 다르다. 각 channel별 filter를 통과한 layer를 합산한 것을 feature map / activation map이라 부른다. (CNN layer 구성에 따라 feature maps와 activation maps를 혼용해 부른다.)
가중치 변수 개수: (1) 6 layers*5*5*3 (2) 10 layers*5*5*6
위 그림은 Convolution layers=convolution + activation을 나타낸다. 여러 filter를 통해 나온 convolution들을 쌓고 ReLU(input image x*filter matrix W+b)와 같은 activation func를 통과하는 것까지의 sequence(Conv + activation func)로 convolution layer를 구성한다. 이 sequence 뒤에 Pooling layer(추후에 언급)도 추가하여 activation map의 출력크기를 수정하는 동작을 진행하면 CNN의 Feature Extraction(특성 추출) 부분이 완료된다.
B. Stride
CNN has more options to decrease the parameters & reduce some of the side effects
: options 중 하나는 stride(폭)이다. 다음 계층의 노드가 local region을 살펴봄으로써 이웃과 많은 겹침을 갖는다고 가정하면, stride를 조절하여 겹치는 현상을 조작할 수 있다. fliter의 이동폭을 설정함으로써
given 7×7 image
: 만약 filter를 매번 한 노드만 이동(stride=1)하면 5*5 output이 가능하다. Fig 6의 세 왼쪽 matrix의 output에는 겹침이 있다. (세 개의 중간 matrix과 세 개의 오른쪽 matrix도 함께 있음). 하지만, 모든 stride를 2로 만들면, output은 3x3이 된다. stride가 커질수록, 겹침 뿐만 아니라 출력의 크기도 줄어들며 따라 유실되는 정보량이 많아지게 된다.
formalize output size O when NxN image, FxF filter
if stride=1 : 1+(7-3)/1=5, output=5*5
if stride=2 : 1+(7-3)/2=3, output=3*3
C. Padding
drawbacks of the convolution step
: stride만큼 움직이는 방식은 이미지 경계에 존재할 수 있는 정보의 손실이 생길 수 있다는 단점이 존재한다. filter가 움직일 때만 캡쳐되므로 이미지 경계에 대한 정보 인식이 안될 수 있다. 이를 해결하기 위해 그림이 너무 작아지지 않게(정보유실이 덜 일어나게) 하기 위해 실제로 테두리에 0의 border를 만드는 zero-padding을 사용하는 것이다.
benefit of zero padding
: zero-padding은 이미지 경계의 정보 손실을 막으면서, 출력의 크기 또한 관리가 가능하다. 예를 들어, Fig 6에서 N=7, F=3, stride=1을 사용하면 output은 5*5(7*7에서 축소됨)가 되었었다. 그러나 zero-padding을 추가하면 출력은 7*7로 원래의 input과 정확히 같다. (이렇게 하면 실제 N은 9가 되고, zero-padding을 포함한 수정된 공식은 다음과 같다.)
if stride=1 : 1+(7+2*1-3)/1=7, output=7*7
if stride=2 : 1+(7+2*1-3)/2=4, output=4*4
이 zero-padding 아이디어는 네트워크 출력 크기가 depth로만 축소되는 것을 막는데 도움이 된다. 따라서 임의의 수의 deep CNN을 얻을 수 있다. 결국 input image size와 output size가 같아져 손실이 사라진다.
D. Feature of CNNs
weight sharing brings invariance translations to the model
: filter의 가중치에 대한 공유는 model에 invariance translations(불변 변환)을 가져온다. spatial properties(공간 속성)과 관계없이 learn feature을 filtering 할 수 있다. 우리는 이 불변 변환이라는 특성을 이용하여 Convolution, Pooling layer를 통과한 예를 들어 3차원 텐서를 Flatten, Vectorization 과정을 통해 1차원 데이터로 fully connected network에 연결이 가능하다. 우리가 마지막 pooling layer에서 얻어낸 local image들은 image 자체라기 보다는 입력된 image에서 얻어온 특이점 데이터가 된다. 즉 1차원의 벡터 데이터로 변형시켜주어도 무관한 상태가 된다는 의미이다. filter에 대한 random value로 시작함으로써 성능이 향상될 경우 가장자리를 감지하는 방법도 학습이 가능하다고 한다.
This concept can be extended to different dimensions
: 이 개념은 다른 차원으로도 확장될 수 있다. 예를 들어 오디오와 같은 sequential data인 경우 1D 오디오를 사용할 수 있다. 이미지일 경우 2D 컨볼루션(convolution)을 적용할 수 있다. 비디오나 3D 영상의 경우 3차원 컨볼루션도 사용할 수 있다. 이 간단한 아이디어는 컴퓨터의 모든 고전적인 객체 인식 방법을 능가한다.
E. Convolutional Formula
다음 레이어의 한 픽셀에 대한 컨볼루션(convolution)은 다음 공식에 따라 계산된다.
: input image(i-m)*filter matrix(j-n)
how the convolution works
: 볼 수 있듯이, input과 filter의 element별 product가 집계된 후 다음 layer에서 해당 지점을 나타낸다.
III. NONLINEARITY
next layer after the convolution is non-linearity
: Conv layer 다음에 오는 layer는 non-linearity를 갖추어야 한다. non-linearity는 생성된 output를 조정하거나 cut-off하는데 사용할 수 있다. 그래서 우리가 NN에서 보았던 activation function을 Conv layer뒤에 사용하여 output을 saturated(포화) 시키거나 limit(제한)시킨다. activation function은 NN 기초에서 배웠기에 따로 언급하지는 않겠다.
IV. POOLING
pooling의 주요 아이디어는 추가 layer의 complexity을 줄이기 위한 down-sampling이다. 이미지 처리 영역에서 해상도를 줄이는 것과 유사하다. pooling은 filter 수에 영향을 주지 않는다. convolution 과정을 통해 많은 수의 feature maps들을 생성했기 때문에 값이 너무 많아져 버리는 문제가 발생한다. 때문에 pooling 과정을 통해 각 feature map의 dimentionality를 축소해준다. 즉, correlation이 낮은 부분을 삭제하여 각 feature map의 크기를 줄이는 것이다.
most common types of pooling methods: Max-pooling
: 이미지를 하위 영역 직사각형으로 분할하고 해당 하위 영역 내부의 max값만 반환합니다. Max-pooling에 사용되는 가장 일반적인 크기는 2×2이다. pooling이 왼쪽 위 2×2 블록(핑크 영역)에서 수행되면 2만큼 이동하며 오른쪽 위 부분에 초점을 맞춘다. 이것은 stride=2가 pooling에 사용된다는 것을 의미한다. stride가 overlap 있게 진행되도록 설정도 가능하다.
down-sampling은 정보의 위치를 보존하지 않는다는 점을 고려해야 한다. 따라서 spatial information보다는 정보의 존재가 중요할 때만 적용해야 한다. 추가로, pooling은 동등하지 않은 fliter와 strides를 사용하여 효율성을 개선할 수도 있다.예를 들어, 3x3 Max-pooling with stride=2는 영역 간의 일부 overlap을 유지한다.
convolution layer (28*28 size image)example
- Convolution layer
- Max-Pooling layer
- Total CNN
첫 convolution 과정에서 5*5 size filter 10개를 사용했으므로 250개의 매개변수 존재
+ Pooling layer에서는 단순히 크기를 줄이는 개념이므로 매개변수가 없음
두번째 convolution 과정에서 5*5*10 크기의 텐서 20개를 사용했으므로 5000개의 매개변수 존재
+ 마지막의 pooling layer에서 4*4*20의 텐서를 1차원 벡터로 쭉 나열하면 320개
두개의 Fully connected layer들에서 각각 매개변수 32,000개, 1000개 추가
V. FULLY-CONNECTED LAYER
architecture of CNN
: CNN은 Conv + activation function + Pooling layer로 Feature Extraction(특성 추출) 부분을 구성하고, Feature Extraction 이후, fully connected layer를 구성하고 마지막 출력층에 softmax를 적용한 Classification(분류) 부분으로 구성된다.
특징 추출 단계(Feature Extraction)
- Convolution Layer : 필터를 통해 이미지의 특징을 추출
- Pooling Layer : 특징을 강화시키고 이미지의 크기를 줄임 (Convolution과 Pooling을 반복하면서 이미지 feature 추출)
이미지 분류 단계(Classification)
- Flatten Layer : 데이터 타입을 FC네트워크 형태로 변경. 입력데이터의 shape 변경만 수행
- Softmax Layer : Classification수행
Output : 인식결과
Classification 부분 fully connected layer의 주요 단점은 훈련에 복잡한 계산이 필요한 많은 매개변수를 포함하므로, 훈련에 긴 시간이 걸린다는 것이다. 따라서 노드와 연결 수를 제거하는 dropout layer를 사용하여 해결한다.
The essence of the CNN network
: Convolution layer, non-linearity, pooling layer
VI. CONCOLUSION
ultimate goal
: CNN은 Convolution과 Pooling을 반복적으로 사용하면서 불변하는 특징을 찾고, 그 특징을 입력데이터로 Fully connected 신경망에 보내 Classification을 수행한다.
CNN에서 가장 중요한 layer는 네트워크 내에서 대부분의 시간이 걸리는 convolution layer이다. 네트워크 성능도 네트워크 내 level 수에 따라 달라진다. 그러나 다른 한편으로는 level 수가 네트워크를 훈련하고 테스트하는 데 필요한 시간이 늘어난다. 오늘날 CNN은 얼굴 감지 및 이미지, 비디오 인식 및 음성 인식과 같은 많은 응용 프로그램을 위한 machine-learning에서 강력한 tool로 간주한다.
bibliography
cs231n.stanford.edu/slides/2017/cs231n_2017_lecture5.pdf
references
gruuuuu.github.io/machine-learning/cnn-doc/#
'개인 정리 > Dissertation analysis' 카테고리의 다른 글
Fast R-CNN (0) | 2021.04.05 |
---|---|
R-CNN (0) | 2021.04.01 |
Floor-SP (0) | 2021.03.29 |
댓글