1. 개요[편집]
| 드롭아웃 Dropout | |
|---|---|
| 제안 | Hinton 외 (2012, arXiv) → Srivastava 외 (2014, JMLR) |
| 하는 일 | 학습 중 유닛을 확률적으로 0으로 만든다 |
| 해석 | $2^n$ 개 얇은 망의 암묵적 앙상블 |
| 추론 시 | 항등 — 스케일은 학습 쪽에서 미리 처리(inverted) |
| 전형적 비율 | 은닉층 0.5, 입력층 0.1~0.2, 트랜스포머 0.1 |
| 궁합 나쁨 | 배치 정규화 — 분산 이동 |
| 현재 위치 | 대규모 사전학습에선 0, 미세조정·소규모 데이터에선 생존 |
드롭아웃(dropout)은 학습의 매 순전파마다 신경망의 유닛 일부를 확률적으로 골라 출력을 0으로 만들고, 추론 시에는 전체 망을 그대로 쓰되 기댓값이 맞도록 스케일을 보정하는 정규화 기법이다. 힌턴 연구실이 2012년 arXiv 노트로 먼저 풀었고, 스리바스타바 외(2014)의 JMLR 논문이 정식판이다. 발상 자체는 어이없을 만큼 단순하다 — 뉴런을 랜덤으로 꺼 버린다. 그런데 2012~2016년 사이 이미지·음성 인식의 성능표를 갈아치운 요인 목록에 이게 늘 들어가 있었다.
핵심 논리는 공적응(co-adaptation) 방지다. 유닛 하나가 “옆의 세 유닛이 이렇게 켜져 있을 때만 의미 있는 값”을 학습하면, 그 조합은 학습 데이터에만 존재하는 우연일 가능성이 높다. 옆 유닛이 언제든 사라질 수 있으면 각 유닛은 혼자서도 쓸모 있는 특징을 만들어야 한다. 논문의 비유가 유명한데, 유성생식이 왜 진화적으로 우세한가 — 유전자가 특정 조합에 의존하지 않고 개별적으로 유용해지도록 강제되기 때문이라는 이야기다.1
이 문서는 계산 규칙, 앙상블 해석, 배치 정규화와의 유명한 충돌, 변종, 불확실성 추정 용법, 그리고 트랜스포머 시대에 이게 어디로 갔는지를 다룬다. 신경망 일반은 심층 학습, 기울기 계산은 역전파 참고.
2. 무엇을 계산하는가[편집]
층 출력 에 대해, 탈락 확률 로
를 계산하고 를 다음 층에 넘긴다. 추론 시에는 아무것도 하지 않는다(). 이 형태가 inverted dropout이며 오늘날 모든 프레임워크의 기본이다.
원 논문은 반대로 했다 — 학습 중엔 스케일 없이 그냥 끄고, 추론 시에 가중치를 배 했다. 두 방식은 수학적으로 같지만 실무 차이가 크다. inverted 쪽은 추론 코드에 드롭아웃의 흔적이 전혀 남지 않는다. 를 바꿔도, 층을 떼어내도 배포 그래프가 그대로다. 반대 방식은 배포 시 가중치를 손대야 하고, 그걸 빼먹으면 출력이 조용히 배 어긋난다.
의 정의가 라이브러리마다 뒤집혀 있는 것도 알아 둬야 한다. 스리바스타바 논문의 는 유지 확률이고, PyTorch·Keras의 p/rate 는 탈락 확률이다. 논문의 "" 와 코드의 “p=0.5” 가 우연히 같은 값이라 지금까지 사고가 덜 났을 뿐, 이라고 적힌 문헌을 읽을 땐 어느 쪽인지 반드시 확인해야 한다.2
역전파는 자명하다. 마스크 은 순전파에서 뽑아 저장해 두고, 역방향에서 같은 마스크를 같은 스케일로 곱한다. 즉 꺼진 유닛에는 기울기도 안 간다. 마스크를 저장해야 한다는 이 사실이 나중에 그래디언트 체크포인팅에서 재계산 함정으로 되돌아온다.
3. 왜 되는가 — 앙상블과 적응적 벌점[편집]
유닛이 개면 가능한 마스크는 가지다. 드롭아웃 학습은 가중치를 공유하는 개의 얇은 신경망을 매 미니배치마다 하나씩 뽑아 한 스텝씩 학습시키는 것으로 읽을 수 있다. 제대로 앙상블하려면 추론 시 개 망의 예측을 평균해야 하는데, 그건 당연히 불가능하다.
여기서 가중치 스케일링 근사가 등장한다. 전체 망을 한 번만 돌리되 각 유닛의 출력이 학습 시 기댓값과 맞도록 스케일을 맞추면, 앙상블 평균을 한 번의 순전파로 흉내낼 수 있다. 이게 근사가 아니라 정확한 경우도 있다 — 은닉층 없이 소프트맥스만 있는 모형에서는 스케일링 결과가 개 부분망 예측의 정규화된 기하평균과 정확히 일치한다(발디·사도스키 2013, 스리바스타바 외 §7). 깊은 망에서는 물론 근사지만, 몬테카를로로 수백 번 샘플링해 평균 낸 것과 실측 성능이 거의 같다는 것이 논문의 실험 결과다.
또 하나의 해석은 적응적 정규화다. 웨이거·왕·리앙(2013)은 일반화선형모형에서 드롭아웃 목적함수를 2차까지 전개하면, 특징을 피셔 정보의 역스케일로 정규화한 뒤의 가중치 감쇠와 일차 근사에서 일치함을 보였다. 즉 드롭아웃은 모든 방향에 같은 벌점을 주는 티호노프 정규화와 달리, 데이터가 그 방향을 얼마나 잘 결정하는지에 따라 벌점을 조절한다. 희귀하지만 유용한 특징이 덜 눌리는 이유가 여기 있다.
실무 관찰 몇 가지. 드롭아웃을 켜면 유효 용량이 줄기 때문에 층 폭을 배로 키우는 것이 논문의 권고다. 그리고 기울기에 마스크 잡음이 얹히므로 수렴이 2~3배 느려진다 — 정규화의 대가는 언제나 시간이다. 가중치 감쇠나 조기 종료와 달리 드롭아웃은 손실 함수를 확률변수로 만든다는 점도 기억할 것. 학습 손실 곡선이 지저분한 게 정상이다.
4. 배치 정규화와의 불화[편집]
“드롭아웃 + 배치 정규화를 같이 넣었더니 성능이 떨어졌다”는 제보는 딥러닝 포럼의 고전이다. 리·천·후·양(2019)이 이걸 분산 이동(variance shift)으로 정리했다.
드롭아웃은 학습과 추론에서 출력의 분산이 다르다. inverted dropout에서 가 고정일 때 학습 중 출력의 분산은 이고, 추론 시에는 0이다. 평균은 양쪽 다 로 맞지만 2차 모멘트가 안 맞는다. 문제는 그 뒤에 BN이 있을 때다. BN의 이동평균은 드롭아웃이 켜진 상태의 분산으로 누적됐는데, 추론 시엔 드롭아웃이 꺼져 실제 입력 분산이 그보다 작다. 결과적으로 BN이 잘못된 로 나누고, 그 오차가 층을 지나며 증폭된다. 논문은 이걸 넣고 빼는 것만으로 여러 CIFAR 모형에서 수 %p의 정확도 차이를 재현했다.
처방은 세 가지다.
- 드롭아웃을 모든 BN 층 뒤로 보낸다. 보통 분류기 직전 한 곳만 남긴다. ResNet·Inception 계열이 실제로 이렇게 생겼다.
- 분산이 이동하지 않는 변종을 쓴다. 가우시안 드롭아웃(마스크 대신 평균 1의 곱셈 잡음)은 를 작게 잡으면 이동이 작아진다.
- 그냥 드롭아웃을 뺀다. BN 논문 자체가 “BN이 정규화 효과를 내므로 드롭아웃을 제거하거나 줄여도 된다”고 주장했고, 이후 CNN 백본들이 대부분 그 길을 갔다.
층 정규화에는 이 문제가 없다. 배치 통계를 이동평균으로 들고 다니지 않으니 학습/추론이 같은 함수이고, 드롭아웃이 만드는 분산 변화도 그 자리에서 정규화되어 넘어간다. 트랜스포머가 드롭아웃과 정규화를 동시에 쓰면서 아무 사고가 없는 이유.
5. 변종 지형도[편집]
| 변종 | 무엇을 끄는가 | 주 무대 |
|---|---|---|
| 표준 드롭아웃 | 활성값 원소 | 완전연결층, 트랜스포머 |
| DropConnect | 가중치 원소 | 완전연결층 (Wan 외 2013) |
| 공간 드롭아웃 | 특징맵 채널 전체 | CNN (Tompson 외 2015) |
| DropBlock | 특징맵의 연속 사각 영역 | CNN 검출·분류 (Ghiasi 외 2018) |
| DropPath / 확률적 깊이 | 잔차 분기 전체 | ResNet·ViT (Huang 외 2016) |
| 변분 드롭아웃 | 시점 간 같은 마스크 | RNN (Gal & Ghahramani 2016) |
여기서 두 개만 짚자.
공간 드롭아웃이 필요한 이유는 CNN에서 인접 픽셀의 활성값이 강하게 상관돼 있기 때문이다. 특징맵의 픽셀을 독립적으로 끄면 옆 픽셀이 거의 같은 정보를 갖고 있어 정규화 효과가 거의 없다. 그래서 채널 단위로 통째로 끈다. 합성곱 신경망에서 원소 단위 드롭아웃이 별 효과 없다는 경험칙의 정체가 이것.
DropPath(확률적 깊이) 는 잔차 연결이 있어야 성립한다. 블록의 잔차 분기 를 통째로 꺼도 항등 경로 가 남아 신호가 끊기지 않기 때문이다. 황 외(2016)는 이걸로 1202층 ResNet을 학습시켰고, 부수 효과로 학습 시간까지 줄였다(꺼진 블록은 계산도 안 하니까). 오늘날 ViT·ConvNeXt 계열의 주력 정규화는 드롭아웃이 아니라 이쪽이다. 깊이에 따라 탈락 확률을 선형으로 키우는 스케줄이 국룰.
6. 몬테카를로 드롭아웃[편집]
갈·가라마니(2016)는 드롭아웃이 켜진 망의 학습이 깊은 가우스 과정의 변분 근사로 볼 수 있음을 보였다. 실용적 귀결은 한 줄이다 — 추론 시에도 드롭아웃을 켜 두고 번 돌린 뒤 예측의 평균과 분산을 쓴다. 코드 한 줄(model.train() 유지)로 예측 불확실성이 나오니 불확실성 정량화가 필요한 의료·자율주행 쪽에서 폭발적으로 인용됐다.
싸다는 게 유일한 장점은 아니지만, 한계는 분명히 알고 써야 한다.
- 사후분포의 폭이 로 고정된다. 근사 사후분포는 가 정하는 이산 혼합분포라, 데이터를 아무리 더 줘도 예측 분산이 그에 비례해 줄지 않는다. 오스밴드 외(2016)의 비판이 이 지점이며, 를 학습하는 Concrete dropout(갈 2017)이 그 대응이다.
- 보정이 안 맞는 경우가 흔하다. 오바디아 외(2019)의 대규모 비교에서 MC 드롭아웃은 분포 이동 하에서 심층 앙상블(락슈미나라야난 외 2017)보다 일관되게 나빴다. 앙상블이 여전히 강한 기준선이다.
- 번 순전파해야 한다. 이 보통이라 추론 비용이 그만큼 곱해진다. 드롭아웃을 안 쓰는 구조(요즘 LLM)에는 아예 적용할 수도 없다.
- 어느 층에 드롭아웃이 있느냐가 결과를 좌우한다. 마지막 층에만 있으면 사실상 마지막 층 가중치의 불확실성만 재는 셈이다. 베이지안 신경망의 정직한 근사라기보다 싸고 그럭저럭 쓸 만한 대용품으로 대하는 게 맞다.
7. 트랜스포머 시대의 자리[편집]
원 트랜스포머(2017)에는 드롭아웃이 세 군데 있다 — 각 부분층 출력이 잔차에 더해지기 직전, 어텐션 가중치(소프트맥스 뒤), 임베딩+위치인코딩 합. 기본값 . BERT·ViT도 그대로 물려받았다.
바뀐 것은 데이터 규모다. 웹 스케일 코퍼스를 사실상 1에포크만 도는 대규모 사전학습에서는 같은 표본을 두 번 볼 일이 거의 없으니, 과적합이라는 문제 자체가 발생하지 않는다. 이 체제에서 드롭아웃은 정규화가 아니라 그냥 잡음이자 계산 낭비다. 그래서 최근 대형 언어모형들은 사전학습 단계에서 드롭아웃을 0으로 두고, 미세조정 단계에서만 되살리는 구성이 흔하다. 데이터가 유한하고 몇 에포크를 도는 미세조정에서는 여전히 과적합이 실재하기 때문.
정리하면 드롭아웃의 위상은 이렇게 정리됐다.
- 소규모 데이터 + 완전연결층: 여전히 1순위 처방. 값싸고 잘 듣는다.
- CNN 백본: BN에 자리를 내줬고, 남은 몫은 DropPath와 분류기 직전 드롭아웃 정도.
- 대규모 사전학습: 0. 정규화 역할은 데이터 양과 가중치 감쇠가 대신한다.
- 미세조정·LoRA·소규모 적응: 부활. 어텐션 드롭아웃까지 다시 켜는 레시피가 많다.
- 불확실성 추정: MC 드롭아웃이라는 별도의 용도로 계속 살아 있다.
“이제 안 쓴다”는 말과 “여전히 필수”라는 말이 동시에 도는 이유는 각자 다른 체제를 보고 있어서다. 드롭아웃이 답인지는 데이터가 파라미터에 비해 부족한가로 갈린다.3
8. 관련 문서[편집]
- 심층 학습 · 역전파 · 합성곱 신경망 · 트랜스포머
- 배치 정규화 · 층 정규화 · 잔차 연결
- 티호노프 정규화 · 라벨 평활화 · 편향-분산 분해
- 불확실성 정량화 · 변분 추론 · 몬테카를로 방법 · 부트스트랩
- 확률적 경사하강법 · 지식 증류 · 그래디언트 체크포인팅
9. Footnotes[편집]
-
논문 1절에 진짜로 나오는 이야기다. 무성생식이 유전자 조합을 통째로 물려주는 반면 유성생식은 절반씩 섞어 버리므로, 특정 조합에만 기대는 유전자는 살아남지 못한다는 것. 학회 발표에서 “그래서 뉴런도 연애를 해야 합니다”라고 요약한 사람이 있었다는 전설이 있으나 출처는 확인되지 않았다. ↩
-
이 규약 충돌은 실전에서 정말로 사람을 잡는다. 논문 표에 “dropout 0.8” 이라 적혀 있길래 그대로
nn.Dropout(0.8)을 넣고 왜 학습이 안 되냐고 며칠을 태우는 전개. 논문 저자는 80%를 남긴 것이고 당신은 80%를 버린 것이다. ↩ -
그래서 “드롭아웃 쓰나요?”는 사실 “데이터 부족하세요?”와 같은 질문이다. 회사에서 이 질문을 받으면 자존심 상해하지 말고 솔직하게 답하는 편이 낫다. 데이터가 부족하다는 건 부끄러운 게 아니라 대부분의 현실이다. ↩