Sobes.tech
Junior — Middle
131

Что такое Dropout и как он ведёт себя на train и на inference?

Answer from AI

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))