반응형

Aggregated Residual Transformations for Deep Neural Networks: https://arxiv.org/pdf/1611.05431.pdf

 

위 논문을 재해석(?)하여 리뷰입니다. 또한, 아래의 내용과 그림의 출처는 위의 논문임을 밝힙니다!

 

Abstract

동일한 블록을 반복적으로 구축하여 더 적은 파라미터로 이미지 Classification이 가능하다.

더 깊고 넓은 디멘션(demension)보다는 cardinality를 키우는 것이 분류의 정확도를 향상시킬 수 있다.

  • "cardinality" (the size of the set of transformations): 똑같은 형태의 빌딩 블록(building block)의 갯수

 

1. Introduction

[Left: (bottleneck)ResNet, Right: ResNeXt]

특히 많은 층(layers)을 가진 경우 하이퍼파라미터가 증가하는 어려움(문제)이 있다.

ResNets를 기반으로 하는 VGG의 경우, 같은 shape의 blocks을 가졌다.

이 간단한 룰은 하이퍼파라미터를 줄였다. 또한 이 룰은 특정 데이터셋에 over-adapting하는 위험을 줄일 수 있을 것이다.

 

 

"Split-Transform-Merge"

 

Inception 모듈은 인풋을 저차원의 임베딩으로 split하고, 특화된 필터셋(3×3, 5×5, etc.)으로 transform하여 결합(concatenation)으로 merge한다.

(In an Inception module, the input is split into a few lower-dimensional embeddings (by 1×1 convolutions), transformed by a set of specialized filters (3×3, 5×5, etc.), and merged by concatenation.)

 

ResNeXt는 split-transform-merge구조로, VGG/ResNets의 반복되는 layers 구조를 가진다.

 

 

[ResNeXt 와 동등한 blocks]

[ResNeXt blocks]

  1. (a)는 누적 잔차 변환(Aggregated residual transformations)
  2. (b)는 (a)보다 early concatenation(초기 결합)한다.
  3. (c) (a,b)와 동등한, grouped convolution

 

ResNeXt는 동일한 topology(네트워크 형식?)를 공유하기 때문에 인자(factor)로 경로(path)를 더 쉽게 분리할 수 있다.

 

cardinality는 네트워크의 층이 깊어(deeper)지거나 넓어(wider)지는 것보다 정확도를 얻는 것에 더 효과적이다.

 

ResNeXt(suggesting the next dimension)는 다른 모델들(ResNet-101/152 , ResNet200 , Inception-v3 , and Inception-ResNet-v2 ) 보다 더 간단한 디자인(구조)을 가졌지만, 월등히 나은 성능(정확도)을 보인다.

 

 

2. Related Work

  1. Multi-branch convolution networks

  2. Grouped convolutions

    AlexNet 이 그룹별 컨볼루션의 예이다. Input을 GPU1과 GPU2 로 전달된 후 각 GPU에서 따로 따로 다음 hidden layer로 전달되다가 나중에 하나로 합쳐진다.

    • 입력 이미지의 채널을 여러 그룹으로 나눠 독립적인 컨볼루션을 수행
  3. Compression convolutional networks

    Decomposition은 중복성을 줄이고 가속/압축하기 위해 선택된 방법이다. 이 방법은 더 적은 복잡성, 더 작은 모델 사이즈와 정확도의 타협(compromise)을 보여준다. ResNeXt에서의 방법은 압축보다 더 강력한 표현력을 보여준다.

  4. Ensembling

    ResNeXt에서의 방법은 일련의 변환으로 addition을 이용하지만 각각이 독립적으로 훈련되는 것이 아니기때문에 앙상블로 보는 것은 적합하지 않다.

3. Method

1. Template

[ 원래 ResNet-50과 유사한 Capacity를 가진 ResNeXt-50 비교 ]

 

  • C=32: 32개 그룹별 컨볼루션

ResNeXt의 네트워크는 residual blocks를 쌓아서 구성한다.

이러한 블록은 두가지 간단한 룰이 있다. 먼저, 같은 사이즈의 spatial maps를 사용한다면 그 blocks는 같은 파라미터를 공유한다.

두 번째 룰은 계산적 복잡성이 모든 blocks에서 같다는 것이다.

이러한 두가지 룰에 따르면 template 모듈을 구축하고, 몇가지 중요한 요인(factor)에만 집중하면 된다.

 

 

2. Revisiting Simple Neuron

 

인공신경망의 가장 간단한 뉴런의 내적(가중합)은 fully connected, convolution 층에서 이루어지는 기본적인 변환이다.

이러한 연산은 splitting, transforming, aggregating 으로 recast(다시 작성)할 수 있다.

 

(i)splitting 자르기

벡터 X 가 X1, X2...XD 의 저차원 값으로 잘라진다.

(ii) Transforming 변환

저차원의 정보 X1, X2...XD 가 각각 가중치 Wi 와 곱해져서 크기(Scale)가 변한다(Transform).

(iii) aggregating

변환된 저차원 정보를 합친다

 

 

3. Aggregate Transformations

 

뉴런 자체도 더 일반적인 기능을 하는 기본 변환을 대체할 수 있는 네트워크가 될 수 있다.

깊이의 차원을 늘리는 것으로 밝혀진 Network-in-Network 와 대조적으로 ResNeXt의 Network-in-Neuron 은 새로운 차원을 따라 확장된다.

 

cardinality는 필수적인 차원이고 깊이와 폭의 차원보다 더 효과적이다.

ResNeXt는 모든 Ti가 같은 topology를 갖는 변환 함수를 설계하는 간단한 방법을 고려한다. (Ti는 여러함수가 될 수 있다)

동일한 층을 반복하는 VGG 스타일의 방법을 확장시켜, 몇 가지 요인을 분리하고 많은 수의 변환으로 확장할 수 있게 한다. ResNeXt에서는 bottleneck 모양으로 구축하고 각 첫번째 1x1 층은 저차원 임베딩을 생성한다.

 

  • bottleneck: 차원을 줄였다 늘리는 것, 연산 시간을 줄이기 위해 사용

[Inception-resnet.v1]

그림 출처: 구글 인셉션 모델

Relation to Inception-ReNet: ResNeXt는 Inception-ReNet과 비슷한 residual 기능을 가지고 있지만 여러 경로에서 같은 topology를 공유한다는 점에서 다르다.

 

Relation to Grouped Convolutions: Splitting은 input channel이 grouped convolution 층으로 분리될 때 필수적이다.

grouped convolutional 층은 output 층으로써 concatenate(결합)된다.

 

Discussion: 같은 차수의 형태(homogenous forms)가 더 단순하고 확장성이 있기 때문에 선택했다.

 

 

4. Model Capacity

 

[cardinality C와 bottleneck 너비(width)의 관계]

bottleneck은 input과 output block을 분리(독립적으로 만들)하기 때문에 사용했다.

이 방법은 다른 하이퍼파라미터를 변경하지 않기 때문에 cardinality의 영향에 집중하는데 도움이 된다.

 

 

4. Implementation details

input image: 224 x 224 randomly cropped (ImageNet dataset)

shortcuts & Downsampling

optimizer: SGD

mini-batch size: 256 (32 per 1 gpu)

gpu: 8

weight decay: 0.0001

momentum: 0.9

learning rate: 0.1, 0.01, 0.001

 

aggregating 이후 Batch Normalization을 적용 후 shortcut과 합한다.

 

(a), (b), (c) 블록 모두 같은 결과를 얻었고, 다른 두개의 블록(block)보다 더 간결하고 빠른 (c) 선택했다.

*(c) : (a,b)와 동등한 grouped convolution 임

 

 

5. Experiments

1. Experiments on ImageNet-1K

 

Cardinality vs. Width.

[네트워크 구조를 바꿔가며 성능 실험, 복잡도가 비슷한 ResNet과 ResNeXt 비교]

 

 

Cardinality가 1에서 32로 증가할수록 error가 줄어든다.

 

Increasing Cardinality vs. Deeper/Wider.

Resnet-101의 너비와 폭을 늘리는 것보다 ResNeXt-101의 에러율이 더 낮다.

: 깊이보다는 너비, 너비보다는 cardinality가 에러율을 더 낮출 수 있다.

 

Residual connections.

 

[ResNet-50 과 ResNeXt-50에 shortcut을 제거했을 때 비교]

 

Comparisons with state-of-the-art results.

 

Inception v3,4, Inception-resnet보다 ResNeXt의 에러율이 더 낮다.

 

 

 

6. ResNext를 어디에 활용하면 좋을까?

 

더~~ 깊은 모델, 더~~~ 넓은 모델보다 더 적은 파라미터로 더 높은 성능을 낼 수 있다.

 

단, 절대적으로 높은 성능은 아니다.

 

 

p.s.

첫 논문 리뷰라 내용이 부족할 수 있습니다.

첨언 환영합니다!

반응형

+ Recent posts