Logo Zéphyrnet

Entraîner un auto-encodeur variationnel pour la détection d'anomalies à l'aide de TensorFlow

Date :

Introduction

L’IA générative a acquis une immense popularité ces dernières années grâce à sa capacité à créer des données qui ressemblent beaucoup à des exemples du monde réel. L'une des applications les moins explorées mais très pratiques de l'IA générative est la détection d'anomalies à l'aide d'auto-encodeurs variationnels (VAE). Ce guide fournira une approche pratique pour créer et former un auto-encodeur variationnel pour la détection d'anomalies à l'aide de Tensor Flow. Il y aura quelques objectifs d’apprentissage de ce guide, tels que :

  • Découvrez comment les VAE peuvent être exploités pour les tâches de détection d'anomalies, y compris les scénarios de détection d'anomalies à une classe et à plusieurs classes.
  • Acquérez une solide compréhension du concept de détection d’anomalies et de son importance dans diverses applications du monde réel.
  • Apprenez à distinguer les points de données normaux et anormaux et appréciez les défis associés à la détection des anomalies.
  • Explorez l'architecture et les composants d'un auto-encodeur variationnel, y compris les réseaux d'encodeurs et de décodeurs.
  • Développez des compétences pratiques en utilisant TensorFlow, un framework d'apprentissage en profondeur populaire, pour créer et former des modèles VAE.
Auto-encodeur variationnel pour la détection d'anomalies

Cet article a été publié dans le cadre du Blogathon sur la science des données.

Table des matières

Auto-encodeurs variationnels (VAE)

Un auto-encodeur variationnel (VAE) est une architecture de réseau neuronal sophistiquée qui combine des éléments de modélisation générative et d'inférence variationnelle pour apprendre des distributions de données complexes, en particulier dans les tâches d'apprentissage automatique non supervisées. Les VAE ont gagné en importance grâce à leur capacité à capturer et à représenter des données de grande dimension dans un espace latent compact et continu, ce qui les rend particulièrement utiles dans des applications telles que la génération d'images, la détection d'anomalies et la compression de données.

À la base, un VAE comprend deux composants principaux : un encodeur et un décodeur. Ces composants fonctionnent en tandem pour transformer les données d'entrée en un espace latent, puis à nouveau sous une forme reconstruite.

Comment fonctionnent les auto-encodeurs variationnels ?

Voici un bref aperçu du fonctionnement des VAE :

  1. Réseau d'encodeurs: L'encodeur prend les données d'entrée brutes et les mappe dans une distribution probabiliste dans un espace latent de dimension inférieure. Cette cartographie est essentielle pour capturer des représentations significatives des données. Contrairement aux auto-encodeurs traditionnels, les VAE ne produisent pas d’encodage fixe ; au lieu de cela, ils génèrent une distribution de probabilité caractérisée par des paramètres de moyenne et de variance.
  2. Espace latent: L'espace latent est le lieu où opère la magie des VAE. Il s'agit d'une représentation continue de dimension inférieure dans laquelle les points de données sont positionnés en fonction de leurs caractéristiques. Il est important de noter que cet espace suit une distribution de probabilité spécifique, généralement une distribution gaussienne. Cela permet de générer de nouveaux échantillons de données en échantillonnant à partir de cette distribution.
  3. Réseau de décodeurs: Le décodeur prend un point dans l'espace latent et le mappe à l'espace de données d'origine. Il est chargé de reconstruire les données d’entrée aussi précisément que possible. L'architecture du décodeur est généralement symétrique par rapport au codeur.
  4. Perte de reconstruction: Pendant la formation, les VAE visent à minimiser une perte de reconstruction, qui quantifie dans quelle mesure le décodeur peut recréer l'entrée originale à partir de la représentation de l'espace latent. Cette perte incite la VAE à apprendre des fonctionnalités significatives à partir des données.
  5. Perte de régularisation: En plus de la perte de reconstruction, les VAE incluent une perte de régularisation qui rapproche les distributions spatiales latentes d'une distribution gaussienne standard. Cette régularisation impose une continuité dans l'espace latent, ce qui facilite la génération et l'interpolation des données.

Comprendre la détection des anomalies avec les VAE

Présentation de la détection des anomalies :

Détection d'une anomalie est une tâche critique dans divers domaines, de la détection des fraudes dans le secteur financier à la détection des défauts dans le secteur manufacturier. Cela implique d'identifier les points de données qui s'écartent considérablement des modèles attendus ou normaux au sein d'un ensemble de données. Les VAE offrent une approche unique à ce problème en tirant parti de la modélisation générative.

Le rôle des VAE :

Les auto-encodeurs variationnels sont une sous-classe d'auto-encodeurs qui non seulement compressent les données dans un espace latent de dimension inférieure, mais apprennent également à générer des données qui ressemblent à la distribution d'entrée. Lors de la détection d'anomalies, nous utilisons les VAE pour coder les données dans l'espace latent et les décoder ensuite. Nous détectons les anomalies en mesurant la dissemblance entre l'entrée originale et la sortie reconstruite. Si la reconstruction s'écarte considérablement de l'entrée, cela indique une anomalie.

Le rôle des VAE | Auto-encodeur variationnel pour la détection d'anomalies

Configuration de votre environnement

Installation de TensorFlow et des dépendances :

Avant de vous lancer dans la mise en œuvre de VAE, assurez-vous que TensorFlow et les dépendances requises sont installés. Vous pouvez utiliser pip pour installer TensorFlow et d'autres bibliothèques comme NumPy et Matplotlib afin de faciliter la manipulation et la visualisation des données.

Préparation de l'ensemble de données :

Sélectionnez un ensemble de données approprié pour votre tâche de détection d'anomalies. Les étapes de prétraitement peuvent inclure la normalisation des données, leur division en ensembles de formation et de test et la garantie qu'elles sont dans un format compatible avec votre architecture VAE.

Construire l'auto-encodeur variationnel (VAE)

Architecture de la VAE :

Les VAE sont constitués de deux éléments principaux : l'encodeur et le décodeur. L'encodeur compresse les données d'entrée dans un espace latent de dimension inférieure, tandis que le décodeur les reconstruit. Les choix d'architecture, tels que le nombre de couches et de neurones, ont un impact sur la capacité du VAE à capturer efficacement les caractéristiques et les anomalies.

Réseau d'encodeurs :

Le réseau d'encodeurs apprend à mapper les données d'entrée sur une distribution probabiliste dans l'espace latent. Il comprend généralement des couches convolutives et denses, réduisant progressivement la dimensionnalité de l'entrée.

Espace latent :

L'espace latent représente une forme de dimension inférieure des données d'entrée où nous pouvons détecter des anomalies. Il est caractérisé par une moyenne et une variance qui guident le processus d'échantillonnage.

Réseau de décodeurs :

Le réseau de décodeur reconstruit les données à partir de l'espace latent. Son architecture est souvent symétrique à celle de l'encodeur, s'étendant progressivement vers les dimensions des données d'origine.

Former la VAE

Fonctions de perte :

Le processus de formation d’une VAE consiste à optimiser deux fonctions de perte : la perte de reconstruction et la perte de régularisation. La perte de reconstruction mesure la dissemblance entre l'entrée et la sortie reconstruite. La perte de régularisation encourage l'espace latent à suivre une distribution spécifique, généralement une distribution gaussienne.

Fonctions de perte personnalisées :

En fonction de votre tâche de détection d'anomalies, vous devrez peut-être personnaliser les fonctions de perte. Par exemple, vous pouvez attribuer des poids plus élevés aux anomalies dans la perte de reconstruction.

Boucle d'entraînement :

La boucle de formation consiste à alimenter les données via le VAE, à calculer la perte et à ajuster les poids du modèle à l'aide d'un optimiseur. La formation se poursuit jusqu'à ce que le modèle converge ou qu'un nombre prédéfini d'époques soit atteint.

Boucle d'entraînement | Auto-encodeur variationnel pour la détection d'anomalies

Détection d'une anomalie

Définition des seuils :

Les seuils jouent un rôle central dans la classification des anomalies. Les seuils sont définis en fonction de la perte de reconstruction ou d'autres mesures pertinentes. Une sélection minutieuse des seuils est cruciale car elle affecte le compromis entre les faux positifs et les faux négatifs.

Évaluation des anomalies :

Une fois que nous avons formé la VAE et défini des seuils, nous pouvons évaluer les anomalies. Nous codons les données d'entrée dans l'espace latent, les reconstruisons, puis les comparons à l'entrée d'origine. Nous signalons comme anomalies les points de données présentant des erreurs de reconstruction dépassant les seuils définis.

Implémentation du code Python

# Import necessary libraries
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers # Define the VAE architecture
class VAE(tf.keras.Model): def __init__(self, latent_dim): super(VAE, self).__init__() self.latent_dim = latent_dim self.encoder = keras.Sequential([ layers.InputLayer(input_shape=(28, 28, 1)), layers.Conv2D(32, 3, activation='relu', strides=2, padding='same'), layers.Conv2D(64, 3, activation='relu', strides=2, padding='same'), layers.Flatten(), layers.Dense(latent_dim + latent_dim), ]) self.decoder = keras.Sequential([ layers.InputLayer(input_shape=(latent_dim,)), layers.Dense(7*7*32, activation='relu'), layers.Reshape(target_shape=(7, 7, 32)), layers.Conv2DTranspose(64, 3, activation='relu', strides=2, padding='same'), layers.Conv2DTranspose(32, 3, activation='relu', strides=2, padding='same'), layers.Conv2DTranspose(1, 3, activation='sigmoid', padding='same'), ]) def sample(self, eps=None): if eps is None: eps = tf.random.normal(shape=(100, self.latent_dim)) return self.decode(eps, apply_sigmoid=True) def encode(self, x): mean, logvar = tf.split(self.encoder(x), num_or_size_splits=2, axis=1) return mean, logvar def reparameterize(self, mean, logvar): eps = tf.random.normal(shape=mean.shape) return eps * tf.exp(logvar * 0.5) + mean def decode(self, z, apply_sigmoid=False): logits = self.decoder(z) if apply_sigmoid: probs = tf.sigmoid(logits) return probs return logits # Custom loss function for VAE
@tf.function
def compute_loss(model, x): mean, logvar = model.encode(x) z = model.reparameterize(mean, logvar) x_logit = model.decode(z) cross_ent = tf.nn.sigmoid_cross_entropy_with_logits(logits=x_logit, labels=x) logpx_z = -tf.reduce_sum(cross_ent, axis=[1, 2, 3]) logpz = tf.reduce_sum(tf.square(z), axis=1) logqz_x = -tf.reduce_sum(0.5 * (logvar + tf.square(mean) - logvar), axis=1) return -tf.reduce_mean(logpx_z + logpz - logqz_x) # Training step function
@tf.function
def train_step(model, x, optimizer): with tf.GradientTape() as tape: loss = compute_loss(model, x) gradients = tape.gradient(loss, model.trainable_variables) optimizer.apply_gradients(zip(gradients, model.trainable_variables)) return loss # Training loop
def train_vae(model, dataset, optimizer, epochs): for epoch in range(epochs): for train_x in dataset: loss = train_step(model, train_x, optimizer) print('Epoch: {}, Loss: {:.4f}'.format(epoch + 1, loss))

Conclusion

Ce guide a exploré l'application des auto-encodeurs variationnels (VAE) pour la détection d'anomalies. Les VAE offrent une approche innovante pour identifier les valeurs aberrantes ou les anomalies au sein des ensembles de données en reconstruisant les données dans un espace latent de dimension inférieure. Grâce à une approche étape par étape, nous avons couvert les fondamentaux de la configuration de votre environnement, de la construction d'une architecture VAE, de sa formation et de la définition des seuils de détection des anomalies.

Principaux plats à emporter:

  1. Les VAE sont des outils puissants de détection d’anomalies, capables de capturer des modèles de données complexes et d’identifier efficacement les valeurs aberrantes.
  2. La personnalisation des fonctions de perte et des valeurs de seuil est souvent nécessaire pour affiner les modèles de détection d'anomalies pour des cas d'utilisation spécifiques.
  3. L’expérimentation de différentes architectures et hyperparamètres VAE peut avoir un impact significatif sur les performances de détection.
  4. Évaluez et mettez à jour régulièrement vos seuils de détection d'anomalies pour vous adapter à l'évolution des modèles de données.

Foire aux Questions

Q1 : Les VAE peuvent-ils être utilisés pour la détection d’anomalies en temps réel ?

R : La détection des anomalies en temps réel avec les VAE est réalisable, mais cela dépend de facteurs tels que la complexité de votre modèle et la taille de votre ensemble de données. L’optimisation et la conception efficace de l’architecture sont essentielles.

Q2 : Comment choisir le bon seuil de détection des anomalies ?

R : La sélection des seuils est souvent empirique. Vous pouvez commencer avec un seuil qui équilibre les faux positifs et les faux négatifs, puis l'ajuster en fonction des besoins spécifiques de votre application.

Q3 : Existe-t-il d’autres modèles génératifs adaptés à la détection d’anomalies ?

R : Oui, d'autres modèles tels que les réseaux contradictoires génératifs (GAN) et les flux normalisants peuvent également être utilisés pour la détection des anomalies, chacun avec ses propres avantages et défis.

Les médias présentés dans cet article n'appartiennent pas à Analytics Vidhya et sont utilisés à la discrétion de l'auteur.

spot_img

Dernières informations

spot_img