I'm Lim

[논문 정리] Network In Network 본문

Classification

[논문 정리] Network In Network

imlim 2022. 11. 7. 12:47

Paper

  Lin, Min, Qiang Chen, and Shuicheng Yan. "Network in network." arXiv preprint arXiv:1312.4400 (2013).

Introduction

1. Generalized Linear Model

  Convolutional Neural Network는 Conv 레이어와 Pooling 레이어로 구성되어있다. CNN 필터는 feature map과 가중치 간의 선형 결합으로 표현된 후, non-linear function을 거친다. 이는 Generalized Linear Model (GLM) 과 유사한 방식이다. 따라서, 논문에서는 CNN 필터가 GLM 모델이라고 하였다.

2. Network In Network

 GLM은 latent space의 sample들이 선형적으로 구분 될 수 있어야 좋은 결과를 얻는데 이미지의 latent space는 선형적이지 않다. 따라서, 기존의 CNN 모델은 이미지의 latent space를 표현하기 충분하지 못하다고 주장한다. 본 논문은 비선형성을 증가시키기 위해 CNN 레이어를 micro network 모듈로 바꿨다. micro network는 conv 레이어 이후에 2개의 MLP를 더해주는 구조로 이루어진다.

 

좌 : 기존의 Conv 레이어 // 우 : Micro Network

  또한, LeNet, AlexNet, ZFNet 등 기존의 딥러닝 모델이 마지막 부분에 Classifier로 사용하던 fully connected layer를 Global Average Pooling (GAP)로 교체하였다. 그리고, 이 결과를 바로 softmax에 집어넣어서 모델 학습을 진행하였다.

3. GAP 이용시 장점

- GAP를 이용하면 해석이 용이해진다.

 

  분류 문제를 학습할 때, 딥러닝 모델은 카테고리 수준 정보를 (실제 확률 - 예측 확률) back propagation에 이용한다.

기존의 딥러닝 모델은 Conv 레이어와 이 카테고리 수준 정보 사이에 FC 레이어가 존재한다. 이는 Black box 역할을 함으로써 해석을 어렵게 만든다. 그러나, 이 FC Layer를 GAP로 교체하게 되면, Conv 레이어의 feature map과 직접적으로 카테고리 수준 정보가 연관지어진다. 따라서, GAP를 이용하면 해석에 용이해진다.

 

- Regularizer의 역할을 한다.

 

  FC 레이어는 가중치의 개수가 매우 많기 때문에 Overfitting이 일어날 가능성을 높인다. 이를 해결하기 위해 dropout 의존도가 상당히 높은 편이다. 그러나, GAP는 따로 파라미터가 존재하지 않으므로 Overfitting 가능성을 줄인다.

 

- Spatial translation에 취약하지 않다.

 

  GAP는 각 feature map의 값들을 더해 평균을 내는 것이므로 공간적 정보가 바뀌는 것을 뜻하는 spatial translation에 강인하다. 조금 극단적인 예시를 들자면, 좌측 상단에 개가 있든 우측 하단에 개가 있든, feature map의 특정 위치를 기반으로 분류하는 것이 아니라 개의 feature를 기반으로 분류를 하게 된다는 것이다.

Convolutional Neural Network

CNN의 연산은 다음과 같이 표현될 수 있다.

 

$f_{i, j, k} = max(w_k^T x_{i, j}, 0)$

 

  (i, j)는 feature map의 픽셀 인덱스이고, $x_{i, j}$는 그에 상응하는 feature map값이다. $k$는 입력 feature map의 채널 인덱스이다. 비록, ReLU로 비선형성 변환을 가한다고는 하지만, latent space가 매우 복잡하다면 조금 더 일반적인 function approximator가 필요할 것이라고 한다. 따라서, 논문에서는 Network In Network를 고안하였다.

Network In Network

$f_{i, j, k_1}^1 = max({w_{k_1}^1}^T x_{i, j} + b_{k_1}, 0)$ : Conv 레이어

$f_{i, j, k_n}^n = max({w_{k_n}^n}^T f_{i, j} ^ {n-1} + b_{k_n}, 0)$ : FC 레이어

 

  식을 살펴보면, NIN 구조는 feature map은 건드리지 않는다 (i, j가 유지). 그러나, 채널의 개수는 변할 수 있음을 암시한다.

이를 Cascaded Cross Channel Parametric Pooling이라고 한다. 또한, 이는 추후에 자주 사용될 1 x 1 Convolution과 동일하다.

Network In Network Structure

 

아래의 모델 구조는 CIFAR-10 데이터셋을 입력으로 한다는 기준으로 작성하였다.

 

  kernel_size stride padding in_channel out_channel input_shape
conv 1 5 1 2 3 192 (3, 32, 32)
mlp 1-1 1 1 0 192 160 (192, 32, 32)
mlp 1-2 1 1 0 160 96 (160, 32, 32)
MaxPool 3 2 1     (96, 32, 32)
             
conv 2 5 1 2 96 192 (96, 16, 16)
mlp 2-1 1 1 0 192 192 (192, 16, 16)
mlp 2-2 1 1 0 192 192 (192, 16, 16) 
MaxPool 3 2 1     (192, 16, 16)
             
conv 3 3 1 1 192 192 (192, 8, 8)
mlp 3-1 1 1 0 192 192 (192, 8, 8)
mlp 3-2 1 1 0 192 10 ( CIFAR-10 ) (192, 8, 8)
GAP           (10, 8, 8)
Softmax           (10, 1, 1)

 


CIFAR-10 Dataset

 CIFAR-10 데이터셋에 대한 설명은 생략한다. 본 논문에서는 Global Contrast Normalization과 ZCA whitening을 통하여 전처리를 진행하였다.

 

GCN은 전체 training 데이터셋의 평균과 분산을 구한 뒤, standardization을 하는 기법이다. 

Whitening이란 Standardization 이후, decorrelation 과정을 거치는 것이다. 

CIFAR-100 Dataset

 1. CIFAR-100 데이터셋은 CIFAR-10 데이터셋과 매우 유사하나, 100개의 클래스를 가진다는 차이가 존재한다. CIFAR-100 역시 Global Contrast Normalization과 ZCA whitening을 통하여 전처리를 진행하였다.

 

 2. Data Augmentation을 위해서 translation과 horizontal flip을 사용하였다고 한다.

Street View House Numbers Dataset

 SVHN 데이터셋은 입력이미지 크기가 32 x 32로 CIFAR-10, CIFAR-100과 동일하다. 본 논문에서는 Local Contrast Normalization만을 적용하였다고 한다.

MNIST Dataset

 MNIST Dataset의 입력이미지 크기는 28 x 28이다. 따로, 어떠한 전처리를 진행하였다는 내용이 없는 것으로 보아 전처리를 진행하지 않은 것으로 보인다. 또한, CIFAR-10을 학습 시킬때와 동일한 구조를 사용하였다고 한다. 다만,  MNIST가 CIFAR-10 보다 간단한 데이터이므로 각각의 mlp 레이어로부터 생성되는 feature map의 개수를 줄였다고 한다. 

Discussion

  본 논문에서는 CNN 구조의 비선형성을 증가시키기 위해서 micro network 모듈을 사용하였다. 이 모듈이라는 개념은 이후에 Inception, ResNet에서 활용하게 된다. 

 

  또한, 논문에서 나온 1 x 1 Conv 레이어는 이후 Depthwise Seperable Convolution이라는 개념으로 확장된다.

'Classification' 카테고리의 다른 글

[논문 정리] Pre activation ResNet  (0) 2022.11.20
[논문 정리] ResNet  (0) 2022.11.20
[논문 정리] Inception v2, v3  (0) 2022.11.20
[논문 정리] GoogLeNet ( Inception v1 )  (1) 2022.11.11
[논문 정리] VGGNet  (0) 2022.11.10
Comments