Τι είναι το Dropout και πώς συμπεριφέρεται κατά τη διάρκεια της εκπαίδευσης και της inference;
sobes.tech AI
Απάντηση από AI
Το Dropout είναι μια μέθοδος κανονικοποίησης σε βαθιά νευρωνικά δίκτυα που βοηθά στην πρόληψη του υπερπροσαρμογής. Κατά τη διάρκεια της εκπαίδευσης, ένα μέρος των νευρώνων "απενεργοποιείται" τυχαία (μηδενίζεται) με μια δοσμένη πιθανότητα (π.χ., 0,5), αναγκάζοντας το δίκτυο να μην βασίζεται υπερβολικά σε μεμονωμένους νευρώνες και βελτιώνοντας την ικανότητά του να γενικεύει.
Στο στάδιο εκπαίδευσης (train), το dropout είναι ενεργό: οι νευρώνες απενεργοποιούνται τυχαία και τα βάρη ενημερώνονται λαμβάνοντας υπόψη αυτό.
Στο στάδιο inference (inference), το dropout απενεργοποιείται, όλοι οι νευρώνες είναι ενεργοί και οι έξοδοι κλιμακώνονται (συνήθως πολλαπλασιάζονται με την πιθανότητα διατήρησης του νευρώνα) για να αντισταθμίσουν το αποτέλεσμα της απενεργοποίησης κατά τη διάρκεια της εκπαίδευσης.
Παράδειγμα σε PyTorch:
import torch
import torch.nn as nn
model = nn.Sequential(
nn.Linear(10, 20),
nn.Dropout(p=0.5),
nn.ReLU(),
nn.Linear(20, 1)
)
model.train() # ενεργοποιημένο dropout
output_train = model(torch.randn(1, 10))
model.eval() # απενεργοποιημένο dropout
output_eval = model(torch.randn(1, 10))