Auto-encodeur, encoder l’information avec des réseaux de neurones

in #fr6 years ago

Lors de notre analyse des réseaux de neurones, nous avons vu son fonctionnement lorsque nous lui fournissons un ensemble de données. À partir de ces données, notre système va, dans un premier temps, extraire les informations qui lui semblent importantes. Puis, à partir de ces caractéristiques, il va pouvoir classifier notre objet et déterminer la catégorie d’appartenance de notre objet donné en paramètre. Ce qui pourrait être intéressant est de réaliser le processus inverse. En effet, on pourrait demander à notre modèle de nous donner une donnée correspondant à une catégorie que nous demanderions.

Pour illustrer cela, prenons l’exemple d’un réseau de neurones à convolution, utilisé dans le traitement de l’image. Nous allons prendre le cas d’un système de classification d’images pour des nombres allant de 0 à 9. Notre objectif va être de demander à notre système de nous donner l’image correspondant au nombre demandé. Par exemple, si je demande à mon système le nombre 1, j’aimerais recevoir une image avec le nombre 1 présent sur celle-ci. Afin de réaliser ce genre de système, nous allons utiliser un auto-encodeur.

Compositions d'un auto-encodeur

Autoencoder_structure.png
Source

Un auto-encodeur est composé de deux parties. D’un encodeur et d’un décodeur. Le but de l’encodeur va être, comme son nom l’indique, d’encoder l’information. Pour ce faire, notre modèle va, à partir de nos données d’entrées, récupérer les informations qui lui semblent importantes. Notre modèle va donc extraire les caractéristiques qui sont essentielles à la représentation de notre donnée originale. Cela va lui permettre d’obtenir un vecteur qui résume les caractéristiques de notre donnée d’entrée.

La seconde étape est celle liée au décodeur. Son objectif va être de décoder l’information. Ainsi, nous allons, à partir de notre vecteur de données, développé les caractéristiques afin d’enrichir notre donnée. Nous allons donc paraphraser notre donnée afin d’obtenir une donnée proche de l’original, c’est-à-dire une donnée proche de celle que nous avions avant le passage dans notre encodeur.

Pour résumer, nous allons fournir à notre auto-encodeur un objet A que nous allons encoder et obtenir un vecteur B. À partir de ce vecteur, nous allons le donner à notre décodeur, et nous allons obtenir un objet A’. Notre objectif final est d’obtenir une ressemblance très proche entre notre objet A et notre objet A’.

Usage des auto-encodeurs

Les auto-encodeurs sont utilisés dans de nombreux cas d’application. Tout d’abord, il nous est possible de les utiliser pour réaliser de la compression. Plusieurs cas de figure sont possibles. Tout d’abord, nous pouvons stocker nos données sous forme de vecteur afin de pouvoir minimiser l’information nécéssaire. On pourrait par exemple le réaliser pour des images. Le second cas de figure que nous pourrions envisager est pour de l’agrandissement d’images.

Les auto-encodeurs sont très intéressants lorsque nous avons énormément de données a géré. En effet, si nous souhaitons écarter de notre base de données un ensemble d’images contenant une certaine caractéristique, il est très intéressant de comparer le vecteur qui résume notre donnée afin de sélectionner uniquement les données qui nous intéresse. Cela nous permet de limiter le temps de calcul sur notre image. Bien entendu, il nous faudra au préalable créer pour chacune de nos données un vecteur associé. Cependant, si nous souhaitons réaliser diverses opérations sur nos données, cela peut-être très intéressant.

Enfin, les auto-encodeurs peuvent être utilisés afin de réaliser du débruitage. En effet, si nous, par exemple, une image avec un bruit (des taches) sur celle-ci, nous pouvons avec notre système d’auto-encodeur la débruiter et obtenir une image nette. Cela fonctionne, car notre auto-encodeur va, durant la phase d’encodage, récupérer les caractéristiques principales de notre image. Puis, avec le vecteur obtenu, il va pouvoir reconstruire l’image sans tenir compte des perturbations présentes au préalable sur notre image. Bien entendu, si notre image à un bruit trop important et que les caractéristiques majeures ne sont plus visibles, alors la reconstruction de notre image ne sera pas performante.

Conclusion

Les auto-encodeurs sont des réseaux de neurones fonctionnant en deux temps. Nous allons avoir une phase d’encodage et une phase de décodage. Durant ces phases, nous allons transformer notre donnée d’origine en un vecteur regroupant les caractéristiques principales de notre donnée. Puis, l’objectif de notre réseau va être, à partir de ce vecteur, d’obtenir une donnée similaire à celle que nous avons fourni à notre réseau au tout début.

Pour aller plus loin

Pour les programmer

Sort:  




This post has been voted on by the SteemSTEM curation team and voting trail in collaboration with @curie.

If you appreciate the work we are doing then consider voting both projects for witness by selecting stem.witness and curie!

For additional information please join us on the SteemSTEM discord and to get to know the rest of the community!

Merci très intéressant ! Pourquoi tu ne te lancerais pas dans un ebook sur l' IA ? ;-)

Merci, c'est un de mes objectifs pour cette nouvelle année ^^, je pensais dans un premier temps écrire des articles sur divers sujets touchant toujours le domaine de l'IA. Puis essayer de réunir l'ensemble de ces sujets dans un e-book tout en gardant une certaine "souplesse" dans mes explications pour toucher une majorité de personnes.
En revanche, je ne me suis pas trop renseigné sur comment bien le rédiger ou où est ce que je pourrai le publier une fois terminé. Encore faut-il que je le rédige ;p

Mais avec bcp plus d'exemples alors! Ca serait un plus enorme (qui est complique a mettre en place via steem).

Bien entendu, je compte ajouter des exemples et pourquoi pas des cas d'applications pratiques pouvant permettre aux lecteurs de tester ces algorithmes. Mais ce projet et encore loin d'être réalisé, cela va demander du temps et de la réflexion sur son contenu ^^

Apres, si ca serait immediat and sans travail requis, ca ne serait pas marrant non plus :D

Ce post a été supporté par notre initiative de curation francophone @fr-stars.
Rendez-vous sur notre serveur Discord pour plus d'informations

Congratulations @rerere! You received a personal award!

Happy Birthday! - You are on the Steem blockchain for 1 year!

Click here to view your Board

Support SteemitBoard's project! Vote for its witness and get one more award!