본문 바로가기

AI/이론

[ML] dropout

오버피팅 다시 살펴보기

샘플들 보다 더 많은 특성(feature)들이 주어지면, 선형 모델은 오버핏(overfit) 될 수 있습니다. 반면에 특성(feature) 수 보다 샘플이 더 많은 경우에는 선형 모델은 일반적으로 오버핏(overfit) 되지 않습니다. 아쉽게도, 일반화를 잘하기 위해서는 그에 따른 비용이 들어갑니다. 매 특성(feature)에 대해서, 선형 모델은 양수 또는 음수의 가중치를 할당 해야합니다. 선형 모델은 특성(feature)들 사이의 미묘한 상호작용을 설명하지 못 합니다. 좀 더 공식적인 용어로 이야기하면, 편향-분산 트레이드오프(bias-variance tradeoff)로 논의되는 현상을 볼 것입니다. 선형 모델은 높은 편향(bias) (표현할 수 있는 함수의 개수가 적습니다)를 보이나, 분산(variance)은 낮습니다 (다른 랜덤 샘플 데이터에 대해서 비슷한 결과를 줍니다)

 

드롭아웃(dropout) 실제 적용하기

5개의 은닉 유닛(hidden unit)을 갖는 한개의 은닉층을 사용하는 다층 퍼셉트론(multilayer perceptron) 의 예를 다시 들어보겠습니다. 이 네트워크의 아키텍처는 다음과 같이 표현됩니다.

 

 

은닉층에 드롭아웃(dropout)을 확률 pp 로 적용하는 경우, 은닉 유닛들을 pp 확률로 제거하는 것이 됩니다. 이유는, 그 확률을 이용해서 출력을 0으로 설정하기 때문입니다. 이를 적용한 네트워크는 아래 그림과 같습니다. 여기서 h2h2  h5h5 가 제거되었습니다. 결과적으로 yy 를 계산할 때, h2h2  h5h5 는 사용되지 않게 되고, 역전파(backprop)을 수행할 때 이 것들에 대한 그래디언트(gradient)들도 적용되지 않습니다. 이렇게 해서 출력층으ㄹ 계산할 때 h1,,h5h1,…,h5 중 어느 하나에 전적으로 의존되지 않게 합니다. 이것이 오버피팅(overfitting) 문제를 해결하는 정규화(regularization) 목적을 위해서 필요한 것입니다. 테스트 시에는, 더 확실한 결과를 얻기 위해서 드롭아웃(dropout)을 사용하지 않는 것이 일반적입니다.

 

 

 

요약

 

  • 차원 수를 조절하고 가중치 벡터(weight vector)의 크기를 제어하는 것 이외에, 드롭아웃(dropout)은 오버피팅(overfitting)을 해결하는 또 다른 방법입니다. 이 세가지는 종종 함께 사용됩니다.
  • 드롭아웃(dropout)은 h 를 같은 기대값 h 를 갖는 확률 변수 h′ 로 드롭아웃(dropout) 확률 p 만큼 바꾸는 것입니다.
  • 드롭아웃(dropout)은 학습에만 적용합니다.

 

 

3.13. 드롭아웃(dropout) — Dive into Deep Learning documentation

 

ko.d2l.ai

 


이러한 overfitting은 우리가 더 깊게 만들수록 일어날 확률이 커집니다.

왜냐하면 더 깊어질수록 더 많은 변수가 생기기 때문입니다.

우리가 원래 만들었던 layer를 dropout함수에 넣어서, 몇 퍼센트의 노드가 일하게 할 것인지 함께 적어줍니다.

위의 코드를 보면 Train에서는 0.7, 즉 70%의 노드들이 랜덤하게 훈련되게 하였습니다.

그리고 실수하면 안되는 점이 Evaluation 과정에서는 dropout_rate를 1로 함으로써 100%의 노드들을 참가시키도록 해야 합니다.



 

딥러닝(DeepLearning) #6_ Dropout and Ensemble

안녕하세요. 문범우입니다. 이번 포스팅에서는 dropout과 model ensemble에 대해서 살펴보도록 하겠습니다. * 해당 포스트의 모든 내용은 김성훈 교수님의 '모두를 위한 딥러닝'을 바탕으로 제작되었

doorbw.tistory.com

 


네트워크를 학습하는 동안 랜덤하게 일부뉴런이 동작하는 것을 생략해버리면 뉴런의 조합만큼 지수함수적으로 다양한 모델을 학습시키는 것과 같다. n개의 유닛이 있다고 가정한다면 2^n개의 모델이 생성될 것이다.

 

Dropout의 사용방법은 아래 그림처럼 일부 뉴런이 동작하지 않도록 하는 것이다. 각 뉴런이 존재할 확률 p를 가중치 w와 곱해주는 형태가 되어 존재할 확률이 0인 경우 동작하지 않게 된다. 

 

 

 

Dropout

Dropout Dropout은 딥러닝 학습에 있어서의 문제중 하나인 Overfitting을 해소하기 위한 방법이다. 요약하자면 hidden layer의 일부 유닛이 동작하지 않게 하여 overfitting 되는 것을 막는 방법이다. 1. Overfitt.

mongxmongx2.tistory.com