Long Short-Term Memory (LSTM)

Long Short-Term Memory (LSTM)

Réseaux de neurones

Principes et origine Les réseaux de neurones dit « artificiels » sont des systèmes dont la conception est basée sur le fonctionnement du système neurologique d’un cortex cérébral, mais au niveau informatique et surtout à plus petite échelle. (Bheemaiah et al., 2017) Ceux-ci sont optimisés pour permettre des traitements probabilistes de manière performante et sont capables d’obtenir des résultats indépendamment des idées de son concepteur. (Wikipedia, 2018c) Ils sont très utilisés dans des problèmes de statistiques où il est par exemple nécessaire d’effectuer une classification automatique de consommateurs selon leur âge et leur sexe. L’origine des réseaux de neurones artificiels a en fait commencé par la création du « Perceptron » qui a été inventé en 1958 par le psychologue américain Frank Rosenblatt.(Rosenblatt, 1958) Ce préambule ne parle pas d’un « réseau de neurones », mais il modélise plutôt le fonctionnement d’un seul et unique neurone avec des informations qui arrivent en entrée(inputs en anglais), un traitement en interne et une information en sortie(outputs en anglais). Voici comment on peut se représenter Et voici comment un neurone est schématiquement représenté dans le fonctionnement du cerveau humain : On peut observer que le fonctionnement est le même, à savoir que le neurone humain reçoit ses informations sur des dendrites, qu’il effectue ce pour quoi il a été conçu dans le noyau et qu’il transmet le message au suivant via l’axone. Au même titre, le Perceptron reçoit des données en inputs, effectue ses traitements dans la couche qui contient un seul neurone et transmet ses résultats en outputs.

Dans la Figure 1, le premier niveau, représenté par les « in1 », « in2 » et « inn », contient toutes les données en entrée que nous voulons traiter avec notre réseau pondéré par des poids. Par exemple, nous lui fournissons une liste de mails pour lesquels nous aimerions savoir ceux contenant des spams. Le deuxième niveau qui est représenté par « l’unique neurone » sur la Figure 1 va contenir une fonction d’activation des connexions neurologiques. Celle-ci va nous permettre d’ajuster les connexions en entrée du neurone en fonction du résultat obtenu avec cette fonction. Pour le dernier niveau, celui des outputs, il nous fournira un seul résultat qui sera la prédiction finale. Pour reprendre l’exemple des mails, l’output pourrait être le fait de savoir si un mail est bel et bien un spam ou non. Dans son ensemble, le Perceptron fonctionne de la manière suivante : Nous avons des entrées qui lui sont données avec un poids correspondant à chacune d’elles. (Un poids ou poids synaptique est un coefficient numérique qui est attribué à chacune des entrées d’un neurone, de manière aléatoire au début puis les poids sont adaptés au fur et à mesure, et qui permet de pondérer celles-ci.(Wikipedia, 2017)

Le Perceptron va ensuite faire une somme pondérée (les entrées multipliées par son poids correspondant), il va ajouter un biais et pour finir, une fonction d’activation est appliquée. En fonction du problème à résoudre, la somme pondérée peut suffire, mais dans certains cas, une fonction d’activation peut être appliquée, tel que Sigmoide et Relu.(Statistica, 2013) Un biais est utilisé dans les réseaux de neurones artificiels pour permettre de déplacer la tangente verticale pour qu’elle sépare plus efficacement les classes à prédire. La tangente verticale est une droite placée sur un espace à deux dimensions et permet de représenter de manière graphique la séparation entre deux classes, qui elles-mêmes sont deux états différents que peut prendre un attribut (homme ou femme, blond ou brun, riche ou pauvre…). Si nous prenons le cas d’une fonction linéaire qui sépare deux classes de personnes, les hommes et les femmes, la représentation graphique se présentera ainsi :

Le Perceptron multi couches

Le Perceptron qui ne contenait qu’un seul neurone a évolué pour permettre le traitement de problèmes non linéaires. Ainsi, il est possible de classer nos inputs en plus de deux outputs différents (non binaire) grâce à l’ajout de plusieurs couches cachées avec un nombre de neurones variable(L, 2018). Ainsi, le fonctionnement du Perceptron qui reçoit des inputs et qui calcule un output est conservé, à la différence qu’ici les neurones d’une couche sont reliés à tous les neurones de la couche suivante. La couche cachée qui contenait uniquement un neurone précédemment, en contient désormais « n » et avec également un output possible. Voici une figure qui exprime les modifications apportées : (Wikipedia, 2018b) Le traitement de chacun des neurones des couches cachées utilise toujours les inputs pondérés par des poids en entrée et y applique une fonction d’activation pour tous les neurones. Dans ce système, lorsque la fonction d’activation a donné un résultat qui est au-dessus du seuil d’activation définit, la connexion entre le neurone courant et les suivants se renforce. Dans le cas contraire, l’activation de la connexion entre le neurone courant et les suivants ne se fait pas et c’est ainsi, par propagation depuis les inputs, vers les outputs, que le Perceptron multi couches fonctionne. Cependant, il demeure le problème de propagation de l’erreur lorsque les résultats se rependent ainsi de couche en couche. C’est-à-dire qu’à chaque passage d’une couche « n » à une couche « n+1 », le réseau commet de légères erreurs qui, au fil du passage dans le réseau, s’agrandissent et risquent donc de fausser les résultats finaux.

Ce phénomène peut être réduit par l’utilisation de l’algorithme du gradient qui nous permet de calculer l’erreur de la dernière couche vers la première. La rétropropagation de cet algorithme permet de converger itérativement vers un paramétrage des poids synaptiques le plus optimisé possible.(Wikipedia, 2018e) Le fait d’utiliser cet algorithme de manière itérative constitue « l’entraînement » du réseau de neurones et nous en parlons dans la section « 5.2 Phase d’apprentissage ». L’utilisation du gradient se fait par comparaison entre le résultat obtenu après l’utilisation de notre réseau de neurones avec le résultat attendu. L’algorithme est utilisé de manière itérative pour que cette différence diminue jusqu’à atteindre un minimum local, voire global (voir Figure 5). Le minimum global défini le minimum qu’il est possible d’atteindre globalement à toutes les applications de l’algorithme du gradient. On parle alors de gradient global.(Dupré, 2017) Alors que le minimum local définit le minimum qu’il a été possible d’atteindre pour l’instant mais qui pourrait ne pas être le plus bas niveau.

Voici une représentation graphique de la descente du gradient lorsqu’il est appliqué itérativement sur le résultat d’une fonction : On peut voir sur la Figure 5 : Descente du Gradient la courbe représentant une fonction d’erreur avec la descente du gradient représenté ici par le point brun qui descend le long de la fonction d’erreur pour y trouver le minimum. Une fois celui-ci trouvé, le réseau adapte les différents poids de chaque connexion pour arriver enfin au résultat qui minimise au maximum l’erreur. Ainsi, le réseau devient de plus en plus précis dans ses prédictions du fait que l’erreur tend à diminuer et qu’il y a un renforcement des connections neurologiques qui offre des prédictions correctes et une diminution de l’importance des connexions dont résultent des prédictions erronées.

Origine et utilisation actuelle CNN qui signifie Convolutional Neural Network est un réseau de neurones à convolution. Il consiste à un empilage multicouche de perceptron dans le but de traiter des images et pour éviter d’avoir un nombre trop important de connexion et de poids synaptiques. (Doukkali, 2017) Par exemple, si une image a une taille de 1’024 pixels, ce qui fait 32 * 32 pixels et que la première couche cachée contient 128 neurones, ce réseau de neurones multicouche aurait 1024 entrées et 131’072 connexions synaptiques pondérées par des poids (1’024 * 128). Alors qu’un réseau de neurones à convolution va séparer une image en entrée en plusieurs images à l’aide d’une étape de convolution. Par conséquent, nous parlons d’empilage multicouche, car il y aura plusieurs couches qui auront différentes responsabilités comme la convolution ou le pooling.

Il n’est pas nécessaire de détailler d’avantage chaque étape d’un réseau de neurones de type CNN dans le cadre de ce chapitre, puisqu’il s’agit ici de faire un état de l’art des différentes architectures existantes et d’en survoler leur fonctionnement. Nous entrerons dans les détails de l’architecture choisie après la rubrique « 2.4 Lequel choisir ? ». Ce modèle est inspiré du fonctionnement du cortex visuel des animaux puisque celui-ci occupe le lobe occipital du cerveau et sert au traitement des informations visuelles et que les neurones de cette région se chevauchent lors du pavage du champ visuel.(Wikipedia, 2018d) Dans le cadre de l’analyse d’une image par un réseau de neurones convolutif, il s’agit de découper celle-ci en petites zones, aussi appelés « tuiles » d’une taille que nous devons définir. Chacune de ses tuiles correspond à un input dans le réseau de neurones et sera donc traitée individuellement par un neurone.(Wikipedia, 2018d) L’idée directrice du CNN est de ne pas comparer l’entièreté d’une image avec une autre pour savoir si elles sont similaires, mais de comparer certaines caractéristiques de celles-ci pour déterminer si elles contiennent des similitudes. Ceci permet d’avoir par exemple une image contenant un « X » :

Le rapport de stage ou le pfe est un document d’analyse, de synthèse et d’évaluation de votre apprentissage, c’est pour cela rapport gratuit propose le téléchargement des modèles gratuits de projet de fin d’étude, rapport de stage, mémoire, pfe, thèse, pour connaître la méthodologie à avoir et savoir comment construire les parties d’un projet de fin d’étude.

Table des matières

Déclaration
Remerciements
Résumé
Liste des figures
1. Introduction
2. Réseaux de neurones
2.1 Principe et origine
2.2 Le Perceptron multi couches
2.3 Les variantes actuelles
2.3.1 CNN
2.3.1.1 Origine et utilisation actuelle
2.3.2 RNN
2.3.2.1 Origine et utilisation actuelle
2.3.2.2 Vanishing / Exploding gradient
2.4 Lequel choisir ?
3. Long Short-Term Memory (LSTM)
3.1 Fonctionnement
3.2 Particularités et paramètres
3.2.1 Word embeddings
3.2.1.1 Encodage One-hot
3.2.1.2 TF-IDF (Term Frequency-Inverse document Frequency)
3.2.1.3 Word2Vec
3.2.1.4 GloVe (Global Vectors for Word Representation)
3.2.1.5 FastText
3.2.1.6 Poincaré embeddings
3.2.1.7 Choix
3.2.1.7.1 TF-IDF vs Word2Vec
3.2.1.7.2 Word2Vec vs GloVe
3.2.1.7.3 GloVe vs FastText
3.2.1.7.4 GloVe vs Poincaré
4. Siamese networks
4.1 Fonctionnement
5. De la théorie à la pratique
5.1 TensorFlow
5.1.1 Les bases de Tensorflow
5.1.1.1 Tensor
5.1.1.2 Session
5.1.1.3 Variables
5.1.2 Graphes computationnels
5.1.2.1 Scope
5.2 Phase d’apprentissage
5.2.1 Bonnes pratiques
5.2.1.1 Général
5.2.1.2 Hyperparamètres
5.3 Phase de test
5.3.1 Bonnes pratiques
6. Création du modèle
6.1 Jeu de données
6.2 API Embeddings
6.3 Entraînement du modèle
6.4 Résultats
7. Test du modèle construit
7.1 Résultats
8. Synthèse et perspectives
9. Conclusion
Bibliographie

Rapport PFE, mémoire et thèse PDFTélécharger le rapport complet

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *