NLP et Deep learning - une revolution
IA Lab

Deep Transfer Learning – le traitement du langage à l’aube d’une révolution ?

22 novembre 2018


Ce travail est le fruit d’une collaboration entre :

Scialom Thomas - Recital
Pirmin LEMBERGER 

Directeur scientifique IA, weave

Thomas SCIALOM

AI researcher chez reciTAL

Résumé

L’année 2018 a été particulièrement faste en ce qui concerne les progrès en traitement du langage naturel. Pour la première fois certains modèles dépassent même les performances humaines sur des problèmes réputés difficiles comme la capacité à répondre à des questions suite à la lecture d’un texte. Ces progrès reposent d’une part sur de nouvelles architectures de réseaux de neurones et d’autre part sur deux grandes classes d’idées : l’idée de modèle de langage et l’idée de transfert d’apprentissage bien connue en vision artificielle. L’objectif de cet article est de présenter trois de ces méthodes : ULMFiT, ELMo et BERT. Pour notre présentation nous nous appuierons essentiellement sur des schémas d’architectures simplifiés.

1.   Le vieux rêve de parler aux machines

Et si le destin de la technologie était de se faire oublier ? De constituer un ensemble d’outils si puissants qu’ils sauraient se faire humbles pour se mettre entièrement au service des hommes sans exiger d’eux ni adaptation, ni laborieux apprentissage ? On peut le souhaiter et, depuis une quarantaine d’années, c’est apparemment le sens de l’histoire avec la démocratisation de l’informatique via des interfaces homme-machine (IHM) graphiques intuitives.

Avec les chatbots [CHL] sont apparus ces dernières années de nouvelles IHM vocales et textuelles qui ambitionnent de permettre des interactions en langue naturelle. Pour l’instant très rudimentaires et réduites à quelques interactions transactionnelles sur le mode question-réponse, elles préfigurent peut-être une révolution à plus long terme qui concrétiserait la démocratisation ultime de l’informatique, celle à laquelle ont rêvé les pionniers de la discipline il y 80 ans[1]. Des machines que l’on pourrait interroger sur le mode de la conversation pour obtenir une information ou déclencher une action.

Dans cette longue marche vers la conception de machines capables de conversation, l’année 2018 a été particulièrement faste avec des progrès incrémentaux mais très significatifs dans le domaine du NLP (Natural Language Processing). Le Deep Learning (DL) n’étant pas avare de petits miracles c’est à lui, on s’en doute, que l’on doit ces derniers progrès. L’objectif de cet article est de présenter les idées et les grandes lignes des architectures de réseaux de neurones (NN ci-après pour Neural Network) qui ont permis ces avancées.

Avant cela, donnons quelques exemples de problèmes qui relèvent du NLP et pour lesquels on dispose de jeux de données pour évaluer les performances d’un algorithme.

  • La classification de textes intervient dans beaucoup d’usages. Le sentiment analysis et l’anti-spam sont des usages classiques pour lesquels des algorithmes de Machine Learning existent depuis une vingtaine d’années. On peut ranger aussi dans cette catégorie l’extraction d’entité nommées (« Named Entity Recognition ») qui consiste à reconnaître des entités dans un texte et à les classer en catégories comme des personnes, des organisations, des lieux etc… C’est une tâche utilisée notamment par les chatbots lorsqu’il s’agit de caractériser l’intention d’un utilisateur [CHL]. Enfin, la déduction à partir d’une hypothèse (« Textual Entailment ») consiste à déterminer si une phrase est la conséquence logique d’une autre est une autre forme de classification.
  • La réponse à une question (« Question Answering ») consiste à trouver dans un paragraphe de texte la suite de mots qui constitue la réponse à la question posée. C’est un des problèmes réputés difficile du NLP.
  • L’évaluation d’un degré d’équivalence sémantique entre deux phrases dont l’utilité est évidente dans un grand nombre cas d’utilisation.

Rappelons ici les raisons principales qui font du NLP un problème ardu de l’IA. La première tient à la difficulté de construire des ontologies conceptuelles et des règles syntaxiques qui encapsulerait une langue, sa syntaxe et sa sémantique, dans un système formel programmable, une démarche tentée durant les années 1970-1980 mais avec un succès très mitigé. Cet échec relatif a conduit les chercheurs à développer depuis une vingtaine d’années des méthodes d’apprentissage statistiques, au premier rang desquelles figure aujourd’hui le Deep Learning (DL). Jusqu’à récemment, ces modèles exigeaient cependant de très gros volumes de données étiquetés pour être entraînés, au point même que la tâche pouvait s’avérer d’une ampleur prohibitive. Enfin, la qualité d’un modèle de NLP (de traduction automatique p.ex.) relève parfois d’une impression subjective qu’il n’est pas toujours aisé d’objectiver[2].

La suite de cet article est organisée comme suit. La section 2 présente les deux idées clés des progrès récents en NLP : l’idée d’apprentissage par transfert ou Transfert Learning et la notion de modèle de langage. La section 3 décrits les trois nouveaux modèles ULMFiT, ELMo et BERT. La section 4 conclu sur quelques problèmes ouverts.

2.     Les deux idées clés

Bien que différents, les nouveaux modèles de NLP s’appuient sur deux idées qu’il convient d’avoir présent à l’esprit si l’on veut bien comprendre ces nouvelles architectures : l’idée de Transfert Learning et la notion de modèle de langage. Les lecteurs familiers avec ces idées peuvent poursuivre la lecture à la section 3.

2.1   L’idée du Transfert Learning

Dans le contexte du NLP, un exemple élémentaire de Transfert Learning est l’utilisation de word embeddings (WE) dans la première couche d’un NN profond [MAL]. Le rôle de cette couche, rappelons-le, est de convertir une suite de mots en entrée (ou, plus généralement, de token) en une autre suite de même longueur, de vecteurs . Chaque vecteur encode le contenu sémantique du mot auquel il est associé.

Figure 1 : L’opération classique de Word Embedding (WE) consiste à associer un vecteur de à chaque mot ou token d’une liste. Un vecteur de WE comporte typiquement plusieurs centaines de dimensions.

Les composantes des vecteurs de WE peuvent naturellement être appris lors de l’entraînement du RN. Cependant, la solution habituelle consiste plutôt à réutiliser des versions précalculées de ces WE, GloVe et Word2Vec étant à ce jours les plus communes. Ces WE désormais classiques ont été construits par apprentissage statistique sur des problèmes artificiels qui n’ont pas forcément d’utilité directe mais dont l’intérêt dans notre contexte est de permettre l’apprentissage de représentations numériques utiles des mots d’une langue. Ces modèles sont par ailleurs conçus de telle manière à n’exiger aucun travail d’étiquetage manuel pour leurs données d’entraînement. En fait ils ne font qu’exploiter l’ordre naturel des mots dans un des corpus de textes gratuits disponibles sur le web, comme One Billion Words for LM ou WikiText-103. A titre d’exemple GloVe est construit à partir d’un modèle de prédiction de cooccurrence de mots dans un corpus de documents alors que Word2Vec est construit à partir d’un modèle capable de prédire un mot à partir des mots qui l’entourent. Peu importe ici les détails techniques de ces modèles, le point sur lequel nous voulons mettre l’accent est que ces WE préfabriqués constituent des exemples élémentaires de Transfert Learning.

En toute généralité le Transfer Learning consiste à réutiliser tout ou partie d’un modèle, préentraîné sur une tâche d’apprentissage ‘A’, comme brique de base pour construire un modèle prédictif pour une tâche ‘B’ en bénéficiant de la connaissance acquise sur la tâche ‘A’.

Pour que cette stratégie de transfert fonctionne correctement, le problème artificiel devra comporter une part significative de la difficulté du vrai problème. Intuitivement, c’est bien le cas avec les WE. S’ils s’avèrent utiles pour construire un modèle capable de prédire un terme à partir des mots qui l’entourent, cela confirme l’idée que ces WE encapsulent effectivement des représentations sémantiques approximatives de chaque mot, représentations dont on pourra tirer profit dans d’autres problèmes de NLP.

Les trois méthodes présentées ci-dessous (ULMFiT, ELMo, BERT) ambitionnent chacune de généraliser ce mécanisme des WE. Au lieu d’associer un vecteur d’embedding statique à chaque mot, ces méthodes construisent des représentations plus riches qui prennent en compte le contexte sémantique et syntaxique de chaque mot. Ces trois méthodes utilisent pour cela différentes variantes de Transfer Learning sur lesquels nous reviendrons.

Un élément d’intuition important à garder à l’esprit lorsqu’on parle de Transfert Learning est l’idée de couches d’abstraction. Tous les modèles de Deep Learning sont organisés en couches, chacune d’elle étant responsable d’apprendre une partie de la transformation globale qui convertira l’entrée du modèle dans la prédiction souhaitée.

Figure 2 : Le Transfert Learning consiste à réutiliser les couches basses d’un NN profond entraîné sur une tâche A, parfois artificielle, pour résoudre une tâche B similaire mais directement utile. Les couches peuvent être figées ou ajustées à une tâche spécifique.

La sagesse populaire des praticiens du Deep Learning nous enseigne par ailleurs que les couches basses, comprendre proches de l’entrée, encodent une information très générique donc aisément réutilisable dans d’autres contextes. Pour un système de classification d’images il s’agit par exemple d’informations de contraste entre zones homogènes, d’indicateurs de la présence de certaines textures etc… Les couches supérieures, plus proches de la sortie, encodent quant à elles une information plus spécifique à la tâche considérée (détecter la présence d’un visage p.ex.). Le Transfert Learning réutilise typiquement l’information sur les couches basses d’un réseau profond comme l’illustre la figure 2. Les notions d’abstractions sont similaires en NLP quoique peut-être moins évidentes à formuler. La couche de WE encode, on l’a vu, une information sémantique et syntaxique, mot à mot. A mesure que l’on s’élève dans les couches la prise en compte de l’information contextuelle croit jusqu’à encoder le sens complet d’un texte.

Remarquons enfin que le Transfert Learning, quel que soit le domaine où il est mis en œuvre, permet de découvrir automatiquement des représentations utiles des données. En ce sens c’est une forme feature engineering automatisé qui est l’un des principaux atouts de l’apprentissage statistique par Deep Learning.

L’idée de Transfer Learning n’est pas neuve, elle est même ancienne dans les applications de vision artificielle qui, très souvent, réutilisent plusieurs couches basses d’un réseau de convolutions entraîné sur la classification de millions de clichés tirés de banques d’images comme ImageNet. La plupart des librairies de Deep Learning comme TensorFlow, Keras ou PyTorch mettent à disposition des modèles pré-entraînés dans leur arsenal.

Ce qui est inédit en revanche c’est l’application pratique et ultra-performante de cette stratégie de Transfert Learning au domaine du NLP. Pourquoi alors un tel délai dans l’application au NLP d’une idée aussi simple et ayant de surcroit fait ses preuves dans d’autres domaines de l’IA ? La raison est peut-être à trouver dans les détails techniques qui, nous le verrons, sont parfois délicats dans leur mise en œuvre et nécessitent de procéder par tâtonnements et par accumulation d’expériences.

2.2   La notion de modèle statistique de langage

Le choix d’une tâche artificielle adéquate sur laquelle on va entrainer un modèle en vue d’appliquer ultérieurement le Transfer Learning est crucial si l’on veut attaquer des problèmes ardus du NLP. Deux contraintes président au choix d’un tel problème. D’une part la tâche doit être suffisamment riche pour que le modèle résultant incorpore différentes facettes de la compréhension du langage comme : l’identification de synonymes, les dépendances à long terme, la résolution d’ambiguïtés lexicales, la capacité de déduction logique, la détection de négation où même peut-être de l’ironie. D’autre part, nous l’avons dit, il est souhaitable que le jeu de données d’entraînement puisse être constitué en court-circuitant le laborieux travail d’étiquetage qu’exige usuellement le ML supervisé.

Figure 3 : Un modèle de langage prédit la probabilité d’occurrence d’un mot en fonction des mots qui le précèdent ou qui l’entourent sur une certaine fenêtre temporelle.

Dans les trois modèles présentés dans la section 3 le choix des chercheurs pour cette tâche artificielle s’est porté sur un modèle statistique de langage (Language Model, LM). Précisons rapidement ce qu’on entend par là. Un LM n’est rien d’autre qu’une distribution de probabilité empirique P(t1,…,tm) sur des suites de mots (t1,…,tm) (ou de tokens). Dans le contexte qui nous intéresse, et pour être un peu plus précis, on va apprendre à prédire la probabilité que le mot tm succède à une suite de mots (t1,…,tm-1). C’est donc une probabilité conditionnelle P(tm|t1,…,tm-1) qu’on va à apprendre à l’aide d’un NN profond. Les données d’entraînement d’un tel modèle peuvent évidemment être constitué de n’importe quel corpus disponible gratuitement sur le web dans une langue donnée. L’étiquetage est en l’occurrence gratuit puisque l’étiquette associée à la suite de mots (t1,…,tm-1) n’est autre que le mot tm.

Nous voilà équipé pour aborder les trois modèles qui ont battus tous les records en NLP !

3.     La cuvée 2018 des modèles de NLP

L’objectif de cette section est de décrire trois techniques de Deep Learning qui ont récemment (2018) contribué à faire progresser l’état de l’art sur plusieurs problèmes parmi les plus ardus du NLP comme la capacité à répondre à des questions à propos d’un texte, dépassant même en cela les humains dans certains cas [BER]. Nous nous appuierons sur des schémas d’architectures[3] simplifiés des NN utilisés par chaque solution.

3.1    ULMFiT – le transfert par Fine Tuning

« Universal Language Model Fine Tuning » (ULMFiT) est une méthode générique récente [ULM] qui permet de construire des systèmes de classification de textes extrêmement performants. Dans certains cas elle a permis de réduire le taux d’erreur de 24% par rapport aux meilleurs modèles existants, établissant un nouvel état de l’art sur plusieurs benchmarks. Une amélioration certes incrémentale mais d’une ampleur inédite en NLP. Qui plus est, cette méthode s’est avérée extrêmement économique quant au volume des données à utiliser pour entrainer le modèle, exigeant jusqu’à 100 fois moins de données que les méthodes antérieures.

Les deux ingrédients principaux de cette avancée, rappelons-le, sont un préentraînement sur un modèle de langage (LM) et l’utilisation d’une forme élaborée de Transfer Learning qui évite le double écueil du surapprentissage d’une part et, d’autre part, de ce qu’on appelle l’oubli catastrophique, à savoir la destruction lors de l’entraînement sur une tâche spécifique de l’information acquise à prix fort lors du préentraînement sur un modèle générique. L’entraînement du modèle complet procède en trois phases que nous détaillons ci-dessous.

Phase 1 – préentraînement d’un RNN sur le LM

La première phase consiste à entraîner le LM. Les auteurs ont utilisé pour cela un réseau de neurones récurrent (RNN ci-après pour Recurrent Neural Network) composé de trois couches de LSTM [LST] alimentés par une couche de WE comme l’illustre la figure 3. Ce réseau est doté des mécanismes de régularisation appropriés au NLP [AWD] mais n’utilise en revanche aucun mécanisme d’attention [NMT, MAL]. Il est vraisemblable qu’un LM plus sophistiqué permettrait d’améliorer encore les performances. Il est à noter que cette première phase de l’entraînement est également la coûteuse en temps de calcul. Elle n’aura cependant à être effectuée qu’une seule fois.

Figure 4 : Pour l’entraînement du LM on utilise un RNN formé de 3 couches de LSTM sans mécanisme d’attention mais doté de mécanismes de régularisation appropriés au NLP qui ne sont pas représentés ici.

Phase 2 – Fine Tuning du même RNN sur la tâche cible

La deuxième phase initie le Transfer Learning proprement dit. On reprend pour cela le modèle préalablement entraîné sur le LM générique et l’on ajuste son entraînement en utilisant cette fois un corpus de texte propre à la tâche cible. Cette phase d’ajustements est typiquement beaucoup plus rapide que la phase précédente. De plus, elle ne nécessite généralement qu’une fraction du volume de données utilisé pour le préentraînement du LM.

Motivés par l’intuition que chacune des couches du modèle de la figure 4 encapsule un type d’information sémantique différent, les auteurs prennent soin d’ajuster séparément la vitesse d’apprentissage pour chacune d’elles. Rappelons qu’on définit ordinairement la vitesse d’apprentissage η comme l’amplitude de la mise à jour des paramètres w du NN à chaque pas d’une descente de gradient : wt+1 = wtη L(wt),  étant la fonction de coût définie sur un mini-batch de données du LM. On aura donc en l’occurrence trois vitesses ηi différentes pour les paramètres  des couches  avec des mises à jours :  wit+1 = wit – ηi L(wt). Les auteurs ont déterminé empiriquement qu’il est judicieux de fixer la vitesse η3 de la dernière couche puis de la faire décroitre selon ηi = ηi+1 / 2.6 pour = 2 puis i = 1. En clair, il s’avère payant de procéder d’autant plus lentement dans la mise à jour des paramètres d’une couche que celle-ci est plus générique (proche de l’entrée). Ce mécanisme est appelé le Discriminative Fine Tuning.

Pour favoriser la convergence rapide du modèle lors du Fine Tuning les auteurs ont par ailleurs découvert qu’il était judicieux d’utiliser des vitesses d’apprentissage ηit dépendantes, non seulement de la couche i, mais également du temps t écoulé (=nombre d’itérations effectuées). L’expérience montre qu’un bon un profil temporel est celui qui est illustré dans la figure 5 où la vitesse croit rapidement durant une brève phase ascendante puis décroit lentement à mesure que l’apprentissage fin de la tâche cible s’incruste dans le modèle. Ce mécanisme est appelé le Slanted Triangular Learning Rates.

Figure 5 : Profil de la vitesse d’apprentissage en fonction du nombre d’itération t de la DGS. Une première phase d’augmentation rapide favorise la convergence. Une seconde phase de décroissance lente préserve prudemment ce qui a été acquis jusque-là.

Phase 3 – Fine Tuning du classifieur cible par dégel progressif

Le classifieur complet est construit en ajoutant au RNN de la figure 4 deux couches d’un classifieur (en bleu et rouge sur la figure 6), la première avec des activations ReLU, la seconde avec une sortie en softmax, tous deux incorporant les mécanismes de régularisation appropriés (non-représentés ici). Le dernier vecteur caché hT contient en principe toute l’information calculée par le RNN. Toutefois, pour éviter de perdre de l’information qui pourrait se nicher dans les vecteurs cachés précédents (h1,…,hT-1) on concatène à ce hT deux autres vecteurs qui synthétisent l’information contenue dans la suite complète . On calcule pour cela le maximum et la moyenne, composante par composante, de ces T vecteurs cachés. C’est ce que font les fonctions maxpool() et meanpool() dans la couche verte de la figure 6.

Figure 6 : Le classifieur complet rajoute deux couches supplémentaires (bleu et rouge) à la sortie de la dernière couche du RNN pour prédire une distribution de probabilité sur différentes catégories. La couche verte construit une information qui synthétise l’information contenue dans la séquence des vecteurs cachés en sortie de la dernière couche du RNN.

Le fine tuning de l’édifice complet est la partie la plus délicate de l’entraînement car il s’agit de préserver l’information engrangée par le RNN durant les deux premières phases d’apprentissage tout en affinant l’apprentissage de la tâche cible. Les concepteurs d’ULMFiT proposent pour cela de dégeler l’une après l’autres les couches du RNN, en commençant par la dernière couche (n°3) puis en procédant couche par couche vers les couches plus génériques. Après chaque dégel, le modèle complet est réentraîné en faisant une passe complète sur les données. Ce processus de dégel progressif (« Chain-Thaw ») des couches de plus en plus basses est illustré dans la figure 7.

Figure 7 : Le processus de dégel progressif (Chain-Thaw) des couches du RNN pour le fine tuning de l’entraînement du classifieur complet

L’article [ULM] procède à une analyse par ablation rigoureuse, qui démontre la pertinence de combiner tous les mécanismes décrits précédemment : (1) le préentraînement sur un LM, (2) le Discriminative Fine Tuning, (3) Slanted Triangular Learning Rates et enfin (4) le Chain-Thaw.

Figure 8 : Comparaison de l’évolution de l’erreur de validation en fonction du volume des données d’entraînement utilisées dans 3 situations. En bleu pour un entraînement sans ULMFiT, en orange pour un entraînement avec ULMFiT mais sans l’étape 2 de fine-tuning spécifique à la tâche cible et en vert pour la procédure ULMFiT complète – source [ULM]

La figure 8 illustre l’évolution de l’erreur de validation en fonction du volume de données utilisé pour l’entraînement sur un benchmark classique (IMDb). On constate que la mise en œuvre de la procédure ULMFiT complète permet d’économiser un facteur supérieur à 100 sur le volume des données d’entraînement pour une précision équivalente.

3.2   ELMo – le transfert par extraction de features

L’approche développé dans l’article « Deep Contextualized Word Representations » [ELM] est conceptuellement très simple puisqu’elle propose de remplacer, dans n’importe quel modèle de NLP, les WE non contextuels usuels par des WE plus riches qui prennent en compte le contexte sémantique et syntaxique de chaque mot que l’on souhaite encoder. C’est donc une approche très générale qui s’applique sans difficultés à toutes sortes de problèmes de NLP à la seule condition que le modèle utilise des WE en entrée, ce qui est presque toujours le cas. Contrairement à ULMFiT cette méthode n’est donc pas restreinte aux seuls problèmes de classification. Elle a été testée avec succès dans des problèmes aussi variés que la déduction d’implications logiques (« Textual Entailment ») ou la réponse automatique à des questions (« Question Answering ») avec à chaque fois des gains en précision compris entre 6 et 20% sur l’erreur relative et, simultanément, une réduction du volume des données d’entraînement allant jusqu’à un facteur dix.

Là encore, on utilise un modèle de langage pour construire ces word embeddings améliorés que l’on désigne par le sigle ELMo pour « Embeddings from Language Models ». La méthode ELMo diffère toutefois de ULMFiT sur deux points principaux. D’une part l’architecture du NN utilisé pour le LM est plus sophistiquée comme nous le verrons puisqu’elle combine les LSTM au niveau des mots et des CNN au niveau des chaînes de caractères [UCN]. D’autre part, le transfert d’apprentissage entre le LM et la tâche cible de ne se fait pas par fine tuning du LM mais plutôt par extraction explicite de nouvelles features qui seront précisément les ELMo. Détaillons ces deux points.

Une architecture de LM qui combine LSTM et CNN

Une image valant mille mots, nous nous appuierons sur les figures 9 et 10 pour décrire les principaux éléments de l’architecture du LM.

Figure 9 : Le bi-LSTM utilisé comme LM. Les LSTM des parties gauches et droites sont indépendants. Les paramètres des char-CNN et des softmax sont en revanche partagés entre les deux parties.

La figure 9 illustre l’architecture (simplifiée) utilisée pour apprendre le LM. Le modèle est constitué de deux parties associées aux deux directions de traitement possibles. Les paramètres des couches d’embedding char-CNN (décrites plus loin) d’une part et les paramètres des couches softmax d’autre part sont identiques pour les deux parties. Les couches de LSTM en revanche sont indépendantes l’une de l’autre ce qui est symbolisé par les hachures dans des directions différentes. Cette structure est appelée un bi-LSTM. L’objectif du modèle est de prédire un mot en fonction à la fois des termes qui le précèdent et de ceux qui le suivent. La fonction de coût est une simple moyenne des fonctions de coût calculées par les deux parties du bi-LSTM.

Figure 10 : Zoom sur la partie char CNN qui effectue les WE initiaux. Le nombre de filtres égale la dimension de l’embedding. Voir le texte pour la description complète.

Une autre différence avec ULMFiT est que l’on utilise des réseaux de convolution à une dimension basé sur les caractères des mots (1D char-CNN) pour réaliser les WE xj en entrée de la première couche de LSTM. Le principe des 1D char-CNN appliqués au WE est illustré sur la figure 10 [ELL, UCN]. Les tokens étant ici les caractères d’un mot, on commence par associer chaque caractère à un vecteur (char embedding) de faible dimension (qui sera appris durant l’entraînement). Chaque mot est donc représenté par une matrice comportant autant de lignes que le mot possède de caractères (en gris dans la figure 10). Pour créer des embeddings  xj de mots de dimension r on construit autant de filtres (dans le sens CNN du terme [MAL]) dont la largeur (5 dans la figure 10) est égale à la dimension des embedding. Le résultat du produit de convolution de chacun de ces r filtres s’obtient en faisant glisser verticalement le filtre sur la matrice d’embeddings et en calculant la somme des produits des composantes correspondantes. On obtient ainsi r vecteurs de longueurs variables que l’on fait passer par une fonction d’activation sigmoïde usuelle. Le vecteur d’embedding du mot souhaité s’obtient alors par une opération de max-pooling qui sélectionne la composante maximale de chacun de ces  vecteurs.

L’atout principal des 1D char-CNN par rapport aux embeddings classiques est qu’ils permettent d’encoder n’importe quel mot contrairement aux WE usuels qui sont associés à un vocabulaire figé [ELL].

Par ailleurs, les 1D char-CNN se révèlent particulièrement efficaces pour des langues morphologiquement riches ou lorsqu’un texte retranscrit une conversation informelle [ELL].

Extraction des features ELMo

Une fois que le LM a été entraîné sur un grand corpus de texte, on fige ses paramètres. Pour l’utiliser comme un encodeur contextuel de mots on procède de la manière suivante. Si le contexte du mot à encoder est constitué par une phrase, on injecte cette phrase en entrée du bi-LSTM de la figure 9. Si le mot est en position k dans la phrase, on récupère d’une part l’embedding classique xk calculé en cette position par le 1D char-CNN et, d’autre part, tous les vecteurs cachés hk(1), hk(2),… situés à cette même position au-dessus des LSTM (voir la figure 9). Ces vecteurs encapsulent une information précieuse car contextuelle à la phrase grâce à la double récurrence du bi-LSTM. Les hk(j) des couches basses encodent typiquement une information syntaxique alors que les hk(j) des couches supérieures encodent une information sémantique.

On construit ensuite des variables ELMOk(tâche) par combinaison concaténation et combinaison linéaire de ces vecteurs cachés hk(j) comme l’illustre la figure 11 (a).

Figure 11 : (a) La fabrication des embeddings boostés ELMOk(tâche) par combinaison linéaire des vecteurs cachés associés au mot n° k. (b) Dans le modèle cible on remplace les embeddings usuels xk par la concaténation de chaque xk avec les ELMOk(tâche), les coefficients sj (tâche) sont appris sur la tâche cible.

 

Les coefficients sj (tâche) ne sont pas fixés par avance mais sont appris lors de l’entraînement du modèle sur la tâche cible. Dans le modèle cible on remplace simplement les embeddings usuels xk par ces mêmes embeddings concaténés au embeddings boostées ELMOk(tâche) comme l’illustre la figure 11 (b).

La combinaison linéaire des vecteurs cachés hk(j) détruit une part de l’information mais l’expérience montre que l’information reste suffisante. Un combinaison linéaire a par ailleurs l’avantage d’avoir une dimension indépendante du nombre de couches.

Dans certains cas un fine-tuning du LM sur la tâche spécifique améliorera encore les scores. Au final, c’est l’observation de l’amélioration des scores sur des applications de NLP concrètes qui démontre que les variables ELMOk(tâche)  incorporent une information contextuelle inaccessible aux WE usuels.

3.3   BERT – le meilleur pour la fin !

Début octobre 2018, l’article « BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding » [BER] défraie la chronique [BME] dans la communauté du Deep Learning – NLP. Une fois de plus, les équipes de R&D de Google donnent le la en exploitant une architecture de NN récente de leur cru, le Transformer [AYN]. Les performances de BERT définissent un nouvel état de l’art pour 11 problèmes de NLP et ceci sans exiger aucun ajustement spécifique à une tâche particulière ! Sur le problème difficile du « Question Answering » BERT dépasse même les humains !

Il s’agit là encore d’une variante du Transfer Learning. Le mode principal de fonctionnement de BERT correspond à un transfert par fine-tuning similaire à celui qu’exploite ULMFiT, c’est celui que nous présenterons rapidement, mais il est aussi utilisable en mode transfert par extraction de features comme ELMo.

Schématiquement BERT (Bidirectional Encoder Representations from Transformers) se base sur deux innovations que nous présenterons succinctement ci-dessous :

  1. L’utilisation de l’architecture Transformer [AYN] qui constitue une alternative récente et performante aux RNN pour réaliser un préentraînement bidirectionnel profond, des termes sur lesquels nous reviendrons. C’est l’innovation principale de BERT.
  2. L’utilisation de deux nouvelles tâches pour le préentraînement, l’une au niveau des mots et l’autre au niveau des phrases.

Pour être juste mentionnons qu’une équipe d’OpenAI avait aussi proposé quelques mois avant BERT un modèle très performant [OAT] qui s’appuyait également sur le Transformer et ne nécessitait aucun ajustement spécifique.

L’architecture Transformer et l’entraînement bidirectionnel

L’architecture Transformer a été publiée fin 2017 dans un article au titre accrocheur : « Attention is All You Need ! » [AYN]. A terme, cette architecture a vocation à remplacer les RNN comme encodeurs de séquences. La motivation des concepteurs du Transformer était de pallier un des principaux inconvénients des RNN à savoir l’impossibilité de paralléliser leurs traitements en raison du caractère séquentiel des calculs qu’ils effectuent. Chaque cellule d’un RNN a en effet besoin d’accéder au résultat calculé par la cellule précédente, voir la figure 12.

Figure 12 : Le caractère séquentiel d’un RNN empêche la parallélisation des calculs.

Les auteurs ont élaboré une architecture qui tire astucieusement parti du mécanisme d’attention [NMT] (d’où le titre) auquel nous avions consacré un précédent article [MAL]. Rappelons que dans le contexte de la traduction automatique ce mécanisme permet, par exemple, d’incorporer des éléments contextuels à l’encodage d’un mot. Pour des phrases comme :

  • « The animal did not cross the street because it was wide. » ou
  • « The animal did not cross the street because it was tired. »,

il est crucial d’identifier correctement à quel mot se réfère le pronom « it » (« animal » ou « street ») pour traduire correctement la phrase en français (« … il était trop fatigué » ou « … elle était trop large »). Le mécanisme d’attention [NMT, MAL] permet, entre autres, de lever ce genre d’ambiguïté en incorporant dans la représentation numérique du mot « it » une information qui indique sa référence à un autre mot, une capacité acquise par entraînement statistique comme pour tout modèle de ML.

Figure 13 : Les principaux éléments de l’architecture du Transformer. (a) Un encodeur, formé d’un empilement de couches de petits encodeurs, convertit une suite de WE en une suite qui de vecteurs qui incorporent des informations contextuelles riches pour chaque token. (b) Un zoom sur une couche d’encodeur, voir le texte. (c) Les WE utilisés par le Transformer ajoutent aux WE initiaux une information de position.

Une présentation détaillée, illustrée et pédagogique du Transformer est disponible dans cet excellent article [ITR]. Nous limiterons ici à la description très schématique illustrée dans la figure 13.

A l’échelle macroscopique un Transformer fonctionne comme un encodeur-décodeur [MAL] utilisé dans un système de traduction automatique, voir la figure 13 (a). Il convertit une suite de WE (ou de token) en une autre suite, de longueur différente, de vecteurs. L’encodeur empile plusieurs petits encodeurs (six dans la figure 13) qui sont autant de couches d’abstraction et de même pour le décodeur qui empile plusieurs petits décodeurs. Seul l’encodeur du Transformer est utilisé en phase de préentraînement par BERT.

La figure 13 (b) fait un zoom sur un des petits encodeurs. Après entraînement, la couche de self-attention détecte les relations sémantiques qui existent entre différents vecteurs qu’elle reçoit en entrée (représentés en vert) et incorpore cette information dans les vecteurs qu’elle produit en sortie (représentés en rose). Ce mécanisme de self-attention intervient à chaque niveau d’abstraction de l’encodeur et du décodeur. Il intervient également entre l’encodeur et le décodeur mais ceci ne nous concerne pas pour BERT. Chaque vecteur en sortie de la couche de self-attention alimente un (même !) simple NN dense qui ajoute une couche d’abstraction à l’encodeur. Chaque instance de ce NN est indépendante des autres si bien qu’il est dorénavant trivial de paralléliser ces traitements.

Une difficulté à surmonter est qu’il n’existe pas de notion naturelle d’ordre des tokens en entrée d’un Transformer, chaque token étant équivalent aux autres par contraste avec un RNN qui définit explicitement un tel ordre. Il faudra par conséquent injecter explicitement l’information de position de chaque token dans son embedding, faute de quoi le Transformer percevrait une phrase comme une simple collection désordonnée de mots (un « bag of words »). C’est ce que représente la figure 13 (c). L’encodeur du Transformer ne privilégie cependant aucune des deux directions de lecture d’une suite, en ce sens il est intrinsèquement bidirectionnel.

Figure 14 : Comparaison entre l’architecture BERT réellement bidirectionnelle et l’architecture ELMo qui est une concaténation deux RNN unidirectionnels.

 

ELMo était aussi bidirectionnel mais d’une manière plus superficielle puisqu‘il était constitué de deux RNN unidirectionnels dont calculait la moyenne des prédictions. La figure 14 illustre cette différence entre ELMo et BERT.

Les deux nouvelles tâches pour le préentraînement

Le LM utilisés jusqu’ici sont des modèles unidirectionnels même si ELMo procède à une moyenne des deux directions. Dans BERT le Transformer est préentraîné simultanément sur deux tâches NLP qui, d’une part, ne nécessitent aucun travail de supervision manuel et, d’autre part, ne privilégient aucune direction des deux directions de lectures et mettent donc à profit le caractère bidirectionnel du modèle.

Figure 15 : Les deux tâches utiliser dans BERT pour le préentraînement du Transformer. La première consiste à prédire des probabilités de mots masqués. La seconde consiste à déterminer si deux phrases sont consécutives.

La première de ces tâches consiste à entraîner le Transformer à prédire un certain nombre de termes (15% dans [BER]) masqués et choisis aléatoirement dans le corpus source (Masked Language Model). Comme pour le LM cette tâche force le modèle à encapsuler une part importante de NLP aussi bien sur des aspects de syntaxe que de sémantique. Pour réaliser un tel modèle il suffit d’ajouter un softmax qui convertit le vecteur caché de la dernière couche du Transformer en une probabilité sur les mots du vocabulaire.

La deuxième tâche a vocation à apprendre à cerner les relations sémantiques entre deux phrases, une aptitude essentielle par exemple pour évaluer le degré de proximité sémantique entre deux phrases, pour identifier des relations logiques ou pour à répondre à des questions. On crée à cet effet un ensemble d’entraînement formé de couples de phrases dont 50% sont effectivement consécutives et 50% sont choisies au hasard dans le corpus.

Le Transformer est entraîné simultanément sur les deux tâches avec une fonction de coût égale à la somme des fonctions de coût associées aux deux tâches.

4.   Le début d’une longue marche !

Les progrès en NLP décrit dans cet article marquent assurément un tournant. 2018 restera l’année où l’idée du Transfer Learning [AST] aura été concrétisée dans le domaine du NLP comme elle l’avait été quelques années plutôt en vision artificielle.

L’information encapsulée dans un seul modèle de NLP, entraîné au prix fort sur une tâche générique suffisamment complexe, peut être mise à profit pour entraîner économiquement des modèles différents sur des tâches spécifiques.

Des implémentations de référence de certains de ces modèles existent d’ores et déjà dans les librairies de Deep Learning comme TensorFlow et PyTorch.

Sur le plan de l’architecture des NN, ces avancées en NLP reposent aujourd’hui sur quelques intuitions. Le mécanisme d’attention ou la possibilité d’apprendre des structures complexes comme des modèles de langage par empilement de couches d’abstraction sont deux exemples. Bien sûr, ces nouveaux modèles exploitent par ailleurs toute la panoplie de trucs et d’astuces (bag of tricks) développées ces dix dernières années pour le Deep Learning en général. Sans oublier pour ce qui est du matériel les GPU désormais incontournables.

A ce jour, le NLP tout comme le Deep Learning en général, reste une discipline très empirique. Les études d’ablations menées dans [ULM, BER], qui cherchent à identifier sans ambiguïté les éléments déterminants des performances d’un modèle, sont en pointe sur cette démarche qui, pour être expérimentale, se veut désormais plus rigoureuse.

Les fondements théoriques qui expliqueraient pourquoi ces modèles sont si performants font pour l’instant défaut. Disposer de résultats d’optimalité qui indiqueraient quelles sont les performances optimales que l’on peut espérer d’un algorithme, serait pourtant très utile. Pour guider la conception d’architectures de NN performantes, pour la construction de jeux de données denses (riches et compacts) ou, plus simplement, pour éviter des explorations inutiles et fastidieuses en pointant des voies sans issues[4].

Terminons par une question fascinante que soulève le NLP. Est-il possible d’apprendre une langue entièrement à partir d’un corpus de texte comme prétendent le faire les modèles de contemporains ?  Certains chercheurs comme Y. Bengio, les des pères fondateurs du Deep Learning, en doute sérieusement et préconisent d’expérimenter dès à présent une approche dite de Grounded Language Learning qui consiste à apprendre un langage par expérience sensorielle plutôt que par la seule lecture. L’intuition commune nous suggère qu’un immense réservoir de bon sens, celui qui nous permet de nous mouvoir dans un monde physique et social complexe, n’est disponible dans aucun corpus de textes, aussi vaste soit-il. Par ailleurs, un argument simple tiré de la théorie de l’information [YBC, HTC] démontre que certains langages[5] sont rigoureusement « innaprenables » bien qu’ils puissent encoder une sémantique capable de décrire tout un univers.

La stratégie poursuivie par l’équipe de Y. Bengio consiste à initier un tel « apprentissage linguistique incarné » dans des mondes virtuels simplifiés à l’extrême où l’apprentissage sera rapide pour le poursuivre dans un second temps dans le monde réel.

En conséquence, il n’est pas impensable que la recherche en NLP redécouvre un jour sur ce vieux principe de sagesse et d’éducation qui nous rappelle qu’on en apprendra toujours davantage de la vie que d’une lecture avide de tous les livres du monde.

 

Références

  • [ULM] Universal Language Model Fine-tuning for Text Classification, Howard, S. Ruder – mai 2018, arXiv:1801.06146 [cs.CL]
  • [ELM] Deep contextualized word representations, E. Peters, M. Neumann, M.Iyyer, M. Gardner, C. Clark, K. Lee, L. Zettlemoyer, arXiv:1802.05365[cs.CL] – mai 2018
  • [BER] BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding, Devlin, M.-W. Chang, K. L., K. Toutanova, arXiv:1810.04805 [cs.CL] – octobre 2018
  • [BME] Best NLP Model Ever? Google BERT Sets New Standards in 11 Language Tasks, Tony Peng, Medium – octrobre 2018
  • [OAT] Improving Language Understanding by Generative Pre-Training, Radford, K. Narasimhan, T. Salimans, I. Sutskever, OpenAI blog post – juin 2018
  • [AYN] Attention Is All You Need, Vaswani, N. Shazeer, N. Parmar, J. Uszkoreit, L. Jones, A. N. Gomez, L. Kaiser, I. Polosukhin, arXiv:1706.03762 [cs.CL]– décembre 2018,
  • [LST] Understanding LSTM Networks, Olah, blog post – août 2015
  • [UCN] Understanding Convolutional Neural Networks for NLP Britz, WildML blog post – novembre 2015
  • [ITR] The Illustrated Transformer, Alammar, blog post – juin 2018
  • [ELL] Exploring the Limits of Language Modeling, Jozefowicz, O. Vinyals, M. Schuster, N. Shazeer, Y. Wu – février 2016, arXiv:1602.02410 [cs.CL]
  • [AWD] What makes the AWD-LSTM great?, Seth, blog post– septembre 2018
  • [YBC] Challenges for deep learning toward AI, Yoshua Bengio, vidéo YouTube France is AI – octobre 2018
  • [HTC] How to Teach Artificial Intelligence some Common Sense, Clive Thompson, article Wired – novembre 2018
  • [NMT] Neural Machine Translation by Jointly Learning to Align and Translate, Bahdanau, K. Cho, Y. Bengio, arXiv:1409.0473 [cs.CL] – mai 2016
  • [AST] A Survey of Transfert Learning, Sinno Jialin Pan, Qiang Yang, IEEE Transactions on Knowledge and Data Engineering, Volume 22, Issue 10 – octobre 2010
  • [OBB] Opening the Black Box of Deep Neural Networks via Information, Shwartz-Ziv, N. Tishby, arXiv:1703.00810 [cs.LG] – avril 2017
  • [CHL] Chatbots – entre rêves et réalité, Lemberger, IA Lab weave – avril 2017
  • [MAL] Le mécanisme d’attention en IA, Lemberger, IA Lab weave – janvier 2018

[1] Nous pensons ici en particulier au célèbre test de Turing.

[2] Même si de nombreuses métriques ont été conçues à cet effet comme la métrique BLEU par exemple

[3] Une notation graphique standardisée pour les architectures de RN, de type ULM, serait ici d’une grande utilité autant pour simplifier la présentation que le décryptage de nouvelles architectures.

[4] Dans le cadre du Deep Learning en général les travaux de chercheurs comme S. Mallat au Collège de France ou de N. Tishby [OBB] de l’université de Jérusalem sont des tentatives prometteuses.

[5] Si l’on procède à un codage optimal d’un message, avec un codage de Huffman par exemple, le message encodé a l’air d’être un message strictement aléatoire et ne peut donc être appris.

Newsletter

Inscrivez-vous à notre newsletter pour recevoir nos dernières actualités*

Les informations recueillies sur ce formulaire sont enregistrées dans un fichier informatisé de gestion des Clients et Prospects (CRM).

Le Responsable de traitement est la société weave, 37 rue du rocher 75008 Paris RCS Paris 802 396 085.

Elles sont destinées à l’activité marketing du groupe weave ainsi quà celle de ses filiales, à l’exclusion de tout transfert hors de l’UE. Elles sont conservées pour une durée conforme aux dispositions légales (par exemple 3 ans pour les données prospects).

Ce traitement nécessite votre consentement que vous pourrez retirer à tout moment sans que cela ne remette en cause sa licéité.

Conformément à la loi « Informatique et Libertés » et au règlement européen n°2016/679, vous bénéficiez d’un droit d’accès, de rectification ou d’effacement, ainsi que d’un droit à la portabilité de vos données ou de limitation du traitement. Vous pouvez également pour des raisons tenant à votre situation particulière, vous opposer au traitement de vos données et donner des directives relatives à la conservation, à l’effacement et à la communication de vos données après votre décès. Vous disposez également du droit d’introduire une réclamation auprès de la Commission Nationale de l’Informatique et des Libertés (www.cnil.fr).

Vous pouvez exercer vos droits en nous contactant à l’adresse vosdonnees@weave.eu.

En poursuivant votre navigation sur ce site, vous acceptez l’utilisation de cookies pour mesurer notre audience, vous proposer des contenus et des offres personnalisées, ainsi que des fonctionnalités de partage sur les réseaux sociaux. En savoir plus sur notre politique de cookies et notre charte des données personnelles