Sobes.tech
Junior — Middle

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