talon Qu'est-ce qu'un encodeur automatique ? - Unite.AI
Suivez nous sur
Classe de maître IA :

AI 101

Qu'est-ce qu'un encodeur automatique ?

mm
Le kit de préparation mis à jour on

Si vous avez déjà entendu parler des techniques d'apprentissage non supervisé, vous avez peut-être rencontré le terme «encodeur automatique”. Les auto-encodeurs sont l'un des principaux moyens de développer des modèles d'apprentissage non supervisés. Mais qu'est-ce qu'un auto-encodeur exactement ?

En bref, les auto-encodeurs fonctionnent en prenant des données, en compressant et en encodant les données, puis en reconstruisant les données à partir de la représentation d'encodage. Le modèle est formé jusqu'à ce que la perte soit minimisée et que les données soient reproduites aussi fidèlement que possible. Grâce à ce processus, un auto-encodeur peut apprendre les caractéristiques importantes des données. Bien qu'il s'agisse d'une définition rapide d'un encodeur automatique, il serait utile d'examiner de plus près les encodeurs automatiques et de mieux comprendre leur fonctionnement. Cet article s'attachera à démystifier les auto-encodeurs, en expliquant l'architecture des auto-encodeurs et leurs applications.

Qu'est-ce qu'un encodeur automatique ?

Codeurs automatiques sont des réseaux de neurones. Les réseaux de neurones sont composés de plusieurs couches, et l'aspect déterminant d'un auto-encodeur est que les couches d'entrée contiennent exactement autant d'informations que la couche de sortie. La raison pour laquelle la couche d'entrée et la couche de sortie ont exactement le même nombre d'unités est qu'un auto-encodeur vise à répliquer les données d'entrée. Il produit une copie des données après les avoir analysées et reconstruites de manière non supervisée.

Les données qui transitent par un auto-encodeur ne sont pas simplement mappées directement de l'entrée à la sortie, ce qui signifie que le réseau ne se contente pas de copier les données d'entrée. Un encodeur automatique comporte trois composants : une partie d'encodage (entrée) qui compresse les données, un composant qui gère les données compressées (ou goulot d'étranglement) et une partie décodeur (sortie). Lorsque les données sont introduites dans un auto-encodeur, elles sont codées puis compressées à une taille plus petite. Le réseau est ensuite entraîné sur les données codées/compressées et produit une recréation de ces données.

Alors, pourquoi voudriez-vous former un réseau pour simplement reconstruire les données qui lui sont fournies ? La raison en est que le réseau apprend «l'essence», ou les caractéristiques les plus importantes des données d'entrée. Après avoir formé le réseau, un modèle peut être créé qui peut synthétiser des données similaires, avec l'ajout ou la soustraction de certaines caractéristiques cibles. Par exemple, vous pouvez entraîner un encodeur automatique sur des images granuleuses, puis utiliser le modèle entraîné pour supprimer le grain/bruit de l'image.

Architecture de l'auto-encodeur

Jetons un coup d'oeil à l'architecture d'un auto-encodeur. Nous allons discuter de l'architecture principale d'un auto-encodeur ici. Il existe des variantes de cette architecture générale dont nous parlerons dans la section ci-dessous.

Photo : Michela Massi via Wikimedia Commons,(https://commons.wikimedia.org/wiki/File:Autoencoder_schema.png)

Comme mentionné précédemment, un auto-encodeur peut essentiellement être divisé en trois composants différents : l'encodeur, un goulot d'étranglement et le décodeur.

La partie codeur de l'auto-codeur est généralement un réseau prédictif densément connecté. Le but des couches d'encodage est de prendre les données d'entrée et de les compresser dans une représentation d'espace latent, générant une nouvelle représentation des données qui a une dimensionnalité réduite.

Les couches de code, ou le goulot d'étranglement, traitent de la représentation compressée des données. Le code de goulot d'étranglement est soigneusement conçu pour déterminer les parties les plus pertinentes des données observées, ou pour le dire autrement, les caractéristiques des données qui sont les plus importantes pour la reconstruction des données. L'objectif ici est de déterminer quels aspects des données doivent être préservés et lesquels peuvent être supprimés. Le code de goulot d'étranglement doit équilibrer deux considérations différentes : la taille de la représentation (la compacité de la représentation) et la pertinence des variables/fonctionnalités. Le goulot d'étranglement effectue une activation élément par élément sur les poids et les biais du réseau. La couche de goulot d'étranglement est aussi parfois appelée représentation latente ou variables latentes.

La couche décodeur est responsable de la récupération des données compressées et de leur reconversion en une représentation aux mêmes dimensions que les données d'origine non modifiées. La conversion est effectuée avec la représentation de l'espace latent qui a été créée par l'encodeur.

L'architecture la plus basique d'un auto-encodeur est une architecture à anticipation, avec une structure un peu comme un perceptron monocouche utilisé dans les perceptrons multicouches. Tout comme les réseaux de neurones à rétroaction régulière, l'auto-encodeur est entraîné par l'utilisation de la rétropropagation.

Attributs d'un auto-encodeur

Il existe différents types d'auto-encodeurs, mais ils ont tous certaines propriétés qui les unissent.

Les encodeurs automatiques apprennent automatiquement. Ils ne nécessitent pas d'étiquettes, et si suffisamment de données sont fournies, il est facile d'obtenir un encodeur automatique pour atteindre des performances élevées sur un type spécifique de données d'entrée.

Les auto-encodeurs sont spécifiques aux données. Cela signifie qu'ils ne peuvent compresser que des données très similaires aux données sur lesquelles l'auto-encodeur a déjà été formé. Les auto-encodeurs sont également avec perte, ce qui signifie que les sorties du modèle seront dégradées par rapport aux données d'entrée.

Lors de la conception d'un encodeur automatique, les ingénieurs en apprentissage automatique doivent prêter attention à quatre hyperparamètres de modèle différents : la taille du code, le numéro de couche, les nœuds par couche et la fonction de perte.

La taille du code détermine le nombre de nœuds commençant la partie médiane du réseau, et moins de nœuds compriment davantage les données. Dans un encodeur automatique profond, alors que le nombre de couches peut être n'importe quel nombre que l'ingénieur juge approprié, le nombre de nœuds dans une couche doit diminuer au fur et à mesure que l'encodeur avance. Pendant ce temps, l'inverse est vrai dans le décodeur, ce qui signifie que le nombre de nœuds par couche devrait augmenter à mesure que les couches du décodeur approchent de la couche finale. Enfin, la fonction de perte d'un auto-encodeur est généralement soit une entropie croisée binaire, soit une erreur quadratique moyenne. L'entropie croisée binaire est appropriée pour les cas où les valeurs d'entrée des données se situent dans une plage de 0 à 1.

Types d'auto-encodeur

Comme mentionné ci-dessus, des variantes de l'architecture classique de l'auto-encodeur existent. Examinons les différentes architectures d'auto-encodeurs.

Clairsemé

Photo : Michela Massi via Wikimedia Commons, CC BY SA 4.0 (https://commons.wikimedia.org/wiki/File:Autoencoder_sparso.png)

Alors que les auto-encodeurs ont généralement un goulot d'étranglement qui comprime les données grâce à une réduction des nœuds, auto-encodeur clairsemés sont une alternative à ce format opérationnel typique. Dans un réseau clairsemé, les couches cachées conservent la même taille que les couches d'encodeur et de décodeur. Au lieu de cela, les activations au sein d'une couche donnée sont pénalisées, en la configurant de sorte que la fonction de perte capture mieux les caractéristiques statistiques des données d'entrée. En d'autres termes, alors que les couches cachées d'un auto-encodeur clairsemé ont plus d'unités qu'un auto-encodeur traditionnel, seul un certain pourcentage d'entre elles sont actives à un moment donné. Les fonctions d'activation les plus percutantes sont préservées et les autres sont ignorées, et cette contrainte aide le réseau à déterminer uniquement les caractéristiques les plus saillantes des données d'entrée.

Contractuel

Auto-encodeurs contractuels sont conçus pour résister aux petites variations des données, en maintenant une représentation cohérente des données. Ceci est accompli en appliquant une pénalité à la fonction de perte. Cette technique de régularisation est basée sur la norme de Frobenius de la matrice jacobienne pour les activations du codeur d'entrée. L'effet de cette technique de régularisation est que le modèle est obligé de construire un codage où des entrées similaires auront des codages similaires.

Convolutional

Auto-encodeurs convolutionnels encoder les données d'entrée en divisant les données en sous-sections, puis en convertissant ces sous-sections en signaux simples qui sont additionnés pour créer une nouvelle représentation des données. Semblable aux réseaux de neurones à convolution, un auto-encodeur à convolution se spécialise dans l'apprentissage des données d'image et utilise un filtre qui est déplacé sur toute l'image section par section. Les encodages générés par la couche d'encodage peuvent être utilisés pour reconstruire l'image, refléter l'image ou modifier la géométrie de l'image. Une fois les filtres appris par le réseau, ils peuvent être utilisés sur toute entrée suffisamment similaire pour extraire les caractéristiques de l'image.

Débruitage

Photo : MAL via Wikimedia Commons, CC BY SA 3.0 (https://en.wikipedia.org/wiki/File:ROF_Denoising_Example.png)

Encodeurs automatiques de débruitage introduire du bruit dans le codage, ce qui entraîne un codage qui est une version corrompue des données d'entrée d'origine. Cette version corrompue des données est utilisée pour entraîner le modèle, mais la fonction de perte compare les valeurs de sortie avec l'entrée d'origine et non avec l'entrée corrompue. L'objectif est que le réseau puisse reproduire la version originale non corrompue de l'image. En comparant les données corrompues avec les données d'origine, le réseau apprend quelles caractéristiques des données sont les plus importantes et quelles caractéristiques sont sans importance/corruptions. En d'autres termes, pour qu'un modèle débruite les images corrompues, il doit avoir extrait les caractéristiques importantes des données d'image.

variationnel

Auto-encodeurs variationnels fonctionnent en faisant des hypothèses sur la façon dont les variables latentes des données sont distribuées. Un auto-encodeur variationnel produit une distribution de probabilité pour les différentes caractéristiques des images d'apprentissage/des attributs latents. Lors de la formation, l'encodeur crée des distributions latentes pour les différentes caractéristiques des images d'entrée.

 

Étant donné que le modèle apprend les caractéristiques ou les images sous forme de distributions gaussiennes au lieu de valeurs discrètes, il peut être utilisé pour générer de nouvelles images. La distribution gaussienne est échantillonnée pour créer un vecteur, qui est introduit dans le réseau de décodage, qui restitue une image basée sur ce vecteur d'échantillons. Essentiellement, le modèle apprend les caractéristiques communes des images d'entraînement et leur attribue une certaine probabilité qu'elles se produisent. La distribution de probabilité peut ensuite être utilisée pour désosser une image, générant de nouvelles images qui ressemblent aux images d'apprentissage originales.

Lors de la formation du réseau, les données codées sont analysées et le modèle de reconnaissance génère deux vecteurs, en extrayant la moyenne et l'écart type des images. Une distribution est créée sur la base de ces valeurs. Ceci est fait pour les différents états latents. Le décodeur prend ensuite des échantillons aléatoires de la distribution correspondante et les utilise pour reconstruire les entrées initiales du réseau.

Applications d'auto-encodeur

Les encodeurs automatiques peuvent être utilisés pour un large variété d'applications, mais ils sont généralement utilisés pour des tâches telles que la réduction de la dimensionnalité, le débruitage des données, l'extraction de caractéristiques, la génération d'images, la prédiction de séquence à séquence et les systèmes de recommandation.

Le débruitage des données est l'utilisation d'auto-encodeurs pour éliminer le grain/bruit des images. De même, les encodeurs automatiques peuvent être utilisés pour réparer d'autres types de dommages à l'image, comme des images floues ou des images manquantes. La réduction de la dimensionnalité peut aider les réseaux à haute capacité à apprendre des fonctionnalités utiles des images, ce qui signifie que les auto-encodeurs peuvent être utilisés pour augmenter la formation d'autres types de réseaux de neurones. Cela vaut également pour l'utilisation d'auto-encodeurs pour l'extraction de caractéristiques, car les auto-encodeurs peuvent être utilisés pour identifier les caractéristiques d'autres ensembles de données d'apprentissage afin d'entraîner d'autres modèles.

En termes de génération d'images, les auto-encodeurs peuvent être utilisés pour générer de fausses images humaines ou des personnages animés, ce qui a des applications dans la conception de systèmes de reconnaissance faciale ou l'automatisation de certains aspects de l'animation.

Les modèles de prédiction séquence à séquence peuvent être utilisés pour déterminer la structure temporelle des données, ce qui signifie qu'un auto-encodeur peut être utilisé pour générer le suivant même dans une séquence. Pour cette raison, un encodeur automatique pourrait être utilisé pour générer des vidéos. Enfin, les encodeurs automatiques profonds peuvent être utilisés pour créer des systèmes de recommandation en reprenant des modèles liés à l'intérêt de l'utilisateur, l'encodeur analysant les données d'engagement de l'utilisateur et le décodeur créant des recommandations qui correspondent aux modèles établis.

Blogueur et programmeur spécialisé dans Machine Learning ainsi que L'apprentissage en profondeur les sujets. Daniel espère aider les autres à utiliser le pouvoir de l'IA pour le bien social.