Pourquoi les autoencodeurs pour la détection d'anomalies
Vous n'avez besoin que de données normales pour l'entraînement. L'autoencodeur apprend à bien reconstruire les motifs normaux. Les anomalies ont une erreur de reconstruction élevée.
Architecture
class Autoencoder(nn.Module):
def __init__(self, input_dim, latent_dim=32):
super().__init__()
self.encoder = nn.Sequential(
nn.Linear(input_dim, 128), nn.ReLU(),
nn.Linear(128, 64), nn.ReLU(),
nn.Linear(64, latent_dim)
)
self.decoder = nn.Sequential(
nn.Linear(latent_dim, 64), nn.ReLU(),
nn.Linear(64, 128), nn.ReLU(),
nn.Linear(128, input_dim)
)
def forward(self, x):
z = self.encoder(x)
return self.decoder(z)
Réglage du seuil
# Set threshold at 99th percentile of train reconstruction error
recon_errors = ((X_train - model(X_train)) ** 2).mean(dim=1)
threshold = np.percentile(recon_errors.numpy(), 99)