[논문 리뷰] Densely Connected Convolutional Networks

권유진·2022년 6월 19일
0

논문 리뷰

목록 보기
6/17
post-custom-banner

Densely Connected Convolutional Networks

Abstract

  • 최근 합성곱 신경망은 layer 사이에 더욱 짧은 connection을 포함하면서 지속적으로 깊어지고 정확해지고 효율적으로 되고 있다.
  • DenseNet은 각 레이어를 모든 다른 레이어와 이어준다.
    • 전통적인 합성곱 신경망은 LL개의 레이어를 갖고 있다면 LL개의 연결을 갖는다.
    • 하지만 DenseNet은 L(L+1)2\cfrac{L(L+1)}{2}개의 직접적인 연결을 갖는다.
    • 각 레이어에서 모든 선행 레이어의 feature map은 input으로 사용되고, feature map은 후속 레이어의 input으로 사용된다.
  • DenseNet은 여러가지 이점이 있다.
    • Vanishing Gradient 문제를 감소시키고 역전파를 강화하고 feature 재사용을 격려하고 parameter의 수를 감소시킨다.
    • 계산량을 크게 증가시키지 않고 SOTA 달성

Introduction

  • CNN은 시각적 물체 인식 분야에서 지배적인 머신러닝 접근법이 되었다.
  • 최근 컴퓨터 하드웨어와 네트워크 구조의 발전으로 깊은 CNN 학습이 가능해졌다.
    • LeNet5은 5개의 층, VGG는 19개의 층, ResNet은 100개를 능가하는 층을 보유한다.
  • CNN이 깊어지면서, 새로운 문제가 등장하였다.
    • 경사가 많은 층을 통과할 때 경사에 대한 정보가 감소한다.
    • 최근 많은 연구에서 이 문제를 다룬다.
      • ResNet, Highway Networks: identity connection 사용
      • Stochastic depth: 학습 동안 무작위로 layer을 drop
        • 짧은 ResNet 형태
        • 정보와 경사의 흐름이 더 나아졌다.
      • FractalNets: 반복적으로 서로 다른 합성곱 블록과 여러 병렬 layer sequence를 조합
        • shortcut connection을 유지하면서 명목 깊이를 얻기 위해
      • 모두 shortcut connection이 있다는 공통점이 있다.
  • 신경망에서 계층 사이의 최대 정보 흐름을 보장하는 구조 제안
    • 직접 각 모든 계층을 연결
    • feed-forward 본성을 유지하기 위해 각 계층은 앞 계층으로부터 추가적인 input을 얻는다.
    • 그리고 뒤 레이어에 feature-map을 통과시킨다.
  • ResNet과 다르게 이전 레이어들의 feature를 합으로 통합하지 않는다.
    • 대신 feature을 concat으로 합친다.
    • ll번째 층은 input ll을 보유하고 앞 합성곱 블럭의 feature map을 포함
    • 이 feature map은 모든 LlL-l 이후 레이어를 통과
    • LL layer 신경망에서는 L(L+1)2\cfrac{L(L+1)}{2}개의 connection을 보유
      • ResNet은 LL개 connection 보유
  • DenseNet의 직관적인 효과는 기존 CNN보다 적은 파라미터를 필요로하고 불필요한 feature map학습을 할 필요가 없다는 점이다.
  • 전통적인 feed-forward 구조는 state를 레이어에서 레이어로 전달하는 알고리즘으로 볼 수 있다.
    • 각 레이어는 state를 이전 레이어에서 읽어서 다음 레이어에 쓴다.
    • state를 바꾸고 보존될 필요가 있는 정보를 통과한다.
  • ResNet에서는 이 정보 보존을 덧셈 identity 변환을 통해 명목적으로 만든다.
  • 최근에는 ResNet을 많은 레이어가 기여하지 않으며 무작위로 학습동안 드롭될 수 있도록 변형되었다.
    • 이는 ResNet이 RNN과 비슷해지도록 한다.
    • ResNet의 파라미터 수는 각 레이어의 가중치 수이기 때문에 충분히 크다.
    • DenseNet 구조는 추가되는 정보와 보존된 정보를 명시적으로 구분한다.
  • DenseNet 계층은 매우 좁다.
    • e.g. 레이어 당 12개의 필터
    • 신경망의 집합적 지식에 작은 feature map만 추가하며 나머지 feature map을 변경하지 않고 유지
    • 최종 classifier는 모든 feature map을 기반으로 결정을 내린다.
  • 파라미터 효율성 뿐만 아니라, DenseNet의 이점은 학습 시키기 좋게 정보와 경사 흐름을 향상시켰다는 것이다.
    • 각 레이어는 손실함수와 input 신호로부터 직접적으로 경사에 접근한다.
    • 이는 더 깊은 신경망을 학습하는 것에 도움을 준다.
    • 규제 효과를 갖고 오버피팅을 줄인다.
  • 적은 파라미터로 SOTA 달성
  • 최근 연구에서 레이어의 수가 증가하면서 신경망 구조의 차이를 더욱 벌렸고 다른 연결 패턴과 오래 전 연구를 탐색하게 되었다.
    • DenseNet의 구조와 비슷한 연구는 1980년대에 이미 진행되었다.
      • 해당 선구적인 연구는 레이어 별로 학습된 MLP에 중점을 둠
    • 최근에는 배치 경사 하강법으로 학습된 cascade 신경망에 제안되었다.
      • 비록 작은 dataset에서는 효과적이지만, 수백 개의 파라미터를 보유한 신경망으로만 확장된다.
    • 또한 CNN에서 다양한 수준의 feature를 skip-connection을 활용해 이용하는 것이 vision task에서 효과적이라는 발견했다.
  • Highway Network는 100개 이상의 layer를 end-to-end로 효과적으로 학습한 첫 구조이다.
    • bypassing path는 깊은 신경망을 학습하는 것을 쉽게 하는 핵심 요소이다.
    • 이는 ResNet의 identity mapping에 영향을 미쳤다.
  • ResNet은 여러 분야에서 큰 성과를 얻었다.
  • 최근, stochastic depth가 1202개 layer의 ResNet을 학습하는 방법으로 제안되었다.
    • 학습 중에 무작위로 레이어를 drop하는 것은 깊은 잔차 신경망을 학습시키는 것을 향상 시켰다.
    • 깊은 신경망의 중복성으로 인해 모든 레이어가 필요한 것이 아니고 강조될 필요가 없다는 것을 보였다.
  • pre-activation이 있는 ResNet은 1000개 이상의 레이어를 가진 신경망에서 SOTA를 달성했다.
  • 깊은 신경망을 만들기 위한 직교 접근법은 신경망의 너비를 증가시키는 것이다.
  • GoogLeNet은 Inception 모듈을 사용한다.
    • 다른 크기의 filter에서 생산된 feature map을 concat
    • 넓은 residual block이 있는 변형된 ResNet이 제안되었다.
  • FractalNet은 넓은 신경망 구조를 사용하여 좋은 결과를 냈다.
  • 매우 넓거나 깊은 구조를 사용하는 것보다 DenseNet은 feature 재사용으로 신경망의 잠재력을 이용한다.
    • 덕분에 학습시키기 쉽고 파라미터는 매우 효율적이다.
    • 서로 다른 layer로부터 학습된 feature map을 concat하는 것은 이후 레이어의 입력에서 분산을 증가시키고 효율성을 향상시킨다.
      • 이것이 ResNet과 Dense의 차이점이다.
      • Inception 신경망과 서로 다른 layer로부터 feature map을 concat하는 것은 비슷하지만 DenseNet이 더욱 단순하고 효율적이다.
  • Network in Network 구조는 더욱 정교한 feature을 추출하기 위해 micro multi-layer perceptrons을 합성곱 레이어의 filter에 포함한다.
  • Deeply Supervised Network(DSN)에서 내부 layer는 직접적으로 auxiliary classifier에 감독을 받는다.
    • 더 빠른 레이어로부터 받은 경사를 강화한다.
  • Ladder Networks는 lateral connection을 오토인코더에 속개한다.
    • 반지도학습에 효과적으로 정확도를 제공한다.
  • Deeply-Fused Nets(DFNs)은 서로 다른 기본 신경망의 중간 층을 결합하여 정보 흐름을 향상

DenseNets

Dense connectivity

  • 모든 이전 레이어에서 직접적으로 connection
  • xl=Hl([x0,x1,,xl1])x_l = H_l([x_0, x_1, \dots, x_{l-1}])
  • [x0,x1,,xl1][x_0, x_1, \dots, x_{l-1}]는 feature-map 들을 concat한 것

Composite function

  • Hl()H_l()은 Batch Normalization, ReLU, 3*3 Conv로 구성

Pooling layers

  • 만약 이전 레이어의 feature map 크기가 서로 다르면 concat할 수 없다.
  • 하지만 합성곱 신경망의 필수적인 부분은 feature map의 크기를 줄이는 downsampling 레이어이다.
  • 신경망을 여러 개의 dense block으로 나눠, downsampling 활용
  • 이 역할을 하는 layer를 transition layer라고 함
    • batch normalization, 1*1 conv layer, avg pooling

Growth rate

  • HlH_lkk개의 feature map을 생산
  • ll번째 레이어는 k0+k(l1)k_0 + k (l-1) input feature map을 보유
  • DenseNet은 매우 좁은 레이어를 보유 (k=12k=12)
    • kk는 growth rate라고 부르는 하이퍼 파라미터
    • 작은 growth rate도 SOTA를 달성하기에 충분하다.
  • 각 레이어는 해당 블럭에서 앞의 feature map들의 집적인 지식이다.
    • feature map은 신경망의 global state이다.
    • 각 레이어는 k개의 feature map을 자신의 state에 더한다.
  • growth rate은 얼마나 새로운 정보가 각 레이어의 global state에 기여하는지 규제한다.
    • 한번 쓰인 global state는 어디에서든지 사용될 수 있고, 복제할 필요가 없다.

Bottleneck layers

  • 각 레이어는 오직 kk개의 feature map만 생산한다.
  • 1*1 conv는 3*3 conv 이전에 수행된다.
    • input feature map의 수를 줄이기 위해(계산 복잡도 효율화)
  • Hl()H_l(): BN-ReLU-Conv(1*1)-BN-ReLU-Conv(3*3)
    • 1*1 conv는 4k4k개의 feature map 생성
    • 이를 DenseNet-B라고 함

Compression

  • 모델을 압축하기 위해 transition layer 사용
  • dense block이 mm개의 feature map을 보유한다면, transition layer는 θm\theta_m을 output feature map을 발생시킨다.
    • 0<θ10 < \theta \le 1: compression factor
      • θ=1\theta=1이면 feature map 수는 불변한다.
      • 해당 연구 실험에서는 0.5로 설정
      • θ<1\theta < 1인 것을 DenseNet-BC라고 함

Implementation Details

  • DenseNet은 3개의 dense block 사용(모두 동일한 개수의 layer 사용)
    • 첫 번째 dense block에 들어가기 전에 16의 output channel이(DenseNet-BC의 경우에는 growth rate의 2배) input image에서 수행됨
    • 3*3 conv layer에서 각 input은 zero-padding 수행(1 픽셀): 원본 크기 유지
    • 두 dense block 사이에 1*1 conv, 2*2 avg pooling을 transition layer로 사용
    • 마지막 dense block 후, global average pooling 수행 후, softmax
    • 각 3개의 dense block의 feature map size는 32*32, 16*16, 8*8이다.
  • configuration 실험
    • DenseNet: L=40,k=12,L=100,k=12,L=100,k=24{L=40, k=12}, {L=100, k=12}, {L=100, k=24}
    • DenseNet-BC: L=100,k=12,L=250,k=24,L=190,k=40{L=100, k=12}, {L=250, k=24}, {L=190, k=40}
  • DenseNet-BC에서는 4개의 dense block 사용
    • 초기 conv layer는 2k2k 7*7 conv(stride=2) 사용
    • 다른 레이어에서의 feature map은 kk로부터 계산됨

Experiments

Training

  • CIFAR, SVHN
    • SGD 사용
    • batch size 64, 300 epochs or 40 epochs
    • lr: 0.1, epoch의 50%, 75%에서 10으로 나눔
  • ImageNet
    • batch size 256, 90 epochs
    • lr: 0.1, 30, 60 epoch에 10으로 나눔
  • 가중치 감소: 10410^{-4}, Nesterov momentum 0.9
  • dropout layer, 0.2

Discussion

  • DenseNet은 ResNet과 유사하지만 합이 아닌 concat을 사용

Model compactness

  • 직접 연결의 결과로 feature map은 모든 후속 계층에서 접근 가능
  • feature 재사용을 장려하고 compact한 모델로 이끈다.
  • AlexNet, VGG, ResNet보다 더 적은 파라미터로 더 좋은 성능을 냄
  • DenseNet-BC가 매우 파라미터 효율적이다.
    • ResNet의 1/3 파라미터로 ResNet과 같은 성능을 냄

Implicit Deep Supervision

  • 각 레이어는 shorter connection을 통해 손실함수로부터 추가적인 감독을 받는다.
    • 이 점이 성능 향상에 기여
  • DSN과 유사(모든 layer에 classifier 존재)
  • 1개의 classifier로 모든 레이어에 직접적인 감독 부여
    • 손실 함수와 경사가 덜 복잡하다.

Stochastic vs deterministic connection

  • stochastic depth: 잔차 신경망에 있는 레이어를 무작위로 drop
    • pooling layer는 drop되지 않음
    • DenseNet과 비슷한 연결 패턴 보임
  • DenseNet과는 매우 다르지만, 이 regularizer에 DenseNet이 통찰력을 줄 수 있다.

Feature Reuse

  • DenseNet은 레이어가 feature-map을 이전 레이어의 feature map에 접근 가능하도록 한다.
  • 모든 레이어는 동일한 블록 내의 많은 입력에 가중치를 분산
    • 이는 매우 초기 레이어에서 추출한 기능이 실제로 동일한 밀집 블록 전체의 심층 레이어에서 직접 사용됨을 나타낸다.
  • transition layer의 가중치는 이전의 dense block 내의 모든 계층에 걸쳐 가중치를 분산시켜 몇 가지 간접 참조를 통해 DenseNet의 첫 번째 계층에서 마지막 계층으로 정보 흐름을 나타낸다.
  • 두 번째 및 세 번째 dense block 내의 레이어는 transition layer의 출력에 일관되게 최소 가중치를 할당하여 많은 중복 기능을 출력
    • 이는 이러한 출력이 정확히 압축된 DenseNet-BC의 강력한 결과와 일치
  • 최종 분류 계층도 전체 dense block에 걸쳐 가중치를 사용하지만 최종 feature map에 집중되는 것으로 보이며, 이는 후반에 생성된 더 높은 수준의 feature가 있을 수 있음을 시사
profile
데이터사이언스를 공부하는 권유진입니다.
post-custom-banner

0개의 댓글