Dropout

Wprowadzenie

Dropout to jedna z najskuteczniejszych technik regularizacji w głębokim uczeniu. Została wprowadzona w 2014 roku przez Nitisha Srivastavę i Geoffreya Hinton’a. Polega na losowym wyłączaniu („wypadaniu”) części neuronów podczas treningu, co zapobiega nadmiernemu dopasowaniu modelu do danych treningowych.

Jak działa Dropout?

Podczas każdej iteracji treningowej (dla każdego batcha) każdy neuron w wybranych warstwach jest niezależnie „wyłączany” z prawdopodobieństwem p (zwykle 0.2–0.5). Wyłączony neuron nie bierze udziału w propagacji w przód ani w tył w danej iteracji. Podczas inferencji wszystkie neurony są aktywne, ale ich wagi są skalowane o współczynnik (1-p) (Inverted Dropout).

Dlaczego Dropout działa?

  • Zapobiega współzależności neuronów (co-ne-adaptation) – model nie może polegać na konkretnych neuronach
  • Działa jak ensemble wielu podmodeli (każda maska dropout tworzy inny podmodel)
  • Wymusza redundancję i bardziej robustne reprezentacje
  • Ma podobny efekt do L2 regularizacji, ale jest bardziej skuteczny

Zalety Dropout

  • Prosty w implementacji
  • Bardzo skuteczny przeciwko overfittingowi
  • Można łączyć z innymi metodami regularizacji
  • Nie wymaga dodatkowej zmiany architektury
  • Działa w prawie każdej architekturze sieci neuronowej

Ograniczenia i wady

  • Zwiększa czas treningu (model musi nauczyć się redundancji)
  • Nie zawsze działa dobrze w bardzo małych modelach lub przy małych zbiorach danych
  • Wymaga dostrojenia prawdopodobieństwa dropout (p)
  • W nowszych architekturach (np. Transformer) często zastępowany przez inne techniki

Warianty

  • Inverted Dropout – najpopularniejsza implementacja
  • Spatial Dropout – dropout całych kanałów (w CNN)
  • Alpha Dropout – zachowuje średnią i wariancję (dla SELU)
  • DropConnect – dropout na wagach zamiast neuronach

Aktualny status (2026)

Dropout nadal jest jedną z podstawowych technik regularizacji, szczególnie w klasycznych sieciach CNN i MLP. W architekturach Transformerów został w dużej mierze zastąpiony przez Layer Normalization, Attention Dropout oraz większe zbiory danych. Jednak w wielu praktycznych zastosowaniach (zwłaszcza na mniejszych modelach i w zadaniach z ograniczonymi danymi) Dropout pozostaje bardzo skutecznym i prostym narzędziem.