Évaluation du texte en SQL aligné par l'homme

Mar 20 2023
Dans mon dernier article sur Text-to-SQL utilisant GPT-3.5, j'ai souligné le problème avec la métrique d'évaluation de référence existante : elle rejette les requêtes SQL parfaitement fines pour ne pas avoir le même résultat d'exécution strict que golden (alias.

Dans mon dernier article sur Text-to-SQL utilisant GPT-3.5, j'ai souligné le problème avec la métrique d'évaluation de référence existante : elle rejette les requêtes SQL parfaitement fines car elles n'ont pas le même résultat d'exécution strict que les requêtes dorées (alias étiquetées). Dans cet article, je discute d'une nouvelle métrique que j'ai créée pour mieux évaluer les performances de Text-to-SQL.

Voici un exemple de mon dernier post :

-- (Hard) 
-- Question: Which grade has the most high schoolers?
-- pred:
SELECT grade, COUNT(*) AS num_highschoolers
FROM Highschooler
GROUP BY grade
ORDER BY num_highschoolers DESC
LIMIT 1;
-- gold:
SELECT grade
FROM Highschooler
GROUP BY grade
ORDER BY count(*) DESC
LIMIT 1;

Pour récapituler les chiffres de mon dernier message : j'ai testé GPT-3.5 sur 96 questions du benchmark Spider (86 de l'ensemble d'entraînement et 10 de l'ensemble de développement) et j'ai constaté qu'il avait obtenu 41,7 % de précision d'exécution et 38,5 % de correspondance exacte. précision. Cependant, après une analyse plus approfondie des cas d'erreur, il m'est apparu clairement que la plupart des requêtes générées par GPT-3.5 étaient en fait parfaitement correctes d'un point de vue humain. Cela met en évidence le problème avec nos métriques d'évaluation existantes pour Text-to-SQL, car elles ne mesurent pas avec précision la préférence humaine.

Ce problème de décalage entre les mesures d'évaluation de référence et la préférence humaine réelle est bien connu dans la communauté des chercheurs. Par exemple, dans les benchmarks de synthèse de documents, la métrique d'évaluation standard est ROUGE , qui est basée sur le comptage des phrases de mots qui se chevauchent entre un résumé généré et un résumé en or. Cette approche ne parvient pas à détecter les résumés corrects écrits dans des termes et des phrases différents du résumé en or. Malgré cela, les scores ROUGE sont toujours utilisés par des articles récents.

L'évaluation humaine reste l'étalon-or dans la recherche ML, et les métriques automatiques sont les "tests unitaires" pour les nouveaux modèles. Est-il possible d'avoir quelque chose entre les deux, comme un « environnement de mise en scène » pour les nouveaux modèles ?

GPT-3.5 pour l'évaluation

GPT-3.5 a été affiné pour s'aligner sur les préférences humaines , ce qui le rend bien meilleur pour suivre les instructions que GPT-3, qui nécessite une ingénierie rapide et minutieuse pour fonctionner efficacement. Cela m'a fait réfléchir : pouvons-nous tirer parti de GPT-3.5 pour créer une métrique d'évaluation pour Text-to-SQL qui s'aligne sur les préférences humaines ? Décomposons-le étape par étape :

Tout d'abord, nous devons considérer ce que GPT-3.5 est capable de faire :

  • Il peut transformer des données structurées en texte, et vice versa.
  • Il peut raisonner sur la base de faits fournis directement dans le contexte de l'invite.
  • Une question d'entrée dans un texte en langage naturel.
  • Génération d'une requête SQL.
  • Exécuter la requête SQL et obtenir des données structurées (c'est-à-dire des lignes).

Le schéma ci-dessous illustre cette conception :

Évaluez Text-to-SQL à l'aide de GPT-3.5. Les invites réelles peuvent être trouvées dans ce script.

En utilisant GPT-3.5 de cette manière, nous pouvons créer une métrique d'évaluation pour Text-to-SQL qui correspond mieux aux préférences humaines.

Résultats expérimentaux

J'ai étendu l'évaluation du benchmark Spider avec cette nouvelle métrique, que j'ai nommée Answer Accuracy , dans le cadre du projet open source LlamaIndex . Le code que j'ai utilisé se trouve ici .

En utilisant cette nouvelle métrique, j'ai évalué les requêtes SQL générées des mêmes 96 questions. La précision globale des réponses pour GPT-3.5 text-davinci-003est impressionnante de 88,54 %. En fait, après avoir examiné les cas d'erreur répertoriés dans mon dernier article de blog, j'ai constaté que les cas que j'ai indiqués comme étant corrects étaient en effet marqués comme tels, et le seul vrai cas d'erreur a été correctement détecté.

Pour valider davantage cette nouvelle métrique, je l'ai testée sur les sorties d'autres modèles GPT, y compris GPT-4. Voici le tracé de leurs précisions de réponse :

Précision des réponses des modèles GPT (zero-shot) sur 96 questions du benchmark Spider

Les précisions de réponse résultantes sont les suivantes : code-davinci-002à 79,17 %, text-davinci-003à 88,54 %, gpt-3.5-turboà 85,42 % et gpt-4à 89,58 %. Comme prévu, le GPT-4 a surpassé les autres modèles, ce qui correspond à notre expérience pratique des performances relatives de ces modèles.

En revanche, les précisions d'exécution et de correspondance des modèles GPT ne correspondent pas à notre expérience pratique. Voici un graphique montrant ces métriques utilisées sur les modèles GPT.

Précisions d'exécution et de correspondance exacte des modèles GPT sur 96 questions échantillonnées à partir du benchmark Spider

Si nous utilisons ces métriques comme mesure principale des performances de Text-to-SQL, nous penserions gpt-4qu'elles sont moins puissantes que code-davinci-002. Ces résultats ne correspondent clairement pas à notre expérience pratique avec ces modèles.

Implications clés

Quelles sont les principales implications de cette expérience Text-to-SQL ?

Tout d'abord, nous avons constaté que les métriques automatiques existantes, à savoir la précision d'exécution et la précision de la correspondance exacte, ne sont pas alignées sur les préférences humaines. Par conséquent, ils ne doivent pas être considérés comme le principal moyen d'évaluer les modèles Text-to-SQL.

Deuxièmement, alors que l'évaluation humaine reste l'étalon-or, les grands modèles de langage (LLM) tels que GPT-3.5 et au-dessus peuvent se rapprocher avec précision de la préférence humaine. Cela change potentiellement la donne, car ils nous permettent d'évaluer les modèles Text-to-SQL et d'estimer le résultat d'évaluation humaine attendu. Ceci est particulièrement utile lorsque l'évaluation humaine n'est pas réalisable en raison de la limitation du budget.

Troisièmement, et c'est là que les choses deviennent intéressantes, notre utilisation des LLM à l'écoute des instructions pour l'évaluation pourrait être généralisée à de nombreuses autres tâches. Cette approche est particulièrement utile pour les tâches dont la sortie consiste en des déclarations simples qui peuvent être directement raisonnées par les LLM. Et il y a un document de recherche sur ce sujet même appelé "GPTScore", qui forme GPT-3.5 pour évaluer les tâches de la PNL en utilisant l'apprentissage en contexte.

Note

Ce message est destiné à provoquer une conversation sur l'évaluation Text-to-SQL, et non à prétendre que la métrique de précision de la réponse est 100% alignée sur l'humain ou même robuste. Je suis heureux de collaborer si vous souhaitez faire un pas de plus vers une meilleure évaluation.