danbibibi
article thumbnail
Published 2023. 5. 2. 22:17
Dropout AI

Dropout

  • 딥러닝에서 overfitting을 방지하는 regularization 기법 중 하나
  • 무작위로 선택한 일부 뉴런들을 무시 ( 해당 뉴런들의 출력을 0으로 만듦 )
  • 모델이 다양한 입력에 대해 다양한 방식으로 반응하도록 만들어주어 일반화 능력을 높이는 데 도움을 줄 수 있음
  • 모델을 여러 개를 만들지는 않지만, 훈련 과정에서 앙상블과 비슷한 효과를 냄
    • 서로 다른 학습데이터를 통해 모델을 학습시키거나 모델이 서로 다른 구조를 가지면 학습 성능을 개선할 수 있음
    • 그러나 하나의 네트워크를 훈련시키는 것도 어려운데 여러개의 네트워크를 훈련시키는 것은 매우 어려운 일임
    • 또한, 여러개의 네트워크를 훈련시켰더라도 사용시에 연산 시간이 소비되어 속도가 느려지는 문제가 발생할 수 있음
    • Dropout은 이 두 문제를 해결 가능!! 여러개의 모델을 만들지 않고 모델결합이 여러 형태를 가지게 함
    • 랜덤하게 일부뉴런이 동작하는 것을 생략하여 뉴런의 조합만큼 지수함수적으로 다양한 모델을 학습시키는 것과 같음
  • 모델 구조와 하이퍼파라미터를 잘 설정해주어야 함
    • 너무 많은 dropout 비율을 사용하면, 모델이 underfitting될 수 있고,
    • 너무 적은 dropout 비율을 사용하면, overfitting이 발생할 수 있음

ex) 50%의 dropout을 사용하는 경우, 학습 중에 무작위로 선택한 절반의 뉴런들을 무시

( * p : node를 얼만큼 활용 안할지! )
overfitting
학습 데이터를 지나치게 학습하여 학습데이터에서는 잘 동작하지만, 검증 데이터(테스트 데이터)에 대해서는 결과가 좋지 못한
bias와 variance
bias : 모델의 예측값과 실제 값 사이의 차이를 나타내는 오차의 크기
variance : 모델이 학습 데이터에 대해서 과적합(overfitting)되어 새로운 데이터에 대한 예측이 부정확할 가능성
→ 모델의 성능을 향상시키기 위해서는 bias와 variance를 모두 고려해야 함

* bias가 큰 경우, 더 복잡한 모델을 사용하거나 데이터를 더 많이 수집하여 모델의 복잡성을 높이는 등의 방법으로 성능을 개선할 수 있음
* variance가 큰 경우, 모델의 복잡성을 줄이거나 데이터를 더 많이 수집하여 일반화 능력을 개선하는 등의 방법으로 성능을 개선할 수 있습

* dropout을 적용할 경우, bias는 조금 있겠지만, variance를 낮춰주는 효과가 크기 때문에, 전체적으로 모델 성능이 향상된다!!

 

Dropout in Training

probability에 따라 random하게 node를 0으로 만듦

 결국 모든 node가 train 됨

 

Dropout in Testing

(1-p)를 곱해서 모든 node를 사용

(1-p)를 곱하는 이유
 train/test 시 output의 expectation을 같게 만들기 위해!

 

Dropout in PyTorch

** model.train()과 model.eval()을 꼭 선언해야 모델의 정확도를 높일 수 있음 !

torch.nn.Dropout(p=0.5, inplace=False) # p=0.5, dropout 사용

model.train() # 학습에서는 dropout 사용 (dropout=True)
for epoch in range(1, 10):

with torch.no_grad():
	model.eval() # 검증 및 테스트에서는 dropout 사용x (dropout=False)

'AI' 카테고리의 다른 글

BERT (Bidirectional Encoder Representations from Transformers)  (0) 2023.05.09
Transformer: Attention Is All You Need  (0) 2023.05.09
Optimizer  (0) 2023.05.09
Gradient Descent  (0) 2023.05.08
Pre-training, Transfer Learning, Fine-tuning  (0) 2023.04.30
profile

danbibibi

@danbibibi

꿈을 꾸는 시간은 멈춰 있는 것이 아냐 두려워하지 마 멈추지 마 푸른 꿈속으로