Junior — Middle
Какво е Dropout и как се държи при обучение и при inference?
sobes.tech AI
Отговор от 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))