Présentation de PyTorch: Deep Learning in Natural Language Processing

image Salut, habrozhiteli! Le traitement automatique du langage naturel (PNL) est une tâche extrêmement importante dans le domaine de l'intelligence artificielle. Une mise en œuvre réussie permet d'utiliser des produits comme Amazon d'Amazon et Google Translate. Ce livre vous aidera à apprendre PyTorch, une bibliothèque d'apprentissage en profondeur pour le langage Python, l'un des principaux outils pour les scientifiques des données et les développeurs de logiciels NLP. Delip Rao et Brian McMahan vous familiariseront avec la PNL et les algorithmes d'apprentissage en profondeur. Et montrez comment PyTorch vous permet d'implémenter des applications qui utilisent l'analyse de texte.

Dans ce livre • Graphiques computationnels et paradigme de l'apprentissage avec un enseignant. • Principes de base de la bibliothèque PyTorch optimisée pour travailler avec des tenseurs. • Un aperçu des concepts et méthodes traditionnels de la PNL. • Réseaux de neurones proactifs (perceptron multicouches et autres). • Amélioration du RNN avec mémoire à long terme à court terme (LSTM) et blocs de récurrence contrôlée • Modèles de prédiction et de transformation de séquence. • Modèles de conception des systèmes PNL utilisés en production.

Extrait. Imbrication de mots et autres types


Lors de la résolution de problèmes de traitement de textes en langues naturelles, il faut traiter différents types de types de données discrets. L'exemple le plus évident est celui des mots. Beaucoup de mots (dictionnaire) bien sûr. Entre autres exemples, symboles, étiquettes de parties de discours, entités nommées, types nommés d'entités, attributs associés à l'analyse, positions dans le catalogue de produits, etc. En fait, toute fonction d'entrée tirée d'un fini (ou infini, mais dénombrable) ensembles.

La base de l'application réussie de l'apprentissage en profondeur dans la PNL est la représentation de types de données discrets (par exemple, des mots) sous la forme de vecteurs denses. Les termes «apprentissage de la représentation» et «intégration» signifient l'apprentissage de l'affichage / de la représentation d'un type de données discret à un point dans un espace vectoriel. Si les types discrets sont des mots, une représentation vectorielle dense est appelée intégration de mots. Nous avons déjà vu des exemples de méthodes d'imbrication basées sur le nombre d'occurrences, par exemple TF-IDF («la fréquence des termes est la fréquence inverse d'un document») dans le chapitre 2. Dans ce chapitre, nous nous concentrerons sur les méthodes d'imbrication basées sur la formation et les méthodes d'imbrication basées sur la prédiction (voir article de Baroni et al. (Baroni et al., 2014]), dans lequel l'entraînement à la performance est effectué en maximisant la fonction objective pour une tâche d'apprentissage spécifique; par exemple, prédire un mot par contexte. Les méthodes d'investissement basées sur la formation sont actuellement la norme en raison de leur large applicabilité et de leur haute efficacité. En fait, l'incorporation de mots dans les tâches de la PNL est si répandue qu'ils sont appelés la «sriracha de la PNL», car on peut s'attendre à ce que leur utilisation dans n'importe quelle tâche augmente l'efficacité de la solution. Mais ce surnom est un peu trompeur, car, contrairement à syraci, les pièces jointes ne sont généralement pas ajoutées au modèle après coup, mais en sont le composant de base.

Dans ce chapitre, nous aborderons les représentations vectorielles en relation avec les incorporations de mots: méthodes d'incorporation de mots, méthodes d'optimisation d'incorporation de mots pour les tâches d'enseignement avec et sans professeur, méthodes de visualisation d'incorporation visuelle, ainsi que les méthodes de combinaison d'intégration de mots pour les phrases et les documents. Cependant, n'oubliez pas que les méthodes décrites ici s'appliquent à tout type discret.

Pourquoi la formation à l'investissement


Dans les chapitres précédents, nous vous avons montré les méthodes habituelles de création de représentations vectorielles de mots. À savoir, vous avez appris à utiliser des représentations unitaires - des vecteurs d'une longueur correspondant à la taille du dictionnaire, avec des zéros à toutes les positions, à l'exception d'un contenant la valeur 1 correspondant à un mot spécifique. De plus, vous avez rencontré des représentations du nombre d'occurrences - vecteurs de longueur égale au nombre de mots uniques dans le modèle, contenant le nombre d'occurrences de mots dans la phrase aux positions correspondantes. De telles représentations sont également appelées représentations distributionnelles, car leur contenu / signification significatif est reflété par plusieurs dimensions du vecteur. L'histoire des représentations distributives dure depuis de nombreuses décennies (voir l'article de Firth [Firth, 1935]); elles sont excellentes pour de nombreux modèles d'apprentissage automatique et de réseaux de neurones. Ces représentations sont construites heuristiquement1 et ne sont pas formées sur les données.

La représentation distribuée a obtenu son nom parce que les mots qu'ils contiennent sont représentés par un vecteur dense d'une dimension beaucoup plus petite (par exemple, d = 100 au lieu de la taille de l'ensemble du dictionnaire, qui peut être de l'ordre image ), et la signification et d'autres propriétés du mot sont réparties sur plusieurs dimensions de ce vecteur dense.

Les représentations denses de faible dimension obtenues à la suite de l'apprentissage présentent plusieurs avantages par rapport aux vecteurs unitaires contenant le nombre d'occurrences que nous avons rencontrées dans les chapitres précédents. Premièrement, la réduction de dimensionnalité est efficace sur le plan des calculs. Deuxièmement, les représentations basées sur le nombre d'occurrences conduisent à des vecteurs de haute dimension avec un codage excessif des mêmes informations dans différentes dimensions, et leur puissance statistique n'est pas trop grande. Troisièmement, une dimension trop grande des données d'entrée peut entraîner des problèmes d'apprentissage automatique et d'optimisation - un phénomène souvent appelé la malédiction de la dimension ( http://bit.ly/2CrhQXm ). Pour résoudre ce problème avec la dimensionnalité, diverses méthodes de réduction de la dimension sont utilisées, par exemple, la décomposition en valeurs singulières (SVD) et la méthode d'analyse en composantes principales (PCA), mais, ironiquement, ces approches ne s'adaptent pas bien sur des dimensions de l'ordre de millions ( cas typique en PNL). Quatrièmement, les représentations apprises (ou ajustées sur la base de) données spécifiques à un problème sont parfaitement adaptées à cette tâche particulière. Dans le cas d'algorithmes heuristiques comme TF-IDF et de méthodes de réduction dimensionnelle comme SVD, il n'est pas clair si la fonction d'optimisation objective convient à une tâche particulière avec cette méthode d'intégration.

Efficacité d'investissement


Pour comprendre le fonctionnement des plongements, considérons un exemple de vecteur unitaire par lequel la matrice de poids dans une couche linéaire est multipliée, comme le montre la Fig. 5.1. Dans les chapitres 3 et 4, la taille des vecteurs unitaires coïncidait avec la taille du dictionnaire. Un vecteur est appelé unitaire car il contient 1 à la position correspondant à un mot particulier, indiquant ainsi sa présence.

image

Fig. 5.1. Un exemple de multiplication matricielle pour le cas d'un vecteur unitaire et d'une matrice de poids d'une couche linéaire. Comme le vecteur unitaire contient tous les zéros et une seule unité, la position de cette unité joue le rôle de l'opérateur de choix lors de la multiplication de la matrice. Ceci est montré sur la figure comme un assombrissement des cellules de la matrice de poids et du vecteur résultant. Bien que cette méthode de recherche fonctionne, elle nécessite une grande consommation de ressources informatiques et est inefficace, car le vecteur unitaire est multiplié par chacun des nombres dans la matrice de poids et la somme est calculée en lignes

Par définition, le nombre de lignes de la matrice de poids d'une couche linéaire recevant un vecteur unitaire en entrée doit être égal à la taille de ce vecteur unitaire. Lors de la multiplication de la matrice, comme le montre la Fig. 5.1, le vecteur résultant est en fait une chaîne correspondant à un élément non nul d'un vecteur unitaire. Sur la base de cette observation, vous pouvez ignorer l'étape de multiplication et utiliser une valeur entière comme index pour extraire la ligne souhaitée.

Une dernière note concernant la performance des investissements: malgré l'exemple de la figure 5.1, où la dimension de la matrice de poids coïncide avec la dimension du vecteur unitaire d'entrée, c'est loin d'être toujours le cas. En fait, les pièces jointes sont souvent utilisées pour représenter des mots d'un espace de dimension inférieure à ce qui serait nécessaire si vous utilisez un vecteur unitaire ou représentez le nombre d'occurrences. Une taille d'investissement typique dans les articles scientifiques est de 25 à 500 mesures, et le choix d'une valeur spécifique est réduit à la quantité de mémoire GPU disponible.

Approches d'apprentissage de l'attachement


Le but de ce chapitre n'est pas de vous enseigner des techniques spécifiques pour investir des mots, mais de vous aider à comprendre ce que sont les investissements, comment et où ils peuvent être appliqués, comment les utiliser au mieux dans les modèles et quelles sont leurs limites. Le fait est qu'en pratique, il est rarement nécessaire d'écrire de nouveaux algorithmes d'apprentissage pour l'intégration de mots. Cependant, dans cette sous-section, nous donnerons un bref aperçu des approches modernes de cette formation. L'apprentissage de toutes les méthodes d'imbrication des mots se fait en utilisant uniquement des mots (c'est-à-dire des données sans étiquette), mais avec un enseignant. Cela est possible en raison de la création de tâches d'enseignement auxiliaire avec l'enseignant, dans lesquelles les données sont marquées implicitement, pour les raisons que la représentation optimisée pour résoudre la tâche auxiliaire devrait capturer de nombreuses propriétés statistiques et linguistiques du corpus de texte afin d'apporter au moins un certain avantage. Voici quelques exemples de telles tâches d'assistance.

  • Prédisez le mot suivant dans une séquence de mots donnée. Il porte également le nom du problème de modélisation du langage.
  • Prédisez un mot manquant par des mots situés avant et après.
  • Prédisez les mots dans une fenêtre spécifique, quelle que soit leur position, pour un mot donné.

Bien entendu, cette liste n'est pas complète et le choix d'un problème auxiliaire dépend de l'intuition du développeur de l'algorithme et des coûts de calcul. Les exemples incluent GloVe, Continuous Bag-of-Words (CBOW), Skipgrams, etc. Des détails peuvent être trouvés dans le chapitre 10 du livre de Goldberg (Goldberg, 2017), mais nous discuterons brièvement du modèle CBOW ici. Cependant, dans la plupart des cas, il suffit d'utiliser des pièces jointes pré-formées et de les adapter à la tâche existante.

Application pratique des pièces jointes de mots pré-formés


La majeure partie de ce chapitre, ainsi que le reste du livre, concerne l'utilisation de pièces jointes pré-formées. Pré-formé en utilisant l'une des nombreuses méthodes décrites ci-dessus sur un grand corps - par exemple, le corps complet de Google News, Wikipedia ou Common Crawl1 - les pièces jointes de mots peuvent être téléchargées et utilisées librement. Plus loin dans le chapitre, nous montrerons comment trouver et charger correctement ces pièces jointes, étudier certaines propriétés des incorporations de mots et donner des exemples d'utilisation des incorporations de mots pré-formées dans les tâches PNL.

Télécharger les pièces jointes


Les pièces jointes de mots sont devenues si populaires et répandues que de nombreuses options différentes sont disponibles pour téléchargement, du Word2Vec2 original à Stanford GloVe ( https://stanford.io/2PSIvPZ ), y compris FastText3 de Facebook ( https://fasttext.cc / ) et bien d'autres. Habituellement, les pièces jointes sont livrées dans le format suivant: chaque ligne commence par un mot / type suivi d'une séquence de chiffres (c'est-à-dire une représentation vectorielle). La longueur de cette séquence est égale à la dimension de la présentation (dimension de la pièce jointe). La dimension des investissements est généralement de l'ordre de centaines. Le nombre de types de jetons est le plus souvent égal à la taille du dictionnaire et s'élève à environ un million. Par exemple, voici les sept premières dimensions des vecteurs chiens et chats de GloVe.

image

Pour un chargement et une manipulation efficaces des pièces jointes, nous décrivons la classe d'assistance PreTrainedEmbeddings (exemple 5.1). Il crée un index de tous les vecteurs de mots stockés dans la RAM pour simplifier la recherche et les requêtes rapides des voisins les plus proches à l'aide du package de calcul approximatif du plus proche voisin, ennuyeux.

Exemple 5.1. Utilisation de pièces jointes pré-formées Word

image

image

Dans ces exemples, nous utilisons l'incorporation des mots GloVe. Vous devez les télécharger et créer une instance de la classe PreTrainedEmbeddings, comme indiqué dans Input [1] de l'exemple 5.1.

Relations entre les pièces jointes Word


La propriété clé de l'intégration des mots est l'encodage des relations syntaxiques et sémantiques, qui se manifestent sous la forme de modèles d'utilisation des mots. Par exemple, on parle généralement de façon très similaire des chats et des chiens (ils discutent de leurs animaux de compagnie, de leurs habitudes alimentaires, etc.). En conséquence, les attachements pour les mots chats et chiens sont beaucoup plus proches les uns des autres que les attachements pour les noms d'autres animaux, disent les canards et les éléphants.

Il existe de nombreuses façons d'étudier les relations sémantiques codées dans les pièces jointes de mots. L'une des méthodes les plus populaires consiste à utiliser la tâche d'analogie (l'un des types courants de tâches de réflexion logique dans les examens tels que SAT):

Word1: Word2 :: Word3: ______

Dans cette tâche, il est nécessaire de déterminer le quatrième, étant donné la connexion entre les deux premiers, par les trois mots donnés. À l'aide de mots imbriqués, ce problème peut être codé spatialement. Tout d'abord, soustrayez Word2 de Word1. Le vecteur de différence entre eux code la relation entre Word1 et Word2. Cette différence peut ensuite être ajoutée à Slovo3 et le résultat sera le vecteur le plus proche du quatrième mot manquant. Pour résoudre le problème d'analogie, il suffit d'interroger les voisins les plus proches par index en utilisant ce vecteur obtenu. La fonction correspondante montrée dans l'exemple 5.2 fait exactement ce qui est décrit ci-dessus: elle utilise l'arithmétique vectorielle et un indice approximatif des voisins les plus proches pour trouver l'élément manquant dans l'analogie.

Exemple 5.2. Résolution d'un problème d'analogie à l'aide des incorporations de mots

image

image


Fait intéressant, en utilisant une simple analogie verbale, on peut démontrer comment les incorporations de mots peuvent capturer une variété de relations sémantiques et syntaxiques (exemple 5.3).

Exemple 5.3 Codage à l'aide d'incorporation de mots de beaucoup de connexions linguistiques sur l'exemple de tâches sur l'analogie de SAT

image

image

Bien qu'il puisse sembler que les connexions reflètent clairement le fonctionnement de la langue, tout n'est pas si simple. Comme le montre l'exemple 5.4, les connexions peuvent être mal définies car les vecteurs de mots sont déterminés en fonction de leur occurrence conjointe.

Exemple 5.4. Un exemple illustrant le danger de coder le sens des mots en fonction de la cooccurrence - parfois cela ne fonctionne pas!

image

L'exemple 5.5 illustre l'une des combinaisons les plus courantes lors du codage des rôles de genre.

Exemple 5.5 Soyez prudent avec les attributs protégés, tels que le sexe, codés par des pièces jointes de mots. Ils peuvent conduire à des biais indésirables dans les futurs modèles.

image

Il s’avère qu’il est assez difficile de faire la distinction entre les modèles linguistiques et les préjugés culturels profondément enracinés. Par exemple, les médecins ne sont en aucun cas toujours des hommes et les infirmières ne sont pas toujours des femmes, mais ces préjugés sont si persistants qu'ils se reflètent dans la langue et, par conséquent, dans les vecteurs de mots, comme le montre l'exemple 5.6.

Exemple 5.6. Des préjugés culturels «cousus» dans les vecteurs de mots

image

N'oublions pas d'éventuelles erreurs systématiques dans les investissements, compte tenu de la croissance de leur popularité et de leur prévalence dans les applications PNL. L'éradication des erreurs systématiques dans l'intégration de mots est un domaine nouveau et très intéressant de la recherche scientifique (voir l'article de Bolukbashi et al. [Bolukbasi et al., 2016]). Nous vous recommandons de consulter éthiqueinnlp.org où vous pouvez trouver des informations à jour sur l'éthique transversale et la PNL.

À propos des auteurs


Delip Rao est le fondateur de la société de conseil basée à San Francisco, Joostware, spécialisée dans l'apprentissage automatique et la recherche en PNL. L'un des co-fondateurs du Fake News Challenge - une initiative conçue pour rassembler des pirates informatiques et des chercheurs dans le domaine de l'IA sur les tâches de vérification des faits dans les médias. Delip a précédemment travaillé sur des produits de recherche et logiciels liés à la PNL sur Twitter et Amazon (Alexa).

Brian McMahan est chercheur à Wells Fargo, se concentrant principalement sur la PNL. A travaillé auparavant chez Joostware.

»Plus d'informations sur le livre sont disponibles sur le site Web de l'éditeur
» Contenu
» Extrait

25% de réduction sur les colporteurs - PyTorch

Lors du paiement de la version papier du livre, un livre électronique est envoyé par e-mail.

Source: https://habr.com/ru/post/fr475488/


All Articles