Junior — Middle
130
Что такое Dropout и как он ведёт себя на train и на inference?
Ответ от нейросети
sobes.tech AI
Dropout — это метод регуляризации в глубоких нейронных сетях, который помогает предотвратить переобучение. Во время обучения случайным образом "выключается" (обнуляется) часть нейронов с заданной вероятностью (например, 0.5), что заставляет сеть не полагаться слишком сильно на отдельные нейроны и улучшает обобщающую способность.
На этапе обучения (train) dropout активно работает: нейроны случайно отключаются, и веса обновляются с учётом этого.
На этапе инференса (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))