Les réseaux de neurones
Généralités
Un réseau de neurones est un ensemble de fonctions optimisé par des techniques d’apprentissage automatique. On les utilise principalement dans le domaine des statistiques mais pas seulement. Ils fonctionnent sur le principe d’induction depuis les données à l’aide d’un entraînement. Le but initial était d’imiter le fonction du cerveau humain à travers ses neurones et ses synapses, en particulier les capacités d’apprentissage, de mémorisation et de traitement d’informations incomplètes. Chaque processeur du réseau calcule une sortie unique à partir des informations qu’il reçoit en entrée puis les sorties sont mises en commun. C’est une vision extrêmement simplifié du fonctionnement des neurones humains qui reçoivent des signaux de centaines de milliers de synapses à la fois contre une dizaine maximum pour un « neurone » artificiel et la communication entre eux est très complexe. D’abord à la mode, puis laissés de côté, les réseaux de neurones ont connus un renouveau en 1985 avec l’arrivée de la rétropropagation en gradient utilisée notamment dans le modèle de perceptron multicouche toujours utilisé aujourd’hui.
Ils sont particulièrement appréciés pour leur capacité de classification et de généralisation. C’est cette dernière qui nous intéresse afin d’induire et de généraliser la compositionnalité entre les membres d’un couple adjectif-nom. Pour être efficace en revanche, un réseau de neurones doit disposer de grandes quantités de données pour ne pas faire de sur-apprentissage sur des données non-représentatives. Il existe plusieurs modèles de réseau de neurones. Celui que nous utilisons est basé sur un autoencodeur. Il s’agit d’un modèle de type « denoising » c’est-à-dire « débruitant » en français. Nous utiliserons le nom anglais faute d’une traduction officielle plus heureuse. Denoising auto-encoder
Le principe d’un autoencodeur (Figure 1) est qu’il apprend grâce à une phase d’entraînement une représentation compressée et distribuée d’un jeu de données (ce qu’on appelle l’encodage) afin notamment d’en réduire la dimension. La forme la plus connue est le perceptron multicouche créé pour pouvoir résoudre des problèmes non linéaires. Il comprend une couche d’entrée à laquelle on applique une fonction pour obtenir une à plusieurs couches cachées auxquelles on applique une fonction pour calculer une couche de sorties, se voulant être la reconstruction de la couche d’entrée.
Le denoising autoencodeur est un modèle non-supervisé conçu par Vincent et al.
3[VL+08] pour rendre le modèle précédent robuste en cas de données bruitées. Sans ce système, le modèle pourrait sur-apprendre et reproduire exactement les données d’entrée en sortie, qu’elles soient bruitées ou non, ce qui serait mauvais pour la généralisation. Pour remédier à cela, les données d’entrée sont bruitées, c’est-à-dire aléatoirement rendues nulles (égales à zéro) selon une probabilité p ou à l’aide d’une Gaussienne. La couche reconstruite est alors calculée à partir des données bruitées. On calcule également une fonction de coût en comparant la couche reconstruite aux données non bruitées initiales afin d’estimer la perte. La fonction de coût doit donc être la plus basse possible. Voir Figure 2 et 3 ci-après.
Notre système de réseau de neurones
Outils et librairies
Python 2.7, Anaconda, pickle, SciPy and NumPy
Notre modèle de réseau de neurones a été développé en python 2.7, un langage très utilisé lorsqu’il s’agit de créer des prototypes grâce à la vitesse d’écriture du code et à sa lisibilité. Il existe en outre une très grande variété de bibliothèques qui permettent de tester rapidement si une solution est possible puisqu’il suffit d’importer les fonctions appropriées, comme nous l’avons fait avec le package Anaconda. Voici une présentation des principales bibliothèques utilisées au cours de ce stage.
Les données que nous utilisons sont très lourdes, nous avons donc utilisé le format Pickle qui transforme un objet python en fichier binaire dans un processus de sérialisation. Ces fichiers peuvent alors être reconstruits plus tard. Pour accélérer encore le traitement de ces données, nous avons utilisé Cpickle qui implémente le même algorithme mais en langage C au lieu de Python, ce qui le rend beaucoup plus rapide.
Utiliser des matrices nous a également poussés à utiliser SciPy et NumPy. Ces derniers permettent de manipuler aisément des tableaux multidimensionnels, notamment grâce à la fonction « array » de NumPy, et de faire de nombreux calculs pré-codés tels que les manipulations de matrices ou encore la corrélation de Spearman.
Theano
Theano est une bibliothèque Python qui permet de définir, d’optimiser et d’évaluer des expressions mathématiques impliquant des tableaux multi-dimensionnels. Ainsi, la communauté a déjà modélisé de nombreuses fonctions , dont la régression logistiqueutilisée dans le modèle de réseau de neurones que nous désirons utiliser. De plus, un exemple de « denoising autoencoder » est entièrement disponible gratuitement sur lesite de la documentation de Theano.
Ce modèle prend donc les données d’entrée x, et les encode dans la couche cachée ypar une fonction non-linéaire telle que la sigmoïde (s). On pondère à l’aide de paramètres générés aléatoirement qui feront partie des paramètres « appris » (W) avec le deuxième paramètre appelé biais (b) puis leurs doubles W’et b’utilisés lorsqu’on reconstruit la couche de sortie.
Corpus d’entraînement et de test
Corpus
Notre corpus est extrait de Wikipédia. Outre sa particularité d’être très imposant au niveau de la quantité de données, il n’est pratiquement composé que de texte au mode affirmatif, des informations brutes, ce qui nous épargne beaucoup de mauvaises interprétations sémantiques dues à la modalité. De plus, le contenu est entièrement libre et gratuit, ce qui en fait un outil très populaire pour la recherche en traitement automatique des langues. Ce corpus a ensuite été lemmatisé et étiqueté grâce au Stanford NLP pipeline ,un outil programmé en java qui prend en entrée un texte brut, le lemmatise et l’étiquette, même les noms propres, grâce au NER ( name entity recognizer), aussi connu sous le nom de CRF Classifier, qui analyse les chaînes de champs inconnus. Il normalise également les dates et heures et s’utilise avec très peu de lignes de codes. Il possède différentes options d’analyse qu’on peut aisément désactiver ou activer comme l’analyse de sentiment. Cet outil utilise pour l’anglais la liste d’étiquettes appelée « Penn Treebank tag set » [MMS93]et [San90]composée de 36 étiquettes.
Dans le corpus, les mots ont ainsi pu être transformés en indices selon leur fréquence et les adjectifs et les noms ont pu être sélectionnés. L’outil word2vec a ensuite été appliqué afin d’obtenir automatiquement les vecteurs associés à chaque adjectif, nom et couple adjectif-nom. Word2vec Word2vec est un outil dont l’algorithme a été écrit par Tomas Mikolov. Nous utilisons l’implémentation dela bibliothèque Gensim créé par Radim Rehurek. Cet outil est fondé sur les sacs-de-mots continus. Cette représentation de texte est basée sur le principe qu’un document est représenté par l’histogramme des occurrences des mots le composant. À chaque mot, on associe sa fréquence dans le document, créant ainsi un vecteur de la même taille que le dictionnaire du document qu’il conviendra de normaliser. Word2vecutilise également les architectures Skip-Grams (voir formule 1) [GA+06] qui fonctionnent comme les n-grammes mais où les tokens adjacents peuvent être « sautés ». Par exemple pour les 2-skips-bigrammes sur la phrase « Insurgents killed in ongoing fighting », on obtiendra : Bi-grams={insurgents killed, killed in, in ongoing, ongoing fighting} 2-skip-bi-grams={insurgents killed, insurgents in, insurgents ongoing, killed in, killed ongoing, killed fighting, in ongoing, in fighting, ongoing fighting}.
Donc, si on cherche à récupérer les couples adjectif-nom de la phrase « She has gorgeous curly red hair. », on obtiendra les couples « red hair », mais aussi « curly hair » et même « gorgeous hair ».
Modèles et paramètres testés
La première étape de nos expérimentations consistait à faire baisser le résultat de la fonction de coût. Pour cela, nous avons testé différentes valeurs de learning rate, à savoir : 1 ; 0,1 ; 0,01 ; 0,02 et 0,001. On calcule également l’efficacité du modèle avec ces différentes valeurs de learning rate grâce à la corrélation de Spearman. Les valeurs ci-dessus ont été testées avec différentes versions de l’autoencodeur correspondant à deux fonctions non-linéaires différentes permettant de généraliser les résultats.
La première utilisait une fonction d’unité linéaire rectifiée ( rectified linear unit), une méthode de réduction du tenseur par création d’une matrice composée de zéros. On sélectionne le maximum, élément par élément, entre cette matrice de zéros et le résultat du calcul du réseau de neurones afin d’éliminer toutes les valeurs négatives. Avec cette méthode, les résultats de la fonction de coût obtenus variaient de 0,86 à 0,36 et la corrélation de Spearman entre une valeur infinitésimale et 0,25 suivant la valeur de learning rateutilisée.
La deuxième méthode utilisait la fonction sigmoïde, une fonction de régression logistique.
La régression logistique permet de prédire une variable à partir de données. Cette méthode donne des valeurs de prédictions entre 0 et 1. Avec ce modèle, on obtient des résultats de fonction de coût entre 0,86 et 0,23 et une corrélation de Spearman entre 0,09 et 0,44, le meilleur résultat étant obtenu avec le learning ratede 0,01. C’est donc la fonction de sigmoïde avec cette valeur delearning rate qui a été sélectionnée pour être également évaluée par le Mean Reciprocal Rank.
Évaluation et résultats
Dans ce chapitre, nous présentons nos deux méthodes d’évaluation, leurs résultats et les conclusions que nous avons pu en tirer. La première méthode consiste à évaluer les modèles sur une tâche de notation de similarité entre deux couples adjectif-nom et à comparer cette notation à celle qu’ont donné des humains pour ces mêmes couples. La deuxième consiste à reconstruire le vecteur de contexte d’un couple adjectif-nom à partir des vecteurs de contexte de l’adjectif et du nom composant ce couple. Ce vecteur reconstruit est alors comparé aux vecteurs calculés par Word2vecpour voir si celui dont il est le plus proche est bien celui qu’il fallait trouver.
1ère méthode de test : corrélation de Spearman
Nous avons évalué notre modèle sur deux tâches différentes. La première, comme dans l’article de Mitchell & Lapata [M&L10]est une tâche de calcul de similarité. Nous avons récupéré le corpus de notation de l’article et en avons extrait celles des duos de couples adjectif -nom uniquement. Ensuite, en recherchant les vecteurs de chaque adjectif et de chaque nom des duos, par exemple pour le duo [Adj1 Nom1; Adj2 Nom2], notre modèle a calculé les vecteurs adjectif-nom de chaque couple (vAN1 et vAN2), les a normalisé, puis a calculé le cosinus de similarité entre les deux vecteurs. Ce cosinus est ensuite utilisé comme notation de similarité du duo. La corrélation de Spearman a ensuite été calculée entre la liste de nos notations et celle des notateurs humains du corpus afin d’en estimer la proximité malgré le fait que nos notes aillent de -1 à 1 et les leurs de 1 à 7. Cette méthode permet justement de comparer les notations malgré les échelles différentes. Nous avons ensuite calculé les notes de similarités avec les modèles de l’article cités précédemment, à savoir additif, additif pondéré, multiplicatif et le modèle basique puis comparé leur notation à celle des humains avec cette même corrélation. Ainsi, nous avons pu mesurer notre autoencodeur aux modèles existants avec des résultats comparables car obtenus à partir du même corpus.
La corrélation de Spearman (nommée d’après Charles Spearman) est une méthode statistique visant à déterminer si des fonctions sont corrélés.Il existe également la corrélation de Pearson qui s’applique aux relations linéaires. La corrélation de Spearman, elle, s’applique aux relations non-linéaires. Elle est également appelée « corrélation de rang » puisqu’elle observe la différence des rangs entre les individus des deux éléments comparés. On peut ainsi détecter des relations dites « monotones » (croissantes ou décroissantes) qu’elle que soit leurs formes (linéaire, exponentiel,puissance). Le résultat de cette corrélation oscille entre -1 et +1 avec : 1 = corrélation totale 0 = aucune corrélation -1 = corrélation inversée.
La corrélation de Spearman doit être validée par un test de significativité car, selon le nombre de données observées, on pourrait ne disposer que de données non -représentatives. Ce coefficient ainsi que la corrélation elle-même est calculé automatiquement par la fonction spearmanrde la librairie SciPy. Malgré tout, notre corpus de test étant composé de plus de 1900 occurrences, les chances que nos données ne soient pas représentatives restent relativement minces.
D’ailleurs, l’indice de données non représentatives est allant de 0 (données représentatives) à 1 (données non représentatives) est pour notre modèle encodeur p1 de 8.9946576975570899e-98. A titre d’information, la corrélation entre les notateurs humains était de 0,52. Elle a été calculée sur des notes de similarités entre couples adjectif-nom et représente l’accord interannotateur. Elle n’est donc pas tout à fait comparable maiselle donne un ordre d’idée. Les notateurs n’étant pas tous d’accord et leurs notes étant toutes présentes dans le corpus de similarité, la corrélation de Spearman ne pourra de toutes façons pas atteindre des valeurs exceptionnelles.
Nous avons gardé deux lots de paramètres (poids et biais) différents pour notre autoencodeur. En effet, nous avons utilisé une deuxième méthode d’évaluation (voir « 2ème méthode : Mean Reciprocal Rank ») et il apparaît que certains paramètres donnant une corrélation de Spearman d’au moins 0,45 soient mauvais dans cette deuxième tâche alors que certains paramètres donnant une corrélation de Spearman un peu plus basse mais toujours correcte donnent un bien meilleur résultat. Ce deuxième lot de poids et biaisest désigné dans le tableau suivant par l’appellation « autoencodeur p2 » alors que celui donnant la meilleure corrélation de Spearman est appelé « autoencodeur p1 »
Dans le modèle additif pondéré, nous avons relevé un exemple de duos de couples adjectif-nom ayant un mauvais score de similarité selon les humains et haut selon le modèle et un pour le cas inverse. Il s’agit respectivement du duo [« high price », « low cost »] et du duo [« old person », « elderly lady »]. Le modèle analyse le contexte. Ainsi donc, on peut supposer que « high price » et « low cost » sont utilisés dans des contextes tellement similaires que le modèle ne voit pas qu’il s’agit d’antonymes. Ils sont en revanche notés comme « pas du tout similaires » par les humains.
Inversement, « elderly lady » a beau être le méronyme de « old person », ce qui vaut au duo une bonne note selon les humains, les deux couples doivent apparaître dans des contextes assez différents. Le manque de connaissance pragmatique empêche alors le modèle de repérer la proximité sémantique du duo.
Une comparaison avec les résultats de notre modèle permet d’encourager les réflexions sur la difficulté du modèle vectoriel à repérer le duo antonyme [« high price », « low cost »] et à mettre en lumière les quelques échecs liés au manque de connaissance pragmatique. Malgré tout, nous pouvons constater que les notes de similarité des modèles suivent relativement bien celles des humains.
Comme pour le modèle additif nous avons relevé pour l’autoencodeur les duos dont la note différait le plus entre humains et modèle. Pour commencer, parmi les duos bien notés par le modèle mais pas par les humains, nous retrouvons le duo d’antonymes [« high price », « low cost »]. Nous trouvons également [« social activity », « economic condition »] ou [«effective way », « practical difficulty »] qui n’ont pas véritablement de lien sémantique au premier abord mais qui doit probablement apparaître dans un contexte similaire. Pour ce modèle, la différence inverse, c’est à dire les cas où le duo obtient une bonne note par les humains et mauvaises par l’autoencodeur, est beaucoup moins flagrante. Il serait néanmoins intéressant de faire une étude approfondie pour savoir si les modèles vectoriels peinent à repérer les antonymes en général ou si ce n’est le cas que pour ce duo.
Pour l’anecdote, dans le modèle autoencodeur p2, nous avons noté un duo étonnant bien noté par les humains mais mal noté par le modèle : [« major issue », « american country »]. Cet exemple incongru nous rappelle la subjectivité des notateurs humains et l’importance des connaissances pragmatiques qu’il manque à nos modèles.
2ème méthode: Mean Reciprocal Rank
Afin de nous donner une autre estimation de nos performances, nous avons utilisé le calcul du Mean Reciprocal Rank (MRR). Cette méthode de statistiques est très utilisée pour calculer la pertinence des résultats de moteurs de recherche. Elle consiste à récupérer, dans une liste de résultat ordonnée, le rang xdu résultat attendu puis d’en prendre l’inverse (1/x). Cette opération est effectuée sur plusieurs requêtes puis la moyenne de tous les rangs inversés obtenue est calculée.
Pour appliquer cette méthode, le corpus d’entraînement a été divisé aléatoirement en deux parties de 80 % et 20 % s’excluant l’une l’autre pour constituer respectivement un nouveau corpus d’entraînement et un nouveau corpus de test. La méthode k-foldn’a pas été utilisée ici car le lot de poids et biais obtenu avec l’entraînement servait aussi pour le calcul de la corrélation de Spearman, or il fallait utiliser le même corpus pour les deux évaluations et les deux corpus (entraînement et test) ne devaient jamais se recouper.
Le corpus de test comportait un fichier contenant la matrice des vecteurs de contexte des occurrences de couples adjectif-nom (Van) et un fichier contenant les indices des adjectifs et des noms (aet n) pour chaque couple adjectif-nom. Après une phase d’entraînement sur les 80 %, pour
chaque couple AN contenu dans la matrice de vecteurs du corpus de test (20%), nous avons récupéré les indices des adjectifs et des noms (aet n) ainsi que leurs vecteurs individuels (Vaet Vn).
À partir de ces derniers, nous avons fait calculer à notre modèle Van’, le vecteur combiné de chaque couple adjectif-nom normalisé. Ce qui nous donnait donc pour chaque vecteur Van (inconnu de l’autoencodeur), un vecteur calculé Van’. Ensuite, chaque vecteur Van’calculé a été comparé à tous les vecteurs Vande la matrice de vecteur à l’aide de la similarité cosinus ( cos(Van’1, Van1), puis cos(Van’1, Van2)etc). La liste des cosinus pour chaque couple adjectif -nom a subséquemment été triée par ordre décroissant afin d’observer de quel vecteur Vanle vecteur Van’ correspondant était le plus proche. Pour finir, nous avons parcouru la liste des cosinus pour obtenir le rang du vecteur Van à trouver dans la liste. Ce rang était finalement récupéré puis inversé (1/rang) puis ajouté aux autres rangs inversés de chacun des autres vecteurs Van’pour calculer la moyenne : le MRR. Pour résumer, il s’agit de reconstruire des vecteurs de couple adjectif-nom à partir du vecteur attribué à l’adjectif et du vecteur attribué au nom et d’en mesurer la pertinence en les comparant à l’ensemble des vecteurs Vanoriginaux. Notre premier résultat portant sur l’autoencodeur p1 était peu convainquant. Nous avons donc calculé le MRR sur d’autres lots de poids et biais retenus et avons remarqué sans trop savoir s’il s’agit d’une constante que certains lots de poids et biais donnant une corrélation de Spearman supérieure à 0,45donnaient un MRR très faible alors que certains donnant une corrélation de 0,44étaient bien meilleurs sur cette deuxième tâche. Nous en avons donc retenu un pour l’exemple, référencé dans le tableau ci-dessous sous l’appellation autoencodeur p2. Nous avons ensuite procédé au calcul du MRR pour les autres modèles présentés par l’article de Mitchell & Lapata [M&L10]. Nous pouvons constater que l’autoencodeur p2, même s’il est battu de loin par les modèles additif et additif pondéré, reste meilleur que le modèle basique qui n’inclut pas de compositionnalité puisqu’il ne prend en compte que le nom. Il est donc possible que notre prise en compte de la compositionnalité soit tout de même une amélioration dans cette tâche.
Analyse
La tâche du MRR est complexe et exigeante puisqu’il s’agit de reconstituer parfaitement des vecteurs. Or notre modèle perd des informations par la compression, comme le montre le résultat de la fonction de coût. Il est donc logique que cette tâche donne des résultats moins b ons que pour une tâche plus généralisante qu’est la notation de la similarité, utilisée pour le calcul de la corrélation de Spearman.
Pour cette dernière, nos résultats ne jurent pas avec les modèles précédents, ni avec l’accord qu’ont les notateurs entre eux. Notre modèle n’est battu que de peu par les modèles additif et additif pondéré. Nous pouvons néanmoins remarquer que le modèle multiplicatif qui semblait, dans l’article de Mitchell & Lapata [M&L10],être le plus performant est à la traîne dans nos tests. Dans l’article en question et contrairement à nos travaux, les vecteurs étaient construits avec une autre méthode que notre modèle de sémantique latente, les skip-grammes. Il se trouve que cette méthode conserve dans les vecteurs des valeurs négatives. Or, avec la multiplication, les valeurs changent de signe, ce qui ne permet pas de retenir efficacement la sémantique. Cela explique donc la grande différence de résultats de ce modèle lorsqu’il utilise notre corpus de vecteurs avec celui de Mitchell & Lapata [M&L10].
|
Table des matières
Introduction
L’entreprise et l’équipe MELODI
Italodisco
Mes tâches
I.Contexte
1.État de l’art
Sémantique formelle et sémantique lexicale
Sémantique distributionnelle
Compositionnalité
Sens des mots dans leur contexte
Factorisation de tenseur
Réseaux de Neurones
2.Point de départ, article de Mitchell & Lapata
Compositionnalité
Modèles comparés
Corpus
Similarité
3.Les réseaux de neurones
Généralités
Denoising auto-encoder
II.Notre système de réseau de neurones
1.Outils et librairies
Python 2.7, Anaconda, pickle, SciPy and NumPy
Theano
2.Corpus d’entraînement et de test
Corpus
Word2vec
3.Modèles et paramètres testés
III.Évaluation et résultats
1.1ère méthode de test : corrélation de Spearman.
2.2ème méthode: Mean Reciprocal Rank
3.Analyse
Conclusion
Bilan
Perspectives
Télécharger le rapport complet