Robocikowo>ROBOCIKOWO

Sieci neuronowe od podstaw do nowoczesnej AI · Regularyzacja — jak uniknąć przeuczenia

Dropout: mechanizm, tryb train vs eval, implementacja

Regularyzacja — jak uniknąć przeuczenia

Wprowadzenie

Dropout (Srivastava et al. 2014, „Dropout: A Simple Way to Prevent Neural Networks from Overfitting") to jedna z najbardziej wpływowych technik regularyzacji w deep learningu. Mechanizm jest pozornie banalny — w trakcie treningu losowo zerujemy fragment aktywacji każdej warstwy z prawdopodobieństwem p, a podczas ewaluacji warstwa się wyłącza i przepuszcza wszystko bez zmian. Pod tą prostotą kryje się jednak kilka subtelności, które decydują o tym, czy dropout pomoże, czy zepsuje trening: konieczność skalowania aktywacji (inverted dropout), różnica między fazą train a eval w PyTorch (model.train() vs model.eval()), interakcje z BatchNorm, oraz interpretacja jako uśredniania wykładniczo wielu pod-sieci w jednej. Lekcja przechodzi od intuicji (zapobieganie ko-adaptacji neuronów), przez matematykę kompensacji wariancji, po praktyczne błędy implementacyjne — m.in. zapomnienie o model.eval() przy walidacji, które potrafi wyglądać jak chaotyczny szum w metryce val_loss bez uchwytnej przyczyny.