Posts List

[머신러닝/딥러닝] 7. Dropout

Dropout

딥러닝은 파라미터가 매우 많은 모델이다. 파라미터가 많다는 것은 모델의 복잡도가 높다는 것을 의미하는데, 앞서 모델의 복잡도가 너무 높으면 overfitting의 경향이 발견된다고 언급했었다. 

이미 1개층을 가진 신경망도 수십개의 weight를 갖는데, 딥러닝은 수만개를 가볍게 넘긴다. 그러면 우리는 이제 overfitting을 걱정할 수 밖에 없는데, overfitting을 방지하기 위한 행위는 당연히 모델을 '간소하게' 정규화(Regularization) 하는 것이다.

Dropout은 딥러닝의 대표적인 모델을 제약(regularize)하는 방법이며, 딥러닝의 대가 Geoffrey Hinton이 2012년에 제안하였다. dropout의 단어에서 유추할 수 있듯 뭔가를 버리는 행위가 딥러닝 내부에서 일어나는데, 그럼 뭘 버리는지 한번 알아보도록 하자.

Overfitting in Deep Nets

딥러닝에서도 regression 모델과 마찬가지로 overfitting을 하기 위해서 L1 혹은 L2 regularization(LASSO, Ridge)을 수행한다. 즉, 열심히 일하지 않는 노드는 죽여버리는 기능이 있다.

그런데 L1, L2로는 찾을 수 없는 노드가 있다. 바로 열심히 일하는 줄 알았는데 알고보니 2개의 노드끼리만 협력하고 있고 실제 loss에는 영향을 미치지 않는 경우이다. (신경망 구조의 본질적 이슈라고 한다.)

이런 co-adaptation을 해결하기 위한 regularization 방법이 바로 dropout이다.

Dropout

dropout의 개념은 위와같이 특정 노드를 없는 것으로 간주하는 것인데, 여기에 랜덤 확률이 작용한다.

Dropout의 정의는 위와 같이 거창하지만 원리는 간단하다.

  • z는 0 혹은 1을 가질 수 있는 Bernoulli distribution random variable 벡터다.
  • 그래서 확률적으로 h = [node1, node2, node3...] 와 곱해지면서
    h = [node1, 0, node3, ...]과 같이 hidden layer안에 있는 몇개의 노드를 날려버린다.

한마디로, 무작위로 노드를 삭제시키는 것이 dropout이다.
※ 물론 얼마나 높은 확률로 삭제시킬지는 하이퍼파라미터로 지정해야 한다. (일반적으로 0.5)

dropout은 1 epoch마다 진행되기 때문에, 1 epoch마다 학습되는 노드 또한 다르다. 
어찌보면 서로다른 N개의 신경망을 학습하게 되는 것인데, 최종적으로는 weighted sum으로 concat된다. 그래서 dropout을 앙상블(ensemble) 기법이라 표현하기도 한다.

※ 실제로 앙상블 기법과 같이 여러 모델을 학습한 개념이기 때문에 dropout 후 성능이 높아지는 것이 일반적이다.

결국 dropout은 1 epoch 마다 신경망의 구조를 변경하면서 여러 모델을 학습하는 ensemble training 기법이다. 그럼 예측은 어떻게 할까?

앞서 배웠던 Bagging은 다수결 투표를 통해 결과를 확정했었다. 반면 Dropout 된 모델은 각각의 모델의 예측값을 뽑아내지 않는다.

위 그림과 같이 Dropout training을 할때는 p라는 베르누이 확률을 갖고 학습이 된다. 이때 p를 잘 기억해뒀다가 Test할 때는 그 확률을 weight에 곱해서 다음 노드로 전파해주는 방식으로 예측한다.

Dropout의 효과

앞에서도 많이 언급했지만 Dropout의 효과를 정리하면 다음과 같다.

1. 노드 간 동조현상(co-adaptation) 을 막을 수 있다.
 : 노드를 무작위로 생략함으로써 신경망 구조의 고질적 이슈인 동조현상을 막을 수 있다.

2. Overfitting을 막을 수 있다.
 : 마찬가지로 노드를 생략함으로써 모델을 간소화시키는 효과가 있다.

3. 앙상블 효과를 얻을 수 있다.
 : 매번 다른 형태의 노드 조합으로 학습하기 때문에 앙상블 효과를 얻어 성능을 향상시킬 수 있다.

But ! 곧 소개될 batch normalization technique가 소개되면서
CNN에서는 굳이 dropout기법을 사용하지 않는다. 다음 챕터에서 알아보도록 하자.

댓글 쓰기

0 댓글