일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 분할 정복
- 문자열
- DP
- c++
- dfs
- NEXT
- 너비 우선 탐색
- 세그먼트 트리
- 우선 순위 큐
- 가끔은_말로
- object detection
- 회고록
- 미래는_현재와_과거로
- pytorch
- 플로이드 와샬
- dropout
- 조합론
- BFS
- 가끔은 말로
- tensorflow
- back propagation
- 2023
- 이분 탐색
- 다익스트라
- 자바스크립트
- Overfitting
- 크루스칼
- 백트래킹
- lazy propagation
- 알고리즘
- Today
- Total
Doby's Lab
Dropout에 대하여 본문
Dropout
Dropout이란 학습을 하면서 일부 뉴런을 일부러 끄면서 Overfitting을 방지하는 기법입니다.
뉴런들이 꺼지는 기준은 Hyperparameter인 Dropout-rate를 통해 꺼질지 말지 결정합니다.
또한, Dropout은 batch마다 켜지고 꺼지는 뉴런이 달라집니다.
Overfitting
이러한 Dropout이 Overfitting 방지가 어떻게 되는지 알아봅시다.
Sample마다 영향력이 강한 feature가 존재합니다. 만약 이러한 feature가 없다면 다른 feature들이 더 영향을 주게 됩니다.
결론적으로 correlation이 강한 feature에 과하게 학습되는 걸 방지하며 최대한 균등하게 영향력을 가져가려 합니다.
Ensemble
또한, 학습마다 Dropout으로 Batch마다 달라지는 모델의 형태로 앙상블의 효과도 기대할 수 있습니다.
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
https://signing.tistory.com/107
'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 |