[DL] DenseNet 논문 리뷰


    신경망 연구 초창기에는 네트워크를 더 깊게 설계하는 방법에 초점을 맞췄습니다. 이후 Wide ResNet, ResNext 등의 논문이 발표되면서 네트워크의 깊이뿐만 아니라 넓이, 혹은 cardinality와 같이 폭을 늘리는 신경망 설계 방식이 주류가 되었습니다. 이후 2016년에는 layer와 layer 사이를 촘촘하게 연결하여 정보 전달을 원활하게 하는 새로운 네트워크 설계 방식인 DenseNet이 등장합니다. Densely Connected Convolutional Networks논문을 통해 DenseNet에 대해 자세히 살펴보도록 하겠습니다.

배경

  • 신경망은 깊어짐에 따라 표현력(representative power)이 강해지는 이점이 있지만 input 값에 대한 정보가 wash out(소실)된다는 단점이 있습니다. ResNet, FractalNet 등과 같은 모델은 이전 layer의 정보를 이후 layer에 연결하는 지름길(shortcut)로 연결하는 방식을 통해 이같은 문제를 해결합니다. 즉 layer간의 연결 방식(connectivity pattern)에 변화를 준 셈입니다.

  • ResNet은 이전 layer의 input값과 identity function에 의한 연산 결과와 element-wise하게 더해주면서 입력값에 대한 정보를 유지합니다. DenseNet 논문의 저자는 이러한 방식은 정보의 흐름을 방해할 수 있다고 봅니다. DenseNet은 새로운 연결 방식을 통해 layer간의 정보 흐름을 향상시키는 방법을 제시합니다.

Densely Connected

  • DenseNet 논문의 저자는 layer간의 정보가 최대로 흐르게 하기 위해 layer간 직접 연결하는 connectivity pattern을 고안합니다. DenseNet은 이전의 모든 layer에서 생성된 feature map을 다른 모든 layer에 concat하는 방식을 제시합니다.

Cap 2020-04-30 20-22-42-640

  • 이러한 방식은 ResNet처럼 feature map끼리 element-wise하게 더해주는 방식이 아니라 feature map끼리 concatenate(연결)하는 방식입니다. 네트워크에 L개의 layer가 있을 때 layer간 총 L(L+1)/2 만큼의 연결이 발생합니다. 이와 같이 layer간에 촘촘하게 연결하는 방식으로 인해 논문의 저자는 이와 같은 설계 방식을 DenseNet이라고 부릅니다.

  • DenseNet은 이전 layer의 feature map을 학습에 사용할 수 있습니다. 이는 마치 각 layer가 네트워크의 집단 지성(Collective Knowledge)을 활용하는 것처럼 보입니다.

DenseNet의 장점

  • DenseNet의 이점은 기존 CNN 네트워크처럼 불필요한 feature map을 학습할 필요가 없기 때문에 파라미터의 수가 더 적다는 점입니다. ResNet은 파라미터 수는 layer가 각각의 weight를 가지고 있다는 점에서 매우 많습니다. 하지만 DenseNet은 매우 가늘고(narrow) 각 layer에 상대적으로 적은 feature map만을 추가하기 때문에 학습시켜야 할 파라미터 수가 적습니다.

  • layer간의 feature map을 서로 전달하면서 정보와 gradient의 흐름이 향상되어 학습이 용이하다는 장점이 있습니다.

  • 또한 Dense connection은 정규화 효과가 있어 적은 데이터셋에도 overfitting 방지에 효과적입니다.

DenseNet 설계방식

다음으로 DenseNet 설계 방식에 대해 자세히 살펴보도록 하겠습니다.

Cap 2020-04-30 20-22-59-995

Composite

DenseNet은 Dense block을 3개의 composite(BN, ReLU, 3x3 Conv)로 구성하였습니다.

Pooling

layer간의 feature map을 concat하기 위해서는 feature map의 크기가 같아야합니다. DenseNet은 feature map의 크기를 맞추기 위해 Dense block 사이에 transition layer를 추가하여 효과적으로 downsampling을 수행하여 feature map의 크기를 맞춥니다. transition layer는 BN, 1x1 Conv, 2x2 average pooling으로 구성됩니다.

Growth Rate
  • 각각의 layer가 k개의 feature map을 생산한다면 l번째 layer는 (k0 + k * (l-1))개의 input feature map을 가집니다(k0 : input layer의 channel). Densenet이 기존 네트워크 구조의 큰 차이는 k를 조절함으로써 매우 가는 layer를 가질 수 있다는 점입니다. 논문의 저자는 하이퍼 파라미터 k를 네트워크의 growth rate라고 부른다.

  • feature map은 네트워크의 전역적인 상태라고 볼 수 있다. 원래의 상태에 k개의feature map을 더해주는 것이다. growth rate는 전역적인 상태에 각 layer가 얼마나 더 정보를 추가할지 규제하는 역할을 한다. 전역적인 상태가 생성된다면 네트워크의 어디서든 접근하는 것이 가능하다. 기존 네트워크와 다르게..

Bottleneck layers

파라미터 수를 효과적으로 줄이기 위해 네트워크에 bottleneck layer(bn - relu, conv1x1 - bn - relu - conv3x3)를 추가합니다.

Compression

모델의 압축 효율성을 향상시키기 위해 생성되는 feature map의 비율을 조정합니다. Dense block이 m개의 feature map을 가진다고 했을 때 하이퍼 파라미터 theta를 곱해 feature map의 개수를 제한합니다. theta는 0과 1 사이의 값을 가지고 논문의 저자는 실험 시 theta값을 0.5로 고정했습니다.

Cap 2020-04-30 20-23-11-135

논문의 저자는 k= 32로 지정하여 DenseNet에 다양한 변형을 주면서 실험을 진행합니다.

실험 결과

Cap 2020-04-30 20-23-25-298

  • DenseNet-BC(L=190, k=40)은 당시 존재하던 모든 모델보다 CIFAR 데이터셋에서 좋은 성능을 보였습니다.
  • bottleneck layer를 통해 파라미터 수를 효과적으로 제한하고 효율적으로 활용하면서 overfitting에 보다 강건한 모습을 보였습니다.

Cap 2020-04-30 21-25-44-894

  • ResNet과 비교했을 때 DenseNet-BC는 ResNet보다 1/3 이하의 파라미터를 사용했고 비슷한 성능을 보였습니다. 1001층의 ResNet이 1000만 개 이상의 파라미터를 사용한 반면 100층 DenseNet은 오직 80만개의 파라미터를 사용했습니다.

Conclusion

    지금까지 DenseNet의 설계 방식과 이점에 대해 살펴봤습니다. 개인적으로 아이디어 자체는 굉장히 단순해서 지금까지 살펴본 논문 중에 가장 쉽게 읽을 수 있었던 것 같습니다. 하지만 구현 코드는 생각보다 복잡해서, 코드를 다 뜯어보고 프로젝트에 활용해볼 계획입니다!

Reference

Densely Connected Convolutional Networks
DenseNet Pytorch 코드




© 2017. by herbwood

Powered by aiden