반응형
Dropout
[[Overfitting]]의 해결책 중 하나. Dropout은 탈락, 낙오라는 뜻을 가지고 있다.
Dropout은 2012년 발표된 일종의 regularization 방법이다. 2015년 발표된 Batch normalization의 부수적인 효과 중 하나가 regularization이기 때문에 Dropout을 쓰지 않기도 한다.
1. Dropout?
1-1. Dropout이란
- 전체 weight를 계산에 참여시키는 것이 아니라 layer에 포함된 weight 중에서 일부만 참여시킨다
- 즉, 학습 시 뉴런을 임의로 삭제하여 학습하는 방법
- 훈련 시에는 임의의 비율(dropout ratio) 만큼 뉴런을 삭제한다. 삭제된 뉴런의 값은 순전파/역전파하지 않는다
- 시험 시에는 모든 뉴런의 값을 흘린다. 삭제된 뉴런의 값을 곱해서 값을 흘려야 하나 많은 딥러닝 프레임워크에선 비율을 곱하지 않는다
1-2. regularization 측면의 dropout
dropout의 목적은 overfitting을 방지하는 것이다. dropout은 regularization 효과를 가지고 있다. (regularization 참고)
- ensemble : 학습 시 layer의 weight를 선택적으로 drop 함으로써 결국에는 여러가지 모델을 ensemble한 효과를 낸다
- variable selection : 학습 시 layer에서 선택적으로 weight를 고름으로써 variable selection을 한다
- weight size penalty : dropout을 적용한 신경망 모델의 Loss function이 L2 Norm을 더해준 모양으로 도출됨으로써 weight size에 penalty를 주게 된다
1-3. Dropout의 등장
모델 결합을 하려면 성능이 오르지만 그 모델들은 01. 서로 다른 데이터로 학습을 시키거나 02. 모델이 서로 다른 구조를 가져야 한다.
다양한 모델을 학습시키더라도, 다양한 모델을 실행시킬 때 연산 시간이 오래 걸린다
그를 위해서 등장한 dropout
- 여러개의 모델을 만드는 대신, 모델 결합에 의한 voting과 비슷한 효과를 내어 다양한 모델을 사용할 수 있다
- 실행 시킬 때 일부 뉴런이 생략된 모델들은 따로 실행시키는 것이 아니라 그 모델들이 서로 파라미터를 공유하고 있기 때문에 각각의 뉴런이 존재할 확률을 각각의 가중치에 곱해주기만 하면 되어 모델 여러개를 쓰는 것 보다 빠르다.
2. Dropout의 성질
2-1. Dropout의 목표
- 무작위로 dropout을 하면서 학습을 시키면 overfitting의 원인인 co-adaptation를 방지한다.
- co-adaptation 현상?
- 각각의 weight들이 서로 동조화 되는 현상
- 어느 unit이 잘못 학습한 것을 다른 unit이 보완해 줄 수 있는 형태로 학습하는 것.
- 각각의 unit이 독자적인 meaningful feature를 가지지 못하게 된다.
- Dropout을 사용하면 각각의 unit이 meaningful feature를 가지도록 학습되므로 generalization error(일반화 오차)가 낮아지는 효과를 보인다.
- 좀 더 선명한 feature(salient feature)를 얻을 수 있다.
2-2. Effect on sparsity
hidden 뉴런들의 활성도(activation)가 sparse해지는 경향이 생김. dropout률 0일 때(왼쪽) 보다 0.5(오른쪽)일 때 더 집중되는 효과가 생긴다.
- Dropout을 사용하면 sparse representation이 되도록(오른쪽) 모델이 학습된다.
- 즉, 일부 unit만 강한 activation이 발생하고, 나머지 unit은 activation이 발생하지 않도록 학습된다.
- 각 unit들의 mean activation도, dropout을 적용하면 값이 전체적으로 낮아진다.
3. Dropout의 특징
3-1. Dropout Rate
- rate가 높다? training할 때 적은 unit이 학습된다
- rate가 너무 낮으면 underfitting이 발생한다.
- rate가 너무 높으면, Training Error는 낮아지지만 Test Error가 높아지는 현상이 발생한다.
3-2. Data Set Size
- 논문에서는 MNIST classification 모델로 실험.
- 데이터 크기가 매우 작을 경우(~500개) : dropout이 오히려 error rate를 높이는 역효과를 낸다.
- 데이터 크기가 커질수록 dropout의 효과가 커지나(~10000개), ) 데이터가 너무 많아지면 다시 dropout의 효과가 적어진다.
3-4. Dropout의 단점
- 같은 구조를 가진 neural network보다 학습 시간이 2~3배 정도 증가하게 된다.
4. Dropout의 현재
그러나 지금은 normalization으로 대체
Reference
- paper: Dropout: A Simple Way to Prevent Neural Networks from Overfitting, Srivastava, JMLR, 2014
- https://luvimperfection.tistory.com/105
반응형
'Learning > Tuning' 카테고리의 다른 글
Regularization : L1, L2 regularization (0) | 2020.04.12 |
---|---|
Batch Normalization (0) | 2020.04.12 |
Regularization (0) | 2020.04.12 |
Hyperparameter (0) | 2020.04.12 |
Overfitting과 Underfitting 정의 및 해결 방법 (2) | 2020.04.12 |