Dropout on CNN

  • CNN에 dropout이 적용되는 여러 변형들을 제안한 논문들을 정리.

1. Introduction

1-1. Overfitting & Generalization

  • 딥러닝 모델은 데이터가 많을수록 높은 성능을 낸다는 특성을 가짐.

    image

  • 하지만 데이터가 많다고 해서 모델 성능이 항상 좋은 건 아님.

    • 모델의 복잡도(혹은 power)가 높으면 학습에서 본 데이터를 너무 따라가는 경향이 있음.
    • “Overfitting”

    image

    • 출처:링크

    • Overfitting을 방지하자 = Generalization

1-2. Dropout

  • 대표적인 generalization 기법 = Dropout
    • 2014년 JMLR 논문.
    • 신경망의 overfitting을 방지하기 위한 기법.
    • 학습 과정에서 특정 node들을 p의 확률로 사용하겠다 (1-p의 확률로 제거하겠다). 0<p<1.

    image

    • Dropout을 적용하면 적용하지 않은 것과 비교하여 각 node들의 output 값이 1/p배만큼 증가함.
    • 따라서, test 과정에서는 모든 weight를 사용함 + weight들에 p배를 곱함.
  • Dropout의 효과 (실험 결과)

    image

    • 위 뿐만 아니라 다양한 분야에서 dropout 적용을 통해 성능 개선을 뚜렷하게 보임.
  • 왜 잘하는가? 1) Ensemble
    • 매 번 node가 랜덤하게 제거되는데, 각각이 독립적인 model이라고 볼 수 있음.
    • 즉, dropout을 적용하여 학습된 model은 독립적인 작은 model들의 ensemble 효과를 볼 수 있다는 주장.

    2) Avoiding co-adaptation

    • Co-adaptation: 학습 후 네트워크 내의 각 node들이 너무 서로 비슷한 역할을 하는 것.
    • Dropout은 결과적으로 각 node가 서로 다른 것을 학습하도록 함으로써, 네트워크 전체를 utilize할 수 있게 함.

    image

    • 그림: 중간 feature들(hidden node들의 output)의 시각화.
    • Dropout을 적용했을 때 feature들이 각기 다른 모양을 갖고, 좀 더 밝은 것(높은 값)을 확인할 수 있음.

1-3. Dropout의 변형

1) DropConnect

  • 2013년 ICML 논문 (사실 dropout 논문인 2014년보다 먼저 나왔음.).
  • Dropout의 조금 더 일반화된 version.
  • Node 제거 –> Weight 제거.

    image

    • 출처: 링크
    • 학습 과정에서 특정 weight를 p의 확률로 사용 (1-p의 확률로 제거). 0<p<1.
    • Dropout과 동일하게 test 과정에서 모든 weight를 사용 + 모든 weight에 p배함.
  • DropConnect 성능

    image

    • Dropout보다 조금 더 좋다.

2) Drop-path

  • 2017년 ICLR 논문.
  • FractalNet이라는 모델 제안 + Drop-path 적용.
    • FractalNet: 하나의 연산을 그림과 같이 2개로 나누고, 각각의 연산에도 적용.

    image

  • Drop-path

    image

    • FractalNet의 한 path (a층부터 b층까지의 connection 경로) 내의 weight을 모두 제거하는 방식의 dropout.
    • Fractal 구조인 경우에 한정되어 적용 가능.

1-4. CNN에서의 Dropout

  • CNN에서 Dropout은 보통 pooling layer 혹은 맨 마지막 dense layer에 적용함.
    • Convolution layer에는 적용하지 않음.
    • 이유는 convolution 연산을 통해 데이터의 spatial feature를 추출하기 때문에, 단순히 노드(output) 몇 개를 지우는 것으로는 추출한 일부 correlated information을 완벽하게 지울 수 없음.
    • 실제로 convolution layer에 dropout을 적용하면 성능 증가가 크지 않음. (떨어지는 경우도 생김.)
  • 이에 따라 convolution layer에 적용할 수 있는 dropout 기반의 generalization 기법들이 제안됨.
    • DropBlock, DropFilter, Spectral Dropout

2. DropBlock

2-1. Idea

image

  • (b): Convolution layer의 output units은 공간적으로 연관되있으므로 (spatially correlated), 랜덤하게 몇 개의 activations를 선택해서 지우는 것으로는 연관된 정보 (correlated information, 초록색)를 제대로 지울 수 없음.
  • (c): 랜덤하게 몇 개가 아니라, 연속된 몇 개의 node들을 지우자. DropBlock.

2-2. How to find “continuous regions”?

image

image

  • (a): 초록색 내의 임의의 점을 center로 하여,
  • (b): block_size 를 한 변으로 하는 정사각형 region을 형성 및 값을 제거.
    • block_size = 1 이면, Dropout.
    • block_size 가 모든 featrue map을 덮으면, SpatialDropout.

2-3. Results

image

  • block_size = 7로 설정.
  • Dropout, DropPath, SpatialDropout을 적용했을 때보다 성능이 좋음.

image

  • 위: input 이미지 내에서 class를 결정하는 영향력을 표시한 CAM.
  • DropPath를 적용했을 때, 모델은 인간이 보는 것과 비슷한 것을 보고 판단할 수 있음.
  • 즉, DropPath은 모델로 하여금 spatially correlated information을 더 잘 catch할 수 있도록 함.

3. DropFilter (SpatialDropout)

3-1. Idea

  • 2018년 arXiv 논문. (거의 동일한 개념인 SpatialDropout은 2015년 CVPR에서 먼저 발표함. 논문.)

  • Node간의 co-adaptation 문제는 같은 채널 내의 근처에 있는 값들에 의해서 발생하지만, 동일한 위치에 있는 다른 채널 간의 값들에 의해서 더 자주 발생함.
  • 즉, channel간의 correlation이 존재함.
  • 따라서 channel 하나를 통째로 drop하자. DropFilter. (SpatialDropout과 동일함.)

    image

    • 간단하게, 일정 확률로 channel을 지우자.

3-2. ScaleFilter

  • Deep CNN의 경우, channel 하나를 통째로 날려버리는 것의 영향이 너무 큼.
  • 즉, retaining rate p 의 의존도가 너무 큼.
  • 따라서, channel 하나를 모두 0으로 하지 말고, 값을 scaling 하자.

    image

    • 일정 확률로 0을 곱하는게 아니라, scaling 값을 곱하자.
    • 아무래도 이게 DropFilter이 SpatialDropout과 다른점 인듯.

3-3. Results

image

  • DropBlock과 비교하진 않았으나, 기존 dropout을 적용했을 때보다 좋은 성능을 보임.

image

  • Retaining rate (dropout keep prob.) p의 설정에 따른 성능.
  • 기존 droput이나 DropFilter는 retaining rate p 에 매우 민감하나, ScaleFilter는 비교적으로 어떻게 설정해도 좋은 성능을 보임.

4. Spectral Dropout

4-1. Idea

  • 2019년 Neural Networks 논문
  • Neural Network의 activation 요소 중 “Weak” 하고 “Noisy” 한 것을 제거하자.

4-2. Methods

  • 주어진 이미지를 decorrelation transform (DCT, Discrete Cosine Transform)을 이용하여 변환.

    image

    • (left) DCT의 과정. 입력 이미지와 베이스 이미지를 이용한 연산을 통해 주파수 이미지로 변환.
    • (middle) 기본적으로 사용되는 베이스 이미지.
    • (right) 나비 이미지에 대해, 가운데 베이스 이미지를 이용한 DCT 결과 주파수 이미지에 log scale한 이미지.
  • Spectral Dropout

image

  • Activation map을 DCT로 변환.
  • 변환된 주파수 이미지에서, 특정 threshold를 기준으로 값이 작은 것들을 제거.
  • 다시 역 DCT로 변환.

  • 결과적으로, low frequency 정보 (weak하고 noisy한 정보) 를 일정 확률로 제거함.

4-3. Results

image

  • Dropout, Drop-Connect 보다 좋은 성능을 보임.

image

  • Threshold 값은 모델마다 다르기 때문에, 최적의 값을 찾아야 함.

5. Conclusion

  • CNN 모델은 공간적으로 상관 정보 (spatially correlated information) 를 catch하기 때문에, 기존 dropout과는 다른 방식의 dropout 기법이 필요함.
  • DropBlock, DropFilter (SpatialDropout), Spectral Dropout 등 다양한 CNN용 dropout 기법들이 제안됨.