Sobes.tech
Junior — Middle

O que é Dropout e como ele se comporta durante o treino e na inferência?

sobes.tech IA

Resposta da IA

Dropout é um método de regularização em redes neurais profundas que ajuda a prevenir o sobreajuste. Durante o treinamento, uma parte dos neurônios é "desligada" aleatoriamente (zerada) com uma probabilidade definida (por exemplo, 0,5), o que força a rede a não confiar excessivamente em neurônios individuais e melhora sua capacidade de generalização.

Na fase de treinamento (train), o dropout está ativo: os neurônios são desligados aleatoriamente e os pesos são atualizados considerando isso.

Na fase de inferência (inference), o dropout é desativado, todos os neurônios estão ativos e as saídas são escaladas (normalmente multiplicadas pela probabilidade de manter o neurônio) para compensar o efeito do desligamento durante o treinamento.

Exemplo em 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 ativado
output_train = model(torch.randn(1, 10))

model.eval()   # dropout desativado
output_eval = model(torch.randn(1, 10))