ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Dropout 이란 무엇인가
    머신러닝 및 딥러닝 2021. 1. 16. 15:40

    Dropout은 신경망의 뉴런을 부분적으로 생략하여 모델의 과적합(overfitting)을 해결해주기 위한 방법중 하나이다. 

    과적합 예시

    과적합이란 training dataset으로 학습한 모델의 정확도가 x 축을 layer 수라고 할때 layer를 쌓으면 쌓을 수록 training에 대하여 loss 값은 줄어 들지만 오히려 test set에 대해서는 loss 값이 올라가는것을 예시로 들 수 있을 것이다.

     

    다시 Dropout 으로 돌아가자면 전체 weight를 계산에 참여시키는 것이 아닐 layer에 포함된 weight 중에서 일부만 참여시키는 것이다. 

    여기서 일부만 참여시키는 것이라는 나머지를 제외 시키라는 말이 아니라 나머지 뉴런을 0으로 만드는 것을 의미한다. 

    딱봐도 잘 안될거 같은데 직관적인 설명이 이를 경감시켜줄것이다. 

     

    직관적 설명

    예를 들어 전문가가 상당히 많다고 해보자. 사진을 보고 이것이 고양이인지 강아지인지 판별하는 것이다. 이 때 전문가(뉴런)들은 귀만 판단하는 전문가, 꼬리만 판단하는 전문가 등등 너무 많은 weight들이 있다면 이들 중 일부만 사용하여도 충분한 결과를 뽑아 낼 수 있을것이다. 

    오히려 이들중 충분할 만큼의 전문가만 선출해서 반복적으로 결과를 낸다면 오히려 균형잡힌 결과를 만들 수 있다. 

     

    더 설명해보자면 Dropout을 사용함으로써 더 작은 신경망을 사용하는 것이 정규화의 효과를 주는 것처럼 보인다. 

     

    직관을 이용한 설명

    여기서 보라색으로 색칠된 뉴런을 보면 해당 뉴런은 하나의 입력에 의존할 수가 없다. 왜냐하면 입력이 Dropout을 통하여 자꾸 바뀌기 때문이다.

    따라서 특정 입력에 유난히 큰 가중치를 부여하기 힘든 상황이다. 따라서 그림에서는 4개의 입력 각각에 가중치를 분산시키게 된다. 이렇게 되면 Dropout은 가중치가 분산되어 있기 때문에 L2 정규화처럼 과대적합을 막는데 도움이 되게 된다. (물론 L2 정규화가 다른 가중치에 적용된다는 것과 서로 다른 크기의 입력에 더 잘 적응한다는 점은 Dropout 과 다르다.)

    우리나라 속담 중 "사공이 많으면 배가 산으로 간다" 와 일맥상통한 표현이다. 

     

    또한 Dropout은 앙상블 기법과 상당히 유사하다고 알려져 있다. 앙상블 기법에서는 서로 다른 모델들을 학습해서 개별 모델들에서 나온 출력등을 투표등을 통해서 최종 결과물을 산출 하는 기법인데 Dropout도 학습시 뉴런을 무작위로 학습해 매번 모델들을 학습시킨다는 측면에서 앙상블 기법과 유사하다고 알려져있다. 

    다르게 keep_prob을 설정할 수 있다.

     

    Dropout은 training 때만 사용한다. 왜냐하면 Test 단계에서 Dropout을 사용하여 일부 뉴런을 끄고 또 키는 것을 하면 같은 입력을 넣었을 때도 다른 결과를 배출할 수 있다. 또한 층마다 몇개의 뉴런을 살릴건지 결정하는 Keep_prob을 바꾸는 것도 가능하다

     

    정리하자면 다른 층보다 과대적합의 우려가 더 큰 층에 대해서는 다른 층 보다 더 낮은 값의 keep_prob을 설정할 수 있다. 심지어 입력층에서도 설정할 수 있는데 권장되지는 않는다. 단점은 교차검증을 위해 더 많은 하이퍼파라미터가 생긴다는 점이다. 또 다른 대안으로는 어떤 층에는 Dropout을 적용하고 어떤 층에는 적용하지 않아서 매개변수를 Dropout을 적용한 층에 대한 keep_prob 하나만 갖는 것이다 . 

     

     

    중요한것은 Dropout은 사전에 말했듯이 과적합을 막기 위한 정규화 기법이다. 따라서 신경망이 과대적합 문제가 생기 전까지는 Dropout을 사용하지 않은 것을 권장한다. 하지만 Computer Vision 같은 경우에는 충분한 데이터가 부족하기 때문에  거의 대부분에서 과대적합이 일어나기 때문에 Dropout을 사용한다.  

     

    단점

     Dropout은 비용함수 J가 제대로 하강하고 있는지 확인하는게 어려워 진다.

    왜냐하면 최적화하는 비용함수는 잘 정의 되지 않아 계산하기 어렵다. 

    비용함수란 ?

    • 비용함수(cost function), 손실함수(loss function) 또는 목적함수(objective function)이라고 부른다.

    비용함수는 최적화 이론에 기반을 둔 함수이며, 신경망의 지도학습에 사용됩니다. 지도학습은 오차가 최소인 가중치를 구하는 것을 목적으로 하며, 여기서 신경망의 오차를 측정하는 척도가 바로 비용함수입니다. 신경망의 오차가 크면 비용함수의 값도 크고, 신경망의 오차가 작으면 비용함수도 작은 값을 갖는다..  비용함수는 신경망의 오차에 비례한다.

    신경망 학습에서 비용함수 그래프의 최종 출력은 손실이며, 그 값은 스칼라이다.

     

     

    참고: 

    1. https://www.youtube.com/watch?v=ARq74QuavAo 

    2. CS231N

    댓글