B4: Rumo à Avaliação Ótima de Soluções de Código Plausíveis com Testes Plausíveis
B4: Towards Optimal Assessment of Plausible Code Solutions with Plausible Tests
September 13, 2024
Autores: Mouxiang Chen, Zhongxin Liu, He Tao, Yusu Hong, David Lo, Xin Xia, Jianling Sun
cs.AI
Resumo
Selecionar a melhor solução de código entre várias geradas é uma tarefa essencial na geração de código, o que pode ser alcançado usando validadores confiáveis (por exemplo, casos de teste escritos pelos desenvolvedores) para auxílio. Uma vez que casos de teste confiáveis nem sempre estão disponíveis e podem ser caros de construir na prática, os pesquisadores propõem gerar automaticamente casos de teste para avaliar soluções de código. No entanto, quando tanto as soluções de código quanto os casos de teste são plausíveis e não confiáveis, selecionar a melhor solução torna-se desafiador. Embora algumas estratégias heurísticas tenham sido propostas para lidar com esse problema, elas carecem de uma garantia teórica sólida e ainda é uma questão em aberto se uma estratégia de seleção ótima existe. Nosso trabalho contribui de duas maneiras. Primeiramente, demonstramos que dentro de um framework bayesiano, a estratégia de seleção ótima pode ser definida com base na probabilidade posterior dos estados de aprovação observados entre as soluções e os testes. O problema de identificar a melhor solução é então formulado como um problema de programação inteira. Em segundo lugar, propomos uma abordagem eficiente para aproximar essa estratégia ótima (ainda que incalculável), onde o erro de aproximação é limitado pela correção do conhecimento prévio. Em seguida, incorporamos conhecimento prévio eficaz para adaptar tarefas de geração de código. Estudos teóricos e empíricos confirmam que as heurísticas existentes são limitadas na seleção das melhores soluções com casos de teste plausíveis. Nossa estratégia ótima aproximada proposta, B4, supera significativamente as heurísticas existentes na seleção de soluções de código geradas por grandes modelos de linguagem (LLMs) com testes gerados por LLM, alcançando uma melhoria de desempenho relativa de até 50% em relação à heurística mais forte e 246% em relação à seleção aleatória nos cenários mais desafiadores. Nosso código está publicamente disponível em https://github.com/ZJU-CTAG/B4.
English
Selecting the best code solution from multiple generated ones is an essential
task in code generation, which can be achieved by using some reliable
validators (e.g., developer-written test cases) for assistance. Since reliable
test cases are not always available and can be expensive to build in practice,
researchers propose to automatically generate test cases to assess code
solutions. However, when both code solutions and test cases are plausible and
not reliable, selecting the best solution becomes challenging. Although some
heuristic strategies have been proposed to tackle this problem, they lack a
strong theoretical guarantee and it is still an open question whether an
optimal selection strategy exists. Our work contributes in two ways. First, we
show that within a Bayesian framework, the optimal selection strategy can be
defined based on the posterior probability of the observed passing states
between solutions and tests. The problem of identifying the best solution is
then framed as an integer programming problem. Second, we propose an efficient
approach for approximating this optimal (yet uncomputable) strategy, where the
approximation error is bounded by the correctness of prior knowledge. We then
incorporate effective prior knowledge to tailor code generation tasks. Both
theoretical and empirical studies confirm that existing heuristics are limited
in selecting the best solutions with plausible test cases. Our proposed
approximated optimal strategy B4 significantly surpasses existing heuristics in
selecting code solutions generated by large language models (LLMs) with
LLM-generated tests, achieving a relative performance improvement by up to 50%
over the strongest heuristic and 246% over the random selection in the most
challenging scenarios. Our code is publicly available at
https://github.com/ZJU-CTAG/B4.Summary
AI-Generated Summary