0.Reference
https://arxiv.org/abs/1312.4400
Network In Network
We propose a novel deep network structure called "Network In Network" (NIN) to enhance model discriminability for local patches within the receptive field. The conventional convolutional layer uses linear filters followed by a nonlinear activation function
arxiv.org
1. Introduction
- CNN은 ConVLayer와 Pooling Layer가 번갈아가며 구성된다.
- ConVLayer에선 linear filiter와 그에 해당하는 receptive filed의 inner product를 수행하여 진행하게 되고,
- 그후 각각 activation function을 적용하게 되는데, 이렇게 얻어진 출력들을 feature map이라고 부른다.
- CNN에서의 Convolution filter는 해당 데이터의 patch를 위한 GLM(generalized Linear Model)에 해당하는데,
cf) GLM? : multiple linear regression의 일반화라고 생각하면 된다.
- 여기서 본 저자는 GLM을 filter로 사용할 경우 'abstraction'의 level이 낮다고 주장하고 있다.
- 여기서 'abstraction'이란 어떠한 transforms을 적용하든 이미지의 근본적인 feature를 잘 추출할 수 있는 능력을 의미한다.
- 여기에 대한 해결책으로, GLM을 nonlinear function으로 근사시키면 'abstraction'의 level을 높일수 있다고 주장한다.
-NIN(Network In Network)에서는 GLM을 micro network 구조로 대체하였다.
- 여기서 micro network는 간단히 MLP로 구성하였다고 한다.(논문에선 mlpconv Layer라고 정의)
- 기존엔 CNN과 FC를 연결하기위해 flatten을 사용하였지만, 본 논문에선 Global Average Pooling을 이용하여 연결하게 된다.
- 기존의 flatten 방식은 계산비용이 크고, 그만큼 overfitting을 야기시키게 되는데,
- Global Average Pooling은 local한 feature를 최대한 유지하면서,
- 계산비용을 상대적으로 적게쓰며 flatten과 유사하게 1차원 벡터로 매핑시키게 된다.
- 그로인해 overfitting을 방지시켜준다고 볼 수 있다.
2. Convolution Neural Networks
- classic convolutional neural networks는 ConVLayer와 PoolingLayer가 번갈아가며 쌓아서 구성된다.
- ConVLayer는 linear convolution filter와 그 뒤에 이어지는 nonlinear activation을 통해 feature map을 생성한다.
3. Network In Network
3.1. MLP Convolution Layers
- 본 논문에서 MLP를 ConVLayer에 연결시킨 이유는 두가지가 존재한다.
i) MLP는 back-propagation을 통해 학습되는 CNN과 호환된다.
ii) MLP가 Deep한 model이 될 수 있고, 즉 feature reuse을 하게 된다.
- 이렇게 ConVLayer + MLP의 구조를 본 논문에선 mlpconv layer라고 정의하는데,
- 수식으로 표현하면 다음과 같다.
- 본 논문에서 activation function은 ReLU를 사용하였기에, max함수가 보이는 것이다.
- 여기서 MLP는 마치 1x1 ConVLayer처럼 작동하게 된다.
- MLP의 층이 깊어지면 깊어질수록 그만큼 Pooling된다고 생각하면 좋다.(MLP Layer는 가면 갈수록 Unit의 개수는 줄어들어야함)
- 뿐만아니라 MLP는 각 Channel의 information을 종합적으로 고려하여 'abstraction'을 학습하게 된다.
ex) Tranditional CNN이 '눈'과'입'같은 단일 feature만 고려한다면, NIN은 '얼굴'이라는 더 높은 수준의 개념을 빠르게 인식한다.
3.2. Global Average Pooling
- 기존의 CNN은 ConVLayer와 FCLayer를 연결하는 과정에서 Flatten을 사용하여 연결하게 되는데,
- 이에 대한 단점은 feature map을 flatten하기 때문에, local한 값이 뭉게지게 된다.
- 뿐만 아니라 이 과정에서 계산비용이 엄청 증가하기 떄문에 Overfitting이 일어나게 된다.
- 이를 해결하기 위해 GAP(Global Average Pooling)을 제안하게 된다.
- GAP는 각 feature maps의 average값을 구하여 feature maps의 길이만큼의 vector가 생성되게 된다.
--> feature map의 average값을 구하기 때문에, local한 feature를 살리면서 1차원 벡터로 매핑이 가능해진다.
- GAP Layer에선 최적화해야 할 parameter가 없기 때문에, 따라서 overfitting을 상대적으로 덜 야기시킨다.
3.3. Network In Network Structure
- 본 논문에선 각각의 MLP를 3개의 perceptron으로 구성하였다고 한다.