Doby's Lab

Dropout에 대하여 본문

AI/Concepts

Dropout에 대하여

도비(Doby) 2022. 12. 31. 17:12

 

Dropout

Dropout이란 학습을 하면서 일부 뉴런을 일부러 끄면서 Overfitting을 방지하는 기법입니다.

출처: https://medium.com/analytics-vidhya/a-simple-introduction-to-dropout-regularization-with-code-5279489dda1e

뉴런들이 꺼지는 기준은 Hyperparameter인 Dropout-rate를 통해 꺼질지 말지 결정합니다.

또한, Dropout은 batch마다 켜지고 꺼지는 뉴런이 달라집니다.

Overfitting

이러한 Dropout이 Overfitting 방지가 어떻게 되는지 알아봅시다.

 

Sample마다 영향력이 강한 feature가 존재합니다. 만약 이러한 feature가 없다면 다른 feature들이 더 영향을 주게 됩니다.

결론적으로 correlation이 강한 feature에 과하게 학습되는 걸 방지하며 최대한 균등하게 영향력을 가져가려 합니다.

Ensemble

또한, 학습마다 Dropout으로 Batch마다 달라지는 모델의 형태로 앙상블의 효과도 기대할 수 있습니다.

출처: https://munjeongkang.github.io/ANN5/

Dropout in Test set

Train set에서는 어떻게 Dropout이 적용되는지 알아봤습니다.

그렇다면 evaluate를 할 때는 확률에 의해 계속 꺼져있는 뉴런도 있을 경우가 있습니다.

그리고, 많이 학습하지 못해서 Dropout의 영향을 악영향으로 받은 경우도 있을 수 있습니다.

이러한 경우는 어떻게 처리되는지 알아봅시다.

$$  h_n = a(\alpha W_n h_{n-1} + b_n) 
\begin{cases} 
a: & Activation\;function
\\\alpha: & Dropout-rate
\end{cases} $$

Dropout Layer에서 다음과 같은 Scaling을 통해 Dropout-rate의 확률로 꺼져있음을 고려하여 출력할 수 있게 합니다.

(관련 설명 링크: https://heytech.tistory.com/127)

Code in Keras

이 또한 Keras에서 제공하며 아래와 같이 Layer를 선언하여 추가할 수 있습니다.

model.add(keras.layers.Dropout(0.2))

Reference

https://heytech.tistory.com/127

 

[딥러닝] Drop-out(드롭아웃)은 무엇이고 왜 사용할까?

본 포스팅에서는 딥러닝에 있어서 Generalization 기법 중 하나인 Drop-out(드롭아웃)에 대해 알아봅니다. 📚 목차 1. Drop-out 개념 2. Drop-out 사용이유 3. Mini-batch 학습 시 Drop-out 4. Test 시 Drop-out 1. Drop-out

heytech.tistory.com

https://signing.tistory.com/107

 

Dropout 고찰: output에 scaling하는 이유(Dropout 구현)

베이지안 뉴럴넷을 다루면서 dropout에 대해 깊이 알고자 하여 이거저거를 찾아 보았고 그 과정을 좀 끄적여보고자 한다. What Dropout? 가장 기본적인 뉴럴넷은 보이는 (a)그림으로 생각해볼 수 있다.

signing.tistory.com

 

728x90

'AI > Concepts' 카테고리의 다른 글

Back-Propagation(역전파)에 대하여  (1) 2023.01.16
Batch Normalization이란? (Basic)  (0) 2023.01.02
L1, L2 Regularization에 대하여  (0) 2022.12.31
Image Augmentation이란?  (2) 2022.12.29
Normalization이 필요한 이유  (0) 2022.12.28