AI/Deep Learning

Dropout (드롭아웃)

sonzwon 2022. 11. 11. 13:39

Dropout이란?

학습이 진행되는 동안 임의로 미리 정의된 확률대로 신경망의 일부 뉴런을 제외(drop)합니다.

  • test시에는 dropout이 작동되지 않고 모든 유닛이 활성화되어 출력되며, 출력값을 드롭아웃 비율만큼 줄여줍니다. (드롭아웃 비율은 일반적으로 0.2~0.5)
  • dropout시 각각의 layer는 베르누이 분포(Bernoulli Distribution)를 따르는 확률변수 r에 따라 그 뉴런의 결과 값을 덮어씌웁니다. ( 정해진 확률 값에 따라서 어떤 뉴런은 켜지고 끄는 개념)

베르누이 분포

 

dropout이 잘되는 이유?

  • 드롭아웃이 일부 뉴런들을 제외하고 학습함에 따라 결과적으로 'weight'를 공유하는 수많은 네트워크 조합이 생기기 때문입니다.
    • n개의 뉴런으로 이루어진 네트워크에서 2^n개의 조합이 생깁니다
  • 많은 ANN을 한번의 학습으로부터 Bagging하는 효과와 비슷합니다
    • overfitting 방지효과가 있습니다.

[ Dropout vs. Bagging ]

Dropout Bagging
모든 모델이 파라미터를 공유 각 모델이 파라미터를 공유하지 않음
(병렬적으로 존재해 따로 학습될 수 있기 떄문)
각각의 모델이 수렴하도록 학습되지 않음 각 모델이 학습됨에 따라 하나의 모델로 수렴함
지수계수로 증가(2^n)하는 많은 모델의 평균을 내는 것이기 때문에 산술 평균 계산이 어려움
( 산술평균보다 기하평균을 추론하여 근사함)
모델 결과값의 산술평균을 취할 수 있음

 

dropout의 장점

  • 제외하지 않은 유닛들을 집중적으로 학습하게 되면서 과대적합을 방지합니다.
  • 다른 정규화 방법보다 성능이 좋습니다
    • 대부분의 데이터 및 모델에서 성능을 높이는 것으로 나타났습니다.
  • 다른 regularizer에 비해 모델과 학습과정에서의 종류를 제한하지 않습니다 (SGD로 학습하는 것을 거의 그대로 학습시키면 됨)
  • feature들끼리 상호 적응 (co-adaptation)하는 것을 막아줍니다
    • co-adaptation : 어떤 뉴런이 다른 특정 뉴런에 의존적으로 변하는 것. 상호적응 문제는, 신경망의 학습 중, 어느 시점에서 같은 층의 두 개 이상의 노드의 입력 및 출력 연결강도가 같아지면, 아무리 학습이 진행되어도 그 노드들은 같은 일을 수행하게 되어 불필요한 중복이 생기는 문제를 말한다. 즉 연결강도들이 학습을 통해 업데이트 되더라도 이들은 계속해서 서로 같은 입출력 연결 강도들을 유지하게 되고 이는 결국 하나의 노드로 작동하는 것으로써, 이후 어떠한 학습을 통해서도 이들은 다른 값으로 나눠질 수 없고 상호 적응하는 노드들에는 낭비가 발생하는 것이다. 결국 이것은 컴퓨팅 파워와 메모리의 낭비로 이어진다.드랍아웃은 이러한 상호적응 문제를 해소한다. , 드랍아웃이 임의로 노드들을 생략할 때 이러한 상호 적응 중인 노드들 중 일부는 생략하고 일부는 생략하지 않게 되므로 학습 중 상호 적응이 발생한 노드들이 분리될 수 있어서 상호 적응 문제를 회피할 수 있게 된다.(출처: https://hyeonnii.tistory.com/254)
    • 즉, dropout은 뉴런들이 다른 뉴런이 그 자리에 없어도 정상작동하게 해줍니다
  • 네트워크에 sparse한 활성화를 시켜줍니다.
  • 컴퓨팅 계산이 작습니다 ~ O(N)

 

Dropout rate

적절히 실험을 돌리며 최적의 test error을 찾습니다.

  • p = 0.0에 가까울 때, 너무 과한 dropout
  • p = 1.0에 가까울 때, No dropout (overfitting)

 

Drop Connect

dropout은 노드를 드롭시키는 것이고, drop connect는 가중치(weight)를 드롭시키는 것입니다. 

  • dropout보다 나을 때가 있다.
  • 하지만, 항상 결과를 보장하지 않으며, 느리고(O(W)), 튜닝하기가 상대적으로 어렵습니다.

 

+)

Dropout등을 여러가지 노이즈를 넣는 식으로 확장 가능하며 많은 파생 연구들이 존재합니다. 또한 Dropout rate도 학습 파라미터로 만드는 연구도 있습니다.