Exploiter le potentiel de GPT-3  

machine learning gpt3 nlp

L'avènement de grands modèles de langage pré-entraînés (tels que GPT-3) a donné naissance au nouveau paradigme de " prompt engineering " dans le domaine du NLP.

Ce nouveau paradigme nous permet de prototyper rapidement des applications complexes de NLP avec peu ou pas d'effort et sur la base de très petites quantités de données.

Dans cet article, nous présentons une étude de cas simple avec GPT-3 pour créer une application qui rend l'automatisation accessible à tout le monde en utilisant des entrées vocales et textuelles.

La solution fonctionne avec extrêmement peu de points de données et peut facilement être adaptée pour des nouvelles situations sans réentrainement.

Bonne lecture !!

Prompt-engineering : le nouveau paradigme du deep learning ?

À l'époque de l'apprentissage automatique, les ingénieurs devaient passer d'innombrables heures à créer des features informatives et discriminantes pour améliorer la qualité de leurs modèles.

Avec l'avènement de l'apprentissage profond, les modèles sont désormais capables d'extraire leurs propres features à partir d'une quantité importante de données.
Finalement, les Data Scientists ont créé des techniques permettant d'appliquer des modèles pré-entraînés à de nombreuses tâches par le biais du transfer learning, ce qui permet à ces modèles d'obtenir d'excellentes performances dans de nombreuses cas de figure avec une quantité faible de données.

Le domaine du traitement du langage naturel (NLP) a également connu ces évolutions.
Il est intéressant de noter qu'un nouveau paradigme semble émerger dans ce domaine, qui pourrait avoir un impact majeur sur la façon dont nous utiliserons l'apprentissage profond à l'avenir.

Récemment, certains modèles pré-entraînés ont fait fureur. GPT3, l'un de ces modèles, a été entraîné en prédisant la suite d'une phrase donnée aussi précisément que possible (cette tâche est appelée modélisation causale du langage).
Étant donné que cette tâche ne nécessite aucune annotation supplémentaire (nous l'appelons auto-supervisée), les chercheurs ont pu rassembler de grandes quantités de données (40 Go de texte) et entraîner un modèle d'apprentissage profond extrêmement grand (175 milliards de paramètres).

En conséquence, GPT3 est actuellement le meilleur modèle de sa catégorie pour générer un langage de type humain. Étant donné une phrase en entrée, GPT3 la poursuit de manière naturelle.

Il s'avère qu'être capable de générer un langage naturel cohérent présente de nombreux avantages. Lorsque l'on poursuit la phrase "Alors que les acteurs étaient bons, le scénario du film était horrible. Ce film est...", GPT3 a beaucoup plus de chances de produire le mot "mauvais" que le mot "bon".

Ainsi, en apprenant à générer du texte, nous avons également appris à faire de la classification de sentiments sans avoir besoin d'accéder à des annotations de sentiments.

Nous pouvons également guider GPT3 pendant le processus de génération. Si nous voulons savoir quelle est la capitale de la Belgique, nous pouvons demander à GPT3 de poursuivre la phrase suivante : "La capitale de la France est Paris. La capitale du Japon est Tokyo. La capitale de la Belgique est ...". Par contre, si nous demandons simplement "La capitale de la Belgique est ...", nous risquons d'obtenir une suite telle que "une belle ville" au lieu de "Bruxelles".

NLP GPT3 deep learning

La façon dont nous posons ces questions à GPT3, le format que nous utilisons et les exemples que nous incluons sont appelés "Prompt Engineering". Ce nouveau paradigme peut changer radicalement la façon dont nous interagissons avec les modèles d'apprentissage profond.

Au lieu de rassembler de grandes quantités de données et d'affiner un modèle existant, nous sommes désormais en mesure d'exploiter seulement quelques points de données pour obtenir des résultats remarquables.
En prime, nous n'avons même pas besoin de réentraîner notre modèle lorsque de nouvelles données sont disponibles ou lorsque nous voulons modifier la définition de la tâche. Nous n'avons même pas besoin d'héberger le modèle nous-mêmes, puisque GPT3 est accessible via une API !

Comme pour tout nouveau paradigme, les chercheurs et les praticiens explorent rapidement de nombreuses façons différentes de tirer parti du Prompt Engineering.

Utilisation de GPT3 pour une automatisation IoT : une étude de cas

Waylay est une plateforme low-code qui permet aux développeurs d'automatiser différents process.
Il suffit de brancher des capteurs, d'envoyer des données et de commencer à profiter des avantages.

Les règles d'automatisation sont au cœur de la plateforme Waylay. Les développeurs écrivent de petits extraits de code (ou utilisent des codes préexistants) et les enchaînent avec des opérateurs logiques pour définir des règles d'automatisation.
Une règle d'automatisation peut être quelque chose qui vous permet d'activer les arroseurs si le temps est ensoleillé et qu'il n'a pas plu depuis 3 jours, ou de programmer une inspection pour une machine industrielle si une anomalie est détectée sur l'un de ses nombreux capteurs. En enchaînant ces règles, on peut créer des logiciels d'automatisation arbitrairement complexes.

Imaginez que nous puissions simplement interagir avec ce moteur d'automatisation par une commande vocale ou textuelle, de manière naturelle.
C'est là que le NLP entre en jeu. Au lieu d'avoir à interagir avec un ordinateur de la manière habituelle, nous pouvons imaginer un ouvrier d'usine demandant à sa machine "Quelle est la température du four 5 ?" ou lui disant "Déclenchez une alerte critique si la température du congélateur dépasse -10 degrés et que la porte est ouverte".

Il n'est certainement pas facile d'y parvenir. Les règles formulées par l'homme peuvent être très ambiguës et il faut beaucoup d'intelligence pour les analyser et les traduire correctement en règles d'automatisation.

La solution

Si nous voulons construire une solution pour traduire les règles parlées par les humains en règles d'automatisation Waylay, les méthodes "traditionnelles" ne suffiront pas.

Il s'agit avant tout d'un manque de données.
Afin d'analyser de manière robuste les énoncés humains et de capturer les informations nécessaires pour les traduire en quelque chose que le système Waylay peut comprendre, nous aurions besoin d'une grande quantité de données couvrant différentes manières de parler et de mapper les règles Waylay correspondantes.
Ces données ne sont pas disponibles actuellement. Même si nous disposions de ces données, notre modèle devrait être ré-entraîné chaque fois.

Nous nous tournons vers le prompt engineering pour résoudre ce problème. Si nous pouvons utiliser GPT3 pour faire ce travail à notre place, nous pouvons construire un système hautement efficace en termes de données qui n'a pas besoin d'être ré-entraîné pour traiter de nouveaux cas.

La question qui se pose maintenant est la suivante : "Comment pouvons-nous tirer parti des capacités de GPT3 pour faire ce travail à notre place ? Malheureusement, il est très difficile d'apprendre à GPT3 à produire la structure de données interne correcte dont Waylay a besoin sur la base d'une entrée en langage naturel.
Heureusement, nous pouvons contourner ce problème grâce à un hack intelligent.
Dans notre solution, nous laisserons GPT3 produire une phrase canonique. Cette phrase contient les mêmes informations que notre entrée en langage naturel, mais de manière plus structurée. Par exemple, les énoncés "envoyer à David un message lui disant de conduire prudemment lorsqu'il pleut à Paris" et "seulement lorsqu'il pleut à Paris, dire à David "Conduisez prudemment" par SMS" peuvent tous deux être réduits à la phrase canonique " si le temps à Paris est pluvieux, alors envoyer un SMS à David avec le message "Conduisez prudemment"".

deep learning gpt3 nlp

Transformer ces énoncés en canoniques s'apparente davantage à une tâche de traduction ou de résumé, que GPT3 peut plus facilement gérer. Sur la base de quelques exemples seulement (moins de 10), GPT3 est déjà très bon pour traduire un langage naturel en un énoncé structuré.
Une fois que nous avons obtenu ce canonique, nous avons besoin d'une analyse syntaxique supplémentaire pour le transformer en structure de données interne représentant une règle Waylay.
Bien que cette dernière étape nécessite certainement un effort d'ingénierie supplémentaire, nous avons réussi à déléguer la "partie intelligente" de notre problème à GPT3.

Pour obtenir des performances maximales, nous avons un autre étape à ajouter.
Au départ, nous ne disposons que d'un petit nombre d'exemples. Cependant, une fois qu'un plus grand nombre d'exemples est disponible, nous devons sélectionner les exemples qui sont entrés dans GPT3 en fonction de l'énoncé que nous voulons transformer.
Une façon simple de le faire est de prendre les exemples qui sont les plus similaires à la phrase énoncée. De cette façon, nous pouvons nous assurer que GPT3 aura toujours accès aux exemples les plus pertinents.
Pour valider cette idée, nous avons adopté l'approche la plus simple possible : intégrer toutes les phrases à l'aide d'un mean pooling de mots statiques en utilisant la similarité du cosinus comme mesure de distance.

Bien que des métriques de similarité plus avancées soient certainement possibles, cette solution rapide et facile fournit déjà l'essentiel de la valeur : étant donné un grand ensemble de données, nous pouvons maintenant extraire rapidement des échantillons que GPT3 pourra utiliser pour traiter un énoncé donné.

La mise en œuvre de cette solution a été assez simple. Quelques microservices Flask, une petite base de données et un front-end Vue.js ont fait l'affaire. Aucune expertise n'a été requise pour le déploiement d'un modèle d'apprentissage profond !

Résultats

Et maintenant la partie amusante, l'exploration des résultats.

Sur la base de moins de 10 exemples d'énoncés et de leurs canonique correspondants dans le prompt, la solution montre déjà des résultats remarquables. Le modèle est capable de traiter différents types d'énoncés qui ne sont pas représentés dans les 10 exemples donnés.

La solution est robuste contre les fautes de frappe et les erreurs grammaticales. En outre, la solution est capable de tirer parti du raisonnement fondé sur le "bon sens" de GPT3. Elle sait traduire "la capitale de la Belgique" par "Bruxelles".

Conclusion

En reformulant notre tâche d'analyse sémantique en une tâche de traduction, nous avons pu tirer parti de tout le potentiel de GPT3 pour faire tout le travail à notre place.
Notre solution fonctionne avec très peu de points de données, elle peut facilement être adaptée à de nouvelles situations sans réentraînement et nous n'avons pas besoin d'héberger nous-mêmes le modèle d'apprentissage profond.
Grâce aux fortes capacités de GPT3, notre solution montre une remarquable généralisation vers des scénarios inédits.

Dans les années à venir, cette approche de prompt engineering permettra aux spécialistes des données de prototyper de nombreuses applications en langage naturel, à une vitesse jamais vue auparavant.

Ces prototypes pourront être déployés sous forme de fonctionnalités expérimentales, dont les performances augmenteront au fur et à mesure que les données seront disponibles. Une fois qu'une quantité critique de données est recueillie, des techniques d'apprentissage profond plus conventionnelles peuvent être explorées.
Avec les entreprises qui se concentrent actuellement sur la construction de modèles de langage pré-entraînés encore plus grands et les chercheurs qui mettent en libre accès leurs implémentations de ces modèles, nous ne pouvons que nous attendre à ce que l'ingénierie rapide gagne en importance dans les années à venir.

En savoir plus

Contactez nos équipes pour en savoir plus sur notre expertise Data

NOUS CONTACTER

Adopter Iziday

Trouver une solution à vos enjeux Data n'a jamais été aussi simple

TROUVER UN CONSULTANT