Un autoencodeur est un type de réseau de neurones artificiels utilisé pour apprendre des codages efficaces de données non étiquetées, une forme d'apprentissage non supervisé. Il apprend deux fonctions : une fonction d'encodage qui transforme les données d'entrée en une représentation compressée, et une fonction de décodage qui reconstruit les données originales à partir de cette représentation. Le réseau est entraîné à minimiser la différence entre l'entrée et sa reconstruction, apprenant ainsi un plongement de dimension inférieure qui capture la structure essentielle des données. Ces plongements sont souvent utilisés pour la réduction de dimensionnalité ou comme entrées pour d'autres algorithmes d'apprentissage automatique.
Les autoencodeurs ont de nombreuses variantes qui imposent des contraintes supplémentaires pour rendre les représentations apprises plus utiles. Les autoencodeurs régularisés, tels que les autoencodeurs parcimonieux, de débruitage et contractifs, sont efficaces pour les tâches de classification, tandis que les autoencodeurs variationnels peuvent générer de nouveaux échantillons de données similaires à la distribution d'entraînement. Les applications incluent la reconnaissance faciale, la détection d'anomalies, la détection de caractéristiques et l'apprentissage de significations de mots.
Principes mathématiques
Un autoencodeur est formellement défini par deux ensembles : l'espace des messages encodés \(\mathcal{Z}\) et l'espace des messages décodés \(\mathcal{X}\), généralement des espaces euclidiens avec \(\mathcal{X} = \mathbb{R}^m\) et \(\mathcal{Z} = \mathbb{R}^n\) où \(m > n\). Il comprend également deux familles paramétrées de fonctions : une famille d'encodeurs \(E_\phi: \mathcal{X} \to \mathcal{Z}\) et une famille de décodeurs \(D_\theta: \mathcal{Z} \to \mathcal{X}\). Pour une entrée \(x\), l'encodeur produit une variable latente \(z = E_\phi(x)\), et le décodeur produit une reconstruction \(x' = D_\theta(z)\). L'encodeur et le décodeur sont généralement des perceptrons multicouches ; par exemple, un encodeur à une couche calcule \(\sigma(Wx + b)\), où \(\sigma\) est une fonction d'activation, \(W\) une matrice de poids et \(b\) un vecteur de biais.
L'entraînement d'un autoencodeur nécessite une tâche définie par une distribution de probabilité de référence \(\mu_{ref}\) sur \(\mathcal{X}\) et une fonction de qualité de reconstruction \(d: \mathcal{X} \times \mathcal{X} \to [0, \infty]\). La fonction de perte est l'erreur de reconstruction attendue \(L(\theta, \phi) = \mathbb{E}_{x \sim \mu_{ref}}[d(x, D_\theta(E_\phi(x)))]\). L'objectif est de trouver les paramètres \(\theta\) et \(\phi\) qui minimisent cette perte, généralement en utilisant des méthodes d'optimisation basées sur le gradient comme Adam ou des variantes de descente de gradient stochastique.
Variantes et régularisations
Plusieurs variantes d'autoencodeurs modifient la fonction de perte ou l'architecture pour encourager des propriétés spécifiques. Les autoencodeurs parcimonieux ajoutent une pénalité sur l'activation des unités cachées, favorisant des représentations parcimonieuses. Les autoencodeurs de débruitage corrompent l'entrée avec du bruit et entraînent le réseau à reconstruire l'original propre, rendant la représentation robuste au bruit. Les autoencodeurs contractifs ajoutent une pénalité sur le jacobien de l'encodeur, encourageant la représentation à être insensible aux petites variations de l'entrée. Ces formes régularisées sont souvent utilisées pour l'extraction de caractéristiques dans les pipelines de classification.
Les autoencodeurs variationnels (VAE) adoptent une approche probabiliste, apprenant une distribution sur les variables latentes et permettant la modélisation générative. Les VAE ont été influents dans la IA générative et sont utilisés dans des applications telles que la synthèse d'images et la découverte de médicaments.
Applications
Les autoencodeurs sont appliqués dans de nombreux domaines. En vision par ordinateur, ils sont utilisés pour la reconnaissance faciale et la détection d'anomalies, où l'erreur de reconstruction met en évidence des motifs inhabituels. En traitement du langage naturel, ils aident à apprendre des plongements de mots et des représentations sémantiques. Ils servent également de blocs de construction dans les architectures de apprentissage profond, comme U-Net pour la segmentation d'images, qui utilise une structure encodeur-décodeur similaire aux autoencodeurs.
Dans l'industrie, les autoencodeurs sont déployés pour la détection de fraude, la détection d'intrusions réseau et la maintenance prédictive. Par exemple, AWS et Google Cloud proposent des services d'apprentissage automatique intégrant la détection d'anomalies basée sur les autoencodeurs. Des institutions de recherche comme MIT CSAIL et Stanford AI Lab ont contribué à faire progresser la théorie et les applications des autoencodeurs.
Relation avec d'autres modèles
Les autoencodeurs sont étroitement liés aux modèles encodeur-décodeur et aux architectures séquence à séquence utilisées dans les transformeurs. Alors que les transformeurs utilisent attention multi-têtes et encodage positionnel pour des tâches comme la traduction, les autoencodeurs se concentrent sur l'apprentissage de représentations non supervisé. Certains grands modèles de langage modernes intègrent des objectifs de type autoencodeur pour le pré-entraînement, comme la modélisation de langage masquée, qui peut être vue comme un autoencodeur de débruitage sur du texte.
Limitations et extensions
Un autoencodeur de base peut apprendre une fonction identité si l'espace latent est trop grand, donc des contraintes comme des couches de goulot d'étranglement ou une régularisation sont nécessaires. Le surapprentissage est une préoccupation, traitée par des techniques telles que dropout et normalisation par lots. Les extensions incluent les autoencodeurs empilés, où plusieurs couches sont entraînées de manière gloutonne, et l'élagage de modèles pour réduire le coût de calcul. La recherche se poursuit sur l'amélioration de la robustesse et de l'interprétabilité, avec des contributions de groupes comme OpenAI et Google DeepMind.