Suivez nous sur

Qu'est-ce qu'un encodeur automatique ?

AI 101

Qu'est-ce qu'un encodeur automatique ?

mm

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 auto-encodeurs apprennent automatiquement. Ils ne nécessitent pas d'étiquettes et, avec suffisamment de données, il est facile de leur permettre d'atteindre des performances élevées sur un type de données d'entrée spécifique.

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

Les auto-encodeurs convolutionnels codent les données d'entrée en les divisant en sous-sections, puis en les convertissant en signaux simples qui sont additionnés pour créer une nouvelle représentation des données. Similaire aux réseaux de neurones convolutionnels, un auto-encodeur convolutionnel est spécialisé dans l'apprentissage des données d'image et utilise un filtre appliqué à l'image entière, section par section. Les codages générés par la couche de codage peuvent être utilisés pour reconstruire l'image, la refléter ou en modifier la géométrie. 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)

Les auto-encodeurs de débruitage introduisent du bruit dans le codage, ce qui produit un codage corrompu 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 à l'entrée d'origine, et non à 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 aux données d'origine, le réseau identifie les caractéristiques les plus importantes et celles qui sont sans importance/corrompues. Autrement dit, pour qu'un modèle puisse débruiter les images corrompues, il doit avoir extrait les caractéristiques importantes des données de l'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 et L'apprentissage en profondeur les sujets. Daniel espère aider les autres à utiliser le pouvoir de l'IA pour le bien social.