AI

[논문리뷰] DropBlock: A regularization method forconvolutional networks

전자둥이 2021. 11. 2. 09:47
반응형

이번에 DropBlock논문을 읽고 이해한대로 써볼려고 합니다.. 잘못된 내용이 있을 시 댓글 달아주시면 감사하겠습니다

 

우선 논문내용 중에 중복된 내용은 skip을 하며 글을 써볼려고 합니다

 

Abstract

Deep neural networks은 over-paramerterized 와 많은 양의 노이즈와 regularizatoin (weight decay, dropout)와 함께 학습할 때 잘 작동하는 경우가 있습니다.
dropout이 regularization technique으로 fully connected layers에서 많이 사용되는 반면, convolutional layers에서는 효과적이지 않습니다. 왜냐하면 convolutional layers의 activation units가 공간적으로 상관되어 있기 때문입니다.
저자는 이 DropBlock을 skip connectoin 에 있는 conv에 적용하면 accuracy가 올라간다는 걸 찾아냈습니다. 또한, 학습중에 점직적으로 dropped units의 수를 증가시키면 accruacy가 증하고, 좀 더 robust해질 수 있습니다.

 

Introduction

dropout의 주요 단점은 특징을 무작위로 떨어뜨린다는 것입니다. 이 단점이 fully-connected layers에서는 효과적일 수 있지만, 형상이 공간적으로 상관되어 있는 convolutional layers에서는 덜 효과적입니다.
따라서 이 논문에서 저자는 특히 convolutional layers을 regularization 하는데 효과적인 구조화된 형태의 dropout인 dropblock을 제시합니다.
DropBlock은 상관된 영역을 무시하기 때문에, networks은 해당 feature map에서 다른 영역을 보고 evidence를 찾아야만 합니다.(figure 1참고)


실험결과, DropBlock의 효과는 좋았습니다. ResNet-50에 적용한 결과 classification accuracy가 imageNet에서 76.51% -> 78.13%로 증가,
RetinaNet모델에서 coco detection 에 적용한 결과 AP가 36.8% -> 38.4%로 증가했습니다.

 

Related work

dropblock말고 다른 regularization기법들 소개되어있지만 설명 pass,,
regularization 기법의 기본 원리는 노이즈를 신경망에 주입하여 훈련 데이터에 과적합이 되지않도록 하는 것입니다. 여러 방법중,우리가 제시한 dropblock과 비슷한 SpatialDropout이라는게 있는데, 해당 방법은 특정 체널 전체를 drop해버립니다. 실험 결과 dropblock이 해당 spatialdropout보다 더 효과적이라는걸 보여줬습니다.

dropblock은 data augmentation 기법인 cutout으로부터 영감을 받았습니다. 그리고 실험 결과를 보면, 훈련 중 dropblock에 대한 zero out 비율을 고정하는 것은 훈련 중 zero out 비율을 증가시키는 방법보다 성능이 좋지 않았습니다. 다시 말하자면, 훈련 중에 DropBlcok비율을 처음에는 작게 설정하고 훈련 중에 시간이 지남에 따라 선형적으로 dropblock비율을 증가시키는 것이 좋습니다. 이 스케줄링 체계는 scheduledDropPath와 관련이 있습니다.

 

DropBLock

DropBlock은 dropout과 비슷한 간단한 방법입니다. dropout과 가장 다른 점은 독립적인 랜덤 유닛을 드롭아웃하는 대신 feature map의 layer에서 인접 영역을 드롭아웃 한다는 점입니다.
(dropBlock Pseudocode첨부)


dropBlock은 두개의 main 파라미터가 있습니다.(block_size, r) block_size는 drop시킬 block의 size, r은 얼마나 많은 activation unit을 drop시킬지 정하는 파라미터 입니다.

dropblock은 dropout과 같이 추론 중에는 적용하지 않습니다. 

Setting the value of block_size: feautre map의 resolution과 상관없이 모든 형상 맵에 일정한 block_size를 설정한다. block_size 가 1이 dropout과 닮았고, blcok_size가 feature map전체를 커버하면 SpatialDropout과 닮았습니다.

Setting the vlaue of r : 우리는 명시적으로 r를 설정하지 않습니다. 앞서 언급한 바와 같이, r은 삭제할 형상의 수를 제어합니다. 모든 활성화 단위를 keep_prob의 확률로 유지하고 싶다고 가정하자, 드롭아웃에서 이진 마스크는 평균 1 - keep_prob로 베르누이 분포와 함께 샘플링 됩니다.


Scheduled DropBlock : 트레이닝을 하면서 keep_prob 값을 고정하는것은 성능에 좋지 못했습니다. 그리고 keep_prob값을 초반에 너무 작게 설정하면 학습이 제대로 되지 않습니다. 대신에 점차적으로 keep_prob값을 1에서부터 작게 하면 성능이 좋아지며 실험에서 저자는 keep_prob값을 선형적으로 점차적으로 작게 설정했습니다.

Experiments부분 생략,,,

 

실제로 DropBlock을 트레이닝 코드에 적용을 해보고 성능 개선이 있으면 코드 공유 및 성능 결과도 공유하도록 하겠습니다.

 

긴 글 읽어주셔서 감사합니다.

 

반응형