CNN기반의 신경망들이 deep해지면서 정보가 마지막까지 제대로 전달이 안되는 문제 발생(it can vanish and “wash out” by the time it reaches the end (or beginning) of the network)
기존 연구들은 layer 사이의 short path를 생성함으로써 문제를 해결하려고 함.
그러나 DenseNet은 모든 레어이의 피쳐맵을 연결(concatenate) → 피쳐맵의 크기 동일
장점은 다음과 같다.
더 적은 수의 파라미터를 학습함. (it requires fewer parameters than traditional convolutional networks, as there is no need to relearn redundant feature-maps)
layer끼리의 정보/gradient 교환이 원활하여 학습이 쉽다. (their improved flow of information and gradients throughout the network, which makes them easy to train.)
오버피팅의 위험이 적다. (dense connections have a regularizing effect, which reduces overfitting on tasks with smaller training set sizes.)
DenseNets
resnet은 identity function($x_{l-1}$)을 덧셈으로 연결 → 이는 신경망 내 정보교환을 지연시킬 수 있음. (However, the identity function and the output of H_l are combined by summation, which may impede the information flow in the network)
→ 본 논문에서는 모든 레이어에 direct connection하는 방식을 제안함
input[$x_0, x_1,...,x_{l-1}$]은 0 ~ l-1 번째 레이어의 결과인 피쳐맵을 하나의 tensor로 concatenate한 것.
composite function
$H_l()$ = Batchnorm + ReLU + 3x3conv로 구성
Pooling layers
concatenation을 위해선 피쳐맵 크기가 동일해야함. 그러나 down-sampling하여 주요 피쳐를 얻는 것은 CNN구조에서 중요 → 이를 위해 dense blocks 사이에 convolution과 pooling을 해주는 transition layer 추가
transition layer의 경우 = BatchNorm + 1x1conv + 2x2avgpool로 구성
Growth rate
$H_l$은 $k_0 + k (l-1)$개의 피쳐맵을 input으로 가지고, k개의 피쳐맵을 생성한다. ($k_0$는 input layer 채널 수)
다른 모델과 한가지 차이점은 DenseNet은 narrow layer를 가져도 된다는 것이다. ex) k = 12
-> 논문에서는 이를 모든 레이어가 이전 상태의 피쳐맵의 정보, 즉 collective knowledge를 활용하기 때문이라고 설명하고 있다.
여기서 k는 하이퍼파라미터로 growth rate라고 부른다. k는 각 layer가 새로운 정보를 얼마나 더할지(전체에 어느 정도 기여를 할지)를 결정한다.
Bottleneck layers
앞서 언급했듯이, $H_l$은 $k_0 + k (l-1)$개의 피쳐맵을 input으로 가지고, k개의 피쳐맵을 생성 → output에 비해 input이 많음 ⇒ bottleneck layer가 효과적
$H_l$ = BN + ReLU + 1x1conv + BN + ReLU + 3x3conv
여기서 1x1conv는 4k개의 피쳐맵을 생성
compression
transition layer에서 피쳐맵의 개수를 줄입니다. dense block이 m 피쳐맵을 출력한다면 transition layer에서는 $\theta m$개의 피쳐맵을 출력하도록 한다. 여기서 $\theta$는 compression factor로 0보다 크고 1보다 작거나 같은 값을 가짐.
댓글 영역