드롭아웃(dropout)은 「학습 중 무작위로 일부 뉴런의 출력을 0으로 만드는」 단순하지만 매우 효과적인 정규화 기법입니다.
2012년 제프리 힌튼 그룹이 제안했으며, 알렉스넷의 성공에도 큰 역할을 했습니다.
직관적으로 풀자면 드롭아웃은 「매 스텝마다 신경망의 일부 뉴런을 무작위로 휴가 보내는 일」과 같습니다.
휴가 비율이 0.5라면 뉴런의 절반이 무작위로 작동하지 않게 됩니다.
모델은 「특정 뉴런 하나에 너무 의존하면 그 뉴런이 휴가 갔을 때 무너지므로」 자연스럽게 여러 뉴런에 책임을 분산하는 방향으로 학습됩니다.
또 다른 비유는 「매번 다른 학생들로 구성된 팀이 같은 시험을 보는」 모습입니다.
시험 때마다 일부 학생이 빠지므로 모든 학생이 어느 정도 균등하게 실력을 갖춰야 합니다.
결과적으로 학습된 신경망은 마치 「수많은 작은 신경망의 앙상블」처럼 동작합니다.
추론 단계에서는 드롭아웃을 끕니다.
모든 뉴런을 다 사용하되, 학습 때 출력의 평균이 절반이었으므로 출력값에 0.5(드롭아웃 확률)를 곱해 보정합니다(또는 학습 중에 1/(1-p)로 보정).
드롭아웃 비율은 보통 0.2~0.5 사이를 씁니다.
너무 높으면(0.7+) 모델이 학습을 거의 못 하고, 너무 낮으면(0.05) 정규화 효과가 미미합니다.
CNN에서는 0.2~0.3, 완전연결층에서는 0.5가 흔한 출발점입니다.
한 줄 요약
드롭아웃은 학습 중 무작위로 뉴런을 끄는 단순한 정규화로, 모델이 특정 뉴런에 의존하지 않게 만들어 과적합을 강력히 줄여 줍니다.
더 알아볼 것
- DropConnect — 가중치를 끄는 변형
- Spatial Dropout — CNN 전용 변형
- Monte Carlo Dropout — 추론 시 불확실성 측정에 활용