1. Introduction
여러 개의 비선형 은닉층을 가지는 신경망은 복잡한 관계를 학습할 수 있지만 훈련데이터가 부족한 상황에서는 과적합으로 이어질 수 있습니다. 따라서 과적합을 막기 위해 검증 세트의 성능이 떨어지기 전에 학습을 멈춘다던지, L1 및 L2 정규화 같은 가중치에 페널티를 도입하는 등의 방법이 개발되었죠. 또한 서로 다른 구조의 모델을 조합하는 Model Combination도 성능 향상에 도움이 되지만 연산량이 커진다는 단점이 있습니다. Dropout은 이런 overfitting을 방지하면서, 서로 다른 신경망을 지수적으로 결합(model combination)할 수 있게 해 줍니다.
Dropout은 학습 시 신경망의 뉴런을 부분적으로 생략하는 것을 의미합니다. 학습 시 확률 $p$에 만큼 살아남을 dropout을 결정하고 test 시에는 dropout 없이 가중치(w)에 $p$를 곱하여 사용하게 됩니다.
2. Motivation
유전학에서 아이디어를 얻었다고 합니다. 유성생식에서 부모로부터 반반씩 받은 새로운 유전자가 적응력을 향상시켜 가는 것처럼 dropout으로 훈련된 유닛도 무작위로 선택된 다른 유닛과 작동하는 법인 것이죠.
3. Model Description
Dropout
def dropout(X, drop_prob):
assert 0 <= drop_prob <= 1
$r_j^(l) \sim Bernoulli(p)$
$\tilde{y}^(l)=r^(l)*y^(l)$
$z_i^{(l+1)}=w_i^{(l+1)}\tilde{y}^(l)+b_i^{(l+1)}$
$y_i^{l+1}=f(z_i^(l+1))$
if drop_prob == 1:
return X.zeros_like()
mask = nd.random.uniform(0, 1, X.shape) > drop_prob
return mask * X / (1.0-drop_prob)
각 뉴런의 output $y_i(l)$에 drop확률 $r_j(l)$을 곱해주면 $\tilde{y}^(l)$로 변환됩니다. 확률에 따라 해당 뉴런을 drop 할지 결정합니다. 코드에서 1/(1-p)을 곱해주는 걸 볼 수 있습니다. 이는 drop 된 뉴런에 대한 보상으로 dropout을 사용하지 않았을 때와 동일한 값을 유지할 수 있도록 해줍니다.
4. Experimental Results
다양한 아키텍처에서 dropout을 적용한 게 에러가 낮다는 것을 보여줍니다.
5. Effect on Dropout Rate
뉴런이 살아남을 확률 p가 hyperparameter이기 때문에, 최적의 p를 계산하기 위해 두 가지 실험을 진행했습니다.
뉴런의 수를 n이라고 할 때,
a) n을 고정시키고 p를 변화시키며 test/train error측정
b) n과 p를 변화시키며 n*p의 값은 유지한 채 test/train error 측정
a)를 통해 p가 0.4~0.8 범위일 경우 error가 일정함을 확인할 수 있고
b)를 통해, p가 낮을 경우(살아남은 뉴런이 적을 경우) 뉴런의 수를 늘렸을 때 error가 더 낮다는 것을 확인할 수 있습니다.
결론적으로 0.6에서 성능이 가장 좋아 보이지만 보통 0.5로 쓴다고 합니다.
6. Effect of Data Set Size
MNIST 데이터셋에서 개수가 1K($10^3$) 은 넘어야 dropout이 효과가 있는 걸 볼 수 있습니다. 데이터가 많으면 애초에 오버피팅이 될 가능성이 낮기 때문에 효과가 크지 않습니다. 좋은 regularizer는 적은 데이터셋으로 복잡한 모델을 훈련할 때에도 효과가 있어야 하는데 dropout은 그만한 noise를 줄 수 없는 것으로 판단됩니다.
후에 Batch Normalization이 나오면서 Dropout을 안 써도 된다고는 하지만 둘을 같이 쓰는 경우도 있는 것 같습니다.
https://www.jmlr.org/papers/volume15/srivastava14a/srivastava14a.pdf?utm_content=buffer79b43&utm_medium=social&utm_source=twitter.com&utm_campaign=buffer,https://ko.d2l.ai/chapter_deep-learning-basics/dropout.html
https://ko.d2l.ai/chapter_deep-learning-basics/dropout.html
'AI/ML' 카테고리의 다른 글
[RecSys] 언어모델을 추천시스템에 활용한 연구 (0) | 2023.06.25 |
---|