Sobes.tech
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))