Melhorando LLMs com Seleção Eficaz de Dados
Explorando métodos pra melhorar o desempenho em tarefas de programação em modelos de linguagem usando dados.
― 7 min ler
Índice
Modelos de linguagem grandes (LLMs) estão se tornando ferramentas populares para ajudar usuários com várias tarefas de programação, especialmente quando se trata de trabalhar com Dados. Esses modelos podem ajudar usuários comuns, não só programadores profissionais. Muita gente precisa de ajuda com tarefas que envolvem lidar com dados em tabelas, como gerenciar planilhas. Porém, essas tarefas podem ser complicadas porque é difícil explicar o que você quer usando só palavras sem mostrar os dados reais.
Uma pergunta importante surge: como decidimos quais dados incluir ao pedir ajuda ao modelo? Este artigo discute duas contribuições principais para responder a essa pergunta. Primeiro, ele analisa um novo conjunto de dados criado a partir de problemas reais que as pessoas postaram online sobre trabalhar com tabelas. Em segundo lugar, apresenta um novo método chamado “cluster-then-select” para escolher as melhores linhas de dados a serem incluídas ao solicitar o modelo.
Pesquisas mostraram que o sucesso dos LLMs pode depender muito da quantidade de dados incluídos no prompt. O novo método que discutimos se sai melhor do que simplesmente escolher linhas aleatórias de um conjunto de dados, especialmente quando os dados estão escritos de maneiras diferentes.
A Necessidade de Melhores Ferramentas
Conforme os LLMs ficam mais avançados, eles prometem ajudar os usuários com tarefas que envolvem gerenciamento de dados. Essas tarefas podem variar de dividir strings de texto em planilhas a limpar e organizar dados em vários programas. Considere uma tarefa simples: se você tem uma lista de nomes completos e quer criar uma nova lista de nomes de usuário usando a primeira inicial e o sobrenome, isso pode ser feito usando uma linguagem de programação como o Pandas.
Porém, o desafio vem do fato de que os nomes podem aparecer em muitos formatos diferentes. Algumas pessoas podem ter apenas um primeiro nome e um sobrenome, enquanto outras podem ter nomes do meio adicionais. Se o modelo receber apenas alguns exemplos que não incluam todas essas variações, pode acabar criando um programa falho que não funciona corretamente.
Este artigo foca em tarefas que envolvem múltiplos passos para transformar os dados de entrada em uma nova saída. Usando exemplos do mundo real de fóruns de ajuda online, criamos um novo conjunto de dados que inclui tanto uma pergunta feita em linguagem simples quanto uma pequena tabela de dados para trabalhar.
Consultas de Usuários
AnalisandoPara entender melhor os desafios, olhamos para os tipos de perguntas que os usuários podem fazer. Muitas tarefas relacionadas a dados geralmente exigem que os usuários descrevam o que querem em linguagem natural, mas os dados de exemplo são cruciais para chegar à solução certa. Como a maioria das tabelas usadas no mundo real são grandes, muitas vezes não é prático enviar a tabela inteira para o modelo. Assim, o desafio é encontrar a melhor forma de explicar a estrutura desses grandes dados.
Para resolver essa questão, desenvolvemos um método para agrupar as linhas de dados com base em seus formatos e, em seguida, escolher as linhas mais representativas para incluir no prompt. Por exemplo, se quisermos criar nomes de usuários, nosso método garante que incluamos uma linha para cada tipo de formato de nome, seja sem nome do meio, com um nome do meio ou mais.
Construindo um Conjunto de Dados
Este novo conjunto de dados é construído a partir de tarefas reais que os usuários enfrentaram. Coletamos dados de postagens bem avaliadas sobre o uso de fórmulas do Excel, já que essas frequentemente refletem desafios comuns em planilhas. Isso resultou em 201 tarefas únicas que incluem uma consulta clara, uma entrada de dados e a saída esperada, além de uma solução em Pandas.
As tarefas neste conjunto de dados variam de simples, que não precisam de dados para serem resolvidas, a aquelas que requerem tanto dados quanto algum conhecimento externo. Por exemplo, criar uma nova coluna que lista os cinco primeiros caracteres de um nome de arquivo não precisa de dados externos, enquanto contar as datas de feriados entre duas datas precisa.
O Papel dos Dados
O conjunto de dados nos ajuda a estudar como os dados influenciam o Desempenho no modelo. Analisamos diferentes situações: nenhum dado, apenas a primeira linha de dados e um conjunto expandido com dez linhas. Nossas descobertas indicam que mesmo uma pequena quantidade de dados pode melhorar significativamente o desempenho.
Comparando Diferentes Técnicas de Seleção
Através de experimentos com nossa nova técnica cluster-then-select, comparamos com a simples escolha de linhas de dados aleatórias. Em nossos testes, esse novo método se saiu melhor em tarefas que têm muitas variações na entrada. Por exemplo, dar ao modelo dez linhas selecionadas com base nos resultados do agrupamento geralmente leva a um desempenho melhor em comparação com a seleção aleatória de linhas.
Encontramos uma alta variação nos resultados ao usar seleção aleatória porque isso pode levar à escolha de linhas que realmente não representam as variações na entrada. Portanto, enquanto ambos os métodos podem gerar bons resultados no geral, nosso método cluster-then-select fornece um resultado mais consistente.
Posicionamento de Dados em Prompts
Outro ponto interessante é como a posição das linhas de dados em um prompt afeta o desempenho. Em um conjunto separado de testes, embaralhamos a ordem das linhas de dados nos prompts para ver como isso influenciava os resultados. Notamos que a posição tem um impacto substancial, com algumas arrumações se saindo melhor do que outras. Isso se alinha ao que pesquisas anteriores mostraram sobre como a ordem das informações pode mudar sua eficácia.
Direções Futuras
As descobertas da nossa pesquisa ressaltam a importância dos dados para ajudar modelos a gerarem códigos para tarefas focadas em dados. Fornecer dados melhora significativamente o desempenho. Como compartilhar o conjunto de dados inteiro geralmente é impraticável, nossa técnica cluster-then-select nos permite incluir apenas as linhas mais relevantes no prompt.
No entanto, ainda existem muitos desafios a enfrentar. Pesquisas futuras podem envolver lidar com problemas mais complexos, como entradas de várias tabelas ou diferentes tipos de estruturas de dados. Essas novas direções podem fornecer uma compreensão mais profunda de como apoiar melhor os usuários.
Considerações Éticas
É crucial ter em mente as amplas implicações éticas de desenvolver modelos de IA que criam código a partir de entradas em linguagem natural. Questões como viés e os potenciais riscos associados ao manuseio de informações pessoais são importantes de considerar. Embora nosso foco seja melhorar o desempenho do modelo com dados, garantir que os dados usados sejam de alta qualidade é igualmente vital.
Nós buscamos entregar resultados em que os usuários possam confiar, e isso significa estar ciente de como os dados podem moldar os resultados produzidos pelo modelo. Fornecer contexto em torno dos dados ajuda a prevenir qualquer uso indevido ou má interpretação das saídas geradas.
Conclusão
Em resumo, este artigo destaca a importância dos dados ao trabalhar em tarefas de programação com LLMs. Apresentamos um conjunto de dados que reflete os desafios do mundo real que os usuários enfrentam e demonstramos como nosso método cluster-then-select supera técnicas de amostragem aleatória. Ao fornecer mesmo dados mínimos, podemos aumentar significativamente o desempenho do modelo.
Olhando para o futuro, uma exploração mais profunda em cenários complexos de dados será necessária para melhorar ainda mais esses modelos. A comunidade de pesquisa pode se beneficiar de novos Conjuntos de dados, melhor compreensão das relações de contexto dos dados e ferramentas que se concentrem em ajudar os usuários em suas necessidades de programação.
Título: Solving Data-centric Tasks using Large Language Models
Resumo: Large language models (LLMs) are rapidly replacing help forums like StackOverflow, and are especially helpful for non-professional programmers and end users. These users are often interested in data-centric tasks, such as spreadsheet manipulation and data wrangling, which are hard to solve if the intent is only communicated using a natural-language description, without including the data. But how do we decide how much data and which data to include in the prompt? This paper makes two contributions towards answering this question. First, we create a dataset of real-world NL-to-code tasks manipulating tabular data, mined from StackOverflow posts. Second, we introduce a cluster-then-select prompting technique, which adds the most representative rows from the input data to the LLM prompt. Our experiments show that LLM performance is indeed sensitive to the amount of data passed in the prompt, and that for tasks with a lot of syntactic variation in the input table, our cluster-then-select technique outperforms a random selection baseline.
Autores: Shraddha Barke, Christian Poelitz, Carina Suzana Negreanu, Benjamin Zorn, José Cambronero, Andrew D. Gordon, Vu Le, Elnaz Nouri, Nadia Polikarpova, Advait Sarkar, Brian Slininger, Neil Toronto, Jack Williams
Última atualização: 2024-03-24 00:00:00
Idioma: English
Fonte URL: https://arxiv.org/abs/2402.11734
Fonte PDF: https://arxiv.org/pdf/2402.11734
Licença: https://creativecommons.org/licenses/by/4.0/
Alterações: Este resumo foi elaborado com a assistência da AI e pode conter imprecisões. Para obter informações exactas, consulte os documentos originais ligados aqui.
Obrigado ao arxiv pela utilização da sua interoperabilidade de acesso aberto.