[논문 리뷰] Densely Connected Convolutional Networks
Densely Connected Convolutional Networks
Abstract
- 최근 합성곱 신경망은 layer 사이에 더욱 짧은 connection을 포함하면서 지속적으로 깊어지고 정확해지고 효율적으로 되고 있다.
- DenseNet은 각 레이어를 모든 다른 레이어와 이어준다.
- 전통적인 합성곱 신경망은 L개의 레이어를 갖고 있다면 L개의 연결을 갖는다.
- 하지만 DenseNet은 2L(L+1)개의 직접적인 연결을 갖는다.
- 각 레이어에서 모든 선행 레이어의 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으로 합친다.
- l번째 층은 input l을 보유하고 앞 합성곱 블럭의 feature map을 포함
- 이 feature map은 모든 L−l 이후 레이어를 통과
- L layer 신경망에서는 2L(L+1)개의 connection을 보유
- ResNet은 L개 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,…,xl−1])
- [x0,x1,…,xl−1]는 feature-map 들을 concat한 것
Composite function
- Hl()은 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
- Hl은 k개의 feature map을 생산
- l번째 레이어는 k0+k(l−1) input feature map을 보유
- DenseNet은 매우 좁은 레이어를 보유 (k=12)
- k는 growth rate라고 부르는 하이퍼 파라미터
- 작은 growth rate도 SOTA를 달성하기에 충분하다.
- 각 레이어는 해당 블럭에서 앞의 feature map들의 집적인 지식이다.
- feature map은 신경망의 global state이다.
- 각 레이어는 k개의 feature map을 자신의 state에 더한다.
- growth rate은 얼마나 새로운 정보가 각 레이어의 global state에 기여하는지 규제한다.
- 한번 쓰인 global state는 어디에서든지 사용될 수 있고, 복제할 필요가 없다.
Bottleneck layers
- 각 레이어는 오직 k개의 feature map만 생산한다.
- 1*1 conv는 3*3 conv 이전에 수행된다.
- input feature map의 수를 줄이기 위해(계산 복잡도 효율화)
- Hl(): BN-ReLU-Conv(1*1)-BN-ReLU-Conv(3*3)
- 1*1 conv는 4k개의 feature map 생성
- 이를 DenseNet-B라고 함
Compression
- 모델을 압축하기 위해 transition layer 사용
- dense block이 m개의 feature map을 보유한다면, transition layer는 θm을 output feature map을 발생시킨다.
- 0<θ≤1: compression factor
- θ=1이면 feature map 수는 불변한다.
- 해당 연구 실험에서는 0.5로 설정
- θ<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
- DenseNet-BC: L=100,k=12,L=250,k=24,L=190,k=40
- DenseNet-BC에서는 4개의 dense block 사용
- 초기 conv layer는 2k 7*7 conv(stride=2) 사용
- 다른 레이어에서의 feature map은 k로부터 계산됨
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으로 나눔
- 가중치 감소: 10−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가 있을 수 있음을 시사