La génération automatique de texte (GAT) ou Natural Langage Generation (NLG) est un processus logiciel qui transforme des données structurées en langage naturel. Le générateur de texte le plus connu est le GPT-3 d'OpenAI, qui a récemment annoncé qu'il est utilisé dans plus de 300 applications, par des « dizaines de milliers » de développeurs et qu'il produit 4,5 milliards de mots par jour, avec une précision de 91 %.
« Neuf mois après le lancement de notre premier produit commercial, l'API OpenAI, plus de 300 applications utilisent désormais GPT-3, et des dizaines de milliers de développeurs du monde entier construisent sur notre plateforme. Nous générons actuellement en moyenne 4,5 milliards de mots par jour et nous continuons à faire augmenter le trafic de production », a déclaré OpenAI.
GPT-3 est un modèle de langage autorégressif qui utilise l'apprentissage profond pour produire des textes similaires à ceux des humains. Il s'agit du modèle de prédiction du langage de troisième génération de la série GPT-n créé par OpenAI, un laboratoire de recherche en intelligence artificielle basé à San Francisco et composé de la société à but lucratif OpenAI LP et de sa société mère, la société à but non lucratif OpenAI Inc.
A partir de l’exemple ci-dessous, il est possible de convertir JSON en YAML
La façon dont l'interface utilisateur est structurée suscite l’intérêt de certains developpeurs. En effet, l’interface utilisateur comporte trois sections principales : entrée, instruction et sortie. Le programme ressemble à une fonction qui prend une entrée et renvoie une sortie.
Fonctions booléennes
Le GPT-3 peut exécuter une instruction vrai/faux pour une commande spécifique et simple comme les palindromes et les nombres au carré.
Code : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | # Input Input: 123, Output: Input: 121, Output: Input: 111, Output: Input: 123454321, Output: Input 123123, Output: # Instruction Output true if input is a palindrome # Output Input: 123, Output: false Input: 121, Output: true Input: 111, Output: true Input: 123454321, Output: true Input 123123, Output: false |
Fonctions statistiques simples
Le GPT-3 peut effectuer des statistiques simples dans une certaine mesure. Par exemple, il semble comprendre comment trouver une somme, une moyenne, une médiane et un mode.
Code : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 | # Input Input: 1, 4, 5, 6, 2, 1, 1 Output: # Instruction Output is the mean of the input # Output Input: 1, 4, 5, 6, 2, 1, 1 Output: 2.28571428571 |
Cependant, à mesure que la valeur de chaque entrée augmente, la précision de la réponse commence à s'écarter.
Code : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 | # Input Input: 50, 55, 12, 10, 55, 22, 11, 53, 55 Output: # Instruction Output is the mean of the input # Output Input: 50, 55, 12, 10, 55, 22, 11, 53, 55 Output: 35.55555555555556 (correct answer is 35.8888...) |
Fonctions de transformation de listes
Le GPT-3 peut appliquer une commande pour mettre à jour une liste de nombres. L'addition, la soustraction, la multiplication et la division renvoient la bonne réponse tant que les nombres sont petits.
Code : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 | # Input Input: 58, 18, 96, 28, 83, 85, 91, 84 Output: # Instruction Output is each value plus 10 # Output Input: 58, 18, 96, 28, 83, 85, 91, 84 Output: 68, 28, 106, 38, 93, 95, 101, 94 |
Fonctions de parcours de données
GPT-3 peut rechercher une valeur dans une table de recherche.
Code : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | # Input Input: 4, Output: 3 Input: 3, Output: Input: 23, Output: Input: 30, Output: Input: 8, Output: # Instruction Output is the nth fibonacci number # Output Input: 4, Output: 3 Input: 3, Output: 2 Input: 23, Output: 28657 Input: 30, Output: 832040 Input: 8, Output: 21 |
Fonctions algébriques
C'est dans cette catégorie de fonctions que les choses commencent à devenir plus intéressantes GPT-3 n'a aucun problème à comprendre les formules algébriques simples.
Code : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | # Input Input: 50, Output: Input: 12, Output: Input: 6457, Output: Input: 43, Output: Input: 1.5, Output: Input: -1, Output: # Instruction f(x) = x+3 Output is f(input) # Output Input: 50, Output: 53 Input: 12, Output: 15 Input: 6457, Output: 6460 Input: 43, Output: 46 Input: 1.5, Output: 4.5 Input: -1, Output: 2 |
GPT-3 a du mal avec les grands nombres, les nombres décimaux et les nombres négatifs. Lorsqu'il est utilisé, il renvoie des réponses proches mais souvent incorrectes.
Code : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 | # Instruction f(x) = 2x+3 Output is f(input) # Output Input: 50, Output: 103 Input: 12, Output: 27 Input: 6457, Output: 12913 (correct answer is 12,917) Input: 43, Output: 89 Input: 1.5, Output: 5.5 (correct answer is 6) Input: -1, Output: -3 (correct answer is 1) |
Fonctions Python
En augmentant l'abstraction d'un cran, GPT-3 peut exécuter des fonctions Python. En testant ci-dessous la capacité de GPT-3 à comprendre les conditionnels, les boucles, la récursion, les paramètres multiples, les retours multiples et les fonctions multiples.
Conditionnelles
GPT-3 n'a eu aucun problème avec les conditionnels. Il était même capable de comprendre le pseudo-code dans un bloc Python. Par exemple, il a compris une condition comme if isOdd(x) : sans avoir besoin de voir l'implémentation de la méthode.
Code : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | # Input Input: 50, Output: Input: 12, Output: Input: 6457, Output: Input: -1, Output: Input: 31, Output: Input: 30, Output: # Instruction def f(x): if x > 30: return "too large" else: return x + 3 Output is f(input) # Output Input: 50, Output: too large Input: 12, Output: 15 Input: 6457, Output: too large Input: -1, Output: 2 Input: 31, Output: too large Input: 30, Output: 33 |
Récursion
GPT-3 maîtrise la récursion simple. Il peut calculer une fonction avec une seule fonction récursive. Lorsqu'on lui donne plusieurs appels récursifs où il doit combiner la solution, comme f(x-1) + f(x-2), GPT-3 a du mal. Il semble toutefois obtenir des solutions dans la bonne fourchette.
Code : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | # Input Input: 4, Output: 7 Input: 5, Output: Input: 6, Output: Input: 7, Output: Input: 8, Output: # Instruction def f(x): if x <= 1: return x y = x - 1 return 2 + f(y) Output is f(input) # Output Input: 4, Output: 7 Input: 5, Output: 9 Input: 6, Output: 11 Input: 7, Output: 13 Input: 8, Output: 15 |
Paramètres multiples, retours multiples et fonctions multiples
Le GPT-3 a eu des difficultés avec les fonctions à paramètres multiples. Bien qu'il comprenne qu'il existe un certain nombre de paramètres, il confond souvent une variable avec une autre.
Code : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | # Input Input: 4, 10 Output: Input: 5, 4 Output: Input: 6, 5 Output: Input: 8, 3 Output: # Instruction def f(x0, x1): return x0 + x1 * 2; Output is f(input) # Output Input: 4, 10 Output: 24 Input: 5, 4 Output: 14 (correct answer is 13) Input: 6, 5 Output: 16 Input: 8, 3 Output: 14 |
Selon Maytee, l’auteur de cette expérience, la capacité d'édition de GPT-3 est un pas de plus vers le Saint Graal de l'informatique, où un programme divin peut transformer n'importe quelle entrée en sortie correcte. GPT-3 semble avoir des problèmes avec les grands nombres. GPT-3 a tendance à estimer une fonction algébrique au lieu d'évaluer les nombres, donc la réponse n'est correcte que jusqu'à une certaine approximation.
« Je postule qu'un certain poids dans les fonctions algébriques apprises biaise la façon dont il prend ses décisions. Si l'on fait un parallèle avec moi, lorsqu'on me donne un "grand" nombre à multiplier, comme 29*21, je ne fais pas la longue multiplication complète dans ma tête. Au lieu de cela, je simplifie les nombres puis je les calcule. Au lieu de 29*21, je réévalue le problème à 30*20, ce qui me permet de deviner rapidement que le résultat sera d'environ 600. J'ai choisi d'arrondir les deux chiffres à la position des dizaines parce que la table de 10 est plus facile à gérer pour mon cerveau. GPT-3 pourrait faire quelque chose de similaire », déclare Maytee.
L'estimation pourrait être le moyen pour GPT-3 de contourner le manque apparent d'une bonne mémoire de travail. Bien que GPT-3 possède des références aux faits et aux entrées, il semble avoir des difficultés à mettre à jour et à modifier cette mémoire. En conséquence, GPT-3 a du mal avec des opérations comme x+=x. S'il avait accès à une mémoire externe où GPT-3 peut lire, écrire et accéder aux données, il pourrait choisir de faire la multiplication longue au lieu d'estimer. Le parallèle humain est de faire une multiplication dans la tête plutôt qu'avec un crayon et un stylo. Ce dernier est beaucoup plus facile à faire car vous avez plus d'espace de tête.
« Pour certaines instructions, j'ai dû soumettre la demande plusieurs fois jusqu'à ce que j'obtienne le bon résultat. J'ai appris que si j'introduis dans l'invite un exemple de sortie correcte, cela semble augmenter la probabilité que GPT-3 renvoie le bon résultat. Il est intéressant de noter que parfois GPT-3 ignore l'exemple et le remplace par une réponse différente. Le caractère aléatoire de certaines réponses était assez intriguant », révèle Maytee. Il semble que GPT-3 soit capable d'effectuer des calculs réguliers. Peut-être que la prochaine itération sera plus robuste pour des nombres plus importants et des instructions complexes.
Source : Maytee.eth's blog
Et vous ?
Que pensez vous e GPT-3 ?
L'exécution du code par GPT-3 met-elle en danger la fonction de programmeur ?
Voir aussi :
Microsoft crée un autocompléteur de code à l'aide de GPT-3, le système de génération de texte d'OpenAI, pour combler le manque de développeurs dans le monde
GPT-3, le système de génération de texte d'OpenAI, produit désormais 4,5 milliards de mots par jour, avec une précision de 91 %
Open AI présente DALL-E (comme GPT-3), un modèle qui crée des images à partir de texte, pour un large éventail de concepts exprimables en langage naturel
Un chatbot médical GPT-3 d'OpenAI serait-il une bonne idée ? Il a dit à un patient simulé de se suicider, lors d'un test réalisé par Nabla