본문 바로가기
  • Deep dive into Learning
  • Deep dive into Optimization
  • Deep dive into Deep Learning
Deep dive into Deep learning

Deep dive into Deep learning part 18 : Regularization (3) - Updated

by Sapiens_Nam 2023. 5. 11.

 

모바일 앱 환경에서는 latex 수식이 깨져 나타나므로, 가급적 웹 환경에서 봐주시길 바랍니다.

 

 

Dropout은 2014년도 발표된 기술로서 10년 가까이 지난 지금도 여전히 유용하게 쓰이는 기술이다.

 

Dropout은 머신러닝의 Ensemble 기법과 유사한 의도를 가지고 있다. Ensemble 기법은 같은 Dataset으로 여러 개의 Model을 학습시킨 후, 이 학습된 모델을 하나의 모델로 합치는 방법을 의미한다.

Dropout은 여러 개의 모델을 학습시키지 않고, 하나의 모델을 마치 여러 개의 학습된 'Sub' networks가 앙상블 기법으로 조합을 이룬 것과 같이 될 수 있도록 만드는 기법이다.

 

위 그림을 보면 직관적으로 이해할 수 있듯이, 원래의 Neural network에서 Train을 진행할 때, 매 iteration마다 무작위적으로 일부 노드들을 제거하는 것이 Dropout이다.

그러면 매 iteration (step)마다 서로 다른 노드들로 이뤄진 (Sub) Neural network들에 대한 학습이 진행되고 최종적으로 결국 여러 개의 작은 모델들이 합쳐진 (Ensemble) 효과를 가져오게 된다.

이는 결국 각 Node가 'activate'될지, 'Non-activate'될지 random하게 선택하는 것이며, 이때 'Non-activate'될 확률 ($p$)가 Dropout의 Hyper-parameter이고 $p = 0.5$일때 효과가 가장 큼이 알려져 있다.

 

Train 과정에서는 이렇게 진행되지만, Inference (Test) 과정에서는 모든 Node를 그대로 놔둔, 즉 원래의 Neural network 그대로 Test를 진행한다. 하지만 약간 이 과정에서 문제가 생길 수 있다. 

예를 들어, 매 hidden layer에 1000개의 노드가 있고, $30%$의 노드를 학습 시에 Dropout했다고 가정해보자. 그러면 한 Hidden layer는 이전 layer에서 700개의 output을 입력으로 받을 것이다. 

그런데 Test를 진행할 때 이전 layer에서 갑자기 1000개의 output을 입력으로 받는다면 값의 크기에 문제가 생겨버린다.

이를 위해 parameter rescale을 진행해주는데 각각의 parameter에 $0.7$을 곱해주는 방식으로 하는 것이 가장 일반적이다.

 

 

다음 글에서는 Batch normalization, layer normalization에 대해서 이야기하고 Regularization에 대한 설명을 마치도록 하겠다.

728x90

댓글