Auto-Encodeur : Qu’Est-Ce Que C’Est? Et À Quoi Sert-Il? (Partie 1)

Introduction en douceur à l’Auto-Encodeur et à Certains de Ses cas d’utilisation courants Avec le Code Python

Contexte:

L’Autoencodeur est un réseau de neurones artificiels non supervisé qui apprend à compresser et encoder efficacement des données puis apprend à reconstruire les données à partir de la représentation codée réduite en une représentation aussi proche que possible de l’entrée d’origine.

Autoencoder, de par sa conception, réduit les dimensions des données en apprenant à ignorer le bruit dans les données.

Voici un exemple de l’image d’entrée/sortie de l’ensemble de données MNIST vers un autoencodeur.

Autoencoder pour MNIST

Composants Autoencoder:

Les Autoencoders se composent de 4 parties principales:

1- Encodeur: Dans lequel le modèle apprend à réduire les dimensions d’entrée et à compresser les données d’entrée en une représentation codée.

2 – Goulot d’étranglement: qui est la couche qui contient la représentation compressée des données d’entrée. Il s’agit des dimensions les plus basses possibles des données d’entrée.

3 – Décodeur : Dans lequel le modèle apprend à reconstruire les données à partir de la représentation codée pour être le plus proche possible de l’entrée d’origine.

4 – Perte de reconstruction: C’est la méthode qui mesure la performance du décodeur et la proximité de la sortie avec l’entrée d’origine.

La formation consiste alors à utiliser la propagation arrière afin de minimiser la perte de reconstruction du réseau.

Vous devez vous demander pourquoi j’entraînerais un réseau de neurones juste pour sortir une image ou des données exactement identiques à l’entrée! Cet article couvrira les cas d’utilisation les plus courants pour Autoencoder. Commençons :

Architecture d’Autoencodeur :

L’architecture réseau pour les autoencodeurs peut varier entre un simple réseau de FeedForward, un réseau LSTM ou un réseau neuronal convolutif selon le cas d’utilisation. Nous explorerons certaines de ces architectures dans les prochaines lignes.

Il existe de nombreuses façons et techniques de détecter les anomalies et les valeurs aberrantes. J’ai couvert ce sujet dans un autre article ci-dessous:

Cependant, si vous avez des données d’entrée corrélées, la méthode d’autoencoder fonctionnera très bien car l’opération d’encodage repose sur les fonctionnalités corrélées pour compresser les données.

Disons que nous avons formé un autoencodeur sur l’ensemble de données MNIST. En utilisant un simple réseau de neurones à FeedForward, nous pouvons y parvenir en construisant un réseau simple à 6 couches comme ci-dessous:

La sortie du code ci-dessus est:

Comme vous pouvez le voir dans la sortie, la dernière perte / erreur de reconstruction pour l’ensemble de validation est de 0,0193, ce qui est génial. Maintenant, si je passe une image normale de l’ensemble de données MNIST, la perte de reconstruction sera très faible (< 0,02) MAIS si j’ai essayé de passer une autre image différente (valeur aberrante ou anomalie), nous obtiendrons une valeur de perte de reconstruction élevée car le réseau n’a pas réussi à reconstruire l’image / entrée considérée comme une anomalie.

Remarque dans le code ci-dessus, vous pouvez utiliser uniquement la partie encodeur pour compresser certaines données ou images et vous pouvez également utiliser uniquement la partie décodeur pour décompresser les données en chargeant les couches du décodeur.

Maintenant, faisons une détection d’anomalie. Le code ci-dessous utilise deux images différentes pour prédire le score d’anomalie (erreur de reconstruction) en utilisant le réseau d’autoencodeur que nous avons formé ci-dessus. la première image provient du MNIST et le résultat est 5.43209. Cela signifie que l’image n’est pas une anomalie. La deuxième image que j’ai utilisée est une image complètement aléatoire qui n’appartient pas à l’ensemble de données d’entraînement et les résultats étaient: 6789.4907. Cette erreur élevée signifie que l’image est une anomalie. Le même concept s’applique à tout type d’ensemble de données.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.