Fondamentaux de l’IA

Qu’est-ce qu’un Autoencodeur ?

mm
Ajouter Unite.AI à vos sources prÃĐfÃĐrÃĐes sur Google

Si vous avez lu des articles sur les techniques d’apprentissage non supervisÃĐ, vous avez peut-Être dÃĐjà entendu parler du terme “autoencodeur”. Les autoencodeurs sont l’un des principaux moyens par lesquels les modÃĻles d’apprentissage non supervisÃĐ sont dÃĐveloppÃĐs. Mais qu’est-ce qu’un autoencodeur exactement ?

En rÃĐsumÃĐ, les autoencodeurs fonctionnent en prenant des donnÃĐes, en les compressant et en les codant, puis en reconstruisant les donnÃĐes à partir de la reprÃĐsentation codÃĐe. Le modÃĻle est entraÃŪnÃĐ jusqu’à ce que la perte soit minimisÃĐe et que les donnÃĐes soient reproduites aussi fidÃĻlement que possible. À travers ce processus, un autoencodeur peut apprendre les caractÃĐristiques importantes des donnÃĐes. MÊme si c’est une dÃĐfinition rapide d’un autoencodeur, il serait bÃĐnÃĐfique de prendre un regard plus approfondi sur les autoencodeurs et de mieux comprendre comment ils fonctionnent. Cet article tentera de dÃĐmystifier les autoencodeurs, en expliquant l’architecture des autoencodeurs et leurs applications.

Qu’est-ce qu’un Autoencodeur ?

Les autoencodeurs sont des rÃĐseaux de neurones. Les rÃĐseaux de neurones sont composÃĐs de plusieurs couches, et l’aspect dÃĐfinissant d’un autoencodeur 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 le mÊme nombre d’unitÃĐs est que l’autoencodeur vise à reproduire 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 passent à travers un autoencodeur ne sont pas simplement mappÃĐes directement de l’entrÃĐe à la sortie, ce qui signifie que le rÃĐseau ne copie pas simplement les donnÃĐes d’entrÃĐe. Il y a trois composants dans un autoencodeur : une partie de codage (entrÃĐe) qui comprime les donnÃĐes, un composant qui gÃĻre les donnÃĐes compressÃĐes (ou goulet d’ÃĐtranglement), et une partie de dÃĐcodage (sortie). Lorsque les donnÃĐes sont introduites dans un autoencodeur, elles sont codÃĐes, puis compressÃĐes pour atteindre une taille plus petite. Le rÃĐseau est ensuite entraÃŪnÃĐ sur les donnÃĐes codÃĐes et compressÃĐes, et il produit une recrÃĐation de ces donnÃĐes.

Pourquoi voudriez-vous entraÃŪner un rÃĐseau pour simplement reconstruire les donnÃĐes qui lui sont fournies ? La raison est que le rÃĐseau apprend l’ÂŦ essence Âŧ ou les caractÃĐristiques les plus importantes des donnÃĐes d’entrÃĐe. Une fois que vous avez entraÃŪnÃĐ le rÃĐseau, un modÃĻle peut Être crÃĐÃĐ pour synthÃĐtiser des donnÃĐes similaires, avec l’ajout ou la soustraction de certaines caractÃĐristiques ciblÃĐes. Par exemple, vous pourriez entraÃŪner un autoencodeur sur des images granuleuses, puis utiliser le modÃĻle entraÃŪnÃĐ pour supprimer le grain/le bruit de l’image.

Architecture de l’Autoencodeur

Examinons l’architecture d’un autoencodeur. Nous allons discuter de l’architecture principale d’un autoencodeur ici. Il existe des variations de cette architecture gÃĐnÃĐrale que nous allons discuter 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 autoencodeur peut essentiellement Être divisÃĐ en trois composants diffÃĐrents : l’encodeur, un goulet d’ÃĐtranglement et le dÃĐcodeur.

La partie encodeur de l’autoencodeur est gÃĐnÃĐralement un rÃĐseau feedforward, 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 de l’espace latent, en gÃĐnÃĐrant une nouvelle reprÃĐsentation des donnÃĐes qui a une dimensionnalitÃĐ rÃĐduite.

Les couches de code, ou le goulet d’ÃĐtranglement, traitent de la reprÃĐsentation compressÃĐe des donnÃĐes. Le code du goulet 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 est de dÃĐterminer quels aspects des donnÃĐes doivent Être prÃĐservÃĐs et lesquels peuvent Être ÃĐliminÃĐs. Le code du goulet d’ÃĐtranglement doit ÃĐquilibrer deux considÃĐrations diffÃĐrentes : la taille de la reprÃĐsentation (à quel point la reprÃĐsentation est compacte) et la pertinence des variables/caractÃĐristiques. Le goulet d’ÃĐtranglement effectue une activation ÃĐlÃĐment par ÃĐlÃĐment sur les poids et les biais du rÃĐseau. La couche du goulet d’ÃĐtranglement est ÃĐgalement parfois appelÃĐe reprÃĐsentation latente ou variables latentes.

La couche dÃĐcodeur est responsable de prendre les donnÃĐes compressÃĐes et de les convertir en une reprÃĐsentation avec les 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 autoencodeur est une architecture feed-forward, avec une structure similaire à un perceptron à une seule couche utilisÃĐ dans les perceptrons multicouches. Tout comme les rÃĐseaux de neurones feed-forward rÃĐguliers, l’auto-encodeur est entraÃŪnÃĐ Ã  l’aide de la rÃĐtropropagation.

Attributs de l’Autoencodeur

Il existe diffÃĐrents types d’autoencodeurs, mais ils partagent tous certaines propriÃĐtÃĐs.

Les autoencodeurs apprennent automatiquement. Ils n’ont pas besoin d’ÃĐtiquettes, et s’ils reçoivent suffisamment de donnÃĐes, il est facile d’obtenir un autoencodeur qui atteint de hautes performances sur un type spÃĐcifique de donnÃĐes d’entrÃĐe.

Les autoencodeurs sont spÃĐcifiques aux donnÃĐes. Cela signifie qu’ils ne peuvent compresser que des donnÃĐes qui sont trÃĻs similaires à celles sur lesquelles l’autoencodeur a dÃĐjà ÃĐtÃĐ entraÃŪnÃĐ. Les autoencodeurs sont ÃĐgalement perdus, 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 autoencodeur, les ingÃĐnieurs en apprentissage automatique doivent prÊter attention à quatre hyperparamÃĻtres de modÃĻle diffÃĐrents : la taille du code, le nombre de couches, les nœuds par couche et la fonction de perte.

La taille du code dÃĐtermine le nombre de nœuds qui commencent la partie mÃĐdiane du rÃĐseau, et moins de nœuds compressent les donnÃĐes davantage. Dans un autoencodeur profond, le nombre de couches peut Être n’importe quel nombre que l’ingÃĐnieur juge appropriÃĐ, mais le nombre de nœuds par couche doit diminuer à mesure que l’encodeur progresse. Inversement, le nombre de nœuds par couche doit augmenter à mesure que les couches du dÃĐcodeur s’approchent de la derniÃĻre couche. Enfin, la fonction de perte d’un autoencodeur est gÃĐnÃĐralement soit l’entropie croisÃĐe binaire, soit l’erreur quadratique moyenne. L’entropie croisÃĐe binaire est appropriÃĐe pour les cas oÃđ les valeurs d’entrÃĐe des donnÃĐes sont dans une plage de 0 à 1.

Types d’Autoencodeurs

Comme mentionnÃĐ prÃĐcÃĐdemment, il existe des variations de l’architecture classique de l’autoencodeur. Examinons les diffÃĐrentes architectures d’autoencodeurs.

Peu dense

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

Alors que les autoencodeurs ont gÃĐnÃĐralement un goulet d’ÃĐtranglement qui comprime les donnÃĐes en rÃĐduisant le nombre de nœuds, les autoencodeurs peu denses sont une alternative à ce format de fonctionnement typique. Dans un rÃĐseau peu dense, les couches cachÃĐes maintiennent 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, de sorte que la fonction de perte capture mieux les caractÃĐristiques statistiques des donnÃĐes d’entrÃĐe. Pour le dire autrement, alors que les couches cachÃĐes d’un autoencodeur peu dense ont plus d’unitÃĐs qu’un autoencodeur traditionnel, seuls un certain pourcentage d’entre eux sont actifs à un moment donnÃĐ. Les fonctions d’activation les plus impactantes sont prÃĐservÃĐes et les autres sont ignorÃĐes, et cette contrainte aide le rÃĐseau à dÃĐterminer les caractÃĐristiques les plus saillantes des donnÃĐes d’entrÃĐe.

Contractif

Les autoencodeurs contractifs sont conçus pour Être rÃĐsistants aux petites variations des donnÃĐes, en maintenant une reprÃĐsentation cohÃĐrente des donnÃĐes. Cela est rÃĐalisÃĐ 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 de l’encodeur d’entrÃĐe. L’effet de cette technique de rÃĐgularisation est que le modÃĻle est forcÃĐ de construire un codage oÃđ les entrÃĐes similaires auront des codages similaires.

Convolutionnel

Les autoencodeurs 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. Semblable aux rÃĐseaux de neurones convolutionnels, un autoencodeur convolutionnel se spÃĐcialise dans l’apprentissage de donnÃĐes d’image, et il utilise un filtre qui est dÃĐplacÃĐ sur toute la section d’image section par section. Les codages gÃĐnÃĐrÃĐs par la couche d’encodeur peuvent Être utilisÃĐs pour reconstruire l’image, la reflÃĐter ou modifier sa gÃĐomÃĐtrie. Une fois que les filtres ont ÃĐtÃĐ appris par le rÃĐseau, ils peuvent Être utilisÃĐs sur n’importe quelle entrÃĐe suffisamment similaire pour extraire les caractÃĐristiques de l’image.

Denoising

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

Les autoencodeurs de dÃĐbruitage introduisent du bruit dans le codage, aboutissant à un codage qui est une version corrompue des donnÃĐes d’entrÃĐe originales. 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 les donnÃĐes d’entrÃĐe originales et non avec les donnÃĐes d’entrÃĐe corrompues. L’objectif est que le rÃĐseau sera capable de reproduire la version originale non corrompue de l’image. En comparant les donnÃĐes corrompues avec les donnÃĐes originales, le rÃĐseau apprend quelles caractÃĐristiques des donnÃĐes sont les plus importantes et lesquelles sont des corruptions/non importantes. En d’autres termes, pour que le modÃĻle dÃĐbruite les images corrompues, il doit avoir extrait les caractÃĐristiques importantes des donnÃĐes d’image.

Variationnel

Les autoencodeurs variationnels fonctionnent en faisant des hypothÃĻses sur la façon dont les variables latentes des donnÃĐes sont distribuÃĐes. Un autoencodeur variationnel produit une distribution de probabilitÃĐ pour les diffÃĐrentes caractÃĐristiques des images d’entraÃŪnement/les attributs latents. Lors de l’entraÃŪnement, l’encodeur crÃĐe des distributions latentes pour les diffÃĐrentes caractÃĐristiques des images d’entrÃĐe.

 

Parce que le modÃĻle apprend les caractÃĐristiques des images comme des distributions gaussiennes au lieu de valeurs discrÃĻtes, il est capable d’Ê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 rend une image basÃĐe sur cet ÃĐchantillon de vecteur. 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 inverser la conception d’une image, en gÃĐnÃĐrant de nouvelles images qui ressemblent aux images d’entraÃŪnement originales.

Lors de l’entraÃŪnement du rÃĐseau, les donnÃĐes codÃĐes sont analysÃĐes et le modÃĻle de reconnaissance produit deux vecteurs, en tirant les moyennes et les ÃĐcarts types des images. Une distribution est crÃĐÃĐe sur la base de ces valeurs. Cela 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 des Autoencodeurs

Les autoencodeurs peuvent Être utilisÃĐs pour une grande variÃĐtÃĐ d’applications, mais ils sont gÃĐnÃĐralement utilisÃĐs pour des tÃĒches comme la rÃĐduction de dimension, le dÃĐbruitage de 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 de donnÃĐes consiste à utiliser les autoencodeurs pour supprimer le grain/le bruit des images. De mÊme, les autoencodeurs peuvent Être utilisÃĐs pour rÃĐparer d’autres types de dommages d’image, comme les images floues ou les images manquantes. La rÃĐduction de dimension peut aider les rÃĐseaux de haute capacitÃĐ Ã  apprendre des caractÃĐristiques utiles des images, ce qui signifie que les autoencodeurs peuvent Être utilisÃĐs pour amÃĐliorer l’entraÃŪnement d’autres types de rÃĐseaux de neurones. C’est ÃĐgalement vrai pour l’utilisation des autoencodeurs pour l’extraction de caractÃĐristiques, car les autoencodeurs peuvent Être utilisÃĐs pour identifier les caractÃĐristiques d’autres ensembles de donnÃĐes pour entraÃŪner d’autres modÃĻles.

En termes de gÃĐnÃĐration d’images, les autoencodeurs 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 de sÃĐquence à sÃĐquence peuvent Être utilisÃĐs pour dÃĐterminer la structure temporelle des donnÃĐes, ce qui signifie qu’un autoencodeur peut Être utilisÃĐ pour gÃĐnÃĐrer la prochaine ÃĐvÃĐnement dans une sÃĐquence. Pour cette raison, un autoencodeur pourrait Être utilisÃĐ pour gÃĐnÃĐrer des vidÃĐos. Enfin, les autoencodeurs profonds peuvent Être utilisÃĐs pour crÃĐer des systÃĻmes de recommandation en dÃĐtectant des modÃĻles relatifs à 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 avec des spÃĐcialitÃĐs en Machine Learning et Deep Learning sujets. Daniel espÃĻre aider les autres à utiliser le pouvoir de l'IA pour le bien social.