AI바라기의 인공지능

BatchNormalization, Dropout, Pooling, Activation function 적용 순서 본문

딥러닝/컴퓨터비전

BatchNormalization, Dropout, Pooling, Activation function 적용 순서

AI바라기 2023. 3. 28. 21:55

딥러닝 네트워크

 

딥러닝 네트워크를 구성할때 다양한 layer와 정규화 기법을 사용합니다.

 

convolutional layer

dropout layer

pooling layer

batch normalization

activation function

...

 

이와 같이 다양한 기법들을 사용하고 있는데 과연 어떤 순서로 주로 사용되고 있는지, 어떤 순서로 사용할 것을 권장하는지 알아보겠습니다.

 

 

Batch Normalization

먼저 Batch Normalization의 경우  "Batch Normalization: Accelerating Deep Network Training b y Reducing Internal Covariate Shift" 의 저자인 Sergey Ioffe는 Convoluter Layer 또는 Fully Connected Layer 등의 layer 뒤에 적용되는 것으로 보고 있습니다.

 

그리고 배치 정규화의 목적은 네트어크 연산 결과가 원하는 방향의 분포대로 나오는 것이기 떄문에 convolution 연산을 진행 한 후 바로 적용하여 정규화 하는 것이 좋습니다.

 

Convolution - Batch Normalization - Activation 순서로 적용하는 것이 바람직합니다.

 

하지만 모든 상황에서 이렇게 하는 것이 성능이 좋을 수는 없기 때문에 이 또한 하이퍼 파라미터 개념으로 변경하면서 학습을 시키는 것이 좋습니다.

 

Dropout

dropout의 경우 "Analysis on the Dropout Effect in Convolutional Neural Networks" 최근 연구에 따르면 activation function이후에 dropout을 적용하는 것으로 제안되었습니다.

 

Convolution - Batch Normalization - Activation - Dropout

그러므로 해당 순서로 진행하는 것이 바람직합니다.

Pooling

Pooling의 경우 pooling - dropout 순서로 적용하게 되면 pooling으로인해 이미 줄어든 값이 dropout으로 제거되기 때문에 좀더 hard 한 느낌이 있고

dropout - Pooling의 경우 몇몇개의 값이 지워진 상태에서 맥스풀링 또는 에버리지풀링을 하기 때문에 좀 더 soft하여 학습이 잘되는 느낌이 있습니다.

 

 

 

즉 전체적으로 정리하면

 

Convolution - Batch Normalization - Activation - Dropout - Pooling

 

순서로 네트워크를 구성하는 것이 일반적입니다.

'딥러닝 > 컴퓨터비전' 카테고리의 다른 글

ASPP(Atrous Spatial Pyramid Pooling)  (0) 2023.09.25
Atrous Convolution  (0) 2023.04.06
1x1 convolution 설명  (0) 2023.04.04
depthwise separable convolution 설명  (0) 2023.04.04