Sobes.tech
Junior — Middle

Czym jest Dropout i jak zachowuje się podczas treningu i inferencji?

sobes.tech AI

Odpowiedź od AI

Dropout to metoda regularizacji w głębokich sieciach neuronowych, która pomaga zapobiec nadmiernemu dopasowaniu. Podczas treningu losowo wyłącza się (zeruje) część neuronów z określonym prawdopodobieństwem (np. 0,5), co zmusza sieć do niepolegania zbyt mocno na pojedynczych neuronach i poprawia jej zdolność do generalizacji.

Na etapie treningu (train) dropout jest aktywny: neurony są losowo wyłączane, a wagi są aktualizowane z uwzględnieniem tego.

Na etapie inferencji (inference) dropout jest wyłączony, wszystkie neurony są aktywne, a wyjścia są skalowane (zazwyczaj mnożone przez prawdopodobieństwo zachowania neuronu), aby zrekompensować efekt wyłączania podczas treningu.

Przykład w 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 włączony
output_train = model(torch.randn(1, 10))

model.eval()   # dropout wyłączony
output_eval = model(torch.randn(1, 10))