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