반응형

 

 

논문 링크입니다.

https://arxiv.org/abs/1608.06993

 

Densely Connected Convolutional Networks

Recent work has shown that convolutional networks can be substantially deeper, more accurate, and efficient to train if they contain shorter connections between layers close to the input and those close to the output. In this paper, we embrace this observa

arxiv.org

2016년 발행

 

 

0. Title


Densely Connected Convolutional Networks

-> 컨볼루션 네트워크를 밀집하게 연결한 모델인가 봅니다...

 

 

1. Abstract


최근의 연구에서 컨볼루션 네트워크가 input과 가까운 레이어와 output과 가까운 레이어 사이의 short connection을 가진다면,

학습시키기에 상당히 깊고 더 정확하고 효율적일 수 있다는 것을 밝혀냈습니다.

이 논문에서는 이러한 관점을 받아들이고, 각각의 레이어를 나머지 모든 레이어와 연결하는

Dense Convolutional Network (DenseNet)라는 것을 소개하려고 합니다.

Figure 1: A 5-layer dense block with a growth rate of k = 4. Each layer takes all preceding feature-maps as input.

 

전통적인 컨볼루션 네트워크는 L개의 레이어에서 L개의 커넥션이 있었다면, 

우리의 네트워크는 L(L+1)/2개의 다이렉트한 레이어가 있다.

 

각각의 레이어에서 모든 진행하는 레이어들의 피쳐맵은 인풋으로 사용되고,

각각의 레이어의 피쳐맵은 모든 부분 레이어들에 인풋으로 사용된다.

 

DenseNet은 여러가지 설득력있는 장점이 있다.

그것은 vanishing-gradient 문제를 해결하였고, 피쳐 전파를 강화시켰고, 피쳐를 재활용하였고, 파라미터를 상당히 많이 줄였다.

우리는 우리의 아키텍쳐를 굉장히 경쟁적인 객체 인식 벤치마크 태스크에 평가하였다.(CIFAR-10, CIFAR-100, ImageNet, SVHN)

그 결과, DenseNet은 대부분에서 SOTA보다 상당한 향상을 보여주었고, 동시에 적은 연산량을 요구하였다.

 

 

2. Conclusion


우리는 DenseNet이라고 불리는 새로운 컨볼루션 뉴럴 네트워크를 만들었다.

이는 동일한 피쳐 사이즈를 가진 두 레이어를 다이렉트로 연결하였다.

우리는 DenseNet이 최적화 어려움 없이 몇 백개의 레이어로 스케일을 가진 것을 보여주었다.

DenseNet은 성능 저하나 오버피팅 없이 파라미터의 개수 증가와 함께 끊임없는 정확도 향상을 생산하는 경향이 있다.

다양한 세팅에서 덴스넷은 여러 매우 경쟁적인 데이터셋에서 sota의 성능을 보여 주었다.

게다가, 덴스넷은 sota의 성능을 내기 위해 상당히 적은 파라미터와 적은 연산량을 요구하였다.

왜냐하면 우리는 resnet의 하이퍼 파라미터 세팅을 활용하였기 때문이다.

우리는 더 디테일한 하이퍼 파라미터 튜닝으로 더 높은 성능을 달성할 수 있다고 믿는다.

simple connectivity 방식을 따라가면서, identity mapping, deep supervision, diversified depth의 특성들을 통합하였다.

이것들은 네트워크 전체에 걸쳐 피쳐 재사용을 허용하고, 결과적으로 학습을 더 간단하게 할 수 있었고, 더 정확한 모델이 될 수 있었다.

컴팩트한 내부 표현과 줄어든 피쳐 중복성으로 인해, 

덴스넷은 컨볼루션 피쳐 위에 만들어진 컴퓨터 비젼 태스크에서 좋은 피쳐 추출기가 되었다.

 

 

3. Introduction


CNN은 시각 인식에서 지배적인 머신러닝 기법이 되었다.

비록 이것은 20년전에 소개되었지만, 하드웨어와 네트워크 구조의 발달로 최근에 들어서야 깊은 CNN을 학습시킬 수 있게 되었다.

오리지널인 LeNet5은 5개의 레이어로 구성되어 있다. VGG는 19개, 작년에 High way network와 ResNet이 100 레이어 경계를 넘었다.

 

CNN이 더욱 더 깊어짐에 따라 새로운 연구의 문제가 나타났다.

인풋이나 gradient의 정보가 여러 레이어를 거치면서 빠져 나간다는 것이다. 네트워크의 끝에 다다르면서는 거의 사라지거나 씻겨 나간다.

많은 최근 논문들이 이 문제를 다루고 있다. ResNet과 Highway Network는 identity connection을 통해 신호를 한 레이어에서 다른 레이어로 보낸다. 등등,, 이들은 동일한 핵심 특징을 가지고 있다. : 앞의 레이어와 뒤의 레이어의 짧은 경로를 만들어 잇는 것이다.

 

1) 우리의 논문은 이러한 관점을 simple connectivity pattern으로 만드는 아키텍처를 소개하려 한다.

: 레이어들 사이에 최대 정보를 보장하기 위해, 모든 레이어를 각각 직접 연결한 것

feed-forward nature를 유지하기 위해, 각각의 레이어는 모든 레이어들로부터 추가적인 인풋을 얻고, 그들의 피쳐맵을 모든 하위 레이어들에 전달하였다. (Figure 1 참조)

결정적으로, ResNet과 비교하여, 우리는 피쳐들이 레이어로 전달되기 이전에 피쳐들을 sum으로 결합하지 않았다. 대신에, 피쳐들을 concat함으로써 결합하였다. 

즉, l번째 레이어는 l개의 인풋을 가지고, 이전의 모든 컨볼루션 블록으로부터의 피쳐맵으로 구성된다. (이후의 피쳐맵은 X)

L-layer 네트워크는 L개가 아닌 L(L+1)/2개의 connection을 가지게 된다. 

 

dense connectivity pattern으로 인한 가능한 반직관적 효과는 중복된 피쳐맵을 학습할 필요없이 전통적인 컨볼루션 네트워크보다 더 적은 파라미터를 요구한다는 것이다. 

전통적인 feed-forward 구조는 레이어에서 레이어로 패스되었다. 각각의 레이어는 바로 이전의 레이어로부터만 상태를 읽었고, 바로 이후의 레이어에만 상태를 작성하였다. 이것은 상태를 변화시킬 뿐만 아니라 보존되어야 할 정보도 전달하였다.

ResNet은 identity transformation을 통해 이 정보 보존을 명백하게 하였다. 최근의 ResNet 변형은 많은 레이어들이 적게 기여하고, 학습중에 랜덤하게 탈락되는 구조이다. 이것이 ResNet의 상태를 RNN과 비슷하게 하였지만, 각각의 레이어가 자신의 웨이트를 가지고 있기 때문에 파라미터의 수가 상당히 많다. 

 

우리가 제안한 DenseNet 아키텍쳐는 네트워크에 더해지고 보존되는 정보들 사이에서 차별화한다.

2) DenseNet은 굉장히 좁다. 레이어당 12개의 필터만 가지고 있기 때문이다. 네트워크의 "collective knowledge"에 작은 규모의 피쳐맵만이 추가된다. 그리고, 남아있는 피쳐맵은 변하지 않게 유지한다. 그렇게 되면, 마지막 분류기는 네트워크의 모든 피쳐맵을 기반으로 의사결정을 할 수 있게 된다.

3) 파라미터 효율성과 더불어, 학습을 더 쉽게 만들어주는 정보와 gradient 흐름의 개선 또한 DenseNet의 큰 장점이다. 각각의 레이어는 loss function과 원본 인풋 시그널로부터 gradient로의 직접 접근을 할 수 있으므로, 명백한 deep supervision으로 이끈다.

4) dense connections에는 작은 학습 데이터에서 오버피팅을 줄여주는 정규화 효과가 있다는 것을 발견하였다. 

 

 

 

3. DenseNets


하나의 이미지 x0이 컨볼루션 네트워크를 지나간다고 생각해보자.

네트워크는 L개의 레이어로 이루어져 있고, 각각의 레이어는 비선형 변형인 Hl(*)을 구현한다.

Hl(*)은 Batch Normalization, ReLU, pooling, Conv과 같은 연산의 합성물일 것이다.

우리는 l번째 레이어의 아웃풋을 xl이라고 하겠다.

 

# ResNets

ResNet은 전통적인 feed-forward 네트워크로, l번째 레이어의 아웃풋을 (l+1)번째 인풋으로 연결하며, Xl = Hl(Xl-1) 의 레이어 변환을 수행한다.

ResNet은 identity function과 함께 다음과 같은 비선형 변환을 수행하는 skip-connection을 추가한다.

: Xl = Hl(Xl-1) + Xl-1

ResNet의 장점은 gradient가 identity function을 통해 뒤쪽의 레이어에서 앞의 레이어로 직접적으로 흐를 수 있다는 것이다.

하지만, identity function과 Hl의 아웃풋이 summation으로 병합되기 때문에 이는 네트워크에서 정보의 흐름을 방해할 수 있다.

 

# Dense connectivity

레이어들 간의 정보 흐름을 향상시키기 위해서 우리는 다른 연결 패턴을 제안한다.

: 레이어에서 그 레이어들의 후속 레이어로 직접적인 연결을 하는 것이다.

결과적으로 l번째 레이어는 모든 선행 레이어의 피쳐맵을 인풋으로 받는다.

Eq (2)

[x0, x1, . . . , xl−1]는 0부터 l-1 레이어들로부터 생산된 피쳐맵을 concatenate한 것을 말한다. 즉, 붙인 것임.

구현의 편의를 위해, 우리는 Hl(*)의 다수의 인풋을 하나의 텐서로 붙였다(concatenate)

 

# Composite function

우리는 Hl(*)를 BN -> ReLU -> Conv의 연이은 세 개의 연산의 합성물로 정의하였다.

 

# Pooling layers

 피쳐맵의 사이즈가 변할 때 Eq (2) 에서의 concatenate 연산은 실행 불가능하다.

하지만, 컨볼루션 네트워크의 필수적인 부분은 피쳐맵의 크기를 바꾸는 다운샘플링 레이어이다.

우리의 아키텍쳐에서 다운샘플링을 이용하기 위해서 우리의 네트워크를 여러 개의 dense 블록으로 나누었다.

Figure 2: A deep DenseNet with three dense blocks

우리는 블록 사이에 있는 컨볼루션과 풀링을 하는 레이어들을 transition layers라고 부르기로 하였다.

transition layers는 batch normalization과 1x1 컨볼루션 레이어와 2x2 average pooling 레이어로 이루어져 있다.

 

# Growth rate

만약 각각의 Hl(*)이 k개의 피쳐맵을 생산한다면, l번째 레이어는 (k0 + k(l-1))개의 인풋 피쳐맵을 가진다. 

k0는 인풋 레이어의 채널 수이다.

DenseNet과 다른 네트워크의 가장 중요한 차이점은 DenseNet은 굉장히 좁은 레이어를 가진다는 것이다. ex) k = 12

우리는 하이퍼 파라미터인 k를 growth rate라고 언급한다.

우리는 상대적으로 작은 growth rate도 sota의 성능을 내기에 충분하다는 것을 보여주었다.

한 가지 이유는 각각의 레이어가 동일한 블록안에 있는 이전의 모든 레이어의 피쳐맵에 접근할 수 있고  collective knowledge를 가지기 때문이다.

피쳐맵을 네트워크의 전체적인 상태를 나타내고 있다고 볼 수 있다.

growth rate는 각각의 레이어가 네트워크의 전체 상태에 얼만큼 기여할지를 통제한다.

전체 상태는 한번 쓰여지면 네트워크의 모든 곳에서 접근할 수 있다. 따라서 전통적인 아키텍쳐와 다르게 레이어에서 레이어로 복제할 필요가 없다.

 

 

# Bottleneck layers

비록 각각의 레이어가 k개의 아웃풋 피쳐맵을 생산하지만, 일반적으로 더 많은 인풋을 가진다.

인풋 피쳐맵의 크기를 줄이기 위해 각각의 3×3 컨볼루션 전에 

1x1 컨볼루션을 bottleneck layer으로 사용하여 계산 효율성을 높인다.

우리는 이 디자인이 DenseNet에 특히 효과적인 것을 발견하였다.

DenseNet-B라고 부르기로 하였다( BN-ReLU-Conv(1× 1)-BN-ReLU-Conv(3×3) )

 

# Compression

모델 compactness를 더 향상시키기 위해 transition layer에서 피쳐맵의 수를 줄일 수 있었다.

만약 dense block이 m개의 피쳐맵을 가진다면, 다음의 transition layer가 θm개의 아웃풋 피쳐맵을 생산하게 하였다. (0<= θ <= 1)

transition layer를 가로지르는 피쳐맵의 수는 변하지 않는다.

θ <1인 DenseNet을 DenseNet-C라고 부르고,

bottleneck과 transition layer에서 모두 θ <1인 모델을 DenseNet-BC라고 부르기로 하였다.

 

Table 1: DenseNet architectures for ImageNet.

 

 

 

# Implementation Details

ImageNet을 제외한 모든 데이터셋에서 DenseNet은 3개의 Dense Block으로 구성되고 각각은 동일한 개수의 레이어로 구성된다.

첫번째 dense block에 들어가기 전에, 16개의 아웃풋 채널을 가진 컨볼루션이 인풋 이미지에 실행된다.

커널 사이즈 3×3를 가진 컨볼루션 레이어에서 인풋은 zero-padded이다.

우리는 두 인접한 dense block 사이에서 1x1 컨볼루션 - 2x2 average 풀링의 구조를 가진 transition layer를 사용한다.

마지막 덴스 블록의 끝에는 global average pooling이 실행되고 softmax classifier가 붙는다.

세 개의 dense block에서의 피쳐맵 사이즈는 각각 32x32, 16x16, 8x8이다.

{L = 40, k = 12}, {L = 100, k = 12} and {L = 100, k = 24} 으로 테스트하였다.

DenseNetBC에서는 {L = 100, k = 12}, {L= 250, k= 24} and {L= 190, k= 40}로 평가되었다.

 

 

 

# 더 알아볼 것


- ResNet 논문읽기 : identity function이 뭔지?

 

반응형

+ Recent posts