Comment devenir un expert en PNL en 2019 (1)

Dans cet article, je me concentrerais sur toutes les connaissances théoriques dont vous avez besoin pour connaître les dernières tendances de la PNL. J'ai fait cette liste de lecture à mesure que j'apprenais de nouveaux concepts. Dans le prochain article, je partagerais les éléments que j'utilise pour mettre en pratique ces concepts, notamment la mise au point et les modèles de rang 1 au classement de la compétition. Utilisez ce lien pour accéder à la partie 2 (Reste à faire).

Pour les ressources, j'inclus des articles, des blogs et des vidéos.

Il n'est pas nécessaire de lire la plupart des choses. Votre objectif principal devrait être de comprendre que, dans cet article, cette chose a été introduite et est-ce que je comprends comment cela fonctionne, comment il se compare à l’état de la technique?

Tendance: utilisez des modèles plus grands basés sur les transformateurs et résolvez un apprentissage multitâche.

Avertissement: Dans la PNL, la tendance est de plus en plus forte. Si vous avez une nouvelle idée dans la PNL lors de la lecture de l'un des journaux, vous devrez utiliser une puissance de calcul énorme pour obtenir des résultats raisonnables. Donc, vous êtes limité par les modèles open-source.

  1. fastai: - J'avais déjà regardé les vidéos, alors j'ai pensé que je devrais l'ajouter en haut de la liste.
  • Leçon 4 Apprendre en profondeur pour les codeurs. Vous apprendrez comment implémenter un modèle de langage dans fastai.
  • Il y a la leçon 12 dans la partie 2 du cours, mais elle doit encore être publiée officiellement. Je mettrais donc à jour le lien lorsqu'il sera téléchargé.

2. LSTM: - Bien que les transformateurs soient principalement utilisés de nos jours, dans certains cas, vous pouvez toujours utiliser LSTM et ce fut le premier modèle réussi à obtenir de bons résultats. Vous devez utiliser AWD_LSTM maintenant si vous le souhaitez.

  • Papier à mémoire longue durée. Un coup de feu rapide du papier est suffisant.
  • Blog Comprendre les réseaux LSTM. Il explique graphiquement tous les détails du réseau LSTM.

3. AWD_LSTM: - Il a été proposé de surmonter les faiblesses de LSTM en introduisant des abandons entre les couches masquées, en intégrant des abandons, des ficelles de poids. Vous devez utiliser AWS_LSTM au lieu de LSTM.

  • Régulariser et optimiser les modèles de langage LSTM. AWD_LSTM papier
  • Code officiel par Salesforce
  • Fastai mise en œuvre

4. Modèles de pointeur: - Bien que ce ne soit pas nécessaire, c'est une bonne lecture. Vous pouvez penser à cela comme une théorie de pré-attention.

  • Pointer Sentinel Mixture Models papier
  • Vidéo officielle du papier ci-dessus.
  • Amélioration des modèles de langage neuronal avec un papier cache continu

Extra: Quelle est la différence entre la perte de poids et la régularisation? Dans la perte de poids, vous ajoutez directement quelque chose à la règle de mise à jour tandis que dans la régularisation, il est ajouté à la fonction de perte. Pourquoi en parler? Très probablement, les bibliothèques DL utilisent weight_decay au lieu de la régularisation sous le capot.

Dans certains articles, vous remarquerez que les auteurs ont préféré SGD à Adam, citant qu'Adam ne donne pas de bonnes performances. La raison en est (peut-être) que PyTorch / Tensorflow commettent l’erreur ci-dessus. Cette chose est expliquée en détail dans ce post.

5. Attention: - N'oubliez pas que l'attention n'est pas tout ce dont vous avez besoin.

  • Vidéo CS224n expliquant l'attention. L'attention commence à partir de 1:00:55.
  • L'attention est tout ce dont vous avez besoin de papier. Ce document présente également le Transformer, qui n’est autre chose qu’une pile de blocs codeurs et décodeurs. La magie est la façon dont ces blocs sont fabriqués et connectés.
  • Vous pouvez lire une version annotée de l'article ci-dessus dans PyTorch.
  • Vidéo officielle expliquant l'attention
  • Google Blog pour Transformer
  • Si vous êtes intéressé par la vidéo, vous pouvez vérifier ces link1, link2.
  • Transformer-XL: Modèles de langage attentifs au-delà d'un document contextuel de longueur fixe. Meilleure version de Transformer mais BERT ne l'utilise pas.
  • Google Blog pour Transformer-XL
  • Transformer-XL - Combinaison de transformateurs et RNN dans un modèle de langage à la pointe de la technologie
  • Si vous êtes intéressé par la vidéo, vous pouvez vérifier ce lien.
  • Le blog Illustrated Transformer
  • Attention et mémoire dans le blog Deep Learning et NLP.
  • Blog sur les réseaux de neurones récurrents attentifs et augmentés.
  • Construire le puissant transformateur pour le marquage de séquence dans PyTorch: Part 1 blog.
  • Construire le puissant transformateur pour le marquage de séquence dans PyTorch: Part 2 blog.

Il y a beaucoup de recherches en cours pour fabriquer de meilleurs transformateurs, peut-être que je lirai plus d'articles à ce sujet à l'avenir. Certains autres transformateurs incluent Universal Transformer et Evolved Transformer qui utilisaient AutoML pour créer l'architecture Transformer.

La raison pour laquelle les nouvelles architectures de transformateurs ne résolvent pas le problème. Parce que vous avez besoin de modèles de langage pour vos tâches PNL utilisant ces blocs de transformateur. Dans la plupart des cas, vous ne disposerez pas des ressources de calcul nécessaires à la formation de ces modèles, car il a été constaté que plus vous utilisiez de blocs de transformateur, mieux c'était. De plus, vous avez besoin de lots de tailles plus grandes pour former ces modèles de langage, ce qui signifie que vous devez utiliser les TPU Nvidia DGX ou Google Cloud (la prise en charge de PyTorch étant prévue un jour).

6. Ressources aléatoires: - Vous pouvez ignorer cette section. Mais pour être complet, je fournis toutes les ressources que j'ai utilisées.

  • Visualiser un modèle de traduction automatique neurale (Mécanique des modèles Seq2seq avec attention)
  • Modélisation de la langue au niveau des personnages avec un papier à plus grande attention.
  • Utilisation de l’intégration de la sortie pour améliorer le papier des modèles de langues.
  • Article sur les réseaux de neurones quasi récurrents. Une version très rapide de LSTM. Il utilise des couches de convolution pour rendre les calculs LSTM parallèles. Le code peut être trouvé dans la fastai_library ou official_code.
  • Deep Learning pour le blog Best Practices NLP de Sebastian Ruder. Un ensemble de meilleures pratiques à utiliser lors de la formation de modèles LSTM.
  • Notes sur les techniques de pointe pour le blog de modélisation de langage. Un résumé rapide où Jeremy Howard résume certaines de ses astuces qu’il utilise dans la bibliothèque fastai.
  • Blog sur les modes de langue et le contenu contextuel de Word. Donne un aperçu rapide d’ELMo, BERT et d’autres modèles.
  • Les illustrés BERT, ELMo et co. (Comment NLP Cracked Transfer Learning) blog.

7. Apprentissage multi-tâches: - Je suis vraiment excité à ce sujet. Dans ce cas, vous formez un seul modèle pour plusieurs tâches (plus de 10 si vous le souhaitez). Vos données ressemblent donc à "traduire en anglais some_text_in_german". Votre modèle apprend en fait à utiliser les informations initiales pour choisir la tâche à exécuter.

  • Un aperçu de l'apprentissage multitâche dans les réseaux de neurones profonds.
  • Le décathlon en langage naturel: l'apprentissage multitâche en tant que question d'un répondeur.
  • Réseaux de neurones profonds multitâches pour la compréhension du langage naturel.
  • OpenAI GPT en est un exemple.

8. PyTorch: - Pytorch fournit de bons tutoriels vous donnant de bonnes références sur la manière de coder la plupart des éléments dans la PNL. Bien que les transformateurs ne soient pas dans les tutoriels, vous devriez quand même les voir une fois.

Nous arrivons maintenant aux dernières recherches en PNL qui ont abouti au moment Imagenet de la PNL. Tout ce que vous avez besoin de comprendre, c'est comment Attention fonctionne et que vous êtes prêt.

9. ELMo: - La première recherche importante effectuée dans laquelle nous sommes passés d'incorporer des mots pré-entraînés à l'utilisation de modèles pré-entraînés pour les obtenir. Donc, vous utilisez la phrase d'entrée pour obtenir les incorporations des jetons présents dans la phrase.

  • Papier de représentations de mots profondément contextualisées (papier ELMo)
  • Si vous êtes intéressé par la vidéo, cliquez sur ce lien.

10. ULMFit: - Est-ce mieux que BERT peut-être pas, mais toujours dans les compétitions Kaggle et les compétitions externes, ULMFiT obtient la première place.

  • Modèle de langage universel Réglage précis pour le papier de classification de texte.
  • Article de blog de Jeremy Howard annonçant ULMFiT.
  • Il est expliqué dans la leçon 10 du cours Cutting Edge Deep Learning.

11. OpenAI GPT: - Je n’ai pas comparé BERT à GPT2, mais vous travaillez sur une sorte d’ensemble si vous le souhaitez. N'utilisez pas GPT1 car BERT a été créé pour surmonter les limitations de GPT1.

  • Papier GPT1, blog, code
  • Papier GPT2, blog, code
  • Vérifiez la vidéo par openai sur GPT2

12. BERT: - Le modèle linguistique le plus réussi à l'heure actuelle (à compter de mai 2019).

  • BERT: formation préalable sur les transformateurs bidirectionnels profonds pour le papier à compréhension linguistique.
  • Blog Google sur BERT
  • Dissection de BERT Partie 1: le blog de l'encodeur
  • Comprendre BERT Partie 2: Blog sur les spécificités BERT
  • Dissection de BERT Annexe: le blog du décodeur

Pour utiliser tous ces modèles dans PyTorch, vous devez utiliser le référentiel hugginface / pytorch_pretrained_BERT, qui vous donne des implémentations complètes ainsi que des modèles pré-entraînés pour BERT, GPT1, GPT2, TransformerXL.

13. Prochain blog: - Je risque d’être en retard pour écrire le prochain blog, je voulais donc partager cette dernière chose.

  • Réduire la pré-formation BERT de 3 jours à 76 minutes papier. Un nouvel optimiseur est introduit pour les modèles de langage pouvant réduire considérablement le temps de formation.

Félicitations, vous avez réussi à la fin. Vous avez maintenant la plupart des connaissances théoriques nécessaires pour pratiquer la PNL en utilisant les derniers modèles et techniques.

Que faire maintenant?

Vous n’avez appris que la théorie, maintenant pratiquez autant que vous le pouvez. Créez des ensembles loufoques si vous le souhaitez, essayez de maîtriser les classements. Je me bats actuellement pour pratiquer mes tâches de PNL, car je suis en train de réaliser des projets de vision par ordinateur que vous consultez ci-dessous ou sur mon github.

Je ferais probablement un post de suivi vers le milieu ou la fin juin en donnant une liste comme celle-ci, avec quelques nouvelles techniques que je pensais lire et les choses que je ferais pour la pratique.

Si vous trouvez cet article utile, partagez-le avec d'autres personnes qui pourraient en bénéficier et appliquez-le en claquant un coup (cela aide beaucoup, vous pouvez en donner 50 au maximum).

Suivez-moi sur Moyen pour obtenir mes derniers articles de blog dans votre flux moyen. Mes réseaux sociaux linkedin, github, twitter.

Mon précédent blog

  1. Former AlexNet avec des astuces et des contrôles sur la manière de former des CNN: CNN pratiques sur PyTorch (1)
  2. Tout ce dont vous avez besoin pour un transfert de style photoréaliste dans PyTorch
  3. SPADE: Etat de la technique de la traduction image à image par Nvidia
  4. Normalisation du poids: une nouvelle normalisation en ville