Avaliação Human-Aligned Text-to-SQL

Mar 20 2023
Em meu último post sobre Text-to-SQL usando GPT-3.5, apontei o problema com a métrica de avaliação de benchmark existente: ela rejeita consultas SQL perfeitamente corretas por não ter o mesmo resultado de execução estrito que golden (aka.

Em minha última postagem sobre Text-to-SQL usando GPT-3.5, apontei o problema com a métrica de avaliação de benchmark existente: ela rejeita consultas SQL perfeitamente corretas por não ter o mesmo resultado de execução estrito que as consultas de ouro (também conhecidas como rotuladas). Nesta postagem, discuto uma nova métrica que criei para avaliar melhor o desempenho de Text-to-SQL.

Aqui está um exemplo do meu último 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;

Para recapitular os números do meu último post: testei o GPT-3.5 em 96 perguntas do benchmark Spider (86 do conjunto de treinamento e 10 do conjunto de desenvolvimento) e descobri que obteve 41,7% em precisão de execução e 38,5% em correspondência exata precisão. No entanto, após uma análise mais aprofundada dos casos de erro, ficou claro para mim que a maioria das consultas geradas pelo GPT-3.5 estavam perfeitamente corretas do ponto de vista humano. Isso destaca o problema com nossas métricas de avaliação existentes para Text-to-SQL, pois elas não medem com precisão a preferência humana.

Essa questão de desalinhamento entre as métricas de avaliação de referência e a preferência humana real é bem conhecida na comunidade de pesquisa. Por exemplo, em benchmarks de resumo de documentos, a métrica de avaliação padrão é ROUGE , que se baseia na contagem de frases de palavras sobrepostas entre um resumo gerado e um resumo de ouro. Essa abordagem não detecta resumos corretos escritos em termos e frases diferentes do resumo de ouro. Apesar disso, as pontuações do ROUGE ainda estão sendo usadas por artigos recentes.

A avaliação humana continua sendo o padrão ouro na pesquisa de ML, e as métricas automáticas são os “testes de unidade” para novos modelos. É possível ter algo intermediário, como um “ambiente de preparação” para novos modelos?

GPT-3.5 para avaliação

O GPT-3.5 foi ajustado para se alinhar com a preferência humana , tornando-o muito melhor em seguir as instruções do que o GPT-3, que requer uma engenharia imediata cuidadosa para funcionar de forma eficaz. Isso me fez pensar: podemos aproveitar o GPT-3.5 para criar uma métrica de avaliação para Text-to-SQL que se alinhe com a preferência humana? Vamos decompô-lo passo a passo:

Primeiro, precisamos considerar o que o GPT-3.5 é capaz de fazer:

  • Ele pode transformar dados estruturados em texto e vice-versa.
  • Ele pode raciocinar com base em fatos fornecidos diretamente no contexto imediato.
  • Uma pergunta de entrada em texto de linguagem natural.
  • Gerando uma consulta SQL.
  • Executar a consulta SQL e obter dados estruturados (ou seja, linhas).

O diagrama abaixo ilustra esse projeto:

Avalie Text-to-SQL usando GPT-3.5. Os prompts reais podem ser encontrados neste script.

Ao usar o GPT-3.5 dessa maneira, podemos criar uma métrica de avaliação para Text-to-SQL que se alinha melhor com a preferência humana.

Resultados experimentais

Estendi a avaliação do benchmark Spider com essa nova métrica, que denominei Answer Accuracy , como parte do projeto de código aberto LlamaIndex . O código que usei pode ser encontrado aqui .

Usando essa nova métrica, avaliei as consultas SQL geradas das mesmas 96 perguntas. A precisão geral da resposta para GPT-3.5 text-davinci-003é de impressionantes 88,54%. Na verdade, ao revisar os casos de erro listados em minha última postagem no blog, descobri que os casos que indiquei como corretos foram realmente marcados como tal, e o único caso de erro verdadeiro foi detectado corretamente

Para validar ainda mais essa nova métrica, testei-a em saídas de outros modelos GPT, incluindo GPT-4. Aqui está o gráfico de suas precisões de resposta:

Responda a precisão dos modelos GPT (zero-shot) em 96 perguntas do benchmark Spider

As precisões de resposta resultantes são as seguintes: code-davinci-00279,17%, text-davinci-00388,54%, gpt-3.5-turbo85,42% e gpt-489,58%. Como esperado, o GPT-4 superou os outros modelos, o que está de acordo com nossa experiência prática sobre o desempenho relativo desses modelos.

Em contraste, as precisões de execução e de correspondência dos modelos GPT não se alinham com nossa experiência prática. Aqui está um gráfico mostrando essas métricas usadas em modelos GPT.

Precisão de execução e correspondência exata de modelos GPT em 96 perguntas amostradas do benchmark Spider

Se usarmos essas métricas como a medida principal do desempenho do Text-to-SQL, pensaremos que gpt-4é menos poderoso do que code-davinci-002. Esses resultados claramente não correspondem à nossa experiência prática com esses modelos.

Principais Implicações

Quais são as principais implicações desse experimento de conversão de texto em SQL?

Em primeiro lugar, descobrimos que as métricas automáticas existentes, ou seja, precisão de execução e precisão de correspondência exata, estão desalinhadas com a preferência humana. Como resultado, eles não devem ser usados ​​como a principal forma de avaliar os modelos Text-to-SQL.

Em segundo lugar, embora a avaliação humana continue sendo o padrão-ouro, modelos de linguagem grandes (LLMs), como GPT-3.5 e acima, podem aproximar com precisão a preferência humana. Isso é um divisor de águas em potencial, porque eles nos permitem avaliar modelos Text-to-SQL e estimar o resultado esperado da avaliação humana. Isso é especialmente útil quando a avaliação humana não é viável devido à limitação de orçamento.

Em terceiro lugar, e é aqui que as coisas ficam interessantes, nosso uso de LLMs ajustados por instrução para avaliação pode ser generalizado para muitas outras tarefas. Essa abordagem é especialmente útil para tarefas cuja saída consiste em instruções simples que podem ser diretamente raciocinadas por LLMs. E há um trabalho de pesquisa sobre esse mesmo tópico chamado “GPTScore”, que treina o GPT-3.5 para avaliar tarefas de PNL usando aprendizado no contexto.

Observação

Este post tem como objetivo provocar uma conversa sobre a avaliação de Text-to-SQL, não para afirmar que a métrica de precisão da resposta é 100% alinhada por humanos ou mesmo robusta. Fico feliz em colaborar se você quiser dar um passo adiante em direção a uma melhor avaliação.