😶 초록 (Abstract)

- 심층신경망은 "over-parameterized"되거나 "weight_decay. &. dropout"같은 엄청난 양의 noise와 regularize로 훈련될 때, 종종 잘 작동하곤한다.
비록 DropoutFC.layer층에서 매우 포괄적으로 사용되는 regularization기법이지만, conv.layer에서 종종 덜 효과적이다.
이런 Conv.layer에서의 Dropout기법의 성공의 결핍은 conv.layer의 activation unit이 "dropout에도 불구하고 공간적 상관관계"가 있기에 정보가 여전히 conv.layer를 통해 흐를 수 있다는 점이다.
∴ CNN의 정규화를 위해 구조화된 형태의 dropout기법이 필요하다!

- 이 구조화된 형태의 dropout기법을 본 논문에서 소개하는데, 바로 Dropout이다.
Dropout기법은 특징맵의 인접영역에 있는 units를 함께 Drop시키는 방법을 채택한다.
우린 "skip-connection"에 DropBlock을 적용함으로써 정확도의 향상을 이룩했다.
또한, training시 Drop의 수를 점차 늘리면서 2가지 이점을 얻었다.
  i) 더 나은 accuracy
  ii) hyperparameter의 선택의 확고성(robust)

- 수많은 실험에서 DropBlock은 CNN을 규제화하는 데 Dropout보다 더 잘 작동한다.
ImageNet에서 DropBlock을 사용하는 ResNet-50 아키텍처는 78.13%의 정확도를 달성하여 기존보다 1.6% 이상 향상되었다. COCO Detection에서 DropBlock은 RetinaNet의 평균 정밀도를 36.8%에서 38.4%로 향상시킨다.

 

 

 

1. 서론 (Introduction)

- 심층신경망은 "over-parameterized(= parameter수가 많은)"되거나 "weight_decay. &. dropout"같은 엄청난 양의 noise와 regularize로 훈련될 때, 종종 잘 작동하곤한다.
CNN에서 dropout의 첫등장으로 막대한 성공에도 불구하고, 최근 연구에서 convolutional architectures에서 dropout이 사용되는 경우는 극히 드물다. [BN, ResNet,...등 논문]
대부분의 경우, dropout은 CNN에서 주로 "Fully-Connected layer"에서 메인으로 사용된다.

- 우린 Dropout의 핵심결점이 "drops out feature randomly"라고 주장한다.
특징을 무작위로 제거하는 것이 FC.layer에서는 좋을 수는 있으나, "공간적 상관관계"가 존재하는 Conv.layer에서는 덜 효과적이다.
dropout에도 불구하고, 특징간의 상관관계가 존재한다는 것은 "input정보가 다음층에도 전달된다는 것"이며 이는 신경망의 "overfitting"을 야기할 수 있다.
이런 직관은 CNN의 규제화를 위해 더 구조화된 dropout이 필요하다는 것을 시사한다.

- 본 논문에서, (dropout을 구조화하여 CNN규제화에 부분적으로 효과가 있는) DropBlock에 대해 소개한다. 
DropBlock에서 block내의 특징, 즉 특징맵의 인접영역이 함께 drop된다.
DropBlock은 상관영역의 특징을 폐기(discard)하므로 신경망은 data에 적합한 증거를 다른 곳에서 찾아야한다. (그림 1 참조).


- 우리 실험에서, DropBlock은 다양한 모델과 dataset에서 dropout보다 훨씬 낫다.
ResNet-50 에 DropBlock을 추가하면 ImageNet의 Image Classification의 정확도가 76.51%에서 78.13%로 향상된다.
COCO detection에서 DropBlock은 RetinaNet의 AP를 36.8%에서 38.4%로 향상된다.

 

 

 

2. Related work

- 서론에서 말했듯, Dropout은 DropConnect, maxout, StochasticDepth, DropPath, ScheduledDropPath, shake-shake regularization, ShakeDrop regularization같은 신경망에 대한 여러 정규화 방법에서 영감을 받었다.
이런 방법들의 기본 원칙은 training data에 overfitting되지 않기위해 신경망에 noise를 추가한다.
CNN의 경우, 전술한 대부분의 성공적 방법은 noise가 구조화되어야 한다는 것이다.
예를 들어, DropPath에서 신경망의 전체 계층은 특정 단위뿐만 아니라 훈련에서 제외된다.
이러한 dropping out layer의 전략은 입출력 branch가 많은 계층에 잘 적용될 수 있지만 branch가 없는 계층에는 사용할 수 없다.
cf) "block"을 conv.layer내의 인접한 특징맵의 집합으로 정의하고
"branch"동일한 공간 해상도를 공유하는 연속된 block의 집합으로 정의한다.


우리의 방법인 DropBlock은 CNN의 모든 곳에 적용할 수 있다는 점에서 더 일반적이다.
우리의 방법은 전체 channel이 특징맵에서 drop되는 SpatialDropout과 밀접한 관련이 있기에 우리의 실험은 DropBlock이 SpatialDropout보다 더 효과적이라는 것을 보여준다.


- Architecture에 특정된 이런 noise주입 기술의 개발은 CNN에만 국한되지 않는다.
실제로 CNN과 유사하게 RNN은 자체적인 noise의 주입방식을 필요로 한다.
현재, Recurrent Connections에 noise를 주입하는 데 가장 일반적으로 사용되는 방법 중 두 가지가 있는데, 
바로 Variational Dropout과 ZoneOut이다.

- 우리의 방법은 입력 예제의 일부가 영점 처리(zeroed out)되는 데이터 증강 방법인 Cutout에서 영감을 얻었다.
DropBlock은 CNN의 모든 특징맵에서 Cutout을 적용하여 Cutout을 일반화한다.
우리의 실험에서, training 중 DropBlock에 대해 고정된 zero out비율을 갖는 것은 훈련 중 zero out비율이 증가하는 schedule을 갖는 것만큼 강력하지 않다.
즉, 교육 중에는 초기에 DropBlock 비율을 작게 설정하고, 교육 중에는 시간이 지남에 따라 선형적으로 증가시키는 것이 좋으며, 이 scheduling 체계는 ScheduledDropPath와 관련이 있다. 

 

 

 

3. DropBlock

- DropBlock은 dropout과 비슷한 간단한 방법이지만, dropout과의 주된 차이점은 
Dropout: dropping out independent random unit
DropBlock: drops contiguous regions from a feature map of a layer
DropBlock은 2가지의 주요 parameter가 있다.
  i) block_size : drop할 block의 크기 
  ii) 𝛾 :얼마나 많은 activation units를 drop할 것인지
우리는 서로 다른 feature channel에 걸쳐 공유된 DropBlock mask를 실험하거나 각 feature channel에 DropBlock 마스크를 지니게 한다. Algorithm 1은 후자에 해당하며, 이는 우리의 실험에서 더 잘 작동하는 경향이 있다.

Dropout과 유사하게 우리는 추론시간중 DropBlock을 적용하지 않는데, 이는 기하급수적으로 크기가 큰 하위신경망의 앙상블에 걸쳐 평균예측을 평가하는 것으로 해석된다.
이런 하위신경망은 각 신경망이 각 특징맵의 인접한 부분을 보지 못하는 Dropout으로 커버되는 특별한 하위신경망의 하위집합을 포함한다.



Setting the value of block_size



Setting the value of  𝛾



 •Scheduled DropBlock

 

 

 

4. Experiments

다음 Section에서는 Image Classification, Object Detection 및 Semantic Segmentation에 대한 DropBlock의 효과를 경험적조사를 진행한다.
Image Classification을 위한 광범위한 실험을 통해 ResNet-50에 DropBlock을 적용한다.
결과가 다른 아키텍처로 전송가능여부의 확인을 위해 최첨단 모델인 AmoebaNet에서 DropBlock을 수행하고 개선 사항을 보여준다.
Image classification 외에도, 우리는 DropBlock이 Object Detection 및 Semantic Segmentation을 위한 RetinaNet을 훈련하는 데 도움이 된다는 것을 보여준다.

 

 

4.1  ImageNet Classification

ILSVRC 2012 classification dataset
- train: 1.2M , valid: 5만 , test: 15만, 1000-class label
이미지에는 1,000개의 범주가 레이블로 지정됩니다.
[GoogLeNet, DenseNet]처럼 training하기 위해 horizontal flip, scale, 종횡비율확대를 사용했다.
evaluation에서 multiple crop대신, single crop을 적용했다.
일반적 관행에 따라 검증 세트에 대한 분류 정확도를 보고한다.


 • Implementation Details

우리는 텐서 처리 장치(TPU)에 대한 모델을 교육하고 공개된 ResNet-50 및 AmebaNet에 대해 tensorflow로 구현을 사용했다. [https://github.com/tensorflow/tpu/tree/master/models/official/resnet //  https://github.com/tensorflow/tpu/tree/master/models/experimental/amoeba_net ]

우리는 모든 모델에 대해
 - 기본 image size (ResNet-50의 경우 224 x 224, AmebaNet의 경우 331 x 331)
 - batch size (ResNet-50의 경우 1024, AmebaNet의 경우 2048)
  - 및 하이퍼 파라미터 설정을 적용했다.
우린 단지 ResNet-50 아키텍처에 대한 training epoch을 90개에서 270개로 늘렸을 뿐이다.
학습률은 125, 200, 250 epoch마다 0.1배 감소했다.

AmebaNet 모델은 340epoch 동안 훈련되었으며 학습률스케줄링을위해 지수decay체계가 사용되었다.
기존의 모델은 일반적으로 더 긴 training scheme으로 인해 overfitting되어서 훈련이 종료되면 validation accuracy가 낮다.
따라서 공정한 비교를 위해 전체 training과정에 걸쳐 가장 높은 validation accuracy를 보고한다

 

 4.1.1  DropBlock in ResNet-50

ResNet-50은 이미지 인식을 위해 널리 사용되는 CNN아키텍처이다.
다음 실험에서, 우리는 ResNet-50에 다른 규제화 기술을 적용하고 결과를 DropBlock과 비교한다.
결과는 표 1에 요약되어 있다.



 • Where to apply DropBlock
ResNet에서 building block은 몇 개의 conv.layer와 identity mapping을 수행하는 별도의 skip-connection으로 구성된다.
모든 conv.layer는 Batch Normalizatoin layer 및 ReLU activation에 따른다.
building block의 출력은 convolution building block의 출력은 convolution branch의 출력과 skip connection 출력의 합이다.

ResNet은 활성화함수의 공간적 해상도에 기초하여 그룹을 구축하여 나타낼 수 있는데, building group은 여러 building block으로 구성된다.
우리는 그룹 4를 사용해 ResNet의 마지막 group(즉, conv5_x의 모든 layer)을 나타낸다.


다음 실험에서는 ResNet에서 DropBlock을 적용할 위치를 연구한다.
  ① conv.layer이후에만 DropBlock을 적용하거나
  ② conv.layer와 skip-connection 둘 모두 뒷부분에 DropBlock을 적용하는 실험을 했다.
다양한 특징 그룹에 적용되는 DropBlock의 성능을 연구하기 위해 그룹 4 또는 그룹 3과 그룹 4 모두에 DropBlock을 적용하는 실험을 했다.


 • DropBlock. vs. dropout
원래 ResNet 아키텍처는 모델의 Dropout을 적용하지 않는다. 다만 논의의 용이성을 위해 기존 ResNet의 Dropout을 convolution branch에만 dropout을 적용하는 것으로 정의한다.
기본적으로 block_size = 7로 그룹 3과 4 모두에 DropBlock을 적용한다.
우리는 모든 실험에서 그룹 3에 대해 parameter 𝛾 4만큼 감소시켰다.
그림 3-(a)에서, 우리는 top-1 accuracy에서 DropBlock이 1.3%로 Dropout을 능가한다는 것을 보여준다.
reserved keep_prob는 DropBlock을 keep_prob의 변경에 더 강력하게 만들고 keep_prob(3-(b))의 가장 많은 값에 대한 개선을 추가한다.


그림 3에서 최고의 keep_prob를 통해 발결한 점은 바로  block_size가 1에서 전체 특징맵을 포함하는 block_size로 바뀌었다는 것이다.
그림 4는 일반적으로 1의 block_size를 적용하는 것보다 큰 block_size를 적용하는 것이 더 낫다는 것을 보여주며 최상의 DropBlock 구성은 block_size = 7을 그룹 3과 4에 모두 적용하는 것입니다.


모든 구성에서 DropBlock과 Dropout은 유사한 추세를 공유하며 DropBlock은 최상의 Dropout 결과에 비해 큰 이득을 보입니다.
이것은 DropBlock Dropout에 비해 더 효과적인 규제화 도구라는 증거를 보여준다.



 •DropBlock. vs. SpatialDropout
기존의 Dropout과 유사하게, 우리는 기존의 SpatialDropout기법이 convolution branch에만 적용하는 것으로 정의한다.
SpatialDropout기법 Dropout기법보다는 낫지만 DropBlock다는 떨어진다.
(즉, DropBlock > SpatialDropout > Dropout)
그림 4에서 그룹 3의 고해상도 특징맵에 적용할 때, SpatialDropout기법이 너무 가혹할 수 있음을 발견했다.
DropBlock은 그룹 3과 그룹 4 모두에서 일정한 크기의 Block을 Drop하여 최상의 결과를 달성합니다.



 • Comparision with DropPath

Scheduled DropPath기법에서 "skip-connection"을 제외한 모든 연결에 Scheduled DropPath를 적용했습니다.
우리는 keep_prob 매개 변수에 대해 다른 값으로 모델을 훈련시켰으며, 모든 그룹에서 DropPath를 적용하고 그룹 4 또는 그룹 3과 그룹 4에서만 다른 실험과 유사한 모델을 훈련시켰다.
keep_prob = 0.9인 그룹 4에만 적용했을 때 77.10%로 최상의 validation accuracy를 달성했다.



 • Comparision with Cutout
또한 데이터 증강 방법 중 하나인 Cutout기법과 비교하여 입력 이미지에서 고정 크기 블록을 무작위로 떨어뜨렸다.
Cutout기법은 Cutout논문에서 제안한 대로 CIFAR-10 dataset의 정확도향상을 되지만, 우리 실험에서 ImageNet dataset의 정확도를 향상시키지는 않는다.



 • Comparision with other regularization techniques
우리는 DropBlock을 일반적으로 사용되는 2가지 regularization기술(data augmentation, label smoothing)과 비교한다.
표 1에서 DropBlock은 data augmentation, label smoothing에 비해 성능이 우수하다.
DropBlock과 label smoothing 및 290epoch training을 결합하면 성능이 향상되어 규제화 기술이 더 오래 훈련할 때, 보강이 될 수 있음을 보여준다.

 

 4.1.2  DropBlock in AmoebaNet

- 또한 진화적구조의 search를 사용하여 발견된 최신 architecture는 AmoebaNet-B architecture에서 DropBlock의 효과를 보여준다. 이 모델은 0.5의 keep probability로 dropout하지만 최종 softmax층에서만 dropout된다.

- 우린 모든 Batch Normalization층 후에 DropBlock을 적용하고 또한 마지막 셀의 50%에 Skip-Connection에도 적용한다. 이러한 셀에서 특징맵의 해상도는 331x331 크기의 입력 이미지에 대해 21x21 또는 11x11이다.
마지막 Section의 실험을 기반으로, 우리는 0.9의 keep_prob를 사용하고 마지막 특징맵의 width인 block_size = 11을 설정했다.
DropBlock은 AmoebaNet-B의 top-1 accuracy를 82.25%에서 82.52%로 향상시킨다(표 2).

 

 

4.2  Experimental Analysis


DropBlock 드롭아웃에 비해 ImageNet classification 정확도를 향상시키는 강력한 경험적 결과를 보여준다.

우리는 conv.layer의 인접 영역이 강하게 상관되어 있기 때문에 Dropout이 충분하지 않다고 가정한다.
unit을 임의로 떨어뜨려도 인접 unit을 통해 정보가 흐를 수 있기 때문이다.

 Section에서는 DropBlock이 semantic정보를 삭제하는 데 더 효과적이라는 것을 보여주기 위해 분석을 수행한다.

 결과적으로, DropBlock에 의해 규제화 모델은 Dropout에 의해 규제화된 모델에 비해 더 강력하다.

우리는 추론 중, block_size 1 7 DropBlock을 적용하고 성능의 차이를 관찰하여 문제를 연구한다.




 • DropBlock drops more semantic information

먼저 규제화 없는 훈련된 모델을 가져와서 block_size = 1  block_size = 7을 사용하여 DropBlock으로 테스트했다.
그림 5의 녹색 곡선은 추론 중에 keep_prob가 감소함에 따라 validation accuracy가 빠르게 감소함을 보여준다.

이것은 DropBlock이 semantic정보를 제거하고 분류를 더 어렵게 한다는 것을 시사한다.

정확도는 DropBlock dropout보다 semantic정보를 제거하는 데 더 효과적이라는 것을 시사하는 block_size = 7과 비교하여 block_size = 1에 대해 keep_prob가 감소할수록 더 빠르게 떨어진다.



 • Model trained with DropBlock is more robust

다음으로 우리는 더 많은 의미 정보를 제거하는 큰 블록 크기로 훈련된 모델이 더 강력한 정규화를 초래한다는 것을 보여준다.

우리는 추론 중에 block_size = 7과 적용된 block_size = 1로 훈련된 모델을 취함으로써 그 사실을 입증하고 그 반대도 마찬가지이다.

그림 5에서 block_size = 1 block_size = 7로 훈련된 모델은 모두 추론 중에 block_size = 1이 적용된 상태에서 견고하다. 그러나 block_size = 1로 훈련된 모델의 성능은 추론 중에 block_size = 7을 적용할 때 keep_prob가 감소함에 따라 더 빠르게 감소했다.

결과는 block_size = 7이 더 강력하고 block_size = 1의 이점이 있지만 그 반대는 아님을 시사한다.


 

• DropBlock learns spatially distributed representations


DropBlock
으로 훈련된 모델은 DropBlock이 인접한 영역에서 semantic정보를 제거하는 데 효과적이다.
따라서 공간적으로 분산된 표현을 학습해야 한다고 가정한다
.

DropBlock에 의해 규제화된 모델은 하나의 독자적 영역에만 초점을 맞추는 대신 여러 독자적 영역을 학습해야 한다.

우리는 ImageNet validation set에서 ResNet-50 conv5_3 클래스 activation을 시각화하기 위해 클래스 활성화 맵(CAM)을 사용한다.

그림 6 block_size = 1  block_size = 7 DropBlock으로 훈련된 기존모델과 모델의 클래스 activation을 보여준다.

일반적으로 DropBlock으로 훈련된 모델은 여러 영역에서 높은 클래스 activation을 유도하는 공간적으로 분산된 표현을 학습하는 반면, 규제화가 없는 모델은 하나 또는 매우적은 수의 영역에 초점을 맞추는 경향이 있다.

 

 

4.3  Object Detection in COCO

DropBlock은 CNN을 위한 일반적인 regularization 모듈이다.
이 Section에서는 DropBlock이 COCO dataset의 training object detector에도 적용될 수 있음을 보여준다.
우리는 실험에 RetinaNet을 사용하며, image에 대한 single label을 예측하는 image classification과 달리, RetinaNet은 multi-scale Feature Pyramid network(FPN)에서 convolution으로 실행되어 다양한 스케일과 위치에서 object를 localizatoin하고 분류한다. [Focal loss for dense object detection]의 모델 아키텍처와 anchor 정의를 따라 FPN과 classifier/regressor의 branch들을 구축했다.


 • Where to apply DropBlock to RetinaNet model
 RetinaNet 모델은 ResNet-FPN을 백본 모델로 사용한다.
단순성을 위해 ResNet-FPN의 ResNet에 DropBlock을 적용하고 ImageNet classification 훈련에 대해 찾은 최상의 keep_prob를 사용한다.
DropBlock은 지역 제안(region proposal)의 특징에 구조화된 패턴을 drop하는 방법을 배우는 최근 연구[A-Fast-RCNN]과는 다르다.


• Training object detector from random initialization
 무작위 초기화에서 object detector를 훈련하는 것은 어려운 작업으로 간주되어 왔다.
최근, 몇몇 논문들은 새로운 모델 아키텍처, 큰 mini-batch size 및 더 나은 normalization layer를 사용하여 이 문제를 해결하려고 시도했다.
우리의 실험에서, 우리는 모델의 규제화 관점에서 문제를 살펴본다.
training image classification model과 동일한 hyper parameter인 keep_prob = 0.9로 DropBlock을 시도하고 다른 block_size로 실험했다.
표 3에서 무작위 초기화에서 훈련된 모델이 ImageNet으로 사전 훈련된 모델을 능가한다는 것을 보여준다.
DropBlock을 추가하면 1.6%의 AP가 추가되는데, 그 결과는 모델 규제화가 Object Detector를 처음부터 훈련시키는 중요한 요소이며 DropBlock은 물체 감지를 위한 효과적인 규제화 접근법임을 시사한다.


• Implementation details
 우리는 실험을 위해 RetinaNet3의 오픈 소스 구현을 사용한다.
모델은 64개의 이미지를 한 batch동안 처리하여 TPU에 대해 훈련되었다.
교육 중에 multi-scale jittering을 적용해 scale간의 image sizewhwjd gn ekdma image를 최대차수 640으로 padding/crop을 진행.
테스트하는 동안 최대 차수는 640의 singel-scale image만 사용되었다.
Batch Normalization층은 classifier/regressor branch를 포함한 모든 conv.layer 이후에 적용되었다.

모델은 150 epoch(280k training step)을 사용해 훈련되었다.
초기 학습률 0.08은 처음 120 epoch에 적용되었고 120 epoch과 140epoch에 0.1씩 감소했다.
ImageNet 초기화를 사용한 모델은 16 및 22 epoch에서 learning decay와 함께 28 epoch에 대해 훈련되었다.
초점 손실에는 α = 0.25와 𝛾 = 1.5를 사용했다.
weight_decay = 0.0001. &. 0.9의 momentum = 0.9
이 모델은 COCO train 2017에서 훈련되었고 COCO val 2017에서 평가되었다.

 

 

4.4 Semantic Segmentation in PASCAL VOC

- 우리는 DropBlock이 semantic segmentation모델도 개선한다는 것을 보여준다.
PASCAL VOC 2012 데이터 세트를 실험에 사용하고 일반적인 관행을 따라 증강된 10,582개의 training이미지로 훈련하고 1,449개의 testset 이미지에 대한 mIOU를 보고한다.
우리는 semantic segmentation를 위해 오픈 소스 RetinaNet 구현을 채택한다.
구현은 ResNet-FPN backborn 모델을 사용하여 multi-scale feature를 추출하고 segmentation을 예측하기 위해 Fully-Convolution Network를 상단에 부착한다.
우리는 훈련을 위해 오픈 소스 코드의 default hyper-parameter를 사용한다.


- Object Detection실험에 이어 random initialization에서 훈련 모델에 대한 DropBlock의 효과를 연구한다.
우리는 45개의 epoch에 대해 pre-trained ImageNet 모델로 시작한 모델과 500개의 epoch에 대해 무작위 초기화된 모델을 훈련시켰다.
ResNet-FPN backborn 모델과 Fully-Convolution Network에 DropBlock을 적용하는 실험을 수행했으며 Fully-Convolution Network에 DropBlock을 적용하는 것이 더 효과적이라는 것을 발견했다.
DropBlock을 적용하면 처음부터 교육 모델에 대한 mIOU가 크게 향상되고 ImageNet 사전 교육 모델과 무작위로 초기화된 모델의 교육 간 성능 격차가 줄어든다.


 

 

 

 

 

 

5. Discussion

- 이 논문에서, CNN의 training regularize기법인 DropBlock을 소개한다.
DropBlock은 공간적으로 연관된 정보를 drop하는 구조화된 dropout기법이다.
ImageNet, COCO detection에 dropout과 DropBlock을 비교함으로써 더욱 효과적인 규제화기법임을 증명하였다.
DropBlock은 광범위한 실험 설정에서 지속적으로 드롭아웃을 능가한다.
우리는 DropBlock으로 훈련된 모델이 더 강력하고 드롭아웃으로 훈련된 모델의 이점을 가지고 있음을 보여주기 위해 분석을 수행하였으며, class activation mapping은 모델이 DropBlock에 의해 정규화된 더 많은 공간적으로 분산된 표현을 학습할 수 있음을 시사한다.

- 우리의 실험은 conv.layer외에 "skip-connection"에 DropBlock을 적용하면 정확도가 증가한다는 것을 보여준다.
또한 훈련 중에 삭제된 unit의 수를 점진적으로 증가시키면 정확도가 향상되고 hyper-parameter선택에 더욱 강력해진다.

 

 

 

 

 

 

 

 

🧐 논문 감상_중요개념 핵심 요약

"DropBlock: A regularization method for convolutional networks"

[핵심 개념]
  1. Dropout은 딥러닝에서 널리 사용되는 regularization방법이지만 구조적 특성으로 인해 CNN에서는 제대로 작동하지 않을 수 있다.

  2. DropBlock은 CNN용으로 특별히 설계된 정규화 방법이다.
    개별 단위 대신 교육 중에 기능 맵의 전체 연속 블록을 무작위로 삭제하여 작동합니다.

  3. DropBlock 방법은 개별 픽셀 대신 인접한 블록을 드롭(contiguous block drop)하는 공간적 드롭아웃 방법의 일반화로 볼 수 있다.

  4. DropBlock은 CIFAR-10, CIFAR-100 및 ImageNet을 포함한 여러 dataset에서 CNN의 일반화 성능을 향상시켰다.

  5. DropBlock은 기존 CNN구조에 쉽게 통합될 수 있으며 "weight_decay" 및 "data augmentation"같은 다른 "regularization"방법과 함께 사용할 수 있다.

  6. 또한 학습 중 신경망에서 연결의 전체 경로를 무작위로 drop하는 유사한 정규화 방법인 "drop-path"의 개념을 도입했다.

전반적으로 DropBlock 방법은 CNN을 위해 특별히 설계된 강력하고 효과적인 정규화 기술로 여러 벤치마크dataset에서 네트워크의 일반화 성능을 개선하는 것으로 나타났으며 기존 아키텍처에 쉽게 통합할 수 있다.

 

🧐  논문을 읽고 Architecture 생성 (with tensorflow)

import tensorflow as tf

def drop_block(x, block_size, keep_prob, is_training):
    def dropblock(inputs):
        input_shape = tf.shape(inputs)
        _, height, width, channels = inputs.get_shape().as_list()

        # Calculate the gamma value
        gamma = (1.0 - keep_prob) * tf.cast(tf.size(inputs), tf.float32) / (
            block_size ** 2 * (height - block_size + 1) * (width - block_size + 1))

        # Create a random mask with block_size * block_size blocks
        mask = tf.random.uniform((input_shape[0], height - block_size + 1, width - block_size + 1, channels)) < gamma

        # Calculate the block mask and apply it to the input
        block_mask = tf.reduce_max(tf.cast(mask, inputs.dtype), axis=(1, 2, 3), keepdims=True)
        block_mask = tf.pad(block_mask, [[0, 0], [block_size // 2, block_size // 2], [block_size // 2, block_size // 2], [0, 0]])
        block_mask = tf.image.extract_patches(block_mask, sizes=[1, block_size, block_size, 1], strides=[1, 1, 1, 1], rates=[1, 1, 1, 1], padding='VALID')
        block_mask = 1 - tf.reshape(block_mask, input_shape)
        inputs = inputs * block_mask / tf.reduce_mean(block_mask)

        return inputs

    return tf.keras.layers.Lambda(dropblock, arguments={'is_training': is_training})(x)

😶 초록 (Abstract)

- 최첨단성능을 달성하기 위해 Rectified activation units (rectifiers)는 필수적이다.
2가지 관점에서 image classification에 rectifier신경망을 도입한다.

① Parametric Rectified Linear Unit (PReLU)
  - overfitting의 적은 위험. &. 거의 계산적비용이 0에 수렴
  - Leaky ReLU처럼 작은 음의 기울기를 도입
  - 다만 차이점은 Leaky ReLU처럼 고정된 기울기가 아닌, 기울기의 학습이 가능하다.
  - 이는 신경망이 각 뉴런에 대해 최적의 음의 기울기를 학습할 수 있음을 의미

② Rectifier non-linearity를 특히나 고려하는 강력한 초기화방법의 도출
  - 이런 방법들을 통해 더 깊고 넓은 신경망과 매우 깊은 rectified model을 가능하게 한다.

PReLU에 기초하여 매우 높은 결과들을 달성하며 인간수준의 성능을 능가하는 성과를 얻었다.

 

 

1. 서론 (Introduction)

 CNN은 다양한 시각적 인식작업에서 효과적임을 증명하였다.
인식분류에 대해 성능향상의 엄청난 증거에 대해 강력한 모델에 대한 전략을 위해, 2가지 기술적 가이드라인을 제시한다.

① 증가된 복잡성, 확대된 width, 더 작은 stride, 새로운 non-linear activation, 정교한 층 설계로 training data를 fit한다.
 반대로 효과적인 정규화(regularization), 공격적인 데이터강화 및 대규모 data로 더 나은 일반화(generalization)이 달성된다.

- 이런 발전과정에서, rectifier neuron, 예를 들어 ReLU는 최근 심층신경망 성공의 핵심 중 하나이다.
이는 training에서 수렴을 가속화하고 기존의 "S자 unit"보다 더 나은 결과를 보여준다.

- 본 논문에서는 특히 정류기(rectifier)에 의해 구동되는 2가지 측면에서 신경망을 조사한다.
① PReLU: ReLU의 새로운 generalization
  - 이 활성화 함수는 정류기의 매개변수를 적응력있게 학습하고 무시할 수도 있는 추가적인 계산으로 정확도를 향상시킨다.

 매우깊은 rectified모델 훈련의 어려움

  - 정류기의 비선형성(ReLU / PReLU)를 명시적으로 모델링, 이론적 초기화방법을 도출.
  - 처음부터 직접 훈련된 심층신경망의 수렴을 도와 강력한 신경망구조의 탐색이 가능한 유연성확보가 가능.


- 우린 지금까지 보고된 바에 의하면, 처음으로 인간수준의 인식(5.1%)을 넘어서는 결과를 만들어냈다.

 

 

2. Approach

2.1. Parametric Rectifiers. (PReLU)

 Definition
- 공식분석을 하면, activation function을 다음과 같이 정의한다.

이때, yi는 i번째 channel의 비선형활성화함수 f의 입력값이다.
ai의 i는 다양한 channel에 걸쳐 비선형활성화함수(nonlinear activation)를 허용한다는 것을 나타낸다.

ai = 0일 때, 이것은 ReLU가 된다.
이때, ai가 학습가능한 파라미터라면, Eqn.(1)에서 언급한 바와 같이 Parametric ReLU가 된다.

또한 위의 식은 아래의 식과 동치이다.

만약 ai가 작고 고정된 값이라면, PReLU는 LReLU, 즉 Leaky ReLU가 된다. (ai = 0.01)
- LReLU는 zero gradient 즉, 기울기가 0이 되는 것을 피하기 위해 사용된다.
다만, LReLU가 ReLU에 비해 정확도에 미치는 영향이 미미하다는 것을 보여준다.[Rectifier nonlinearities improve neural network acoustic models. In ICML, 2013.]

[PReLU]
- LReLU와 달리, 우리가 사용하는 PReLU의 경우, 매우 작은 extra parameter를 사용한다.
- 이때, extra parameter수 = channel의 전체 수이기에 총 가중치 수를 고려하면 무시할만하다.

[channel-shared variant]
- 위의 activation function공식에서 계수는 한층의 모든 channel과 공유된다.
- 이런 변형은 각 층에 하나의 extra parameter만 도입한다.




• Optimization 

- PReLU는 역전파로 훈련되고, 다른 층과 동등하게 최적화된다.
- {ai} 공식의 update은 chain-rule을 기반으로 하며 하나의 층에 해당하는 ai의 기울기 공식은 아래와 같다.
- Ɛ은 목적함수(objective function)을 의미하며한다.

- 위의 식은 심층으로부터의 기울기전파 (gradient propagate)를 나타내는데, 활성화함수의 기울기를 의미 식이다.






 Comparision Experiments

 - 우리는 14개의 가중치 레이어를 사용하여 깊지만 효율적인 모델에 대해 비교를 수행했다.(표 1)
이 모델이 실험을 실현 가능하게 할 뿐만 아니라 매우 심층적인 모델의 범주를 나타내기에 충분하기에 선택한다.


- 기본적으로, 컨볼루션(convolutional) 계층과 처음 두 개의 FC.layer에 적용된 ReLU로 이 모델을 훈련시킨다.
10-view testing을 사용해 ImageNet 2012에서 top-1 and top-5 error
는 33.82% 및 13.34%이다(표 2).

- 그후 모든 ReLU를 PReLU로 대체하여 동일한 아키텍처를 처음부터 training한다(표 2).
top-1 error는 32.64%로 감소하며 이는 기존의 ReLU에 비해 1.2% 증가한 것이다.
표 2는 channel-wise / channel-shared PReLU가 서로 비슷한 성능을 발휘함을 보여준다.
channel-shared PReLU의 경우 ReLU와 비교하여 13개의 추가적인 extra parameter만 도입한다.
그러나 이 작은 수의 extra-parameter는 기존에 비해 1.1%만큼 뛰어넘음을 입증되는 중요한 역할을 한다.
이는 활성화 함수의 꼴을 적응력있게 학습하는 것의 중요성을 의미한다.


- 표 1은 또한 각 계층에 대한 PReLU의 학습된 계수를 보여준다.
표 1에는 두 가지 흥미로운 현상이 있다.

① 첫째, conv1의 계수는 0보다 생각보다 큰 (0.681 및 0.596)값을 갖는다.
  - conv1의 filter는 edge 및 texture detector 같은 Gabor 유사 필터가 대부분이다
  - 즉, 학습된 결과는 filter의 positive / negative response가 모두 반영됨을 보여준다.
  - 제한된 수의 filter(예: 64)를 고려할 때, 이는 저수준의 정보를 활용하는 더 경제적인 방법이라고 생각한다.

② 둘째, channel-wise의 경우, 일반적으로 deeper conv.layer는 더 작은 계수를 갖는다.
  - 이는 activation이 점점 더 깊은 곳에서 점진적으로 "더 비선형적"이 된다는 것을 의미한다.
  - 즉, 학습된 모델은 초기 단계에서 더 많은 정보를 유지하는 경향이 있고 더 깊은 단계에서 더 차별화된다.

 

 

2.2. Initialization of Filter Weights for Rectifiers. (deep rectifier net)


 Foward Propagation Case


 Back Propagation Case


 Discussions
 





 Comparision with "Xavier" Initialization

 

 

2.3. Architectures

위의 조사는 다음의 Architecture에 대한 설계지침을 제공한다. 

- 우리의 baseline은 (표 3)의 19층 모델(A)이다. 더 나은 비교를 위해, 또한 VGG-19을 나열한다.
우리의 모델 A는 VGG-19에서 다음과 같이 수정된다.
  i) 첫 번째 층에서 filter size = 7×7와 strides = 2를 사용.
  ii) 가장 큰 2개의 특징맵(224, 112)의 다른 3개의 conv.layer를 더 작은 특징맵(56, 28, 14)으로 이동
      이때, 시간 복잡도(표 3, 마지막 행)는 더 깊은층이 더 많은 filter를 갖기에 거의 변하지 않는다.
  iii) 첫 FC.layer 이전에 공간 피라미드 풀링, (SPP)을 사용한다.
      이때, 피라미드는 총 63개의 bins에 대해 bin의 수가 7×7, 3×3, 2×2, 1×1인 4개의 level을 갖는다.


- 우리의 모델 A가 VGG에 보고한 VGG-19의 결과보다 더 나은 결과를 가지고 있다.
다만, 우리의 모델 A가 VGG-19보다 더 나은 아키텍처라는 증거는 없다는 것을 주목할 필요가 있다.
더 적은 규모의 확대를 사용한 이전 실험에서, 우리는 모델 A와 (SPP 및 초기화와) 재현된 VGG-19가 비교 가능하다는 것을 관찰했다.
A 모델을 사용하는 주된 목적은 더 빠른 실행속도를 위한 것이다.
시간 복잡도가 동일할 때, 큰 특징맵의 conv.layer의 실제 실행 시간은 작은 특징맵의 conv.layer보다 느리다.
4 GPU의 구현에서 모델 A는 mini-batch당 2.6초(128),
재현된 VGG-19는 4개의 Nvidia K20 GPU에서 3.0초 걸렸다.


- 표 3에서, 모델 B는 A의 더 깊은 버전으로 세 개의 extra conv.layer를 갖는다.
우리의 모델 C는 B의 더 넓은 버전(filter가 더 많음)으로 width는 복잡성을 상당히 증가시킨다.
이때, 시간 복잡도는 B의 약 2.3배이다(표 3, 마지막 행).
4개의 K20 GPU에서 A/B를 교육하거나 8개의 K40 GPU에서 C를 교육하는 데 약 3-4주가 걸린다.


- 깊이가 더 깊어진 모델은 정확도가 감소하거나 심지어 저하(degradation)되기 때문에 깊이 대신 모델의 폭(width)을 늘린다.
소규모 모델에 대한 최근 실험에서, 깊이를 공격적으로 증가시키면 포화되거나 정확도가 저하된다는 것이 밝혀졌다.
VGG 논문에서, 16, 19층 모델은 비교적 성능이 좋지만 
[M.D.Zeiler, M.Ranzato, R.Monga et. al]의 음성 인식 연구에서, 딥 모델은 8개 이상의 숨겨진 레이어(모두 fc)를 사용할 때 성능이 저하되었는데, 우리는 ImageNet의 더 큰 모델에서도 유사한 저하가 발생할 수 있다고 추측한다.

일부의 극도로 심층적인 모델의 training에서(표 3의 B에 3~9개의 레이어가 추가됨) training 및 test error rate가 처음 20epoch에서 모두 저하되었음을 발견했다
(다만, 제한된 시간으로 끝까지 실행되지 않았기에 이런 크고 지나치게 심층적인 모델이 궁극적으로 저하될 것이라는 확실한 증거는 아직은 없다).
이런 성능 저하의 가능성으로 대형 모델의 깊이를 더 이상 증가시키지 않기로 선택했다.


- 반면, 소규모 dataset에 대한 최근의 연구는 conv.layer의 parameter수가 증가함에 따라 정확도가 향상되어야 한다고 제안하는데, 이 숫자는 깊이와 너비에 따라 달라진다.
그래서 우리는 더 높은 용량의 모델을 얻기 위해 conv.layer의 width를 늘렸다.

- 표 3의 모든 모델은 매우 크지만, 심각한 overfitting은 관찰되지 않았는데, 아래에서 말할 것 처럼 전체 training에 걸쳐 사용되는 공격적인 data augmentation 덕분이라 생각한다..

 

 

 

 

 

3. Implementation Details

  Training
 - 우리의 훈련 알고리즘은 대부분 [AlexNet, VGGNet 등]을 따른다.
 resize된 image(shorter side is s, 픽셀당 평균의 차가 진행된 224x224 crop이 무작위로 샘플링됨) 
 scale은 VGG에 나오는 [256, 512] 범위에서 무작위로 jittering 된다.
 표본의 절반이 무작위로 horizontal flip이 진행되고 색상도 변경된다.



 - 미세 조정(fine-tuning) 중에만 scale jittering을 적용하는 VGG와 달리 training의 시작부터 적용한다.
또한, 얕은 모델을 사용하여 더 깊은 모델을 초기화하는 VGG와 달리, 
2.2절에 설명된 초기화 방법을 사용하여 매우 깊은 모델을 직접 훈련한다(Eqn.(14) 방정식을 사용).
training의 시작부터 끝까지 poor local optima를 피할 수 있어서 정확도를 향상시키는 데 도움이 될 수 있었다.



[중요한 나머지 hyper parameter 설정]
weight decay = 5e-4 (= 0.0005)
momentum = 0.9이다.
Dropout(0.5)는 처음 두 개의 FC.layer에서만 사용.
mini-batch size = 128로 고정.
learning rate = 1e-2, 1e-3 및 1e-4으로 오류가 발생할 때 전환.
모델 별 총 epoch수는 약 80.


 Testing
 - 우리는 SPP-net 논문에서 사용된 "특징맵에 대한 multi-view test" 전략을 사용한다.
VGG처럼 고밀도의 sliding window 방식을 사용해 이 전략을 추가로 개선한다.


 먼저 resize된 전체 image에 conv.layer를 적용, 최종 conv.특징맵을 얻는다.
  - 특징맵에서 각 14x14 window는 SPP-layer를 사용해 Pooling한다. 

 그 후, FC.layer가 Pooling된 특징에 적용되어 score를 계산한다.
  - 이는 horizontal flip image에서도 수행된다.
  - 모든 고밀도의 sliding window score는 평균화되며 그 후 여러 scale로 결과를 추가로 결합한다.


 Multi-GPU Implementation
 - 우리는 여러 GPU에 대한 병렬 훈련을 위해 AlexNet방식의 간단한 변형을 채택한다.
conv.layer에 "데이터 병렬화 (data parallelism)"를 채택한다.
GPU들은 제1 FC층 이전에 동기화된되며, FC층의 순전파, 역전파가 단일 GPU에서 수행됩니다.
즉, FC층의 계산을 병렬화하지 않습니다. (FC층의 시간적 비용이 낮기에 병렬화가 필요가 없다.)
이는 AlexNet의 "모델 병렬화"보다 더 간단한 구현으로 이어진다.
게다가, 모델 병렬화는 필터 응답의 통신으로 인해 일부 오버헤드를 초래하며, 단일 GPU에서 FC층을 계산하는 것보다 빠르지 않다.


 - 우리는 카페 라이브러리의 수정에 대해 위의 알고리즘을 구현하며 정확도가 떨어질 수 있기에 mini-batch size(128)를 늘리지 않는다.
본 논문에서는 대형 모델의 경우, 4개의 GPU를 사용하여 3.8배의 속도 향상과 8개의 GPU를 사용하여 6.0배의 속도 향상을 관찰했다.

 

 

4.Experiments on ImageNet


 Comparision between ReLU. &. PReLU
 - 표 4는 대형 모델 A에서 ReLU와 PReLU를 비교한다. 이때, channel-wise버전에 PReLU를 사용한다.
공정한 비교를 위해 ReLU/PReLU 모델은 동일한 총 epoch 수를 사용해 training되며 learning rate도 동일한 epoch수를 실행한 후 전환된다.


 - 표 4는 세 가지 scale와 multi-scale간의 조합의 결과를 보여준다.
 jittering range[256, 512]에 있을 수 있기 때문에 최고의 single scale은 384이다.
multi-scale 조합의 경우, PReLU는 ReLU에 비해 top-1 오류를 1.05%, top-5 오류를 0.23% 감소시킨다.
이는 표 2와 표 4의 결과는 일관되게 PReLU가 소형 및 대형 모델을 모두 향상시킴을 보여준다.
이때, 이러한 향상은 계산 비용이 거의 없이 얻어진다.





 Comparision of Single-model Results
 - 다음으로 단일 모델 결과를 비교한다.
먼저 표 5에서 10-view test result를 보여주는데, 여기서 각 view는 224-crop이다.
VGG-16의 10-view result는 test를 기반으로 최고의 결과는 7.38%이다(표 5). 


 - 표 6은 multi-scale and multi-view나 dense 
test를 사용해 얻은 Single-model 결과의 비교를 보여준다.
결과는 MSRA로 표시되며 기본 모델(A+ReLU, 6.51%)은 VGG-19에 대해 보고된 최고의 기존 단일 모델 결과인 7.1%보다 이미 상당히 좋으며 이러한 이득이 주로 얕은 모델을 사전 훈련할 필요가 없는 종단 간 훈련 때문이라고 생각한다.


 - 또한, 우리의 최고 단일 모델(C, PReLU)은 5.71%의 top-5 error를 갖는데, 이 결과는 이전의 모든 다중 모델 결과보다 훨씬 더 우수하다(표 7).
A+PReLU와 B+PReLU를  비교하면, 우리는 19층 모델과 22층 모델이 비교적 성능이 좋다는 것을 알 수 있다.
반면에 폭을 늘리면(C vs. B, 표 6) 정확도가 향상될 수 있는데, 이는 모델이 충분히 깊으면 폭이 정확도의 필수 요소가 된다는 것을 시사한다.





 Comparision of Multi-model Results
 - 우리는 표 6의 모델을 포함하여 6개의 모델을 결합한다.
당분간 우리는 Architecture C만으로 모델을 훈련했으며 다른 모델들은 C보다 상당한 격차의 낮은 정확도를 가지고 있다.
우리는 더 적은 수의 강력한 모델을 사용함으로써 더 나은 결과를 얻을 수 있다고 추측한다.


 - 다중 모델 결과는 표 7에 나와 있는데, 우리의 결과는  testset에서 4.94%의 top-5 error를 갖는다.
testset의 label이 게시되지 않아서 ILSVRC 서버에 의해 평가된다.
우리의 결과는 ~26%의 상대적 개선을 나타내는 ILSVRC 2014 우승작(GoogLeNet, 6.66%)보다 1.7% 더 좋다.
이는 또한 최근 결과에 비해 상대적으로 최대 17%의 개선되었다(Baidu, 5.98%).





 Analysis of Results
 - 그림 4는 우리의 방법으로 성공적으로 분류된 몇 가지 validation image의 예를 보여준다.
정확하게 예측된 label 외에도 top-5 결과의 다른 네 가지 예측에도 주의를 기울인다.
이 네 개의 label 중 일부는 다른 object의 multi-object image이다.
예를 들어, "말-카트" 이미지(그림 4, 행 1, 콜 1)는 "mini-bus"를 포함하고 알고리즘에 의해 인식된다.
이 네 가지 label 중 일부는 유사한 class 사이의 불확실성 때문이다.
예를 들어, "coucal" 이미지(그림 4, 행 2, 콜 1)는 다른 조류 종의 라벨을 예측했다.


 - 그림 6은 testset의 결과(평균 4.94%)의 클래스당 top-5 error를 오름차순으로 표시한다.
우리의 결과는 113개 클래스에서 top-5 error가 0개로 이 클래스의 이미지는 모두 올바르게 분류된다.
top-5 error 가장 높은 3개 계층은 'letter opener'(49%), 'spotlight'(38%), 'restaurant'(36%)이다.
이 오류는 multiple/small object나 large class내의 분산(variance)으로 인해 발생한다.
그림 5는 이 세 클래스에서 우리의 방법에 의해 잘못 분류된 일부 예시 이미지를 보여준다.
단, 예측된 레이블 중 일부는 여전히 의미가 있다.


 - 그림 7에서, 우리는 우리의 결과(평균 4.94%)와 ILSVRC 2014(평균 8.06%)에서 우리의 경쟁 결과(평균 8.06%) 사이의 top-5 error rate의 class 당 차이를 보여준다. error rate은 824개 클래스에서 감소하고 127개 클래스에서 변경되지 않으며 49개 클래스에서 증가한다.




 Comparision with Human Performance from [https://arxiv.org/abs/1409.0575]
 - Russakovsky의 연구는 인간의 성능이 ImageNet에서 5.1%의 top-5 error를 달성한다했다.
이는 관련 클래스의 존재를 더 잘 알기 위해 validation image에 대해 잘 알고있는 인간에 의해 달성된다.
test image에 주석을 달 때 인간에게 특별한 인터페이스가 제공되며, 각 클래스 제목에는 13개의 extra train image row가 함께 제공된다.


 - 우리의 결과(4.94%)는 보고된 인간 수준의 성과를 초과한다.
우리가 아는 한, 우리의 결과는 이 시각적 인식 과제에서 인간을 능가하는 최초의 발표된 사례이다.
fine-grained recognition 및 class uwareness은 인간의 오류의 2가지 주요 유형이다.
Russakovsky의 연구에 따르면, 알고리즘은 fine-grained recognition(예: 데이터 세트에서 120종의 개)에서 더 나은 작업을 수행할 수 있다.
그림 4의 두 번째 행은 "coucal", "komondor" 및 "yellow lady's slipper"와 같이 우리의 방법으로 성공적으로 인식된 몇 가지 세밀한(fine-grained) 물체의 예를 보여준다.
인간은 이 물체들을 새, 개, 꽃으로 쉽게 인식할 수 있지만, 대부분의 인간이 그들의 종을 말하는 것은 사소한 일이 아니다.
부정적인 측면에서, 우리의 알고리즘은 특히 문맥 이해 또는 높은 수준의 지식이 필요한 경우(예: 그림 5의 "spotlight" 이미지)에 여전히 인간에게는 어렵지 않은 경우에도 실수를 한다.


- 우리의 알고리즘은 이 특정 dataset에서 우수한 결과를 산출하지만, 이것이 일반적으로 물체 인식에서 인간의 비전을 능가한다는 것을 나타내지 않는다.
Pascal VOC 과제 같은 기본적인 Object category(즉, 일상 생활에서 일반적인 객체 또는 개념)를 인식할 때, 기계는 여전히 인간에게 사소한 경우에도 명백한 오류를 가지고 있다.
그럼에도 불구하고, 우리는 우리의 결과가 시각적 인식에서 인간 수준의 성능과 일치하는 기계 알고리듬의 엄청난 잠재력을 보여준다고 믿는다







 

 

 

🧐 논문 감상_중요개념 핵심 요약

"Delving Deep into Rectifiers: Surpassing Human-Level Performance on ImageNet Classification"
Rectified Linear Unit, 일명 ReLU에 대해 심층적으로 탐구한 후 ReLU를 소개하는 연구 논문으로 이 논문은 ReLU와 그 변형 함수들 즉, 비포화 비선형성(non-saturating non-linearity)의 함수들의 사용을 제안한다.

 

[핵심 개념]

1. 이 논문에서는 Sigmoid나 tanh 같은 다른 포화 비선형성(saturating non-linearity) 활성화 함수에 비해 심층 신경망 훈련을 개선하는 것으로 밝혀진 ReLU(Rectified Linear Unit) 활성화 함수를 소개했다.

2. 이 논문은 ReLU를 사용하면 다른 활성화 함수를 사용하는 신경망에 비해 교육 중에 더 빠른 수렴, ImageNet classification 작업에서 더 나은 일반화(generalization) 성능, 더 낮은 오류율로 이어질 수 있음을 보여주었다

3. 드롭아웃 정규화 및 배치 정규화를 포함하여 훈련 프로세스에 대한 몇 가지 수정 사항을 제안하여 심층 신경망의 성능을 더욱 향상시켰다.

4. ReLU, Dropout 및 Batch Normalization의 조합은 심층 신경망을 구축하기 위한 일반적인 방법이 되었으며 이후 많은 작업에서 사용되었다.

5. 이 논문은 보다 강력하고 효율적인 딥러닝 모델의 구축하기 위한 로드맵을 제공하여 심층 신경망 훈련을 위한 활성화 함수 및 기타 기술의 중요성을 보여주었다.

전반적으로 "Delving Deep into Rectifiers" 논문은 딥 러닝의 최신 기술을 발전시키는 데 중요한 역할을 했으며 이 분야에 지속적인 영향을 미쳤다.

 

 

😶 초록 (Abstract)

- Deep Neural Net의 training은 "각  층의 input과 parameter가 변한다" 는 점에서 매우 복잡하다는 것이 정론이다.
- 낮은 학습율, 조심스런 parameter 초기화로 인해 training을 느리게 만들고 포화 비선형성(saturating nonlinearity)으로 인해 model train을 악명높게 만든다.
- 우리는 위와 같은 현상을 internal covariate shift라 부르며, 이런 문제를 input layer를 normalizing을 통해 다룬다.

- 우리의 방법은 model 구조의 일부의 normalization과 for each training mini-batch에 normalization을 적용함을 통한 Batch-Normalization을 통해 더 높은 learning rates와 초기화에 대해 덜 신경 쓸 수 있도록 하는 그런 강점을 이끌어 내었다.
- Batch-Normalization은 또한 regularizer의 역할도 할 수 있는데, 어떠한 경우에는 Dropout의 필요성을 없애주었다.

- BN(Batch Normalization)의 앙상블의 사용으로 ILSVRC에서 최상의 결과를 얻었으며 더 조금의 training step으로 같은 결과에 도달할 수 있었다.

 

 

1. 서론 (Introduction)

- 딥러닝에서 SGD는 매우 효과적인 훈련방법으로 증명되었는데, SGD의 변형(momentum, Adagrad)들은 예술의 경지라 할 만하다.
- SGD는 loss를 최소화하기 위해 x1..N의 training data set에서 신경망의 parameter Θ를 최적화 한다.
- SGD의 이용시 training의 과정 및 각 step의 과정에서 크기 mmini-batch x1...m에 대해 생각해보자.
mini-batch는 parameter의 계산에 관한 loss function의 gradient값을 추정하곤 한다.
• mini-batch의 사용은 몇몇 장점이 있다.
  ①mini-batch에 대한 loss의 기울기(gradient) = 배치가 증가하면서 품질이 향상되는 training set에 대한 기울기의 추정치이다.
  ②둘째, 현대 컴퓨팅 플랫폼이 제공하는 병렬 처리로 인해 배치를 통한 계산은 개별 예제에 대한 m값 계산보다 훨씬 더 효율적일 수 있다.


- 이런 SGD는 간단하면서 효율적이지만 hyper-parameter, 특히 learning rate와 관련하여 세밀한 조정이 필요하다.
작은 변화라 해도 깊이가 깊어질수록 그런 변화들이 증대되기(amplify) 때문이다.

- layer들이 새로운 분포에 지속적으로 적응할 필요가 있어서 layer의 input의 분포(distribution)변화는 문제를 제시한다.
학습입력분포의 변화는 covariate shift(공변량 이동)을 경험하는데, 이는 보통 domain adaptation으로 해결한다.
다만, covariate shift의 개념은 sub-network(하위 신경망)나 layer가 동일한 부분에 적용해야 한다.
이로 인해 learning system이 전체를 넘어서 확장될 수 있다.
F1과 F2가 임의의 transformation이고, Loss를 최소화하기 위해 parameter Φ1, Φ2가 학습되는 신경망의 계산을 생각해보자. 학습 Φ2는 입력 x = F1(u, Φ1)이 sub-network에 공급되는 것(fed into)처럼 볼 수 있다.

예를 들어 경사하강단계에서 (batch size .&.  learning rate α) input x가 있는 독립실행형 신경망 F2의 경우와 정확하게 동등다.
따라서 train과 test data간의 동일한 분포를 갖는 것처럼 train을 더 효율적으로 만드는 input 분포의 속성(property)은 sub-network training에도 적용된다.
그래서 x의 분포는 시간이 지나게 되면 고정된 상태를 유지하는 것이 유리하다.
그러므로 Φ2는 x의 분포 변화를 보상하기 위해 재조정할 필요가 없다.

 z = g(Wu + b) ( g(x)는 sigmoid 1 / 1+exp(-x)함수, u는 input, b는 bias )에 대해 g'(x) = exp(x) / (exp(x)+1)^2으로 x의 절대값이 증가할 수록 0으로 수렴하는데, 이로 인해 gradient vanishing이 발생train이 느려진다.
이때, x=Wu + b에서 x는 아래층 parameter에 영향을 많이 받아 train중 parameter의 변경은 x의 많은 차원을 "비선형성의 포화상태(saturated regime of the nonlinearity)"로 만들고 수렴을 느리게 만든다.
이런 영향은 depth가 깊어질수록 증대되는데, 실제로 포화문제와 gradient소실문제를 다루기 위해 Rectified Linear Units(ReLU(x) = max(x,0))과 신중한 초기화, 작은 learning rates를 이용한다.

- 다만 입력값의 비선형성의 분배(non-linearity distribution)는 신경망의 훈련을 더 안정적으로 할 것이며 optimizer가 포화될 가능성이 적게 하고 훈련을 가속화 할 것을 확신할 수 있다. (Rectified Linear Unit (ReLU) activation이 신경망의 비선형성(non-linearity)을 만들 수 있다!)


Internal Covariate Shift (내부 공변량 이동)
  - training과정에서
심층신경망의 내부 노드 분포의 변화를 내부 공변량 이동이라 하며 이를 제거하면 training을 빠르게 할 가능성이 있다.
  - 이를 위한 새로운 기술을 도입하는데, 이것이 바로 BN, Batch-Normalization으로 내부공변량이동을 줄여줘 심층신경망에서 매우 극적으로 training을 가속화시킬 수 있다.
 
  - layer의 입력값의 평균(means)과 분산(variance)을 고정함으로 이를 달성한다.
  - Batch Normalization의 추가적인 이점은 바로 신경망에서의 gradient flow이다.
  - 이는 발산(divergence)의 위험성없이 더 높은 learning rate의 사용을 허용하게 한다.
  - 또한, BN은 model을 규제화(regularize)하고 Dropout의 필요성을 줄여준다.
 즉, 신경망의 포화상태에 고착되는 것을 막아줌으로 포화 비선형성(saturating nonlinearity)을 가능하게 해준다.

cf.

non-linearity는 선형이 아닌 수학적연산을 말하며 이는 출력이 입력에 비례하지 않음을 의미. (선형적이면 입력에 비례하기 때문)

이는 출력에 적용되는 활성화함수를 통해 도입된다.

 

[Saturation]

- input이 증가해도 함수의 output이 포화되거나 특정값에 "고정"되는 현상

- 활성화함수 입장에서 포화는 일반적으로 input이 극단적으로 크거나 작을 때 발생한다.

 - 이로 인해 input과 관계없이 일정한 값을 출력하게 하여 기울기가 매우 작아지는(gradient vanishing) 문제가 발생한다.

 - 결과적으로 신경망에서 학습속도를 늦추거나 방해할 수 있다.

 

[Saturating non-linearity]

- 포화를 나타내는 활성화함수로 sigmoid, tanh함수가 대표적인 포화 비선형성(saturating non-linearity)예시이다.

- ReLU 및 그 변형 활성화함수는 포화를 나타내지 않아 비포화 비선형성(non-saturating non-linearity)라 부른다.

 

[linearity]의 종류

  1. Identity Function: f(x) = x
  2. Constant Function: f(x) = c (c는 상수., 상수함수)
  3. Polynomial Function: f(x) = an x^n + a{n-1} x^{n-1} + ... + a1 x + a0 (an, a{n-1}, ..., a0가 모두 상수값)
  4. Linear Regression: y = b1 x + b0 (b0과  b1가 상수값)
  5. Affine Function: f(x) = a x + b      (a 와 b 가 상수값)

 

 

 

 

 

2. Towards Reducing Internal Covariate Shift

- Internal Covariate Shifttraining시 신경망의 parameter를 바꿀 때 발생한다.
- 따라서 training의 향상을 위해서는 내부공변량이동을 줄여야 한다.

 

 Whitening

 - layer의 input feature를 조정하고 평균(means)과 단위분산(unit variance)가 0이 되게 하는 정규화(normalization) 기술로 training수렴이 빨라진다.
- input을 whitening함으로써 BN은 각 계층에 대한 입력 분포(input distribution)를 안정화하는 데 도움이 될 수 있으므로 신경망이 입력 분포의 변화에 ​​덜 민감해지고 더 빠르고 안정적으로 수렴할 수 있다.
- 또한 다른 뉴런과 activation 사이의 공분산을 줄여 신경망을 정규화(regularize)하는 데 도움이 되고 일반화 성능을 향상시킬 수 있다.
- 이런 whitening은 신경망을 즉시 수정하거나 optimization algorithm의 parameter를 바꾸는 것으로 고려될 수 있다.

하지만 이런 수정이 optimization단계와 같이 분산되면 경사하강 시 update할 normalization을 선택해 gradient의 효과를 줄이는데, 다음 예시를 통해 설명한다.
bias b를 추가하고 train data로 계산된 활성화 평균을 뺀 결과를 정규화하는 input u를 갖는 layer에 대해: x_hat = x - E[x]에서 x = u + b, X = {x1...N}은 training set에 대한 x의 집합이고 E[x] = (1/N)&Sigma; N i=1 xi, 이다. 경사하강단계가 b에 대한 E[x]의 의존성을 무시할 때, b &larr; b + ∆b를 update한다. (∆b &prop; &minus;&part;l / &part;x_hat일 때.)&nbsp; &nbsp;그렇게 되면&nbsp;u+(b+∆b)&minus;E[u+(b+∆b)] = u+b&minus;E[u+b]이다.

따라서 b로의 update와 그에 따른 noramlization의 변화의 조합은 layer의 output의 변화, loss를 초래하지 않았다.
training이 계속될수록 b는 loss값이 고정된 상태에서 무한히(indefinitely) 커질 것이다.
이 문제는 정규화가 activation의 중심일 뿐만아니라 scale조정 시 더 악화될 수 있다는 점이다.
normalization parameter가 경사하강단계시 외부에서 계산되면 모델이 터져버린다.

이 문제의 해결을 위해 모든 parameter값에 신경망이 항상 원하는 분포로 activation을 생성하려 하는데, 이는 모델의 parameter 변수에 대한 loss 기울기(gradient)가 normalization을 설명하고 모델 parameter Θ에 대한 의존성을 설명할 수 있다.

x = layer input
X = training data에 대한 이런 input 집합
이에 대해 Normalization은 다음과 같이 작성된다.
이때, 정규화식은 training 예제인 x 뿐만 아니라 모든 예제인 X에 의존하게 되며
x가 다른층에 의해 생성될 때, 각각의 예제는 Θ에 의존하게 된다.
역전파를 위해 Jacobians를 계산해야 하며 이는 아래와 같다.
입력 x, X에 대한 gradient를 계산하는데 필요한 편미분함수
이때, 후자(X에 대한 편미분함수)를 무시하면 위에서 설명한 것처럼 exploding을 초래한다.
여기서 layer input을 whitening하려면 공분산 행렬 

와 그 역 제곱근을 계산해 다음과 같은 whitening activation

과 역전파를 위한 transform의 미분값을 생성해야하기 때문에 비용이 많이 든다.

- 이는 다른 대안을 찾게 만드는데, input normalization의 성능은 전체 training set의 모든 parameter update이후에 대한 분석을 필요로 하지 않는데, 이는 우리로 하여금 전체 training data에 대해 trianing과정 중 activation의 normalization을 통한 신경망정보의 보존을 하도록 하였다.

 

 

3. Normalization via Mini-Batch Statistics

각 layer입력부의 full whitening은 비용이 많이들고 모든곳에서 구별할 수 있는 것이 아니기 때문에 2가지 중요한 단순성을 만들었다.
layer의 input과 output을 긴밀하게 하기위해 feature를 whitening하는 대신, N(0, 1)의 normalization을 각 scalar feature에 독립적으로 정규화시킨다.
  - d차원의 input x = (x1 . . . xd)에 대해 각 차원을 정규화(normalize)하면 다음과 같다.
(이때, E는 Expectation,  Var는 Variance로 training dataset에 대해 계산된 값)
- LeNet(LeCun et al., 1998b)에서 보였듯 normalization은 수렴속도를 높여준다.
이때, 간단한 정규화는 각 층의 입력부가 바뀔 수 있는데, 예를 들면 sigmoid input의 정규화(normalization)의 경우, 비선형성의 상황을 linear하게 만들 수도 있다.
이를 다루기 위해 우린 "신경망에 삽입된 transformation이 transform의 성질을 나타낼 수 있다(

the transformation inserted in the network can represent the identity transform

)"라는 것을 확신할 수 있다.
- 이를 위해 각 activation을
x(k)
, parameter쌍을 γ(k), β(k)라 할 때, 정규화된 값의 scale과 shift는 다음과 같다.
이 parameter들은 기존모델parameters와 함께 학습되며 신경망의 표현력을 회복시킨다.
- batch 설정에서 전체를 정규화한 activation으로 할 때, SGD의 사용은 비현실적(impractical)이어서 두번째 단순화를 만들었다. 


training에서 SGD를 이용해 mini-batch의 사용으로 각 mini-batch는 각 activation의 평균과 분산의 추정치를 생성한다.
이런 통계로 normalization의 사용은 gradient 역전파에 전체적으로 관여한다.
- 주목할 점은 mini-batch의 사용은 공동의(joint) covariance보다 차원별 분산의 계산을 통해 가능하다는 점이다.
in the joint case, (singular covariance행렬들의 결과에서) whiten된 activation의 수보다 mini-batch size가 더 작기 때문에 regularization이 필요하다. 

- 크기가 m인 mini-batch 𝛣에 대해 생각해보자.
각 activation은 독립적으로 normalization이 적용되며 부분activation x(k)에 집중해보자.
(이때, 명확성(clarity)을 위해 k는 생략한다.)

[Batch Normalizing Transform의 Algorithm]
수치적안정성(numerical stability)를 위해 mini-batch의 분산에 도입된 상수이다.
 numerical stability
  - training시, 
loss함수의 기울기는 Back propagation으로 계산된다. (부분도함수의 다중연결계산이 포함됨)
  - 이 계산은 많은 수를 포함하기에 gradient vanishing/exploding같은 수치적 불안정성으로 optimization이 어렵거나 불가능할 수 있다. (소수점 이하와 같은 수치계산시의 오차, 부정확성을 최소화 하기 위한 개념)
  - Batch Normalization은 중간층의 activation을 normalize하여 training중의 수치적 안정성을 향상시키는 기술로 도입되었다. (이 논문에서는 SGD를 사용해 신경망을 훈련시키는 부분에서의 수치적 안정성의 중요성을 말한다.)
  - Activation scale을 줄여 BN은 gradient vanishing, exploding을 방지해 더 안전하고 효율적인 training이 가능해졌다.
  - 또한 bias를 사용하지 않음을 통해 수치계산의 오차를 최소화 할 수도 있다.
(다만, 성능저하의 우려로 인해 성능과 수치적 안정성간의 적절한 균형이 필요하다.)
 
[numerical instability  with. overfitting]
- 수치적 불안정성은 overfitting으로 이어질 수 있는데, 예를들어 기울기가 매우 커지거나 작아지면 optimization이 불안정해지고 overfitting이 발생할 수 있다.
- 또한 수치적 불안정성으로 수치계산이 부정확해지면 최적의 값으로의 수렴이 되지 않아 overfitting발생이 가능하다.
- 다만 model의 복잡도, train data의 불충분 및 노이즈로 overfitting이 수치적불안정성이 없어도 발생가능하다.

- BN transform은 activation을 조정하기 위해 도입될 수 있다.
이런 값의 분포는 Expectation 0과 1의 분산값을 갖는것 뿐만 아니라 각각의 mini-batch의 원소들이 우리가 를 무시한다면 같은 분포로 부터 표본이 나오는데, 이는 아래와 같은 expectation 즉, 기댓값에서 관찰가능하다.
training에서 transformation과정을 통해 나온 loss의 기울기 ℓ에 대해 backpropagation을 진행하고 BN transformation의 parameter에 대한 gradient(기울기)를 계산할 필요가 있다.
이때, chain rule을 사용해 아래와 같이 단순화 한다.
즉, BN transformation정규화된 activation을 신경망에 전하는 차별화된(differentiable) tranformation이다. 
이는 model training에서 layer가 internal covariate shift가 적은 입력분포로 학습을 계속함을 통해 학습을 가속화한다는 것을 확신하게 해준다.
또한 이런 정규화된 activation에 적용되어 학습(learn)된 affine transformation은 BN transformation이 identity transformation을 나타내게 하며 신경망의 수용력을 보존한다.

 

 

3.1 Training and Inference with Batch-Normalized Networks

- Batch Normalization 신경망을 위해 우린 activation의 부분집합을 특정해야하고 그 각각에 대해 BN transform을 Algorithm. 1.을 이용해 집어넣어야 한다.
- 일전에 x를 입력으로 받은 모든층은 이제 BN(x)로 표기한다.
- BN을 사용하는 모델은 [ BGD  ||  mini-batch size m > 1 SGD  ||  Adagrad(Duchi et al., 2011)]같은 변형(variants)을 사용해 훈련할 수 있다. 
- mini-batch에 의존하는 activation의 정규화는 효과적인 training을 허용하지만, 추론(inference)에서 필요하지도, 바람직하지도 않는데 우리의 output이 결과적으로 input값에만 의존하기를 원하기 때문이다.

 

 

3.2 Batch-Normalized Convolutional Networks

- Batch Normalization은 신경망의 모든 activation집합에 적용할 수 있기에 우리는 요소별(element-wise) 비선형성을 따르는 affine transformation으로 구성된 transform에 초점을 맞춘다.

W 와 b는 학습된 매개변수이고 g(.)는 (sigmoid, ReLU같은) 비선형성함수(saturating nonlinearity)이다.
이 식은 FC층과 convolution층 모두 적용되는데, 비선형성 전에 x = Wu + b를 정규화 함을 통해 바로 BN transform을 추가해줬다.
더불어 input u도 정규화할 수 있었지만 u는 다른 비선형성의 출력일 가능성이 높아 분포가 training과정에서 바뀔 수 있기에 첫번째와 두번째 moment를 제한하는 것만으로는 공변량이동을 제거하지 않을 것이다.

- 그와는 대조적으로 Wu + b는 대칭적이고 희소하지않은 분포를 가질 가능성이 더 높으며, 이는 "more Gaussian (Hyva ̈rinen & Oja, 2000)"으로; 이 분포를 정규화하면 안정적인 분포의 activation이 될 가능성이 높다.

- 따라서 이에대해 주목할 점은, 우리가 Wu + b를 정규화하기에 bias b의 효과는 후속 평균의 차에 의해 취소될 것이기에 무시될 수 있다.
이때, bias의 역할은 Algorithm. 1.의 β에 의해 가정된다.
따라서 z = g(Wu + b)는 다음과 같이 BN transformation이 x = Wu의 각 차원에 독립적으로 적용되는 방식으로 아래와 같이대체된다. (이때, 각 차원에는 학습된 매개 변수 γ(k), β(k)라는 별도의 쌍이 존재한다.)

- conv.layer에서 우린 convolution의 속성을 복종시키기 위해 normalization을 사용하는데, 그래서 동일한 특징맵의 다른위치에 있는 다른 원소들이 동일한 방식으로 정규화된다.
이를 달성하기 위해 우린 모든 위치의 mini-batch의 activation을 긴밀하게 연결한다.

- Algorithm.1.에서, 우린 𝜝가 mini-batch의 요소와 공간위치 모두에 걸쳐 특징맵의 모든 요소의 집합이 되게 한다. - 따라서 크기가 m인 mini-batch와 pxq크기의 특징맵의 경우, 크기가 m' = |𝜝| = m · pq인 효과적인 mini-batch를 사용한다.

- 우린 activation당이 아닌, feature map당 parmeter변수 쌍인 γ(k)와 β(k)를 학습한다.
- Algorithm.2.가 비슷하게 수정되었는데, 추론하는동안 BN transform은 주어진 특징맵의 각 activation에 동일한 linear transformation을 적용한다.

 

 

3.3 Batch Normalization enables higher learning rates

- 전통적인 심층신경망에서, 너무 높은 학습율은 poor local minima에 갇히는 것 뿐만 아니라 기울기 소실/폭발을 야기했다. 
- Batch Normalization은 이런 문제를 다루는 것을 도와준다.
- 신경망을 거친 activation을 정규화함으로써 parameter에 대한 작은 변경이 activation의 기울기를 더 크고 최적의 변화로 증폭되는 것을 방지하는데, training이 비선형성의 포화상태에 갇히는 것을 방지하는것이 바로 그 예시이다.

- 또한 BN은 training에서 parameter부근을 더 회복력 있게 만드는데, 보통 large learning rate는 parameter의 규모를 증가시켜 gradient 역전파에서 model의 폭발을 초래한다.
하지만 Batch Normalization과 함께라면 layer에서의 Back Propagation은 parameter의 규모면의 영향을 받지 않는다.

이때, Scale은 Jacobian layer나 결과적으로 gradient 전파에 영향을 미치지 않는다.
게다가 가중치가 클수록 기울기가 작아지고 BN은 parameter의 성장(growth)을 안정화한다.
또한 Batch Normalization이 layer Jacobian이 training에 유리한 것으로 알려진 1에 가까운 단수값(singular value)을 갖도록 할 수 있다고 추측한다.(Saxe et al., 2013)
실제로 transformation은 선형적이지 않고 정규화된 값이 Gaussian분포이거나 독립적이라는 보장은 없다.
하지만, 그럼에도 불구하고 Batch Normalization이 gradient propagation을 더 잘 작동시킬 것이라 믿는다.

- gradient propagation(기울기 전파)에 대한 Batch Normalization의 정확한 영향은 추가적인 연구로 남아있다.

 

 

3.4 Batch Normalization regularizes the model

- Batch Normalization으로 training할 때, training예제는 mini-batch의 다른 예시들과 함께(conjunct) 표시되며, training 신경망은 더 이상 주어진 training 예제에 대한 결정적인 값을 생성하지 않는다.
이 효과는 신경망의 일반화(generalization)에 매우 이점을 갖는다(advantageous).

- Dropout(Srivastava et al., 2014)이 overfitting을 줄이기 위해 일반적으로 사용되는 방식인 반면에 Batch Normalization이 적용된 신경망은 Dropout이 감소되거나 제거될 수 있음을 발견했다.

 

 

 

4. Experiments

4.1 Activations over time

-  training에서 internal covariateshift와 이에 대항하는 Batch Normalization의 능력을 증명하기 위해 MNIST dataset을 사용. (이때, 28x28의 작은 image를 input으로 3개의 FC-layer와 100개의 activation을 각각 갖는 단순한 신경망을 사용)
- 각 층은 sigmoid함수 y = g(Wu + b)를 통해 계산되며, 이때 W는 작은 무작위 Gaussian값으로 초기화된다.
- 마지막 층은 FC-layer를 이용해 10개의 activation이며 cross-entropy loss를 사용한다.
- Section 3.1에서처럼 신경망의 각 은닉층에 Batch Normalization을 사용한다.
- 우리의 주 관심사는 model의 성능보다는 baseline과 BN간의 비교에 중점을 둔다.
(a)를 보면, BN을 사용한 것이 더 높은 정확도를 갖는데, 그 이유를 조사하기위해 training과정중의 신경망의 sigmoid에 대해 연구하였다.
(b,c)에서 original network(b)는 전반적으로 평균과 분산이 많이 변화하는 반면, BN을 사용한 network(c)의 경우, 분포(distribution)가 안정적임을 볼 수 있는데, 이를 통해 training에 도움을 주는 것을 알 수 있다. 

 

 

4.2 ImageNet Classification

- 2014년의 Inception network에 Batch Normalization을 적용, 더 자세한 사항은 부록(Appendix)에 기재.
- (Sutskever et al.,2013)에 기재된 momentum계수와 32 mini-batch size를 사용
- 이때, 기존의 Inception에 Batch Normalization을 추가한 수정된 모델을 사용하여 evaluate를 진행하였다.
- 특히, Normalization은 Conv.layer의 비선형성(non-linearity., ReLU)이 입력부분에 적용하였다.
즉, 코드로 나타내면 다음과 같다는 것을 알 수 있다

 

• 4.2.1 Accerlerating BN Networks

단순히 Batch Normalization을 신경망에 추가한다고 완전한 이점을 주는 것은 아니다.
완전한 이점을 위해 신경망 및 training parameter에 대해 다음과 같은 변형이 필요하다.  
Increase learning rate.
  - training speed를 높임
Remove Dropout.
  - Batch Normalization은 Dropout과 동일한 목표를 이행하기 때문
Reduce the L2 weight regularization.
  - L2 가중치를 줄여서 정확도를 높였음
Accerlerate the learning rate decay.
  - learning rate의 감쇠율을 기하급수적으로 진행(for train faster)
Remove L
ocal Response Normalization.
  - BN의 사용으로 LRN의 필요가 없어
Shuffle training examples more thoroughly.
  - 철저하게 train예시를 섞음으로 mini-batch에서 동일한 예제가 나오는 것을 방지
- Reduce the photometric distortions.
  - 광도측정의 왜곡을 줄여 real image에 집중하게함 (∵ BN신경망은 train faster. &. observe fewer time이기 때문)
Inceoption의 Single Crop validation accurarcy 분포로 BN과의 비교를 나타내는 그래

 

• 4.2.2 Single-Network Classification

Inception.
  - 처음 learning rate는 0.0015로 초기화하여 train
BN-Baseline.
  - non-linearity이전, Batch Normalization을 적용한 Inception과 동일
BN-x5.
  - 위의 모델에 Section 4.2.1을 적용
  - 초기 학습률은 0.0075로 5배 증가시켰으며 동일한 학습률로 기존 Inception의 매개변수가 무한대에 도달하게함
BN-x30.
  - BN-x5와 동일하지만, 초기학습률은 0.045로 Inception의 30배이다.
BN-x5-Sigmoid.
  - BN-x5와 동일하지만, ReLU대신 sigmoid non-linearity를 사용했다.

위의 그림은 4.2.1의 그래프의 Max validation accuracy 뿐만 아니라 72.2%이 정확도에 도달하기까지 걸린 Step에 대한 표이다.

여기서 흥미로운 점은 BN-x30이 다소 초기에는 느렸지만 더 높은 최종 accuracy에 도달했다는 점이다.
internal covariance shift의 감소로 sigmoid를 비선형성으로 사용할 때, Batch Normalization을 훈련할 수 있다는 것을 증명하였다. (흔히들 그런 신경망 train이 어렵다고 알려진 것에도 불구하고.)

 

• 4.2.3 Ensemble Classification

BN-x30을 기반을 둔 6개의 신경망을 이용해 다음과 같은 사항에 집중해 수정하였으며 결과는 5. Conclusion의 표를 참고한다.
- Conv.layer의 초기 weight를 증가시킴
- Dropout의 사용 (Inception에서 사용하는 40%에 비해 5~10%정도만 수행)
- model의 마지막 은닉층과 함께 non-convolution, activation 당 Batch Normalization을 사용

 

 

 

 

 

 

5. Conclusion

- 기계학습의 training을 복잡하게 만드는 것으로 알려진 Covariate Shift(공변량 이동)은 sub-network와 layer에도 적용되며
network의 내부 활성화에서 이를 제거하면 training에 도움이 된다는 전제(premise)를 기반으로 한다.
- Normalization은 network를 train에 사용되고 있는 optimization method를 적절하게 다룰 수 있다.
각각의 mini-batch에 Normalization을 적용하고 normalization parameter를 통한 기울기의 역전파를 위해 SGD를 사용한다.

- network의 결과는 포화비선형(saturating nonlinearity)로 훈련될 수 있고, training rate의 증가에 더욱 관대(tolerant)하며 정규화(regularization)를 위한 Dropout이 필요하지 않은 경우가 많다.

- 최첨단 image classification model에 Batch-Normalization을 추가하는 것 만으로도 training속도를 크게 향상시킬 수 있다.

- learining rate를 높이고 Dropout을 제거하고 Batch-Normalization에 의해 제공되는 기타 수정사항을 적용함으로
우리는 적은 training step으로 이전의 첨단기술에 도달하며 이후의 single-network image classification을 능가한다.
또한, Batch-Normalization으로 훈련된 여러 모델들의 결합으로 ImageNet에서 가장 잘 알려진 방법보다 훨씬 우수한 성능을 발휘할 수 있다.

 

[Batch-Normalization의 목표]

- 훈련 전반에 걸쳐 activation값의 안정적인 분포(distribution)의 달성
- experiments에서 출력분포의 1차 모멘트와 2차 모멘트를 일치시키면 안정적 분포를 얻을 가능성이 높다.
∴ 비선형성 전에 Batch-Normalization을 적용시킨다.

- BN의 또다른 주목할 점은 Batch Normalization transform이 동일성(표준화 layer는 개념적으로 필요한 scale과 shift를 흡수하는 learned linear transform이 뒤따르기에 필요하지 않았음)을 나타내도록하는 learned scale과 shift, conv.layer의 처리, mini-batch에 의존하지 않는 결정론적 추론, 신경망의 각 conv.layer의 BN이 포함된다.

- 즉, Batch Normalization이 conv.layer를 처리할 수 있고 미니 배치에 의존하지 않는 결정론적 추론을 가지고 있다는 뜻이며 추가적으로 신경망의 각 conv.layer를 정규화한다는 의미이다.

[이번 연구의 문제점 및 향후 목표]
BN가 잠재적으로 가능케하는 모든 범위의 가능성을 탐구하지 "않았다."
- 따라서 internal covariate shift와 gradient vanishing, exploding가 특히나 심각할 수 있다.
- normalization이 gradient propagation을 향상시킨다는 가설을 철저하게 검증하는 방법은 당연히도 말이다.
- 우리는 전통적인 의미에서 적용의 부분에 도움이 될 지 [신경망에 의해 수행되는 normalization이 모집단의 평균과 분산의 재계산만으로 새 데이터분포보다 쉽게 일반화 가능한지의 여부]를 조사할 계획이다.

 

 

 

 

😶 부록 (Appendix)

Variant of the Inception Model Used

위의 Figure 5는 GoogleNet구조와 관련해 비교한 것으로 표의 해석은 GoogleNet(Szegedy et al., 2014)을 참조.
GoogLeNet과 비교했을 때, 주목할만한 구조는 다음과 같다.
• 5x5 conv.layer는 2개의 연속된(consecutive) 3x3 conv.layer로 대체된다.
  - 이는 network의 최대깊이를 9개의 weight layer로 증가시킨다.
  - 또한, parameter수를 25% 증가시키고 계산비용(computational cost)를 30%정도 증가시킨다.

• 28x28 inception module은 2개에서 3개로 증가시킨다.
• module내부에서는 maxpooling과 average pooling이 사용된다.
• 두 inception module사이에서 pooling layer는 없지만 module 3c, 4e에서 filter 연결 전에 stride=2의 conv/pooling layer가 사용된다.

우리의 model은 첫번째 conv.layer에서 8배의 깊이를 사용하는 분리가능한 convolution을 사용했다.
이는 training시의 Memory소비를 증가시키고 computational cost를 감소시킨다.

 

 

 

 

 

🧐 논문 감상_중요개념 핵심 요약

"Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift"
Sergey Ioffe와 Christian Szegedy가 2015년에 발표한 연구 논문으로 이 논문은 심층 신경망의 훈련을 크게 향상시킬 수 있는 Batch Normalization이라는 기술을 제안한다.

 

[핵심 개념]

1. Internal Covariate Shift
이 논문은 내부 공변량 이동(Internal Covariate Shift) 문제에 대해 설명하는데, 이 문제는 training시 레이어에 대한 입력 값이나 parameter 분포의 변화를 의미한다.
이것은 후속 계층학습의 학습속도를 늦추는 것으로 학습과정을 어렵게 만들 수 있다.

2. Batch Normalization
이 논문은 내부 공변량 이동 문제에 대한 해결책으로 Batch-Normalization을 제안한다.
배치 정규화는 배치 평균(mean)을 빼고 배치 표준편차(standard deviation)로 나누어 계층에 대한 입력을 정규화하는 것입니다

3. Learnable Scale and Shift
입력을 정규화(normalization)하는 것 외에도 배치 정규화는 두 가지 학습 가능한 매개변수인 scale parameter와 shift parameter를 도입한다.
이러한 parameters를 통해 신경망은 정규화된 입력에 대한 optimal scale 및 shift를 학습할 수 있다.

4. Improved Training
이 논문은 배치 정규화가 내부 공변량 이동의 영향을 줄임으로써 심층 신경망의 교육을 크게 개선할 수 있음을 보여준다.
이것은 더 빠른 수렴, 더 나은 일반화 및 다양한 작업에서 향상된 성능으로 이어진다.

5. Compatibility
이 논문은 배치 정규화가 다양한 신경망 아키텍처 및 활성화 기능과 함께 사용될 수 있음을 보여준다.

전반적으로 이 논문은 심층 신경망 훈련을 개선하기 위한 중요한 기술을 소개하고 다양한 작업에 대한 효과에 대한 증거를 제공한다.

 

+ Recent posts