¿Qué es Dropout y cómo se comporta durante el entrenamiento y la inferencia?
sobes.tech AI
Respuesta de la IA
Dropout es un método de regularización en redes neuronales profundas que ayuda a prevenir el sobreajuste. Durante el entrenamiento, una parte de las neuronas se "apaga" aleatoriamente (se anula) con una probabilidad dada (por ejemplo, 0.5), lo que obliga a la red a no confiar demasiado en neuronas individuales y mejora su capacidad de generalización.
En la fase de entrenamiento (train), dropout está activo: las neuronas se apagan aleatoriamente y los pesos se actualizan teniendo en cuenta esto.
En la fase de inferencia (inference), dropout se desactiva, todas las neuronas están activas y las salidas se escalan (generalmente se multiplican por la probabilidad de mantener la neurona) para compensar el efecto de apagado durante el entrenamiento.
Ejemplo en 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 activado
output_train = model(torch.randn(1, 10))
model.eval() # dropout desactivado
output_eval = model(torch.randn(1, 10))