2012년 Hinton 교수가 제시한 규제(regularization) 알고리즘, Dropout이 등장한지 어느덧 10년이 넘었습니다. 10년이 넘는 시간동안 Dropout은 신경망 과적합(Overfitting) 문제 해결을 위한 도구로 현재까지 활발히 사용되고 있습니다.
최근 Facebook research의 논문, 'Dropout Reduces Underfitting', 에서 Dropout을 바라보는 새로운 관점을 제시했습니다. 바로 Dropout 기법이 '과대적합(Overfitting) 뿐만 아니라 과소적합(Underfitting) 문제에도 효과적이다'라는 것을 실험을 통해 증명한 것이죠. 본 아티클에서는 Dropout이 뭔지, 그리고 이 논문이 행한 연구들에 대해서 간단히 살펴보겠습니다.
Overfitting vs Underfitting
'Dropout Reduces Underfitting' 논문을 이해하기 위해서는, 먼저 과대적합(Overfitting)과 과소적합(Underfitting)에 대해 알아야 합니다.
과대적합은 모델이 훈련 데이터를 지나치게 학습하는 것을 의미합니다. 만약 머신러닝 모델이 훈련 데이터에 과대적합 됐다면, 훈련 데이터는 잘 처리하지만 처음 보는 데이터에 대해서는 낮은 성능을 보일 것입니다. 좋은 머신러닝 모델은 '일반화(Generalization)'을 잘하는 것'이라는 관점에서 보면 꼭 피해야 할 상황인 것이죠. 보통 모델의 크기에 비해 데이터가 작거나, 데이터를 너무 많이 학습했을 때 발생합니다. 전통적으로, Dropout이 과대적합을 해결하는 방법으로 주로 사용되어 왔습니다.
반대로 과소적합은 데이터를 충분히 학습하지 못했을 때를 의미합니다. 학습을 충분히 하지 못했거나, 모델은 작은 반면 데이터가 클 때 주로 발생합니다. 일반적으로 더 큰 모델로 학습하거나, 학습 시간을 늘리는 방식으로 과소적합 문제를 해결합니다.
Dropout이란?
Dropout은 네트워크의 일부를 작동하지 않도록 하는 규제 알고리즘입니다. 모델의 복잡도를 줄여서 일반화 성능을 올리는 것이죠. 일부가 작동하지 않기 때문에, 연산량 면에서도 이점이 있습니다.
어떤 부분(각 뉴런) 작동 여부는 확률값에 따라 랜덤으로 정해지기 때문에, 다양한 모델을 학습하는 것과 같은 효과를 내는 것이 독특한 특징입니다.
Dropout Reduces Underfitting
기존에는 Dropout을 모델의 복잡도 측면에서 바라보며 과대적합 문제에 집중했다면, 본 논문은 과소적합 문제를 중점적으로 본 것이 상당히 인상적입니다. 어떻게 이런 생각에 도달했을까요??
최근 거대 모델들이 점차 증가하는 추세에 발 맞춰, 데이터 셋의 크기도 점점 증가하고 있습니다. 기존에는 모델의 크기에 비해 데이터 셋의 크기가 작은 경우가 대다수였고, 이는 결국 과대적합의 문제로 이어졌습니다. 다만, 언젠가 모델의 크기에 비해 데이터 셋이 커지는 경우가 발생한다면 기존에 존재하는 모델로 거대 데이터 셋을 충분히 학습하지 못하는 상황이 올 것이고, 결과적으로 과소적합 문제를 필연적으로 직면할 수 밖에 없다는 것을 의미합니다.
본 논문에서 제시한 방법은 학습 초기에 Dropout 기법을 적용하는 것(Early Dropout)입니다. Early Dropout 방식은 SGD(Stochastic Gradient Descent)의 특징에서 아이디어를 얻었습니다. SGD는 전체 데이터 셋의 일부를 임의로 추출해서 미니 배치로 활용하는 방식인데요. 임의의 부분을 추출해서 사용하기 때문에, 학습 과정이 불안정하고 잘못된 방향으로 나아갈 때가 많습니다. Dropout은 위의 사진처럼 graident의 방향을 올바른 곳으로 조정해주는 역할을 함으로써, 기존보다 더 빠르게 목표에 수렴할 수 있도록 했습니다. Dropout이 gradient를 조정해주는 규제 함수의 역할을 하다니..과연 어떻게 이런 결과가 나올 수 있었던 것일까요?
가장 먼저 드는 궁금증은 'Dropout이 수렴 속도에 어떻게 영향을 주는가?'입니다. 위는 Gradient Norm(gradient의 크기) 그리고 Model distance(파라미터 공간에서 얼마나 움직였나)를 나타낸 그림인데요. Dropout 모델의 gradient 크기가 더 작지만, 오히려 파라미터 공간에서 더 많이 움직인 것 처럼 보입니다. 모순처럼 보이시나요?? 논문 저자는 이 원인이 Dropout이 gradient의 방향을 consistent하게 만들어주기 때문이라고 주장합니다.
예를 들어봅시다. 보폭이 넓은 사람과 보폭이 좁은 사람이 같은 목적지를 향한다고 가정해봅시다. 이 때 만약 목적지에 보폭이 좁은 사람이 먼저 도착했다면, 그 이유는 무엇일까요?? 가장 합리적이고 쉽게 추론할 수 있는 이유는 보폭이 넓은 사람이 방향을 잘못 잡았기 때문이라는 것입니다. 보폭이 좁은 사람은 보폭이 넓은 사람보다 처음부터 올바른 방향을 향해 나아갔고, 이는 결국 도착 시간의 차이를 만들어낸 것이죠.
여기까지 이해하셨다면 다음과 같은 궁금증이 생기실 것 같습니다. '그렇다면 좋은 방향은 어떻게 정하는가?'인데요. 먼저, Gradient Direction Variance(GDV)라는 Metric을 도입해서 실험을 진행합니다.
이후, Grdient Direction Error를 도입하는데요. SGD는 전체 데이터 셋을 모두 학습하기에는 시간, 계산량이 너무 많이 소요된다라는 한계점으로부터 등장했기 때문에, 최적의 SGD gradient는 전체 데이터 셋의 gradient와 비슷할수록 올바른 방향이다라고 추론할 수 있습니다.
결과적으로 다음과 같은 유의미한 성능 향상을 이뤄냈습니다.
Conclusions
지난 10년간 보지 못했던 Dropout의 새로운 모습을 발견한 아주 재미있는 논문인 것 같습니다. Dropout을 gradient 관점으로 해석한 것이 흥미롭네요! 역시 믿고 읽는 Hinton ㅎㅎ.. 실제 논문에는 과대적합을 해결하기 위한 Late Dropout 기법이나, 위에서 설명한 내용들에 대한 자세한 연구결과들이 나와 있으니 관심 있는 분들이라면 꼭 한 번 읽어보시는 것을 추천드립니다.
다음에 더 재미있고 흥미로운 아티클로 돌아오겠습니다! 감사합니다:)
'아티클' 카테고리의 다른 글
딥러닝의 정의(feat. 머신러닝) (0) | 2023.03.06 |
---|---|
The Forward-Forward Algorithm: 역전파의 시대는 갔다? (0) | 2023.03.02 |